1、单元测试的基本方法

单元测试的基本方法有:人工静态分析、自动静态分析、自动动态测试,人工动态测试。

人工静态分析:通过人工阅读代码来查找错误,一般是程序员交叉查看对方的代码,可能发现有特征错误和无特征错误。

自动静态分析:使用工具扫描代码,根据某些预先设定的错误特征,发现并报告代码中的可能错误,自动静态分析只能发现语法特征错误。

自动动态测试:使用工具自动生成测试用例并执行被测试程序,通过捕捉某些行为特征(如产生异常/程序崩溃等)来发现并报告错误,自动动态测试只能发现行为特征错误,对无特征错误完全无能为力,例如,前面所说的加法函数,代码可以说是最简单的,错误也是最简单的,但是自动动态测试仍然无法发现,因为测试工具不可能自动了解代码的功能。

人工动态测试:人工设定程序的输入和预期的正确输出,执行程序,并判断实际输出是否符合预期,如果不符合预期,自动报告错误。这里所说的"人工",仅指测试用例的输入和预期输出是人工设定的,其他工作可以由人工完成,也可以借助工具自动完成。人工动态测试可以发现有特征错误和无特征错误,例如,前面所说的加法函数,只要人工建立一个测试用例,输入两个1,并判断输出是否等于2,运行测试,就可以发现代码中含有错误。

以上四种方法还可以进一步细分,例如,人工动态测试又有多种设计测试用例的方法,如果根据程序的功能来设计测试用例,就是黑盒测试,如果根据代码及代码的逻辑结构来设计测试用例,就是白盒测试。

2、测试方法的选择

工作中是不是把各种测试方法不分轻重都做一遍呢?显然不行,项目工期和预算不会允许这么做,也不符合效益原则,应该选择一种方法作为主要测试方法,其他视情况取舍。

自动静态分析、自动动态测试只能发现有特征错误,这两种方法加起来,做到最好也仅限于发现有特征错误,而多数语法特征错误编译器就能发现,很多行为特征错误会在开发过 程中,或集成测试和系统测试中自动暴露出来,所以这两种方法不宜作为主要测试方法。

人工静态分析虽然可能发现有特征错误和无特征错误,但是要彻底找出所有错误来,显然太难了。

人工动态测试可以发现有特征错误和无特征错误,并且具有广阔的发挥空间,可以作为主要测试方法。

3、黑盒测试与白盒测试

常常见到"单元测试是白盒测试","单元测试也有黑盒"之类的说法,容易引起混乱。黑盒与白盒其实是测试方法,黑盒就是针对系统的外部特性进行测试,把目标系统看作一个黑盒子,不考虑内部结构;白盒就是针对系统的内部结构进行测试。各个测试阶段都可以使用黑盒方法和白盒方法,即无论是单元测试、集成测试、系统测试阶段都可以使用黑盒方法和白盒方法。

黑盒测试又叫功能测试,我们首先要测试程序是否实现了基本功能,因此,黑盒测试是基本测试。黑盒测试的主要缺陷是难于衡量完整性,而白盒测试正好可以弥补个缺陷。

白盒测试通过逻辑覆盖率来衡量完整性,具有可以精确统计的数字指标。逻辑单位主要有:语句、分支、条件、条件值、条件值组合,路径。语句覆盖就是覆盖所有的语句,其他类推。另外还有一种判定条件覆盖,其实是分支覆盖与条件覆盖的组合。跟条件有关的覆盖就有三种,解释一下:条件覆盖是指覆盖所有的条件表达式,即所有的条件表达式都至少计算一次,不考虑计算结果;条件值覆盖是指覆盖条件的所有可能取值,即每个条件的取真值和取假值都要至少计算一次;条件值组合覆盖是指覆盖所有条件取值的所有可能组合。与条件直接有关的错误主要是逻辑操作符错误,例如:||写成&&,漏了写!什么的,采用分支覆盖与条件覆盖的组合,基本上可以发现这些错误,而条件值覆盖与条件值组合覆盖往往需要大量的测试用例,因此,条件值覆盖和条件值组合覆盖的效费比偏低,比较有价值的覆盖率是语句覆盖、条件覆盖、分支覆盖、路径覆盖。

4、测试用例

人工动态测试需要人工设计测试用例。一个测试用例,就是设定输入数据,执行被测试程序,并判断输出是否符合预期。输出符合预期,则测试通过,否则测试失败。一般来说,测试工具要能自动报告失败的测试。

测试用例的主要内容是输入数据和预期输出,简称输入输出,其中输入是核心,输入确定了,再根据程序的功能设定预期的正确输出。

如果我们把函数看作测试单元,那么,输入数据就是被测试函数所读取的外部数据及这些数据的初始值。"外部数据"是对于被测试函数来说的,就是除了局部变量以外的其他数据,分为几类:参数、成员变量、全局变量、IO媒体。IO媒体是指文件、数据库或其他储存或传输数据的媒体,例如,被测试函数要从文件或数据库读取数据,那么,文件或数据库中的原始数据也属于输入数据。

31/3123>

