Version 3.0
第三章测试工具
2
回顾 2-1
测试可以将测试描述为一个运行程序以发现错误的过程。
软件测试的准则,不完全测试、风险测试、
无法显示潜伏错误、发现错误成线性增长、
缺陷不能完全修复、测试有条理规程
测试的方法,黑盒 /白盒、静态 /动态
软件测试的各个阶段:单元测试、集成测试、
系统测试、验收测试
3
回顾 2-2
测试的内容包括:接口 /路径测试、功能测试、
性能测试、压力测试、可靠性测试、安全性测试、用户界面测试、安装 /反安装测试
4
本章目标
讨论测试工具的好处
介绍测试工具的种类及实质
讨论测试工具的局限
介绍市场上比较流行的测试工具,
Rational系列和 Panorama工具
5
什么是测试工具
定义:辅助测试整个过程的工具软件
– 单元测试可以有两种方式自己编写代码使用单元测试工具
– 整个过程包括:
静态分析,测试计划,测试设计,测试执行,
测试缺陷跟踪,测试报告和质量度量等
6
单元测试工具的种类
单元测试工具的种类
– 静态分析工具
– 代码规范审核工具
– 内存和资源检查工具
– 测试数据生成工具
– 测试框架工具
– 测试结果比较工具
– 测试度量工具
– 测试文档生成和管理工具
7
自动测试工具
自动测试工具
– 好处速度和效率准确度和精确度耐性、不休息、可重复
– 局限对软件变更,尤其是代码变更比较敏感先期的测试开发比较费时有些测试结果无法用工具比较和分析有些工具的脚本 /代码会使程序运行环境不纯净
8
使用自动测试工具的目的
测试工具提高测试效率,节省测试成本
– 测试设计提高测试效果,同时也可以提高测试效率,节省测试成本
有些测试单靠手工很难完成
– 压力测试,模拟并发测试等
– 多数的单元测试
有些测试使用测试工具更合适
– 回归测试
– 大量测试数据的生成、部分测试结果的比较
– 缺陷管理和测试用例管理
– 质量度量
9
如何引入自动测试工具 3-1
选择自动测试工具是一个重要的步骤,所以一定要谨慎
– 因为测试工作经常会涉及到管理流程和开发流程的改变、涉及到人员的考评标准,所以它有时会对整个企业产生影响。
测试工具应该能够管理测试过程和测试文档,
并生成各种测试报告。
自动测试工具应该允许用户把自动测试数据和流程与手工的测试数据和流程结合到一起。
10
如何引入自动测试工具 3-2
自动测试工具应该能够将业务需求与测试计划、测试设计和测试结果相关联,允许最终用户根据测试结果来评估应用程序的完成情况。
自动测试工具中的各功能模块应该紧密集成到一起,共享和重用测试数据,支持回归测试。
– 工具应该可以很容易地利用过去的或者其他人员的测试资料。
– 工具内部应该使用一致的脚本语言和数据格式。
11
如何引入自动测试工具 3-3
自动测试工具的体系结构和文件格式应该是开放的,可以很容易地与其他技术或工具进行交互和集成。
自动测试工具厂商应该有比较完善的科室培训和技术支持机制,能够为自动测试工具的实施提供咨询和支持。
12
Panorama产品内容
产品背景及功能
产品术语基础
应用原理及环境
工具介绍
OO-Test
其它工具请按照上机安排操作
13
测试工具 Panorama
Panorama-2 C/C++ 是一个软件测试工具 。
它也用来
– QA
– 维护环境
它运行在 Sun OS/Solaris 和 Windows NT/95 上,
支持 Sun C,C++。
14
Panorama产品背景及功能 3-1
产品背景
– 集成了 8个产品
/32个工具的软件包,一般用于:
1、新系统开发过程中的质量保证和单元测试;
2、旧系统维护过程中质量保证与测试
3、再工程中的系统分析
15
Panorama产品背景及功能 3-2
16
Panorama产品背景及功能 3-3
OO-Test:测试用例生成和管理:
1、记录和生成测试用例
2、最小化测试用例集
3、测试覆盖分析
OO-Browser:系统结构分析:
1、生成系统中类和函数的继承 /调用关系图
2、实现代码与关系图的双向对应和跳转
3、显示系统结构测试覆盖结果
OO-Diagrammer:流程结构分析:
1、生成控制流程图、逻辑流程图、代码流程图
2、实现代码与流程图的双向对应和跳转
3、显示流程结构测试覆盖结果
OO-SQA:质量度量分析:
1、设定质量度量标准和指标
2、生成质量度量数据
3、显示质量度量结果
OO-Analyzer:系统文档生成:
1、生成 100多种设计文档和质量文档OO-Playback,GUI测试过程回放:
1、捕获并记录测试过程
2、回放测试过程
3、比较回放结果
OO-MemoryChecker:内存泄漏和非法使用检测:
1、检测内存泄漏和非法使用
2、记录错误发生的语句位置
3、生成检测报告
OO-DefectTracer:缺陷定位和追溯:
1、检测并记录缺陷 (包括死机 )发生的路径和语句位置
2、生成缺陷定位报告
17
产品背景及功能
产品功能应用:
– 新系统开发支持
– 旧系统维护支持
– 系统再工程支持
– 其他
1,设计支持
-系统结构 /流程结构自动生成与维护
-多重复杂性度量及分析
-生成复杂性度量报告
2、编码及调试支持
-确定编码顺序
-保证编码和设计的双向对应
-生成代码逻辑结构
-显示测试路径和频率
-显示错误 (尤其是意外中止 )的语句位置和执行路径
3、测试支持
-确定单元测试顺序
-生成并管理测试用例
-执行测试用例并显示结果
-测试分析和度量
-支持回归测试
-生成质量报告
1、复杂性度量支持
-多重复杂性度量及分析
-生成复杂性度量报告
2、代码修改支持
-系统结构 /流程结构自动生成与维护、
编码和设计的双向对应、错误定位和追溯
-加强代码理解、避免修改的副作用
-帮助代码静态分析技术的实施
3、测试支持
-确定单元测试顺序
-生成并管理测试用例
-执行测试用例并显示结果
-测试分析和度量
-支持回归测试
-生成质量报告
1、系统设计分析系统结构 /流程结构自动生成与维护,
加强设计理解编码和设计的双向对应,加强代码理解
2、系统复杂性分析
-多重复杂性度量及分析
-生成复杂性度量报告
3、系统性能分析
-分析模块执行性能和执行瓶颈
4、文档报告生成生成多种系统分析报告和质量报告
1、支持工程管理和进度估算
-代码文件和设计文档的一致性维护
-多种度量分析方法
2、训练项目组新进人员
-理解系统结构和流程结构
-方便阅读和理解代码
3、支持验收评估
-自动生成设计和编码文档
-自动生成测试分析报告
-自动生成质量度量报告
18
产品术语基础 2-1
基本概念
– 1、块,也叫基本段、可视段
– 2、不可视段基本不可视段:
if,switch
高端循环边界 (执行 0次循环体 )
低端循环边界 (执行 1次循环体 )
– 3、段,也叫标准段包括可视段与基本不可视段
– 4、增强段包括可视段和不可视段
19
产品术语基础 2-2
质量保证度量规范
– 1、代码可读性度量
– 2、复杂性度量
– 3、测试覆盖度量
IEEE度量标准
– 1、环形复杂性
– 2、测试覆盖度量
1、程序行数
2、代码行百分比
3、注释行百分比
4、空格间隔行百分比
1、环形复杂性
2、块测试复杂性 JC0
3、段测试复杂性 JC1
4、增强段测试复杂性 JC1+
5、条件段测试复杂性 JC2
6、继承树深度 DIT
7、子类数目 NOC
8、类耦合数目 CBO
9、类中方法数目
10、类中响应方法数目 RFC
11、使用类中方法的函数数目
12、类中重用基类代码行数
13、类中重用基类代码百分比
1、块测试覆盖 SC0
2、段测试覆盖 SC1
3、增强段测试覆盖 SC1+
4,J-覆盖
5、条件真覆盖
6、条件假覆盖
7、总条件覆盖
8、分支覆盖
1、定义:
-环形复杂性 C
-区域数目 RG
-边数目 E
-节点数目 N
-分支节点数目 SN
2、计算公式:
-C=RG
-C=E-N+2
-C=SN+1
1、原语
-程序
-功能
-数据
-需求
-测试用例
2、测试覆盖 TC计算公式:
-TC=((测试的需求原语数目 )
/(需求原语总数 )) *
((测试的程序原语数目 )
/(程序原语总数 ))
20
应用原理与环境 2-1
使用流程,mak文件是 C/C++编译文件
.hsi文件是 Panorama内部使用的输入缓冲区文件,用于记载 C/C++文件结构信息
.dbs文件是 Panorama内部使用的数据库文件,用于记载
C/C++文件分析和测试结果信息,一般与 his文件配合使用
21
应用原理与环境 2-2
应用原理
22
工具的局限性
局限性
– 1,中文显示问题
– 2、使用自己的脚本技术,但这种脚本技术与其他的测试工具不兼容
– 3、需要执行,mak 文件,而不是编译 C 程序后生成的,obj 文件
– 4、仅能处理 C / C++ 程序
– 5、界面不够友好
23
OO-Test 2-1
输出结果
– 测试用例最小集合
– 测试结果分析数据
作用:
– 生成并管理测试用例
– 最小化测试用例集
– 测试结果记录和分析
24
OO-Test 2-2
生成并保存测试用例
加载测试用例
执行测试用例
测试结果分析
– 测试覆盖结果
– 测试用例效率
最小化测试用例集
25
总结
测试工具是辅助测试整个过程的工具软件。
单元测试工具的种类和优势、缺陷。
健壮的测试工具的引入应该具有一定的设计原则。
介绍 Panorama产品内容和运行环境、使用原理、各个工具的简单运用以及缺陷。
第三章测试工具
2
回顾 2-1
测试可以将测试描述为一个运行程序以发现错误的过程。
软件测试的准则,不完全测试、风险测试、
无法显示潜伏错误、发现错误成线性增长、
缺陷不能完全修复、测试有条理规程
测试的方法,黑盒 /白盒、静态 /动态
软件测试的各个阶段:单元测试、集成测试、
系统测试、验收测试
3
回顾 2-2
测试的内容包括:接口 /路径测试、功能测试、
性能测试、压力测试、可靠性测试、安全性测试、用户界面测试、安装 /反安装测试
4
本章目标
讨论测试工具的好处
介绍测试工具的种类及实质
讨论测试工具的局限
介绍市场上比较流行的测试工具,
Rational系列和 Panorama工具
5
什么是测试工具
定义:辅助测试整个过程的工具软件
– 单元测试可以有两种方式自己编写代码使用单元测试工具
– 整个过程包括:
静态分析,测试计划,测试设计,测试执行,
测试缺陷跟踪,测试报告和质量度量等
6
单元测试工具的种类
单元测试工具的种类
– 静态分析工具
– 代码规范审核工具
– 内存和资源检查工具
– 测试数据生成工具
– 测试框架工具
– 测试结果比较工具
– 测试度量工具
– 测试文档生成和管理工具
7
自动测试工具
自动测试工具
– 好处速度和效率准确度和精确度耐性、不休息、可重复
– 局限对软件变更,尤其是代码变更比较敏感先期的测试开发比较费时有些测试结果无法用工具比较和分析有些工具的脚本 /代码会使程序运行环境不纯净
8
使用自动测试工具的目的
测试工具提高测试效率,节省测试成本
– 测试设计提高测试效果,同时也可以提高测试效率,节省测试成本
有些测试单靠手工很难完成
– 压力测试,模拟并发测试等
– 多数的单元测试
有些测试使用测试工具更合适
– 回归测试
– 大量测试数据的生成、部分测试结果的比较
– 缺陷管理和测试用例管理
– 质量度量
9
如何引入自动测试工具 3-1
选择自动测试工具是一个重要的步骤,所以一定要谨慎
– 因为测试工作经常会涉及到管理流程和开发流程的改变、涉及到人员的考评标准,所以它有时会对整个企业产生影响。
测试工具应该能够管理测试过程和测试文档,
并生成各种测试报告。
自动测试工具应该允许用户把自动测试数据和流程与手工的测试数据和流程结合到一起。
10
如何引入自动测试工具 3-2
自动测试工具应该能够将业务需求与测试计划、测试设计和测试结果相关联,允许最终用户根据测试结果来评估应用程序的完成情况。
自动测试工具中的各功能模块应该紧密集成到一起,共享和重用测试数据,支持回归测试。
– 工具应该可以很容易地利用过去的或者其他人员的测试资料。
– 工具内部应该使用一致的脚本语言和数据格式。
11
如何引入自动测试工具 3-3
自动测试工具的体系结构和文件格式应该是开放的,可以很容易地与其他技术或工具进行交互和集成。
自动测试工具厂商应该有比较完善的科室培训和技术支持机制,能够为自动测试工具的实施提供咨询和支持。
12
Panorama产品内容
产品背景及功能
产品术语基础
应用原理及环境
工具介绍
OO-Test
其它工具请按照上机安排操作
13
测试工具 Panorama
Panorama-2 C/C++ 是一个软件测试工具 。
它也用来
– QA
– 维护环境
它运行在 Sun OS/Solaris 和 Windows NT/95 上,
支持 Sun C,C++。
14
Panorama产品背景及功能 3-1
产品背景
– 集成了 8个产品
/32个工具的软件包,一般用于:
1、新系统开发过程中的质量保证和单元测试;
2、旧系统维护过程中质量保证与测试
3、再工程中的系统分析
15
Panorama产品背景及功能 3-2
16
Panorama产品背景及功能 3-3
OO-Test:测试用例生成和管理:
1、记录和生成测试用例
2、最小化测试用例集
3、测试覆盖分析
OO-Browser:系统结构分析:
1、生成系统中类和函数的继承 /调用关系图
2、实现代码与关系图的双向对应和跳转
3、显示系统结构测试覆盖结果
OO-Diagrammer:流程结构分析:
1、生成控制流程图、逻辑流程图、代码流程图
2、实现代码与流程图的双向对应和跳转
3、显示流程结构测试覆盖结果
OO-SQA:质量度量分析:
1、设定质量度量标准和指标
2、生成质量度量数据
3、显示质量度量结果
OO-Analyzer:系统文档生成:
1、生成 100多种设计文档和质量文档OO-Playback,GUI测试过程回放:
1、捕获并记录测试过程
2、回放测试过程
3、比较回放结果
OO-MemoryChecker:内存泄漏和非法使用检测:
1、检测内存泄漏和非法使用
2、记录错误发生的语句位置
3、生成检测报告
OO-DefectTracer:缺陷定位和追溯:
1、检测并记录缺陷 (包括死机 )发生的路径和语句位置
2、生成缺陷定位报告
17
产品背景及功能
产品功能应用:
– 新系统开发支持
– 旧系统维护支持
– 系统再工程支持
– 其他
1,设计支持
-系统结构 /流程结构自动生成与维护
-多重复杂性度量及分析
-生成复杂性度量报告
2、编码及调试支持
-确定编码顺序
-保证编码和设计的双向对应
-生成代码逻辑结构
-显示测试路径和频率
-显示错误 (尤其是意外中止 )的语句位置和执行路径
3、测试支持
-确定单元测试顺序
-生成并管理测试用例
-执行测试用例并显示结果
-测试分析和度量
-支持回归测试
-生成质量报告
1、复杂性度量支持
-多重复杂性度量及分析
-生成复杂性度量报告
2、代码修改支持
-系统结构 /流程结构自动生成与维护、
编码和设计的双向对应、错误定位和追溯
-加强代码理解、避免修改的副作用
-帮助代码静态分析技术的实施
3、测试支持
-确定单元测试顺序
-生成并管理测试用例
-执行测试用例并显示结果
-测试分析和度量
-支持回归测试
-生成质量报告
1、系统设计分析系统结构 /流程结构自动生成与维护,
加强设计理解编码和设计的双向对应,加强代码理解
2、系统复杂性分析
-多重复杂性度量及分析
-生成复杂性度量报告
3、系统性能分析
-分析模块执行性能和执行瓶颈
4、文档报告生成生成多种系统分析报告和质量报告
1、支持工程管理和进度估算
-代码文件和设计文档的一致性维护
-多种度量分析方法
2、训练项目组新进人员
-理解系统结构和流程结构
-方便阅读和理解代码
3、支持验收评估
-自动生成设计和编码文档
-自动生成测试分析报告
-自动生成质量度量报告
18
产品术语基础 2-1
基本概念
– 1、块,也叫基本段、可视段
– 2、不可视段基本不可视段:
if,switch
高端循环边界 (执行 0次循环体 )
低端循环边界 (执行 1次循环体 )
– 3、段,也叫标准段包括可视段与基本不可视段
– 4、增强段包括可视段和不可视段
19
产品术语基础 2-2
质量保证度量规范
– 1、代码可读性度量
– 2、复杂性度量
– 3、测试覆盖度量
IEEE度量标准
– 1、环形复杂性
– 2、测试覆盖度量
1、程序行数
2、代码行百分比
3、注释行百分比
4、空格间隔行百分比
1、环形复杂性
2、块测试复杂性 JC0
3、段测试复杂性 JC1
4、增强段测试复杂性 JC1+
5、条件段测试复杂性 JC2
6、继承树深度 DIT
7、子类数目 NOC
8、类耦合数目 CBO
9、类中方法数目
10、类中响应方法数目 RFC
11、使用类中方法的函数数目
12、类中重用基类代码行数
13、类中重用基类代码百分比
1、块测试覆盖 SC0
2、段测试覆盖 SC1
3、增强段测试覆盖 SC1+
4,J-覆盖
5、条件真覆盖
6、条件假覆盖
7、总条件覆盖
8、分支覆盖
1、定义:
-环形复杂性 C
-区域数目 RG
-边数目 E
-节点数目 N
-分支节点数目 SN
2、计算公式:
-C=RG
-C=E-N+2
-C=SN+1
1、原语
-程序
-功能
-数据
-需求
-测试用例
2、测试覆盖 TC计算公式:
-TC=((测试的需求原语数目 )
/(需求原语总数 )) *
((测试的程序原语数目 )
/(程序原语总数 ))
20
应用原理与环境 2-1
使用流程,mak文件是 C/C++编译文件
.hsi文件是 Panorama内部使用的输入缓冲区文件,用于记载 C/C++文件结构信息
.dbs文件是 Panorama内部使用的数据库文件,用于记载
C/C++文件分析和测试结果信息,一般与 his文件配合使用
21
应用原理与环境 2-2
应用原理
22
工具的局限性
局限性
– 1,中文显示问题
– 2、使用自己的脚本技术,但这种脚本技术与其他的测试工具不兼容
– 3、需要执行,mak 文件,而不是编译 C 程序后生成的,obj 文件
– 4、仅能处理 C / C++ 程序
– 5、界面不够友好
23
OO-Test 2-1
输出结果
– 测试用例最小集合
– 测试结果分析数据
作用:
– 生成并管理测试用例
– 最小化测试用例集
– 测试结果记录和分析
24
OO-Test 2-2
生成并保存测试用例
加载测试用例
执行测试用例
测试结果分析
– 测试覆盖结果
– 测试用例效率
最小化测试用例集
25
总结
测试工具是辅助测试整个过程的工具软件。
单元测试工具的种类和优势、缺陷。
健壮的测试工具的引入应该具有一定的设计原则。
介绍 Panorama产品内容和运行环境、使用原理、各个工具的简单运用以及缺陷。