meetyy

一、概述

1.白盒测试

2.控制流测试

二、代码覆盖

1.语句覆盖

2.判定覆盖

3.条件覆盖

4.条件组合覆盖

5.判定条件覆盖

6.循环覆盖

7.路径覆盖

二、McCabe圈复杂度

三、控制流测试练习

======================================================

练习:

1.白盒测试依据详细设计文档,利用不同的逻辑覆盖率达到某种程度的()。

2.软件测试只要做到语句覆盖和分支覆盖,就可以发现程序中的所有错误。()

3.以下哪项不是白盒测试的缺点()。

A.白盒测试投入较大,成本较高

B.白盒测试不验证规格的正确性

C.测试用例之间可能存在严重的冗余。

D.无法检查代码中遗漏的路径和数据敏感性错误

4.单元中的控制流,指的是程序中语句的()。

5.代码覆盖率是软件测试中的一种度量,描述程序中()被测试的比例和程度。

6.代码覆盖率包括()、判定覆盖、条件覆盖、条件组合覆盖、()、循环覆盖、路径覆盖。

7.语句覆盖是选择足够的测试用例,使得被测代码中()都至少执行一次。

8.判定覆盖是选择足够的测试用例,使得()的可能结果至少出现一次。

9.条件覆盖是选择足够的测试用例,使得判定中的()可能取值至少满足一次。

10.条件组合覆盖是选择足够的测试用例,使得每个判定中条件的()都至少出现一次。

11.if(A>0) && (B<0),请问使用判定条件覆盖法,需要准备哪些测试数据?

12.if(a or b) and c then,请问使用判定条件覆盖法,需要准备哪些测试数据?

13.对于循环路径来说,测试循环()次、1次、最大次和最大次+1。

14.对于带循环的函数来说,()覆盖是很困难的。

15.路径覆盖能够保证条件组合覆盖。()

16.已知一个简单的C#程序,代码如下。该程序接受一个整数输入,输出该整数的阶乘。(1)请设计测试用例,达到语句覆盖、分支覆盖、循环覆盖。(2)使用McCabe圈复杂度方法,设计测试用例。

static void Main(string[] args)
{
    int i, n, f;
    Console.Write("n=");
    n=Convert.ToInt32(Console.ReadLine());
    if(n<0)
    {
        Console.WriteLine("Invalid:{0}", n);
        n=-1;
     }
    else
    {
        f=1;
        for(i=1;i<=n;i++)
        {
            f *=i;
        }
       Console.WriteLine("{0}!={1}.", n, f);
     }
}

17.()用来度量基于控制流的程序单元复杂度。

18.McCabe圈复杂度,需要绘制一个描述当前被测试单元的()来度量圈复杂度。

19.McCabe圈复杂度的有向图中,节点代表入口、出口以及(),边代表()。

20.McCabe高圈复杂度的模块本质上来说不容易出错,不容易回归。

21.McCabe圈复杂度的数值等同于图中存在的(),也就是等同于你要想覆盖整个图所需要进行的测试次数。

22.已知被测对象为一个简单的C#程序,代码如下,它把十六进制字符输入转换到相应的整型数。

(1)使用语句、分支、条件、循环的全覆盖创建一套测试用例集合。

(2)计算McCabe复杂性,写出基本路径,并创建基本测试。

 1             string input = Console.ReadLine();
 2             char[] values = input.ToCharArray();
 3             uint hexnum, nhex;
 4             hexnum = 0;
 5             nhex = 0;
 6             foreach (char letter in values)
 7             {
 8                 switch (letter)
 9                 {
10                     case \'0\':
11                     case \'1\':
12                     case \'2\':
13                     case \'3\':
14                     case \'4\':
15                     case \'5\':
16                     case \'6\':
17                     case \'7\':
18                     case \'8\':
19                     case \'9\':
20                         /* Convert a decimal digit */
21                         nhex++;
22                         hexnum *= 0x10;
23                         hexnum += Convert.ToUInt32(letter - \'0\');
24                         break;
25                     case \'a\':
26                     case \'b\':
27                     case \'c\':
28                     case \'d\':
29                     case \'e\':
30                     case \'f\':
31                         /* Convert a lower case hex digit */
32                         nhex++;
33                         hexnum *= 0x10;
34                         hexnum += Convert.ToUInt32(letter - \'a\' + 0xa);
35                         break;
36                     case \'A\':
37                     case \'B\':
38                     case \'C\':
39                     case \'D\':
40                     case \'E\':
41                     case \'F\':
42                         /* Convert a lower case hex digit */
43                         nhex++;
44                         hexnum *= 0x10;
45                         hexnum += Convert.ToUInt32(letter - \'A\' + 0xA);
46                         break;
47                     default:
48                         /* Skip any non-hex characters */
49                         break;
50                 }
51             }
52             Console.WriteLine("Got {0} hex digits: {1:X}\n", nhex, hexnum);
53 
54 
55             Console.WriteLine("now is:{0}", hexnum);
56         }
57     }

 

分类:

技术点:

相关文章: