我在计算机科学系教西南考试。正如预期的那样,我正在进行等效分区测试。在练习中,我给了这个类一组5条代码规则,这些规则对密码强度进行分级,并要求他们列出相应的等价类。这是一套简单的规则;它们对我的问题并没有那么关键--我在这里列出它们只是为了让你看到这是一套相当简单的规则:
产生的等价类数是..。20.这是在我加了一些限制以避免数字更高之后。
所以我的问题是:如果对于这样简单的代码,我需要20个ECs,对于一个广泛的系统,ECs将是一个巨大的数字--呈现EP测试技术没有多大帮助。
难道我和所有的西南考试教科书都夸大了这项技术的用处吗?除了一些琐碎的例子之外,它有用吗?
发布于 2023-04-16 17:40:33
对于一个广泛的系统
这就是为什么我们将模块化和组合原则作为代码质量标准的原因。
在一个大模块中进行检查并不是一项健全的工程。
以您自己的例子为例,您可能不会为字符串库或断言库创建检查--假设它们是无bug的(并不完全是,但从工程角度和检查密码计算代码的目标来看,都不是很好)。
更进一步,当您想要检查您的前端时,当密码是弱的时,您的检查将有一个示例--在密码弱的情况下--您的密码评估模块的质量不是前端检查的重点。
Dijkstra试图推广使用结构分析“证明”软件的可能性,但承认从实际目的来看没有用。
工程学!=数学做必要的事情来建立你想要建立的。使用等价划分来完成你的任务,而不是作为你必须克服的墙。
发布于 2023-04-17 12:50:00
啊组合数学的乐趣。
正如其他答案所暗示的,几乎任何技术都很容易为任何现实世界的应用程序生成大量的测试用例。
等效分区是将这些测试用例分组以帮助减少测试负担的一种方法。这并没有改变一个现实世界的应用程序可能有大量的等价分区的事实--它仍然更容易测试(例如)。由12x组成的密码同一个字符的分数低于测试密码12x0的分数和12x1的密码在密码输入所允许的每个字符中的低分数。
不管软件是什么,你都要面对这样一个事实,那就是实际上有无数的途径可以通过它。在密码强度模块的示例中,可能的密码数目可能是有限的,但如果最小长度为12,且最大长度未知,则该数字将是不可管理的大数字,特别是当您包含所有潜在的无效值时。与数百万可能的密码值相比,20个等效分区是一种负担吗?
发布于 2023-04-17 02:32:03
等效划分是一种强大的测试设计技术,它可以通过减少测试用例数量来帮助测试人员有效地开发测试用例,从而达到特定的测试覆盖率水平。它涉及到将输入空间划分成不同的分区,每个分区包含一组表现出相同行为的输入。例如,在测试密码强度检查器时,可以为不同长度的密码、包含大写字母的密码、包含数字的密码等创建分区。
确实,对于复杂系统,等效类的数量可以快速增长,但这种技术仍然很有用。它可以与其他测试设计技术相结合,如边值分析、决策表和状态转换图,以生成一组全面的测试用例,提供全面的测试覆盖。
例如,在密码强度检查器中,可以将等效分区与边值分析结合起来,以确定在每个分区边界上检查系统行为的测试用例。此外,决策表可用于识别导致不同输出的不同输入组合,而状态转换图则可用于捕捉系统在不同条件下的行为。
因此,对于广义系统来说,等价划分技术是不准确的。当与其他测试设计技术结合使用时,它可以帮助测试人员生成一组全面的测试用例,这些测试用例提供了良好的测试覆盖率。但是,必须认识到,没有任何测试设计技术能够生成一组完美的测试用例,应该使用手动测试来补充自动化测试。
参考资料:
嗨,迈克尔,谢谢你的跟进问题。确实,对于复杂系统,等价类的数量可以成倍增长,这使得应用这项技术具有挑战性。然而,这并不是等价分区所独有的,而是大多数测试设计技术中的一个常见问题。被测试系统的复杂性通常与实现充分测试覆盖所需的测试用例数量成正比。
解决这一挑战的一种方法是根据等价类的重要性和它们对被测试系统的风险对它们进行排序。通过这样做,您可以将重点放在最关键的测试场景上,这有助于减少所需的测试用例数量。
另一种方法是将等效分区与其他测试设计技术结合起来,正如我前面提到的。这可以帮助您生成更全面的测试用例集,同时仍然保持测试用例数量的可管理性。
总之,重要的是要认识到,没有任何测试设计技术能够保证完整的测试覆盖范围,并且常常需要技术和探索性测试的结合才能达到预期的质量水平。等效划分仍然是一种有用的、广泛采用的技术,可以帮助测试人员高效、系统地开发测试用例。
我希望这能回答你的问题。如果您有任何进一步的问题或关切,请随时提问。
https://sqa.stackexchange.com/questions/51548
复制相似问题