某个程序的结构流程图如图所示,这样一个少于100行Pascal代码的程序,却有100,000,000,000,000种可能的路径需要遍历,如果尝试遍历所有可能的路径,假设每秒钟执行1000个测试用例,也需要3170年的时间来完成所有测试。
详尽地遍历所有测试的可能路径、场景、输入条件和数据是不可能的,因为它们的组合接近无限,但是时间和资源都是有限的。以有限“拼”无限,无异“以卵击石”。因此有些人在这些困难面前妥协了,仅仅使用随机的输入来测试程序,这种测试方式无异“缴枪投降”。
正确的方法是设计合理有效的测试策略,建立合理有效的测试用例库,选择合理有效的测试用例来执行。
测试用例的设计策略
测试用例的设计方法有很多,一般常用的测试用例设计方法有以下几种。
等价类划分法。
边界值分析法。
基本路径分析法。
因果图法。
场景设计法。
错误猜测法。
另外,还有以下几种测试用例设计方法是用于有效减少测试用例个数的。
正交表法。
均匀试验法。
组合覆盖法。
注:关于这些测试用例设计的具体方法,可参考我写的《软件测试技术大全》一书中的第7章。
测试人员为什么要掌握这么多的测试用例设计方法呢?这是因为每一种测试用例设计方法都有其最适合的地方,需要综合应用才能让测试用例的设计省时省力而且能有效发现尽可能多的BUG,另外,交叉使用各种测试用例的设计方法,有助于避免“思维死角”,让BUG“无处遁形”。
最近,日本的测试界比较流行使用思维导图(Mind Maps)工具进行测试用例设计,原因是传统的测试用例设计方法都比较局限在某个区域,缺乏整体业务建模和整体测试逻辑的考虑。而通过“头脑风暴”工具,则可以协助测试人员更全面、更清晰都思考测试涉及的软件功能和业务模型,从而设计和构建出更加完善合理的测试用例。
测试人员通过画出一些关系图、测试对象的相关信息,帮助整理思路,组织内容、想法、创意等。例如,如图3所示的是FreeMind的编辑界面。
图3 FreeMind的编辑界面
文章来源于领测软件测试网 https://www.ltesting.net/