1. 写出MaCabe方法计算程序环形复杂度的三种方法。
V(G)=流图中的区域数
V(G)=E-N+2(其中E是流图中的边数,N是结点数)
V(G)=P+1(其中P是流图中判定结点的数目 )
2. 什么是白盒测试?
白盒测试又称结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法,盒子指的是被测试的软件,白盒指的是盒子是可视的,你清楚盒子内部的东西以及里面是如何运作的。"白盒"法全面了解程序内部逻辑结构、对所有逻辑路径进行测试。"白盒"法是穷举路径测试。在使用这一方案时,测试者必须检查程序的内部结构,从检查程序的逻辑着手,得出测试数据。
3. 列出逻辑覆盖的几种覆盖标准,并比较它们的强弱等级。
(1)覆盖标准:
1、语句覆盖
含义:选择足够多的测试数据,使被测程序中每个语句至少执行一次。
特点:语句覆盖对程序的逻辑覆盖很少。语句覆盖只关心判定表达式的值,而没有分别测试判定表达式中每个条件取不同值时的情况。语句覆盖是很弱的逻辑覆盖标准。
2、判定覆盖
含义:不仅每个语句必须至少执行一次,而且每个判定的每种可能的结果都应该至少执行一次。
3、条件覆盖
含义:不仅每个语句至少执行一次,而且使判定表达式中的每个条件都取到各种可能的结果。
特点:条件覆盖通常比判定覆盖强,因为它使每个条件都取到了两个不同的结果,判定覆盖却只关心整个判定表达式的值。但也有反例,如第二组测试用例。
判定覆盖不一定包含条件覆盖,条件覆盖也不一定包含判定覆盖。
4、判定/条件覆盖
含义:使得判定表达式中的每个条件都取到各种可能的值,每个判定表达式也都取到各种可能的结果。
5、条件组合覆盖
含义:要求选取足够多的测试数据,使得每个判定表达式中条件的各种可能组合都至少出现一次。
特点:条件组合覆盖是前述几种覆盖标准中最强的。满足条件组合覆盖标准的测试数据,也一定满足判定覆盖、条件覆盖和判定/条件覆盖标准。
但是,条件组合覆盖标准的测试数据并不一定能使程序中的每条路径都执行到。
从对程序路径的覆盖程度分析的逻辑覆盖标准。
- 点覆盖
含义:选取足够多的测试数据,使得程序执行路径至少经过流图的每个结点一次。
特点:由于流图的每个结点与一条或多条语句相对应,因此点覆盖标准和语句覆盖标准是相同的。
- 边覆盖
含义:选取足够多测试数据,使得程序执行路径至少经过流图中每条边一次。
特点:通常边覆盖和判定覆盖是一致的。
- 路径覆盖
含义:选取足够多测试数据,使程序的每条可能路径都至少执行一次(如果程序图中有环,则要求每个环至少经过一次)。
强弱等级:语句覆盖<判定覆盖<条件覆盖<判定/条件覆盖<条件组合覆盖<路径覆盖
4. 用基本路径测试技术设计下图中程序的测试用例。
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200512195544444.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L1pZUFpZUFpZUDExMjU=,size_16,color_FFFFFF,t_70)
路径1:
1-11
nPosX 取-1, nPosY取任意值
路径2:
1-2, 3-4, 5-10-1-11
nPosX取1, nPosY取1
路径3:
1-2,3-6-7-9-10-1-11
nPosX 取1, nPosY取-1
路径4:
1-2,3-6-8-9-10-1-11
nPosX取1, nPosY取-3
5. 分别列出三种循环的测试方法。
(1) 简单循环
应该使用下列测试集来测试简单循环,其中n是允许通过循环的最大次数。
1.跳过循环。
2.只通过循环一次。
3.通过循环两次。
4.通过循环m次,其中m<n-1。
5.通过循环n-1,n,n+1次。
(2) 嵌套循环
1.从最内层循环开始测试,其他循环都设置为最小值。
2. 对最内层循环使用简单循环测试方法,而使外层循环的迭代参数取最小值,并为越界值或非法值增加一些额外的测试。
3.由内向外,对下一个循环进行测试,但保持所有其他外层循环为最小值,其他嵌套循环为“典型”值。
4.继续进行下去,直到测试完所有循环。
(3) 串接循环
1.如果串接循环的各个循环都彼此独立,则可以使用测试简单循环的方法来测试串接循环。
2.如果两个循环串接,而且第一个循环的循环计数器值是第二个循环的初始值,则这两个循环并不是独立的。当循环不独立时,建议使用测试嵌套循环的方法来测试串接循环。