单元测试用例编写总结

1 背景

测试是开发的一个非常重要的方面,可以在很大程度上决定一个应用程序的命运。良好的测试可以在早期捕获导致应用程序崩溃的问题,但较差的测试往往总是导致故障和停机。

单元测试用于测试各个代码组件,并确保代码按照预期的方式工作。单元测试由开发人员编写和执行。大多数情况下,使用JUnit或TestNG之类的测试框架。测试用例通常是在方法级别写入并通过自动化执行。

单元测试不仅仅用来保证当前代码的正确性,更重要的是用来保证代码修复、改进或重构之后的正确性。

2 单元测试用例相关概念

2.1正面测试(Positive Testing)

测试被测对象的正确功能实现无误,即正常流程功能。往往需要根据设计说明进行用例导出,严格按照设计说明编写即可,用例划分注意等价类区分等方法。

2.2负面测试(Negative Testing)

测试被测对象的异常功能实现无误,多在异常流程,异常数据中体现。该部分测试需要对被测对象进行错误发散,常依赖于边界值区分等方法。

2.3分支测试

使用流程图,明确可能出现的每条分支,制造响应的数据进行覆盖,实现对被测对象的测试。这个过程对于分支可以进行响应的简化,可以穿插等价类等方法去除同类分支。

2.4 边界值分析法

这种方法更偏向于黑盒测试用例设计中使用,对被测输入进行边界分析,从各个角度都会有边界值,例如程序内部依赖之间,已经有一些边界存在,在程序集成展示后,也会有新的边界出现,在设计的时候,需要注意这些细节。例如我们可输入范围是3-6,和输入类型为浮点数。那么边界值为7-8之间

7 8

| |

3 单元测试设计原则和任务

3.1 三原则

为了提高开发人员的代码质量,编写高质量的单元测试,要遵守3R(Responsible, Reliable, Repeative)原则,具体含义如下:

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

单元测试用例编写总结相关推荐

  1. Java编程技巧之单元测试用例编写流程

    简介: 立足于"如何来编写单元测试用例",让大家"有章可循",快速编写出单元测试用例. 作者 | 常意 来源 | 阿里技术公众号 温馨提示:本文较长,同学们可收 ...

  2. ultraedit 运行的是试用模式_Wings面向企业级的单元测试用例自动编码引擎

    点击上方"蓝字"关注我们吧! 2020年7月30日,星云测试在TiD2020质量竞争力大会正式发布最新产品"Wings-企业级单元用例自动编码引擎".这是国际首 ...

  3. java 单元测试 异步_Java/Android编写异步的单元测试用例

    不写单元测试用例的程序员不是一个好CTO!!! 注:以下内容编码环境为AndroidStudio_2.4Preview6,测试框架 JUnit4.12 今天在研究 MVP_RxJava2_Retrof ...

  4. JUnit单元测试用例

    2019独角兽企业重金招聘Python工程师标准>>> 注意在编写测试用例的时候,要保持测试用例的独立性 一个原则,每条单元测试用例都必须独立运行,不能依靠其他测试用例,或者不能按照 ...

  5. 单元测试用例_前端单元测试实践

    一说到单元测试,可能对于业务一线同学来说,心理立马就会无形中有一种压迫感,心想 "业务都做不完了,写个球的单元测试,先保证功能完备,赶紧上线才是王道",这句话的核心是以业务为重,没 ...

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

    软件单元测试的测试用例编写方法 发表于:2010-09-10来源:作者:点击数: 软件 单元测试 的 测试用例 编写方法 MI LY: 宋体; mso-ascii-font-family: " ...

  7. ​​​​​​​测试用例编写指南

    测试用例编写指南 目录 1 目的 2 适用范围 3 测试设计依据 4 测试用例编写步骤 5 测试用例编写要素 6 测试用例划分原则 6.1 测试需求划分 6.2 测试用例划分 7 测试用例编写要求 8 ...

  8. 8大征兆判断你的单元测试用例写得如何

    300G全套最新软测视频教程分享 链接:https://pan.baidu.com/s/17jkyGn-Wm-zC6QQLkWjrsw 提取码:o94n 如果您从事软件开发很长一段时间,那么您很容易理 ...

  9. Java黑皮书课后题第8章:*8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1。让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了

    *8.23(游戏:找到翻转的单元格)假定给定一个填满0和1的6*6矩阵,所有的行和列都有偶数个1.让用户翻转一个单元,编写一个程序找到哪个单元格被翻转了 题目 题目描述与运行示例 破题 代码 题目 题 ...

  10. Angular Jasmine单元测试用例spec.ts的加载逻辑

    installedModules里存放了很多已经加载的module: req就是我应用的test.ts里硬编码的单元测试用例文件: 执行id为6Eaj的module: 更多Jerry的原创文章,尽在: ...

最新文章

  1. 《如何高效学习》读书笔记(一)——整体性学习策略
  2. Ionic - 先进的 HTML5 移动开发框架和 SDK
  3. netca error
  4. JZOJ 5425. 【NOIP2017提高A组集训10.25】数论
  5. android 6.0动态权限的申请
  6. 比较两篇文章的相似性
  7. 一个智能运维算法测试方法
  8. python gevent缺点_python 协程 greenlet gevent
  9. Java 下的函数对象
  10. AcWing 786. 第k个数
  11. 制作Linux系统安装程序,制作自己的rpm包
  12. 2020年计算机设计大赛参赛回顾与总结
  13. java给服务器创建文件夹,java服务器创建文件夹
  14. HDFS_数据加密空间
  15. rockchip eDP 配置
  16. 大学生体育课期末大作业
  17. 微信小程序之一本地图片处理--按屏幕尺寸插入图片
  18. 盐城范围内野外钓鱼好去处(不是塘钓哟)
  19. 容器编排之战——kubernetes
  20. python槽怎么用_PyQt4信号与槽详解

热门文章

  1. python毕业设计作品基于django框架外卖点餐系统毕设成品(6)开题答辩PPT
  2. bim技术应用有哪些
  3. 新概念英语第一册1-144课(转)
  4. Tomcat乱码情况完美解决
  5. docker自动部署脚本
  6. Flash cs4快捷方式
  7. 个体户查询_2019年最新修订小规模/一般纳税人?个体户的区别 附最新增值税率表...
  8. MATLAB逆谐波均值滤波
  9. 视频工时测量软件哪个好,为什么越来越多的企业选择VIOOVI工时分析软件?
  10. MyEclipse破解 CI-2018.9.0版本