南京工程学院
上机实 验 报 告
课 程 名 称: 软件质量保证与测试
实验项目名称:
白盒测试
学生班级:
学生学号:
学生姓名:
指导教师:
实 验 时 间:
彭焕峰
2019.4.25
实 验 地 点:
图书馆
实验成绩评定:
2018-2019-2 学期
一 实验目的和要求
目的与要求:
1.通过上机实验加深对白盒测试的理解。
2.了解常用的白盒测试工具,并进行综述。
二 实验相关知识简介
白盒测试的测试方法有代码检查法、静态结构分析法、静态质量度量法、逻
辑覆盖法、基本路径测试法、域测试、符号测试、路径覆盖和程序变异。
白盒测试法的覆盖标准有逻辑覆盖、循环覆盖和基本路径测试。其中逻辑覆
盖包括语句覆盖、判定覆盖、条件覆盖、判定/条件覆盖、条件组合覆盖和路径
覆盖。
三 白盒测试工具综述
1 JTEST
JTEST 是 parasoft 公司推出的一款针对 java 语言的自动化白盒测试工具,
它通过自动实现 java 的单元测试和代码标准校验,来提高代码的可靠性。Jtest
先分析每个 java 类,然后自动生成 junit 测试用例并执行用例,从而实现代
码的最大覆盖,并将代码运行时未处理的异常暴露出来;另外,它还可以检
查以 DbC(Design by Contract)规范开发的代码的正确性。用户还可以通
过扩展测试用例的自动生成器来添加更多的 junit 用例。Jtest 还能按照现有
的超过 350 个编码标准来检查并自动纠正大多数常见的编码规则上的偏差,
用户可自定义这些标准,通过简单的几个点击,就能预防类似于未处理异常、
函数错误、内存泄漏、性能问题、安全隐患这样的代码问题。
工具名称:
价格:
主要功能:
优点:
JTEST
昂贵
◆静态代码分析
◆自动化单元测试
·白盒测试
·黑盒测试
·回归测试
1)使预防代码错误成为可能,从而大大节约成本,提高
软件质量和开发效率;
2)使单元测试——包括白盒、黑盒以及回归测试成为可
能;
3)使代码规范检查和自动纠正成为可能;
4)鼓励开发团队横向协作来预防代码错误。
1)通过简单的点击,自动实现代码基本错误的预防,这
包括单元测试和代码规范的检查
工具特征:
2)生成并执行 junit 单元测试用例,对代码进行即时检
查
3)提供了进行黑盒测试、模型测试和系统测试的快速途
径
4)确认并阻止代码中不可捕获的异常、函数错误、内存
泄漏、性能问题、
安全弱点的问题
5)监视测试的覆盖范围
6)自动执行回归测试
7)支持 DbC 编码规范
8)检验超过 350 个来自 java 专家的开发规范
9)自动纠正违反超过 160 个编码规范的错误
10)允许用户通过图形方式或自动创建方式来自定义编
码规范
11)支持大型团队开发中测试设置和测试
文件的共享
12)实现和 IBM Websphere Studio /Eclipse IDE 的安全
集成
2 JUNIT
JUnit 是一个开源的 java 测试框架,它是 Xuint 测试体系架构的一种实现。在 JUnit
单元测试框架的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包
括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则
是可以利用既有的测试来编写相关的测试。
工具名称:
价格:
优点:
特征:
JUNIT
免费
1)使用丰富的断言;
2)开发代码与测试代码分离;
3)某一个类的测试方法可以以较少的改动快速复用到另一个类
的测试。
4)JUnit 测试检验其结果并提供立即的回馈。
1) 撰写 JUnit 测试所费不多。
2) JUnit 测试提升软件的稳定性。
3) JUnit 测试是开发者测试。JUnit 测试是高度区域性(localized)
测试;用以改善开发者的生产力及程序代码品质。
4) JUnit 测试是以 Java 写成的。使用 Java 测试 Java 软件形成一
个介于测试及程序代码间的无缝(seamless)边界。
5) 使用方便。在你提升程序代码的品质时 JUnit 测试仍允许你更
快速的撰写程序
6)使用 JUnit 你可以快速的撰写测试并检测你的程序代码并逐步
随着程序代码的成长增加测试。
3 VcTester
VcTester 由深圳市领测科技有限公司自主研发,专业服务于嵌入式白盒测试领域的
测 试 工 具 , 它 遵 循 第 4 代 白 盒 测 试 方 法 ( 4GWM ,
The 4th Generation White-box-testing Methodology),为有效实施针对 C 语言的单元测
试、集成测试与协议测试,提供系统化的测试解决方案。VcTester 仅支持 VC 平台下 C
源代码的白盒测试, 主要应用于通信设备、嵌入式手持终端、医疗器械等实时嵌入式产
品的源码级测试。
工具名称:
网址:
价格:
共享版特征:
商用版特征:
VcTester
http://www.eztester.com
共享版免费,商用版参考 http://www.eztester.com
1. 脚本化测试驱动 VcTester 使用 CSE 脚本语言编写测试用例,
CSE 语言风格与 C 语言接近,简单易用,很容易上手。编写 CSE
脚本可读取全局变量、给变量赋值、调用函数等。
2. 脚本桩 被测目标机运行后,VcTester 允许用户定义一个脚本函
数,给被测 C 函数打桩,使运行中脚本函数替代 C 函数。脚本桩函
数中可编写特定的测试处理,或返回特定数值用于测试。
3. 在线测试 运行目标测试程序后,在线设计用例、运行用例,并
根据测试结果改进或添加用例,持续在线的进行测试。VcTester 这
一特性使单元测试过程更加简捷明了,所见即所得,操作过程更富
人性化。
4. 即时调测 VcTester 配合 VC 中的调试程序,可支持目标代码单
步调试,用户可借助 VC 设置断点,进行单步跟踪,同时,在测试
用例设计过程中,测试驱动与脚本桩都可以选中部分或全部来执
行。被测代码调试与测试脚本调试都是在线进行,可以即时的交叉
着调试。 5. 测试工程管理 支持直观的树状测试用例管理,支持
单用例、单测试集,或多用例、多测试集批量执行,支持命令行启
动全工程自动测试。
1. 支持符合第 4 代白盒测试方法的测试评估体系 商用版提供
LICC 与 LDCC 两种代码覆盖率统计,对测试设计程度也提供评估,
评估结果可以在线、直观的方式显示,还支持测试报告自动生成。
2. 调测一体,支持将调试操作自动转化成测试脚本 商用版的检视
器支持调试操作转脚本,该功能可以促进大家养成自发测试的习
惯,摆脱不自觉的被动测试状态,检视器还支持更强大的脚本桩功
能,如条件桩、PreCheck 与 PostCheck 定义等。
3. 提供集成化的工作平台,可大幅提高开发效率 商用版的源码与
测试用例在同一个 IDE 平台编辑、维护,以相同形式同时支持测试
脚本与源码的一体化调试,集成界面支持设置断点,进行单步跟踪。
4. 支持完善的测试消息构造与解析 商用版提供用户数据 UDT 编
辑器,可快速构造测试数据。商用版还提供通用消息编辑器、消息
解析器,可以自定义消息模板。
5. 支持测试设计重构 当被测代码有大幅调整,经过一次或多次重
构时,商用版支持快捷的测试设计重构,该功能可确保持续集成的
操作过程不因代码重构而断链。
4 CodeTest
CODETEST 是 全 球 第 一 台 专 为 嵌 入 式 系 统 软 件 测 试 而 设 计 的 工 具 套 件 ,
CODETEST 为追踪嵌入式应用程序,分析软件性能,测试软件的覆盖率以及存储体的
动态分配等提供了一个实时在线的高效率解决方案。CODETEST 还是一个可共享的网
络工具,它将给整个开发和测试团队带来高品质的测试手段。
工具名称:
价格:
获取途径:
功能特色:
CodeTest
每套约 30 万人民币
国内深圳市华唐科技有限公司代理
1. 性能分析 CODETEST 能够同时对多达 32000 个函数进行非采样
性测试,精确计算出每个函数或任务(基于 RTOS 下)的执行时间或
间隔,并能够列出其最大和最小的执行时间。对于每两个函数或任务
之间的调用也能够计数,从而确认出其中失败的调用。CODETEST 的
性能分析功能也能够为嵌入式应用程序的优化提供依据,使软件工程
师可以有针对性地优化某些关键性地函数或模块,以及改善整个软件
地总体性能。
2. 测试覆盖分析 CODETEST 提供程序总体概况,函数级代码以及源
级覆盖趋势等多种模式来观测软件地覆盖情况。由于 CODETEST 是一
种完全地交互式工具,测试者可以在对系统进行操作地同时追踪覆盖
情况。 CODETEST 覆盖率信息包括程序实际执行的所有内容,而不
是采样的结果,它以不同颜色区分运行和未运行的代码,CODETEST
可以跟踪超过一百万个分支点,特别适用于测试大型嵌入式软件。
CODETEST 还能够生成一个融合多种测试结果地综合性报告,以使测
试者看到整套测试地总体效果。
3. 动态存储器分配分析 在 CODETEST 诞生之前,动态地存储器分
配情况是难以追踪观测的。CODETEST 的分析能够显示有多少字节的
存储器被分配给了程序的哪一个函数。这样就不难发现那些函数占用
了较多的存储空间,那些函数没有释放相应的存储空间。测试者甚至
还可以观察到存储体分配情况随着程序运行动态的增加和减少,即
CODETEST 可以统计出所有的内存的分配情况。随着程序的运行,
CODETEST 能够指出存储体分配的错误,测试者可以同时看到其对应
的源程序内容。
4. 执行追踪分析(TRACE)
CODETEST 可以按源程序,控制流以及高级模式来追踪嵌入式软件。
最大追踪深度可达 150 万条源级程序,其中高级追踪模式显示的是
RTOS 的事件和函数的进入退出,给测试者一个程序流程的大框图;控
制流追踪增加了可执行函数中每一条分支语句的显示;源级追踪则又
增加了对被执行的全部语句的显示。在以上三种模式下,均会显示详
细的内存分配情况,包括在那个代码文件的那一行,那一个函数调用
了内存的分配或释放函数,被分配的内存的大小和指针,被释放的内
存的指针,出现的内存错误。
⑤C++ Test
C++ Test 是 Parasoft 公司针对 C/C++的一款自动化测试工具,C++test 支持
编码策略增强,静态分析,全面代码走查,单元与组件的 测试,为用户提供一
个实用的方法来确保其 C/C++代码按预期运行。
C++Test 能够在桌面的 IDE 环境或命令行的批处理下进行回归测试。
C++test 和 Parasoft GRS 报告系统相集成,为用户提供基于 Web 且具备交
互和向下钻取能力的报表以供用户查询,并允许团队跟 踪项目状态并监控项目
趋势。
工具名称:
最新版本:
主要特性:
优点:
功能:
C++ Test
Parasoft C++ Test 9.6
1)在不需要执行程序的情况下识别运行时缺陷;
2)自动化代码分析以增强兼容性;
3)支持嵌入式和跨平台开发;
4)高度的可定制化;
5)提高团队代码走查的效率和全面性
6)为即时验证和回归测试提供自动化单元及组件测试
7)WindRiver®Workbench 和 ARM®RVDS 的 C++test 插
件
1)提高团队开发的效率应用全面的最佳实践集合以缩减测试时
间,降低测试难度,减少 QA 阶段遇到的错误。
2)在现有开发资源下完成更多任务自动解决琐碎的编码问题从
而更多的时间可被分配到需要人来解决的问题上。
3)可靠的构件代码高效地构造,可持续执行和全面的回归测试
套件以检测版本更新是否破坏既有功能。
4)提供 C/C++代码质量完成状态的可视化报告按需访问目标代
码的评估,并跟踪其过程以提高质量和完成预期目标。
5)削减支持成本自动对广泛的潜在用户路径进行负面测试以查
找出只有在真正使用时才能发现的问题。
1)根据用户选定的编码规范对代码做静态分析来增强兼容性;
2)提供一个图形化的 RuleWizard 编辑器来定制用户编码规则;
3)对代码路径做静态模拟以定位潜在运行时错误;
4)提供图形化接口和动态跟踪使代码走查自动化;
5)自动生成并执行单元和组件级的测试;
6)灵活的桩函数机制;
7)完全支持回归测试;
8)代码高亮显示的代码覆盖率分析;
9)使用图形或命令行方式进行全面团队部署。
四 心得
通过本次实验,我了解了一些常用的白盒测试工具,加深了对于白盒测
试的理解。
白盒测试主要用在具有高可靠性要求的软件领域,例如:军工软件、航
天航空软件、工业控制软件等等。白盒测试工具在选购时应当主要是对开发语言
的支持、代码覆盖的深度、嵌入式软件的测试和测试的可视化等。
白盒测试工具是对源代码进行的测试,测试的主要内容包括词法分析与
语法分析、静态错误分析、动态检测等。但是对于不同的开发语言,测试工具实
现的方式和内容差别是较大的。测试工具主要支持的开发语言包括:标准 C、C++、
Visual C++、Java 和 Visual J++等。
优点:
1.迫使测试人员去仔细思考软件的实现
2.可以检测代码中的每条分支和路径
3.揭示隐藏在代码中的错误
4.对代码的测试比较彻底
5.最优化
缺点:
1.昂贵
2.无法检测代码中遗漏的路径和数据敏感性错误
3.不验证规格的正确性
评语: