(一)如何编写单元测试用例(白盒测试)

发表于:2007-8-24 13:46

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:公木子    来源:公木子的博客

  一、 单元测试的概念

  单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。

  测试的覆盖种类

  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         }


 

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号