gpt4 book ai didi

java - 如何识别软件中的错误而不是测试人员的错误?

转载 作者:行者123 更新时间:2023-11-28 21:31:00 26 4
gpt4 key购买 nike

我目前正在开展一项实验,以研究修改某种测试技术如何影响测试人员发现的错误数量。我计划使用一个带有方法的库,我在其中植入了特定数量的编程错误,这些错误会在用户执行它们时导致错误。通过一个 ant 脚本,我执行所有 JUnit 测试并解析创建的测试报告的结果(测试套件的信息、通过/失败/错误的数量等)。

我现在的问题是,您是否知道如何识别失败(在其中一个测试中)实际上是测试人员发现的错误还是她在测试中犯了错误。

示例:假设我有一个简单的方法,例如:

public int multi(int n1, int n2) {
返回 n1 * n2;
}

测试人员提出的要求是:“多功能函数接受两个整数并返回两者的乘积”。

如果她写了一个像这样的测试用例:

assertEquals(8, multi(5,10));

这会导致测试失败,但这不是错误,而是测试人员制作了不正确的测试用例。

如果我宁愿使用以下方法,在乘法语句中添加 1 作为种子错误:

public int multiBug(int n1, int n2) {
返回(n1 * n2)+ 1;
}

如果测试人员将测试用例写成:

assertEquals(8, multi(2,4));

她会发现一个错误,因为她期望一个“正确”的结果,但测试仍然失败。

之所以我想动态地做这个而不是在实验后对此进行分析,是因为我想在测试期间给测试人员反馈。

有人知道如何解决这个问题吗?当调用“错误方法”以根据“正确方法”验证结果时,是否可以进行“双重调用”?那么如果用户测试 multiBug 我会用相同的参数调用 multi 函数并验证结果吗?

请记住,我确切地知道每种方法中存在哪些错误。

再见!

最佳答案

我认为如果测试的预期是错误的,就不可能在测试中发现错误。要找到这个错误,某人必须有不同的期望,这也可能是错误的。这将导致无限级联的期望。相反,我建议将测试视为项目的规范/要求。我的意思是删除测试所基于的任何冗余需求源。这些可能会导致测试中出现错误。将测试视为除代码本身之外的第二个最具体的规范,这是应用程序最具体的规范。然后最好地应用测试驱动开发:对于应用程序必须满足的每个需求,首先编写测试。生成所有类和方法以使代码编译,仅此而已。观看测试失败。这是最重要的。如果没有失败,则不是测试。现在提供最愚蠢的实现来使测试成功。保持实现简单愚蠢非常重要。否则,您稍后可能会在不修改/添加代码的情况下运行成功的测试。这是一个不好的迹象。每个测试都应该只解决一个方面,不能少也不能多。而且测试必须做出尽可能少的假设。否则它是在测试实现而不是需求。

我到此为止,因为如果我继续,它会变成一篇博文或教程:-)

关于java - 如何识别软件中的错误而不是测试人员的错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22526870/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com