软件测试 | 白盒的测试方法

白盒测试是一种基于代码的测试方法,关注程序内部逻辑,常用度量包括代码覆盖率。常见的覆盖率工具有EMMA、Cobertura和JaCoCo。精准化测试则强调代码调用链与测试用例关联,通过分析代码变更影响范围优化测试效率,同时结合黑盒测试提升覆盖率。目前,精准化测试工具尚不普遍,但可以通过现有工具如JaCoCo实现部分功能。
摘要由CSDN通过智能技术生成

白盒测试又称为结构测试、透明盒测试、逻辑驱动测试或基于代码的测试。白盒测试是一种测试用例设计方法。盒子指的是被测试的软件,白盒指的是盒子是可视的,即清楚盒子内部的东西以及里面是如何运作的。白盒法在全面了解程序内部逻辑结构的基础上,对所有逻辑路径进行测试。白盒法是穷举路径测试。在使用这一方法时,测试者必须检查程序的内部结构,从检查程序的逻辑结构着手,得出测试数据。

白盒测试是在程序不同地方设立检查点,用来检查程序的状态,以确定实际运行状态与预期状态是否一致。

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工具,自主地去实现精准化测试。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
白盒测试指南 (说明:此白盒测试指南主要给白盒测试人员提供一些基本的白盒测试方法和技术,由于涉及的问题广泛,测试内容中的细节不一定准确和完整,还有待于各位的共同参与和不断完善,欢迎多交流!) 1. 目的 本方案主要实施NC产品程序代码的白盒测试。使界面符合设计规范,适用于用户;保证程序创建的类与接口的完整与正确,以及程序模块单独正常运行。保证局部模块功能完备性,运行正确性与稳定性。 2. 测试项 所要测试的类。如: nc.ui.bd.* nc.bs.bd.* nc.vo.bd.* 3. 测试依据 1. NC产品需求报告; 需求规格说明书、用例描述清单 2. 设计文档;(OOA、OOD、CRC卡) 如:AOM(Analysis Object Model)表示类间的静态关系,是多个相关的用例共用的。 ASD(Analysis Sequence Diagram)是按业务工作的顺序表示每一工作步骤执行时类间的动态关系。一个用例对应一个ASD。 CRC (Collaborators & Responsibilities Card)卡是一个类的完整表述 3. 界面规范 4. 编码规范 5. 开发命名标准 4. 通过的准则 1.界面测试通过的标准:界面的样式、大小、颜色、整体布局的设置;各种标签控件的使用及主题描述以及事件源控件的使用、快捷键使用都应符合《NC系统应用框架需求报告》和《设计文档的相关规范》。 2.程序代码通过的标准:创建的类、接口、方法、属性应与《设计文档》保持一致;程序的各种命名、注释、代码行的格式等应符合《程序开发命名标准》和《编码规范》;程序模块能独立稳定运行。 5. 测试环境配置 1. 测试工具: 2. 软件环境: Client端: 操作系统:中文WINNT/2000 开发环境:VA3.5 专业版 待测试的源码包 Server端: 操作系统:WIN NT4.0 开发环境:VA3.5 专业版 通讯环境: Servlet 3. DB Server端:DBMS:SQL SERVER
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值