1、自动化测试测试自动化的理由 提高测试的效率;达到更好的测试效果;减少测试中引入的错误;节约软件测试阶段的代价;仿真作模拟 坚持不懈 需要强调指出:所有可以自动化的测试工作都可以用手工完成;结果比较时的一些特殊情况测试有效性和可靠性分析;能观察和控制执行过程(可控制性);能形式化的进行描述的工作;控制和操作被测试软件的工具测试过程的自动化管理(Rational)需要强调指出:所有可以自动化的测试工作都可以用手工完成;基于需求说明的测试数据生成减少测试中引入的错误;测试过程的自动化管理(Rational)基于需求说明的测试数据生成(4)自动生成测试过程中所需要的桩模块;程序单元识别和相互关系分析干
2、扰注入器和噪声发生器自动执行多个测试用例;能观察和控制执行过程(可控制性);减少测试中引入的错误;生成测试数据的依据不同,方法也不同。测试工具 查看器和监视器 Viewer Monitor Communications analyzer 程序驱动工具 控制和操作被测试软件的工具 Batch file 脚本运行工具 Stubs Emulator 测试工具 压力和负载工具 Stess Load 干扰注入器和噪声发生器 内存、CPU等资源 数据 分析工具 Word,excel,database,file comparer,scape,cal,cameral回顾:简单的软件测试过程Software t
3、o be testedTest CaseOutputVerification测试自动化涵盖的内容 软件测试过程的自动化 测试用例自动生成 测试驱动自动生成 自动执行测试 测试结果自动比较 测试报告自动生成 软件测试管理的自动化(计算机辅助)软件程序分析的自动化自动化的一般规律 自动化工作适用范围 大量的重复性的劳动;复杂的计算过程;自动化工作的条件 能形式化的进行描述的工作;能避免交互的工作;自动化中要考虑的问题 需要做的工作 编程(自动测试工具、驱动程序、桩程序)自动化测试的前期准备 自动化测试的数据接口 避免自动化工作对测试的真实性有效性带来不利影响;测试数据自动生成 即根据已知的一些条件
4、生成用于测试的输入数据。生成测试数据的依据不同,方法也不同。基于程序结构的测试数据生成 静态分析 基于谓词计算的分析方法 动态搜索(基于路径覆盖)遗传算法 退火算法 二分法测试数据自动生成 基于需求说明的测试数据生成 基于形式逻辑的规格说明(因果图的形式化描述)等价类方法 边界条件分析 基于UML图的测试数据生成测试过程自动化 主要工作 消除程序运行过程中的用户交互过程;自动执行多个测试用例;保留执行结果;能观察和控制执行过程(可控制性);主要方法 替换程序中的交互函数;驱动程序和桩程序的编写;事件驱动测试测试结果自动比较 把测试的实际输出结果,和测试用例的预期结果进行比较,得出测试用例是否通
5、过的结论;必须强调的是测试用例的ID;结果比较时的一些特殊情况 GUI测试测试报告自动生成 根据测试结果比较的结论,产生测试报告;测试情况总结,错误定位分析;测试有效性和可靠性分析;如果要进一步进行测试情况的分析,还需要相应的信息;控制流程图;数据流图;其他工作 测试过程的自动化管理(Rational)产生测试计划;进行测试过程跟踪;程序相关信息提取 程序控制流图生成 程序单元识别和相互关系分析 变量依赖关系分析 程序切片例子:一个测试驱动器的开发典型的测试工具软件 结构性测试工具,一般完成以下一种或几种功能:(1)对被测程序进行静态分析,得到相关的结构信息;(2)确定测试模块(或类,也可以是
6、方法)的顺序;(3)根据一定的覆盖准则(例如分支、路径、定义-使用对覆盖等)产生测试数据,(有的也可能产生期望输出);(4)自动生成测试过程中所需要的桩模块;(5)执行被测程序,收集动态测试的信息,并根据相应的测试准则评估测试结果。代表软件有C+Test、Cantata+等;该方向的原型系统研究比较多,典型的有TOONS、OOTME、ASTOOT、OOTA等。典型的测试工具软件 功能性测试工具,功能性测试工具最常见的是利用脚本的录制(Record)/回放(Playback),模拟用户的操作,记录被测程序的输出并同预先给定的标准结果比较。代表性的软件有:Rational TeamTest、Robot、TestRuner、Visual Test、QC/Replay 等。典型的测试工具软件 性能/负载测试工具主要是检查系统在重负载情况下的性能,多用于对网络应用程序的测试。常见的工具有QALoad、Rational Suit Performance Studio 等