软件单元测试方法,单元测试的基本测试方法相关推荐

  1. 软件测试方法单元测试例子,service单元测试例子

    @Test(timeout = 10) 测试,该注解必须加到方法上 timeout超时时间,单位是毫秒 终止死循环,当达到设定的值,结束循环 @Ignore 忽略不想被测试的方法,该注解必须加到方法上 ...

  2. 论述软件测试方法及其应用,软件测试方法及测试工具应用

    软件测试方法及测试工具应用 介绍了软件测试的过程及方法,重点分析了几种常用软件测试工 (本文共3页) 阅读全文>> 轨道交通自动售检票(automatic fare collection, ...

  3. 测试方法——等价类划分基础测试方法

    等价类划分测试方法 在很多情况下,很多人想到的测试方法是穷举测试,穷举测试是最全面的测试,但是数据量很大的情况下不太现实,测试效率太低 实现目标:用最少的测试数据,比较高的效率,以达到最好的测试质量 ...

  4. 软件单元测试文档,软件单元测试报告_模板.doc

    . . PAGE word完美格式 XXXXXX 软件单元测试报告 SRIJS-T0-/V0.0 XXXX年XX月 . . word完美格式 姓名 签名 日期 作者: 审核: 批准: 序号 修订内容简 ...

  5. 软件单元测试文档,软件单元测试报告-模板

    1. XXXXXX软件单元测试报告SRIJS-T0-/V0.0 XXXX年XX月姓名签名日期作者:审核:批准:序号修订内容简述修订日期修订前版本号修订后版本号修订人目 录1.介绍31.1目的31.2定 ...

  6. 【软考软件评测师】第一章节 面向对象测试方法

    [软考软件评测师]第一章节 面向对象测试方法 第一章节 面向对象测试方法 [软考软件评测师]第一章节 面向对象测试方法 第一部分 知识点集锦 1.面向对象的测试分为哪几个阶段 2.面向对象单元测试主要 ...

  7. 测试基础——测试分类和测试方法

    (4)软件测试分类 按方向:功能测试.性能测试.安全测试 功能测试和单元测试的区别:对象不一样,功能测试的对象是一个完整的业务功能.单元测试的对象是一个代码片段,比如类 .几口. 性能测试:压力测试. ...

  8. RAM测试方法 C语言实现,有哪些常用单片机系统RAM测试方法?基于种子和逐位倒转的RAM故障测试法有什么优点?...

    在各种单片机应用系统中, 存储 器的正常与否直接关系到该系统的正常工作.为了提高系统的可靠性,对系统的可靠性进行 测试 是十分必要的.通过 测试 可以有效地发现并解决因 存储 器发生故障对系统带来的破 ...

  9. junit测试方法_JUnit测试方法订购

    junit测试方法 直到版本4.10为止的Junit都使用反射API返回的测试类中测试方法的顺序作为测试方法执行的顺序– Class.getMethods() . 引用getMethods()api的 ...

  10. JUnit测试方法订购

    直到4.10版为止的Junit都使用反射API返回的测试类中测试方法的顺序作为测试方法执行的顺序– Class.getMethods() . 引用getMethods()api的Javadoc: 返回 ...

最新文章

  1. 实现Date函数属性中的format方法
  2. 总结C#保留小数位数
  3. LeetCode Populating Next Right Pointers in Each Node(dfs)
  4. 【收藏】IDEA jetbrains.com官网进不去解决办法
  5. appiumpython框架实例_Appium+python 框架 (二)
  6. 2021牛客多校7 - xay loves monotonicity(线段树区间合并)
  7. 设计模式读书笔记-----备忘录模式
  8. PHP漏洞全解(二)-命令注入攻击
  9. BeanUtils工具类
  10. matlab zxing ean13,【zxing】Ean13 Contents do not pass checksum
  11. Android 使用WakeLock
  12. 数据恢复软件真的可以恢复硬盘数据吗,有哪些数据恢复软件推荐?
  13. W5500+STM32F103C8T6进行TCP通信(modbus)
  14. 学术答辩PPT模板推荐
  15. 广义线性模型(Generalized Linear Model)之三:Poisson回归
  16. 域控服务器共享盘搭建,搭建域控服务器
  17. 使用 maven 打包 src/test/java下的文件,并用 java jar 跑打包出来的jar
  18. mac 微信 QQ 截图 问题
  19. 杭电oj HDOJ 2072 单词数
  20. 工业级无线路由器无线客户端的配置教程

热门文章

  1. navicat和mysql有必要都装吗_MySQL基本介绍及Navicat安装
  2. 星环大数据 学习笔记(76) —— Kafka 运维常用命令
  3. python画二元一次函数图像_Python实现的拟合二元一次函数功能示例【基于scipy模块】...
  4. 前端安全- 常见的网络攻击
  5. api接口文档生成工具apipost
  6. 一个计算机软件学生的求职简历,计算机学生求职的个人简历模板
  7. 用二维数组打印杨辉三角
  8. linux 使用秘钥认证,linux 密钥验证登录
  9. css 纯颜色叠加,CSS颜色叠加
  10. linux文泉驿字体调用,Ubuntu 上安装文泉驿字体的脚本