如何编写单元测试用例

发表于:2007-08-26来源:作者:点击数: 标签:单元测试
前段时间公司进行有关测试的 培训 , 集成测试 , 性能测试 , 压力测试 说了很多。由于本人还处于Coder阶段,只是对单元测试有了些了解。写下来怕以后自己忘记了。都是些自己的看法,不一定准确,欢迎高手指教。 一、 单元测试的概念 单元通俗的说就是指一
 前段时间公司进行有关测试的培训集成测试性能测试压力测试说了很多。由于本人还处于Coder阶段,只是对单元测试有了些了解。写下来怕以后自己忘记了。都是些自己的看法,不一定准确,欢迎高手指教。

一、 单元测试的概念

        单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。
        测试的覆盖种类
        1.语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。
        2.判定覆盖(也叫分支覆盖):设计若干个测试用例,运行所测程序,使程序中每个判断的取真分支和取假分支至少执行一次。
        3.条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次。
        4.判定——条件覆盖:设计足够的测试用例,运行所测程序,使程序中每个判断的每个条件的每个可能取值至少执行一次,并且每个可能的判断结果也至少执行一次。
        5.条件组合测试:设计足够的测试用例,运行所测程序,使程序中每个判断的所有条件取值组合至少执行一次。
        6.路径测试:设计足够的测试用例,运行所测程序,要覆盖程序中所有可能的路径。
        用例的设计方案主要的有下面几种:条件测试,基本路径测试,循环测试。通过上面的方法可以实现测试用例对程序的逻辑覆盖,和路径覆盖。

二、开始测试前的准备
       
        在开始测试时,要先声明一下,无论你设计多少测试用例,无论你的测试方案多么完美,都不可能完全100%的发现所有BUG,我们所需要做的是用最少的资源,做最多测试检查,寻找一个平衡点保证程序的正确性。穷举测试是不可能的。   所以现在进行单元测试我选用的是现在一般用的比较多的基本路径测试法。

三、开始测试

       基本路径测试法:设计出的测试用例要保证每一个基本独立路径至少要执行一次。

        函数说明 :当i_flag=0;返回     i_count+100
                                当i_flag=1;返回   i_count  *10
                                否则  返回   i_count  *20


        输入参数:int i_count , 
                            int i_flag
        输出参数: int  i_return;
       
      
        代码:
        

 1  int Test(int i_count, int i_flag)
 2         {
 3             int i_temp = 0;
 4             while (i_count>0)
 5             {
 6                 if (0 == i_flag)
 7                 {
 8                     i_temp = i_count + 100;
 9                     break;
10                 }
11                 else
12                 {
13                     if (1 == i_flag)
14                     {
15                         i_temp = i_temp + 10;
16                     }
17                     else
18                     {
19                         i_temp = i_temp + 20;
20                     }
21                 }
22                 i_count--;
23             }
24             return i_temp;
25         }


 

1.画出程序控制流程图
        
    图例:
        

事例程序流程图:
                    

        圈中的数字代表的是语句的行号,也许有人问为什么选4,6,13,8......作为结点,第2行,第3行为什么不是结点,因为选择结点是有规律的。让我们看程序中;第2行,第3行是按顺序执行下来的。直到第4行才出现了循环操作。而2,3行没有什么判断,选择等分支操作,所以我们把2,3,4全部合并成一个结点。其它的也是照这个规则合并,然后就有了上面的流程图。

原文转自:http://www.ltesting.net