共计 2113 个字符,预计需要花费 6 分钟才能阅读完成。
1 白盒测试
白盒测试是对软件的过程性细节做粗疏的查看,把测试对象看作是一个关上的盒子,容许测试人员利用程序外部的逻辑构造以及无关信息,设计或抉择测试用例,对程序所有逻辑门路进行测试。通过在不同点检查程序状态,确定理论状态是否与预期的状态统一。
白盒测试只测试软件产品的内部结构和处理过程,而不是测试软件产品的性能,能够分为动态和动静两种:
- 动态白盒测试就是在不执行测试的状况下有条理认真审查软件设计、体系结构和代码,从而找出软件缺陷的过程
- 动静白盒测试也叫结构化测试,通过查看并应用代码的内部结构,设计和执行测试
白盒测试的常见办法包含:
- 逻辑笼罩法
- 路径分析
- 控制结构测试
2 逻辑笼罩法
逻辑笼罩法又叫控制流笼罩,是依照程序外部逻辑结构设计测试用例的测试方法,依据程序中的断定和条件控制流笼罩准则来定量度量测试进行水平,依照笼罩规范的不同,能够分为:
- 语句笼罩
- 断定笼罩
- 条件笼罩
- 条件断定笼罩
- 修改条件断定笼罩
- 条件组合笼罩
- 门路笼罩
2.1 语句笼罩
语句笼罩又叫线覆盖面或者段覆盖面,含意是抉择足够数目的测试数据,使被测试程序中每条语句至多执行一次。语句笼罩能够间接利用于指标代码,不须要解决源代码,然而因为对一些控制结构不敏感(比方同样的测试用例,语句中的逻辑运算符从 and
改为 or
也同样通过),逻辑覆盖率低,因而往往不能发现判断中逻辑运算符呈现的谬误。
2.2 断定笼罩
又叫分支笼罩或所有边覆盖,用于测试控制结构中布尔表达式别离为真和假,其中布尔表达式被认为是一个整体,不思考外部是否蕴含了“逻辑与”或者“逻辑或”等运算符。断定笼罩的根本思维是设计的测试用例是的程序中每个断定至多别离取“真”分支和取“假”分支经验一次,即判断虚实值均被满足。
断定笼罩比语句笼罩提供了更强的测试能力,然而,大部分的断定语句是由多个逻辑条件组合而成的,仅仅判断最终的逻辑运算后果并不能真正笼罩所有的测试门路,这是断定笼罩的一个毛病。
2.3 条件笼罩
条件笼罩是设计测试用例,使得每个判断中每个条件的可能取值至多满足一次。
条件笼罩比断定笼罩减少了对合乎断定状况的测试,减少了测试门路,然而条件笼罩只能保障每个条件至多有一次为真,而不思考所有的断定后果。
2.4 条件 / 断定笼罩
条件 / 断定笼罩是综合了条件笼罩与断定笼罩的一种办法,含意是通过设计足够的测试用例,使得判断条件中所有条件可能至多执行一次取值,同时所有判断的可能后果至多执行一次。
外表上,条件 / 断定笼罩能同时满足断定笼罩以及条件笼罩两种规范,但实际上并没有齐全笼罩所有的“真”和“假”取值的条件组合状况,这种状况下须要将断定语句中的复合条件表达式进行合成,造成由多个根本断定嵌套组成的流程图,以无效查看所有条件是否正确。
2.5 修改条件 / 断定笼罩
修改条件 / 断定笼罩(缩写为MC/DC
)能够解释为:
- 每个条件的所有可能后果至多呈现一次
- 每个断定自身的所有可能后果也至多呈现一次
- 每个入口点与进口点至多要唤醒一次
- 每个条件都显示能独自影响断定后果
MC/DC
具备如下长处:
- 继承了多重条件笼罩的长处
- 线性地减少了测试用例的数量
- 对操作数以及非等式条件变动反馈敏感
- 具备更高的指标码覆盖率
2.6 条件组合笼罩
根本思维是,设计测试用例使得:
- 每个条件中的所有可能至多呈现一次
- 每个判断自身的断定后果也至多呈现一次
条件组合笼罩是一种相当强的笼罩准则,能够无效地查看各种可能的条件取值的组合是否正确,它岂但能够笼罩所有条件的可能取值组合,还能够笼罩所有判断的可取分支,但仍有可能的门路会遗漏掉,测试还不齐全。
2.7 门路笼罩
门路笼罩的根本思维是,抉择足够的测试用例,使得程序中所有可能的门路都至多被执行一次。一条门路是从函数的入口到进口分支的一个惟一序列。
门路笼罩的覆盖率比后面几种逻辑笼罩要大,然而随着代码减少,测试工作将呈指数级增长,比方一个函数包含 10 个判断语句,那么就须要测试 2^10 = 1024
个门路。
2.8 总结
语句笼罩的成果最弱,门路笼罩的成果最好,如下图所示:
优缺点汇合:
3 路径分析
路径分析测试法是在程序控制流程图的根底上,通过剖析管制结构的环路复杂性,导出独立门路汇合,设计测试用例的办法。程序的所有门路作为一个汇合,在这些门路汇合中必然存在一个最短门路,这个最小的门路称为基门路或独立门路。
路径分析与测试法次要步骤如下:
- 绘制控制流图
- 计算圈复杂性,圈复杂性用于计算程序的根本独立门路数目,确保所有语句至多执行一次的测试数量的上界
- 确定独立门路的汇合,独立门路是指至多引入程序的一个新解决语句汇合或一个新条件的门路,即独立门路必须蕴含一条在定义之前未曾应用的边
- 测试用例生成,设计测试用例的数据输出和预期后果,确保根本门路集中每条门路上的执行
4 控制结构测试
控制结构测试能够分为:
- 条件测试:查看程序模块中所蕴含逻辑条件的测试用例设计办法
- 循环测试:检测代码中的简略循环、嵌套循环以及串接循环,测试用例包含零次循环、一次循环、两次循环、m 次循环、最大循环次数等等
- Z 门路笼罩:是门路笼罩的一个变体,是一种在大量判断和多个循环组合的状况下缩小循环测试次数的办法,Z 门路笼罩不思考循环的模式和复杂度如何,也不思考理论执行循环体次数是多少,只思考通过循环体零次和一次这两种状况