软件测试 | 白盒的测试方法
白盒测试又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法。盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。白盒法在全面了解程序内部逻辑结构的基础上,对所有逻辑路径进行测试。白盒法是穷举路径测试。在使用这一方法时,测试者必须检查程序的内部结构,从检查程序的逻辑结构着手,得出测试数据。
白盒测试是在程序不同地方设立检查点,用来检查程序的状态,以确定实际运行状态与预期状态是否一致。
1.白盒测试的度量
白盒测试是根据待测产品的内部实现细节来设计测试用例。白盒测试涵盖单元测试、集成测试。一般使用代码覆盖率作为白盒测试的主要度量指标。
2.代码覆盖率常见概念
(1)语句覆盖:每行代码都要覆盖至少一次(覆盖是测试人员之间常用的交流语言,也即测试到的地方称为覆盖)。
(2)判定覆盖:判定表达式的真假至少覆盖一次。
(3)条件覆盖:使每个判定表达式中的每一个条件都取到各种可能的值。
(4)判定/条件覆盖:判定覆盖于条件覆盖都需要覆盖到。
(5)条件组合覆盖:判定表达式中的所有条件组合都需要覆盖。
(6)分支覆盖:控制流中的每条边都要被覆盖一次。
(7)路径覆盖:所有的路径都要尽量覆盖。
(8)指令覆盖:一行代码会被编译为多条指令,尽可能地覆盖所有指令。
(9)方法覆盖:每个方法至少要被覆盖一次。
(10)类覆盖:每个类至少被覆盖一次。
3.覆盖率统计的工具
(1)EMMA:是一个开源、面向Java程序的测试覆盖率收集和报告工具。它通过对编译后的Java字节码文件进行插桩,在测试执行过程中收集覆盖率信息,并通过支持多种报表格式对覆盖率结果进行展示。
(2)Cobertura:是一款优秀的开源测试覆盖率统计工具,它与单元测试代码结合,标记并分析在测试包运行时执行了哪些代码和没有执行哪些代码,以及所经过的条件分支,来测量测试覆盖率。除了找出未测试到的代码并发现Bug外,Cobertura还可以通过标记无用的、执行不到的代码来优化代码,最终生成一份美观、详尽的HTML覆盖率检测报告。
(3)JaCoCo:是一个开源的覆盖率统计工具,针对Java语言,是现在流行的覆盖率统计工具。
4.流程覆盖
流程覆盖用路径覆盖率表达,是利用代码执行流代表流程。执行时需要对流程进行裁剪获取一个适合的小规模的业务子集。
流程覆盖率 = 测试经过的路径 / 业务子集路径
5.精准化测试
精准化测试是一套计算机测试辅助分析系统。精准化测试的核心组件包含软件测试示波器、用例和代码的双向追溯、智能回归测试用例选取、覆盖率分析、缺陷定位、测试用例聚类分析、测试用例自动生成系统。这些组件的功能完整地构成了精准化测试技术体系。
精准化测试强调代码调用链与黑盒测试用例之间的关联。可以根据代码变更自动分析影响范围。例如,研发人员修改了1行代码,功能用例代码有1000行,但实际上很多用例和这1行代码是没有关系的,精准化测试可以判断出有哪些测试用例和改动的这一行代码有关系。例如1000个测试用例当中,只有20个和修改的代码有关系。那么测试的范围可以大大缩减,测试效率就会提高。
精准化测试还有一个很有价值的作用,就是在黑盒测试过程中,借助代码流程覆盖率指导测试活动。例如,在黑盒测试结束之后,观察代码的覆盖情况,发现有一些路径没有被覆盖到,这个时候就需要继续补充测试用例,一直到代码可以很全面地被覆盖。这是系统测试与底层白盒测试相结合的一个方法。
精准化测试还可以用线上数据推导有效的测试用例。例如测试一个系统,这个系统有大量历史数据,这时就可以提取其中一段运行时间的数据,使用这些数据继续测试这个系统。测试完成后统计这些测试数据中哪些数据对于测试覆盖率的增加是有帮助的,可以使用大数据的方法,自动提取出对于测试覆盖率有增益效果的数据。这些测试数据实际上属于同一个集合,在这种集合中,只取一部分测试数据就可以。利用线上数据反推有效测试用例也是精准化测试的重要作用。
由于精准化测试需要测试人员对白盒测试相当了解,对测试人员的技能要求比较高,所以实现起来有一定的难度。目前,行业中还没有开源的精准化测试的工具。现阶段只能通过JaCoCo工具,自主地去实现精准化测试。
软件测试 | 白盒的测试方法相关推荐
- 软件测试-白盒灰盒篇
这篇博客接着来介绍白盒测试,在没有具体接触白盒测试前,总觉他很神秘,很复杂.相信大家都会有这样的感觉, 今天就来把这个盒子打开,剖析一下白盒测试. 白盒测试 白盒测试也称结构测试或逻辑驱动测试,它是知 ...
- 软件测试基础知识 - 说一说黑盒与白盒的测试方法
分享一个大牛的人工智能教程.零基础!通俗易懂!风趣幽默!希望你也加入到人工智能的队伍中来!请点击http://www.captainbed.net 黑盒测试 黑盒测试也称功能测试或数据驱动测试,它是在 ...
- 黑盒测试和白盒的区别,有哪些常见的白盒黑盒测试方法
- java软件测试黑盒工具,软件测试中的抽象层次系列之一 – 黑盒与白盒
前几天我在微博上发出了一个STB-010(软件测试在线公益课程系列)报名通知的帖子,这一讲的题目是"软件测试黒盒技术与应用 - 状态转换测试方法",立即引来了一些讨论. 比如朱少民 ...
- nextdate函数白盒测试问题 软件测试_nextdate白盒测试用例
日期问题白盒测试用例的设计( 日期问题白盒测试用例...题目 前一日函数PreDate是NextDate的逆函数(代码...请采用基路径方法对前一日函数进行测试用例设计. 代码...... NEXTD ...
- 软件测试黑盒用例文档,软件测试有关黑盒白盒的软件测试.doc
<软件测试有关黑盒白盒的软件测试.doc>由会员分享,提供在线免费全文阅读可下载,此文档格式为doc,更多相关<软件测试有关黑盒白盒的软件测试.doc>文档请在天天文库搜索. ...
- 软件测试(黑盒白盒)
软件=程序+数据库+文档+服务 软件测试: 使用人工或自动手段来运行或测试某个系统的过程,目的在于检验其是否满足规定的需要,或是弄清楚预期结果与实际结果之间的差别 软件测试目的:以最小的人力物力和时间 ...
- 深入到系统组件是否白盒测试_南京豪之诺软件测试:白盒、黑盒、灰盒优缺点(知识普及)...
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼 白盒测试概念 白盒测试也称结构测试或逻辑驱动测试,重点关注软件内部的实现细节,它是知道产品内部工作过程,可通过测试来检测产品内部动作是否按照规格说明书的规 ...
- 软件测试:黑盒白盒与动态静态之间有必然联系吗
区分黑白盒:看有没有查看源码 区分动静态:看有没有运行程序 情况 类型 运行程序,只看输入输出 动态黑盒 运行程序,分析代码结构 动态白盒 不运行程序,只查看界面 静态黑盒 不运行程序,查看代码 静态 ...
最新文章
- linux下目录的个个文件夹含义
- python全栈工程师是指_Python全栈工程师(exercises)
- 1spring注解:@Configuration,@Bean,@ComponentScan(),@Scope
- 手把手教你如何安装多个node版本
- lcd开机流程图_LCD1602程序代码及显示流程图
- 乐鑫再次称王WiFi MCU市场
- php poedit怎么debug,php – 使用Poedit与XAMPP
- Windows打开应用,提示“此程序被组策略阻止”
- Elasticsearch(Transport Client)常用操作
- python 批量处理图片文件(做到图片不变形)
- 关于思科C2950交换机console清除密码,恢复初始配置的方法
- 如何挑选属于自己的电脑
- javaweb招聘管理系统的设计与实现
- Android app 内存分配
- 网络上各家分享CAD图纸如何分辨好坏呢?
- 三体船的全球与中国市场2022-2028年:技术、参与者、趋势、市场规模及占有率研究报告
- 2020.05.29
- 子网掩码与prefixLength长度的互相转换
- 楚琳Web打印控件可以在MVC中调用嘛?
- mfc下获取所有连接的打印机信息
热门文章
- 蓝牙安全入门详解 超详细
- python Pyside2模块详细介绍(一)
- 1.#_3 Typora(markdown格式文本编辑器) -- 配置高亮及快捷键
- Lesson 18 Electric currents in modern art 内容鉴赏
- 不入门级代码教程(仅供参考)
- 零基础开始网页制作-前端开发
- 统计学基础5-多维随机变量及其分布
- 图解Go语言内存分配 https://juejin.im/post/5c888a79e51d456ed11955a8
- 简单工厂 工厂方法 抽象工厂
- 3GPP TS 23501-g51 中英文对照 | 4.2.1 General