单元测试用例编写总结
1后台测试是发展的一个非常重要的方面,可以很大程度上决定APP应用的命运。 正确的测试可以快速确定导致APP应用程序崩溃的问题,而不正确的测试通常会出现故障或停机。
单元测试用于测试各个代码组件,以确保代码按预期工作。 单元测试由开发人员创建并运行。 通常使用测试框架,如JUnit和TestNG。 测试用例通常在方法级别写入并通过自动化执行。
单元测试不仅对保证当前代码的正确性,而且对代码的修复、改进或重构后的正确性也很重要。
2单元测试用例概念2.1正向测试(Positive Testing )测试对象的正确功能是否准确实现,即正常的流功能。 往往需要根据设计说明进行用例推导,严格按照设计说明进行编写即可,用例划分有注意等价类划分等方法。
2.2负测试(Negative Testing )被测者异常功能的实现无疑,多出现在异常过程、异常数据中。 在这部分测试中,需要错误地发散被测对象,多取决于边界值的区分等方法。
2.3分支测试使用流程图,明确可能出现的每个分支,制作并覆盖响应的数据,实现对被测对象的测试。 这个过程对分支可以简化响应,可以通过插入等价类等方法消除同类分支。
2.4边界值分析法这一方法偏重黑匣子测试用例的设计。 对被测量输入进行边界分析时,从各个角度都存在边界值。 例如,程序内部依赖之间已经存在一些边界,程序集成展示后也会出现新的边界。 在设计时,需要注意这些细节。 例如,可输入范围为3-6,输入类型为浮点数。 边界值在7-8之间
7 8
| |
3为了提高单体测试设计原则和任务3.1三原则开发者的代码质量,编写高质量的单体测试,遵守可回收、可修复、可修复原则,具体含义如下:
Responsible:由谁开发谁负责测试,在哪里开发,在哪里测试?
Reliable:测试case必须可靠、可靠,并且能够立即识别对基础架构所做的更改。
Repeative:的所有单元测试用例都必须能够重复运行。 重复运行可以进行回归测试、覆盖率统计等。
3.2单元测试任务一般来说,单元测试任务如下。
1、接口功能测试:用于保证接口功能的正确性。
2、用于保证局部数据结构测试(不常用)接口内的数据结构正确
)1)例如变量初始值的有无
)2)变量是否溢出
3、边界条件测试
)1)变量没有赋值(即NULL ) )。
)2)变量为数值(或字符)
a .主要边界:最小值、最大值、无限大(如DOUBLE ) )
b .溢出边界(预期异常或拒绝服务) )最小值-1,最大值1
c .边界附近:最小值1、最大值-1
)3)变量为字符串
a .参照“文字变量”的边界
b .空字符串
c .将“数字变量”应用于字符串长度的边界
)4)变量是集合
a .空集合
b .对集合的大小应用“数值变量”的边界
c .调整顺序:升序、降序
)5)变量有规律
a .例如对Math.sqrt给出n^2-1和n^2-1的边界
4、执行所有独立的路径测试:保证所有代码、所有分支都经过测试
(1)代码覆盖率
a .语句涵盖:确保所有语句都已执行
b .判定覆盖(分支覆盖) :保证各分支运行到
c .条件涵盖:确保所有条件均为true和false (即if,while中的条件语句所涵盖) )。
d .路径覆盖:确保所有路径均得到覆盖
)2)相关软件
a.Cobertura :句子涵盖
b.Emma: Eclipse插件Eclemma
5、各错误处理路径测试:保证所有异常均已测试
4注意事项4.1隔离单元测试用例在设计和数据准备过程中,必须保持良好的隔离,确保本测试的数据不依赖其他输出,减少相位
互影响。
4.2尽量脱离被测代码的束缚
在测试用例设计的过程中,尤其是测试用例编写在代码编写完成后进行的,一定小心被代码实现功能所影响,多考虑异常分支和异常数据。
4.3面向对象的语言单元测试特点
面向对象的语言进行单元测试还有一定的特点,对于每一个类,可能他出现在程序中的情况各不相同,在进行测试的时候,可以结合上面介绍的方法,根据内部方法相互调用逻辑,完成测试设计。
大体划分两个方向,一个是功能性的,就是类似黑盒的方法,仅仅关注实现的功能点是否正确;另一个就是结构性测试,需要分析类中的方法相互实现逻辑,进行类似白盒测试,确保每个分支覆盖。
5 单元测试用例编写技巧 5.1使用断言
使用断言而不是Print语句许多新手开发人员习惯于在每行代码之后编写System.out.println语句来验证代码是否正确执行。这种做法常常扩展到单元测试,从而导致测试代码变得杂乱。除了混乱,这需要开发人员手动干预去验证控制台上打印的输出,以检查测试是否成功运行。更好的方法是使用自动指示测试结果的断言。
5.2 考虑负面场景
除了正面情景,还要测试负面情景和边缘情况通常,开发人员会花费大量的时间和精力编写测试用例,以确保应用程序按预期工作。然而,测试负面测试用例也很重要。负面测试用例指的是测试系统是否可以处理无效数据的测试用例。
5.3 测试结果的预知性
构建具有确定性结果的测试,一些方法不具有确定性结果,即该方法的输出不是预先知道的,并且每一次都可以改变,为该方法编写测试用例不会有任何用处。
1
1
1
1
2
2
2
2