`
czjxdm
  • 浏览: 122491 次
社区版块
存档分类
最新评论

什么是单元测试?如何编写单元测试用例?

阅读更多
一、 单元测试的概念

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

  测试的覆盖种类

  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全部合并成一个结点。其他的也是照这个规则合并,然后就有了上面的流程图。

  2.计算圈复杂度

  有了图以后我们要知道到底我们有写多少个测试用例,才能满足基本路径测试。

  这里有有了一个新概念——圈复杂度

  圈复杂度是一种为程序逻辑复杂性提供定量测试的软件度量。将该度量用于计算程序的基本独立路径数目。为确保所有语句至少执行一次的测试数量的上界。

  公式圈复杂度V(G)=E+N+2,E是流图中边的数量,N是流图中结点的数量。

  公式圈复杂度V(G)=P+1 ,P是流图G中判定结点的数量。

  通俗的说圈负责度就是判断单元是不是复杂,是不是好测试的标准。一般来说如果圈复杂度如果大于20就表示这个单元的可测试性不好,太复杂(也许有人觉得无所谓,但是如果你们公司实行了CMMI5的话,对这个是有规定的)。

  从图中我们可以看到,

V(G)=10条边-8结点+2=4
V(G)=3个判定结点+1=4

  上图的圈复杂图是4。这个结果对我们来说有什么意义呢?它表示我们只要最多4个测试用例就可以达到基本路径覆盖。

  3.导出程序基本路径。

  现在我们知道了起码要写4个测试用例,但是怎么设计这4个测试用例?

  导出程序基本路径,根据程序基本路径设计测试用例子。

  程序基本路径:基本独立路径就是从程序的开始结点到结束可以选择任何的路径遍历,但是每条路径至少应该包含一条已定义路径不曾用到的边。(看起来不好理解,让我们看例子)。

  让我们看上面的流程图:从结点4到24有几条路径呢?

1 B(4,24)
2 C,E,J(4,6,8,24)
3 C,D,F,H,A,B(4,6,13,15,22,4,24)
4 C,D,G,I,A,B(4,6,13,19,22,4,24)
还有吗??

5 C,D,C,I,A,C,E,J(4,6,13,19,22,4,6,8,24)算吗?
分享到:
评论

相关推荐

    软件测试通用测试用例模板

    此测试用例文档,为本人几次项目的总结,包含了Web测试最基本的测试用例

    如何编写单元测试用例

    单元通俗的说就是指一个实现简单功能的函数。单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。用例的设计方案主要的有下面几种:条件测试,基本路径测试,循环测试。

    CMMI单元测试用例及测试结果记录

    CMMI3工程活动中的实现与测试文件中的单元测试用例与结果记录,可以帮助项目经理正确的编写单元测试用例

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

    单元测试就是只用一组特定的输入(测试用例)测试函数是否功能正常,并且返回了正确的输出。 测试的覆盖种类 1.语句覆盖:语句覆盖就是设计若干个测试用例,运行被测试程序,使得每一条可执行语句至少执行一次。 2....

    测试用例编写规范

    一、测试用例编写准备  从配置管理员处申请软件配置:《需求规格说明书》和《设计说明书》;根据需求规格说明书和设计说明书,详细理解用户的真正需求,并且对软件所实现的功能已经准确理解,然后着手制订测试用例。...

    如何编写干净的单元测试用例

    但对Spring不了解并不影响本文所讲述的单元测试用例编写及回调模式、模板方法的应用。单元测试是编写高质量代码的前提,通过编写有效的单元测试即可以保证代码的质量又可以提高开发速度,因为大多数问题都可以通过...

    商城购物管理系统用例测试报告.docx

    商城购物管理系统用例测试报告.docx 计算机专业,软件工程专业,通信工程大学生课程设计 自己大三的时候写的 适合大家做课程设计,写毕业设计也可以参考 基于软件测试的课程设计

    软件测试中如何编写单元测试用例(白盒测试)

    软件测试中如何编写单元测试用例(白盒测试)测试用例(TestCase)是为某个特殊目标而编制的一组测试输入、执行条件以及预期结果,以便测试某个程序路径或核实是否满足某个特定需求。测试用例(TestCase)目前没有...

    软件单元测试的测试用例编写方法

    软件单元测试的测试用例编写方法MILY:宋体;mso-ascii-font-family:"TimesRoman?;mso-hansi-font-family:?TimesNewRoman??>我在这里用最常用的方法:基本路径测试法来进行单元测试,因为我要用一个实际的例子来...

    软件测试中单元测试的测试用例编写方法

    软件测试中单元测试的测试用例编写方法我在这里用最常用的方法:基本路径测试法来进行单元测试,因为我要用一个实际的例子来进行说明,所以就编写了下面一个程序模块,就暂且命名为“详细查询模块”吧。我先写一下...

    软件测试用例编写要点

     3.1单元测试功能用例的编写目的  单元测试用例的目的在于验证单个模块是否达到了详细设计说明书中规定的功能,由于是单个模块所以无法检验关联性,可能会牵扯到数据库的操作,例如:删除时,需要查看数据库是否完全...

    软件测试中如何编写单元测试用例(白盒测试)收集.pdf

    软件测试中如何编写单元测试用例(白盒测试)收集.pdf

    轻松编写 C++ 单元测试(gtest)

    单元测试概述 测试并不只是测试工程师的责任,对于开发工程师,为了保证发布给测试环节的代码具有足够好 的质量( Quality ),为所编写的功能代码编写适量的单元测试是十分必要的

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

    软件如何编写软件单元测试用例(白盒测试)软件测试前段时间公司进行有关测试的培训,集成测试,性能测试,压力测试说了很多。由于本人还处于Coder阶段,只是对单元测试有了些了解。写下来怕以后自己忘记了。都是些...

    软件测试用例的常用模板

    刚开展工作的测试小同学,分享一个自用的编写测试用例的模板!希望对你有用

    利用Microsoft提供的单元测试资源管理器(UTE)来可视化和运行使用开源Boost测试库编写的单元测试用例。.zip

    Boost测试适配器可用作MicrosoftVisualStudio的扩展。它利用Microsoft提供的单元测试资源管理器(UTE)来可视化和运行使用开源Boost测试库编写的单元测试用例。

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

    如何编写单元测试用例(白盒测试)软件测试前段时间公司进行有关的培训,集成测试,,压力测试说了很多。由于本人还处于Coder阶段,只是对测试有了些了解。写下来怕以后自己忘记了。都是些自己的看法,不一定准确,...

    产品手册-SmartUnit单元测试工具.pdf

    智能化单元测试用例设计工具 SmartUnit Rocket 智能化单元测试工具 SmartUnit DDC 动态缺陷检查工具 概述 汽车电子领域等高安全领域,对单元测试有较高的行业标准: 汽车电子行业遵从ISO26262标准。安全等级...

    简易计算器做单元测试.docx

    myeclipse软件作为编程软件,用junit4完成一个简易计算器测试,实现加减乘除,写的很详细,按着步骤来就行了,最后一个参数测试我没有写,你可以加上

Global site tag (gtag.js) - Google Analytics