单元测试入门必修,结合实战演练
软件测试自学吧
全部回复
仅看楼主
level 6
黑与白间 楼主
1L百度,分享一个单元测试的实战案例
2020年02月01日 10点02分 1
level 6
黑与白间 楼主
一. 软件测试过程
在学习单元测试前,我们必须要了解的是软件测试的过程,如下图:
二. 单元测试简述
单元测试是V模型的测试级别中最低级别的测试,单元测试是其他级别测试的基础。单元测试(Unit Testing)又称模块测试,是对构成软件最小单元进行的测试,在一个软件系统中,一个单元是指具备以下特征的代码块:
具有明确的功能
具有明确的规格定义
具有明确的与其他部分接口定义
能够与软件的其他部分清晰地进行划分
通常,单元测试是针对源程序精心的测试,例如,在传统的结构化编程语言中,针对函数或子过程进行的测试,在Java、.Net、C++这样的面向对象语言中,对类的测试。换句话说,在不同的编程语言中,单元的划分是不同的。
单元测试就是依据软件详细设计说明书,检查软件单元是都符合软件详细设计说明书的要求,单元测试既可以使用白盒测试方法,也可以使用黑盒测试方法。白盒测试是基于代码的测试,依据软件的编码实现,设计测试用例,将被测程序看成一个透明的盒子,可以看到程序的内部结构。黑盒测试是不同考虑软件是如何编码实现的测试,测试人员将被测程序看成一个黑盒子,在完全不考虑程序内部结构的情况下,检查程序的功能是否符合软件需求规格说明书的要求,单元测试通常采用是白盒测试方法。单元测试依据:
单元或组件需求说明
详细设计文档
代码
典型单元测试对象:
单元或组件
程序
数据转换/移植程序
数据库模型
单元测试是相对独立的,所以可以单独对一个单元进行单元测试,在对一个单元进行单元测试时,这个单元与其他单元的联系通过使用桩、驱动器和模拟器来实现。单元测试可能包括功能测试和特定的非功能够特征测试,比如资源行为测试(如内存泄漏)或健壮性测试和结构测试(比如分支覆盖),根据工作产品,例如单元规格说明、软件设计或数据模型等设计单元测试用例。
单元测试的一个方法是在编写代码之前就完成测试用例的编写和测试用例自动化,这种方法被称为测试有限的方法或测试驱动开,这是高迭代的方法,并且取决于如下的循环周期:测试用例的开发,构建软件单元和建增集成,执行单元测试,修正问题并反复循环。直到全部通过。在单元测试时,通常使用白盒测试技术设计测试用例,采用自动化测试方法(单元测试框架,如Unittest,Junit,Nunit等)执行单元测试。
2020年02月01日 10点02分 2
level 6
黑与白间 楼主
三、白盒测试技术
如何选择测试数据,使得测试更有效,就引出了非常重要的问题---设计测试用例。所谓测试用例,是指为了某个特定的测试目标二设计的遗嘱测试输入、执行条件以及预期结果,测试用例的内容一般包括测试目标、测试环境、输入数据、测试步骤、预期结果、测试结果、测试脚本等。白盒测试技术是一种经典的设计测试用例的技术,利用白盒测试技术,可以用尽可能少的测试用例,到达某种测试覆盖,进行相对有效的测试。
四、语句覆盖方法实战案例
语句覆盖:测试用例的目标是尽可能少的测试用例取得尽可能好的测试效果,如何设计测试用例,人们自然会想到,设计测试用例时,至少要把每一行语句都执行一遍,如果没有设计足够多的的测试用例,使得每一行语句都执行一遍,就可以认为测试是不充分的。在设计测试用例时,选择足够多的测试用例,使得被测程序的每一行语句都至少执行一遍,这种设计测试用例的方法称为语句覆盖。简言之:所有的“语句”都要覆盖一遍。
有如下Java代码(存在错误):输入2个整型参数x,y,当x小于5或y=5时,将x和y的和作为返回结果,否则,将x和y的商作为返回结果。
设计测试用例,使得所有语句都执行过至少1遍,即实现了语句覆盖,如下:
显然语句覆盖是不能发现程序的所有错误的,上例中需求的是"当x小于5或y=5时将x和y的和作为结果返回",但程序实现的是"当x小于5且y=5时将x和y的和作为结果返回"。这个例子说明语句覆盖不能发现判定中的问题,还说明了设计单元测试用例不仅依赖于单元代码,还依赖于单元设计,最终依赖用户需求,因此人们想到了判定覆盖
2020年02月01日 10点02分 3
1