1、n基本概念n测试成熟度模型n自动化测试工具的特征n 软件测试工具分类n软件测试工具特征n 软件测试工具选择软件测试工具软件测试工具 n软件测试自动化可以省去许多繁杂的工作,节省软件测试自动化可以省去许多繁杂的工作,节省软件测试时间,提供比手工测试更好、更快的测软件测试时间,提供比手工测试更好、更快的测试执行方式。因此,使用测试自动化和测试工具试执行方式。因此,使用测试自动化和测试工具会对整个软件开发工作的质量、成本和周期带来会对整个软件开发工作的质量、成本和周期带来非常显著的效果。非常显著的效果。n测试自动化是一门技测试自动化是一门技术,但与测试技术存在很大术,但与测试技术存在很大区别。测试自
2、动化希望通过自动化测试工具或其区别。测试自动化希望通过自动化测试工具或其他手段,按照测试工程师的预定计划进行自动的他手段,按照测试工程师的预定计划进行自动的测试,目的是减轻手工测试的劳动量,从而达到测试,目的是减轻手工测试的劳动量,从而达到提高软件质量的目的。提高软件质量的目的。(1)某些测试工具难于学习和使用,创)某些测试工具难于学习和使用,创建和修改测试脚本费时费力,相对人工测建和修改测试脚本费时费力,相对人工测试而言,不一定节省时间。试而言,不一定节省时间。(2)测试工具只能解决某一方便问题,)测试工具只能解决某一方便问题,应用范围狭窄,根据测试实际需要确定是应用范围狭窄,根据测试实际需
3、要确定是否选用和选用什么样的测试工具。否选用和选用什么样的测试工具。(3)某些商业测试工具售价高昂。)某些商业测试工具售价高昂。软件测试工具如下不足:软件测试工具如下不足:自动化测试工具的特征1 支持脚本化语言(Scripting Language)n支持多种常用的变量和数据类型n支持数组、列表、结构、其他混合数据类型n支持各种条件逻辑(IF,CASE 等语句)n支持循环(FOR,WHILE)n支持函数的创建和调用2 对程序界面中对象的识别能力:鼠标位置识别,对象识别,位图对象识别(图像比较)3 支持函数的可重用:脚本比较容易实现对函数的调用,脚本与被调用函数之间的参数传递;4 支持外部函数库
4、:如Windows 中DLL访问5 抽象层:抽象层将程序界面中存在的所有对象实体一一映射成逻辑对象,通过简单修改抽象层,帮助减少测试维护工作量。6 分布式测试(Distributed Test):分布式测试可以实现定制任务执行的时间表,安排多人同时进行测试7 支持数据驱动测试(Data Driven Test):测试脚本通过从实现准备好的数据文件中读取或者写入数据保证测试流程的正常执行,少的脚本,大量的测试数据即可。8 错误处理:在出现问题时能够跳过错误或者对系统进行复位,执行后面的任务,从而不至于出现一个问题而耽误了所有用例的执行;9 调试器(Debugger):调试器要能够支持脚本单步执行
5、、设置断点、核对变量返回结果等,有的还可以跟踪进入可执行程序,外部调用的函数库等;10 源代码管理 可以帮助我们进行测试脚本库的导入,导出,回退到以前版本,比较不同版本间的差别,以及同时对几个项目进行跟踪等,尤其在团队开发 中很有必要,可以对测试数据文件,测试脚本,对象抽象层进行统一管理11 支持脚本的命令行方式(Command Line):如机器启动、程序BUILD后可以自动启动测试脚本执行等。测试技术与测试自动化n不适合自动化测试的领域一次性项目 美观、音质、易用性测试系统不稳定涉及物理交互n自动化测试的误区期望自动化测试完全替代手工测试期望自动化测试发现大量新的缺陷测试工具分类n 白盒测
6、试工具n 黑盒测试工具n 测试设计和开发工具测试设计和开发工具n 测试执行和评估工具测试执行和评估工具n 测试管理工具测试管理工具白盒测试工具静态测试工具静态测试工具动态测试工具。动态测试工具。静态测试工具n静态测试工具是在不执行程序的情静态测试工具是在不执行程序的情况下,分析软件的特性。况下,分析软件的特性。n 静态分析主要集中在需求文档、设静态分析主要集中在需求文档、设计文档以及程序结构上,可以进行类型计文档以及程序结构上,可以进行类型分析、接口分析、输入输出规格说明分分析、接口分析、输入输出规格说明分析等。析等。常用的静态分析工具常用的静态分析工具 nMcCabe&Associates
7、公司开发的公司开发的McCabe Visual Quality ToolSet分析工具;分析工具;nViewLog公司开发的公司开发的LogiScope分析工具;分析工具;nSoftware Research公司开发的公司开发的TestWork/Advisor分析工具;分析工具;nSoftware Emancipation公司开发的公司开发的Discover分析工具等。分析工具等。静态测试工具有以下类型静态测试工具有以下类型:n代码审查代码审查(Code Auditing)n一致性检查一致性检查(Consistency Checking)n 错误检查错误检查(Error Checking)n输
8、入输出规格说明分析输入输出规格说明分析(IO Specification Analysis)n数据流分析数据流分析(Data Flow Analysis)n类型分析类型分析(Type Analysis)n单元分析单元分析(Unit Analysis)n复杂度分析复杂度分析 代码审查 代码审查工具能帮助人们了解不太熟悉的代码,了解代码相关性、跟踪程序逻辑、观看程序的图形表达,确认死代码,确定需要特别关照的域,检查源程序是否遵循了程序设计规则等。一致性检查 一致性检查检测程序的各单元是否使用了统一的记法或术语,这类工具通常用以检查是否遵循了设计规格说明书。错误检查 错误检查用以确定差异和分析错误严
9、重性和原因。接口分析 接口分析检查程序单元之间接口的一致性,以及是否遵循了预先确定的规则或原则。输入输出规格说明分析 输入输出规格说明分析的目标是借助于分析输入输出规格说明生成测试输入数据。数据流分析 数据流分析检测数据的赋值与引用之间是否出现了不合理的现象,如引用未赋值的变量,对以前未曾引用变量的再次赋值等数据流异常现象。类型分析 类型分析检测命名的数据项和操作是否得到了正确的使用。通常类型分析用以检测某一实体的值域(或函数等)是否按正确的且一致的形式构成。单元分析 单元分析检测单元或构成实体的物理元件是否定义正确和使用致。复杂度分析 复杂度分析有助于确定分析域中的风险,帮助软件测试工程师精
10、确地计划他们的测试活动。2.动态测试工具 动态测试工具与静态测试工具不同,动态测试工具直接执行被测程序以提供测试支持。它所支持测试的范围十分广泛,包括功能确认与接口测试、覆盖率分析、性能分析、内存分析等。常用动态测试工具常用动态测试工具 nCompuware公司开发的公司开发的DevPartner软件软件nRational公司研制的公司研制的Purify系列系列 功能确认与接口测试功能确认与接口测试 覆盖率分析覆盖率分析 性能分析性能分析 内存分析内存分析 n功能确认与接口测试 这部分的测试包括对各个模块功能、模块间的接口、局部 数据结构、主要的执行路径、错误处理等进行测试。n性能分析 应用程
11、序的性能问题得不到解决,将极大地降低并影响应用程序的质量,于是查找和修改性能瓶颈已成为改善整个系统性能的关键。n覆盖分析 覆盖分析可以对测试质量提供定量的分析。换言之,覆盖分析对所涉及的程序结构元素进行度量,以确定测试运行的充分性。这种工具对所有软件测试组织都是必不可少的,它可以告诉被测试中哪些部分已被测试过,哪些部分还没有被覆盖到,需要进一步的测试。覆盖工具大量用于单元测试中。覆盖分析工具还可以度量设计层次结构如调用树结构的覆盖率。n内存分析 内存泄漏是指程序没有释放应该释放的内存块,这些内存块从可供分配给所有程序的内存区中“漏”掉了。这种故障将“吃”完所有的内存,使程序不能正常运行。通过测
12、量内存使用情况,可以了解程序内存分配的真实情况,发现对内存的不正常使用,在问题出现前发现征兆,在系统崩溃前发现内存泄露错误;发现内存分配错误,找出发生故障的原因。黑盒测试工具黑盒测试工具 黑盒测试是在已知软件产品应具有的功能的条件下,在完全不考虑被测程序内部结构和内部特性的情况下,通过测试来检测每个功能是否都按照需求规格说明的规定正常使用。常用的黑盒测试工具 功能测试工具 检测被测程序能否达到预期的功能要求并正常运行。性能测试工具 性能测试工具有助于确定软件和系统性能,有些工具还可用于自动多用户客户/服务器加载测试和性能测量,用来生成、控制并分析客户/服务器应用的性能。客户端的测试主要关注应用
13、的业务逻辑,用户界面,功能测试等;服务器端的测试主要关注服务器的性能,衡量系统的响应时间、事务处理速度和其他时间敏感等。测试设计和开发工具测试设计和开发工具n测试设计是说明测试被测软件特征或特征组合的方法,确定并选择相关测试用例的过程。n测试开发是将测试设计转换成具体测试用例的过程。n测试设计和开发需要的工具类型有:测试数据生成器基于需求的测试设计工具捕获/回放覆盖分析测试执行和评估工具测试执行和评估工具n测试执行和评估是执行测试用例并对结果进行评估的过程,包括选择用于执行的测试用例、设置测试环境、运行所选择的测试、记录测试执行过程、分析潜在的产品故障并测量测试工作的有效性。n测试执行和评估所
14、要求的工具类型有:捕获回放 覆盖分析 存储器测试 仿真器及性能测试管理工具测试管理工具n测试管理工具是指帮助完成制定测试计划,跟踪测试运行结果等的工具。n测试管理工具用于对测试计划、测试用例、测试实施进行管理,还包括缺陷跟踪管理的工具等。n测试管理工具包括:测试用例管理缺陷跟踪管理配置管理测试用例管理1)提供用户界面用于管理测试;2)对测试进行整理以方便使用和维护;3)启动并管理测试执行,运行测试;4)提供与捕获回放及覆盖分析工具集成;5)提供自动化的测试报告和相关文件编制。缺陷跟踪管理n缺陷跟踪工具用于在整个软件生存周期中对缺陷进行跟踪管理和强化管理的记录、跟踪并提供全面的帮助。n问题管理工
15、具根据特定的环境进行定制,标准特征:1)能十分容易并迅速地提交和更新故障报告:2)能十分容易地生成预先定义或用户定义的管理报告;3)能十分容易并有选择性地自动通知用户对故障状态的修改:4)能很容易地根据用户提问提供对所有数据的安全访问。典型开源测试工具n功能测试工具工具名称工具名称简介简介网址网址Abbot Java GUI Test FrameworkJava GUI测试工具http:/ Service进行测试http:/www.soapui.org/httpUnit通过代码控制对Web应用的访问和功能测试http:/httpUSamieWeb功能测试工具,基于Perlhttp:/ Test
16、 ProjectLinux的Kernel测试工具http:/ Grinder测试J2EE应用的性能测试工具http:/ 协议http:/ Opensource Test Suite 测试数据库性能的套件http:/ Test Runner 基于Bugzillar的用例管理插件http:/ Testing Automation Framework(STAF)一个测试自动化的框架,可通过增加Component等方式扩充自动化测试http:/ 除了基本的功能之外,选择测试工具时,也可除了基本的功能之外,选择测试工具时,也可以参考下面的功能需求:以参考下面的功能需求:报表功能报表功能 测试工具的集成能
17、力测试工具的集成能力 测试工具能否和开发工具进行良好的集成;测试工具能否和开发工具进行良好的集成;测试工具能够和其他测试工具进行良好的集成。测试工具能够和其他测试工具进行良好的集成。操作系统和开发工具的兼容性操作系统和开发工具的兼容性 测试工具的选择测试工具的选择n在考虑选用工具的时候,建议从功能和成本来权在考虑选用工具的时候,建议从功能和成本来权衡和选择:衡和选择:n成本成本 选择工具时应该进行成本收益分析。选择工具时应该进行成本收益分析。工具怎样介入并支持测试过程。工具怎样介入并支持测试过程。知道怎样计划并设计测试。知道怎样计划并设计测试。测试自动化和测试工具的好处测试自动化和测试工具的好
18、处 测试自动化和测试工具不仅可测试自动化和测试工具不仅可以提高测试任务执以提高测试任务执行的效率,还有助于:行的效率,还有助于:n对新版本进行回归测试对新版本进行回归测试n执行更多更频繁的测试执行更多更频繁的测试 n执行一些手工测试困难或不可能做的测试执行一些手工测试困难或不可能做的测试 n更好地利用资源更好地利用资源 n测试具有一致性和可重复性测试具有一致性和可重复性 n测试的复用性测试的复用性 n增加软件信任度增加软件信任度 n可以更快地将软件推向市场可以更快地将软件推向市场 测试自动化和测试工具存在的问题测试自动化和测试工具存在的问题使用自动测试也可能会遇到许多问题,如:使用自动测试也可
19、能会遇到许多问题,如:不现实的期望不现实的期望 缺乏测试实践经验缺乏测试实践经验 期望自动测试工具能取代手工测试期望自动测试工具能取代手工测试 期望自动测试发现大量新故障期望自动测试发现大量新故障 安全性错觉安全性错觉 测试自动化不能提高有效性测试自动化不能提高有效性 自动测试的维护性自动测试的维护性 测试自动化可能会制约软件开发测试自动化可能会制约软件开发 工具本身没有想象力工具本身没有想象力 组织问题组织问题软件测试工具特征n支持脚本语言、函数库n对程序界面中对象的识别能力n抽象层n分布式测试的网络支持分布式测试的网络支持n图表功能图表功能n测试工具的集成能力测试工具的集成能力软件测试工具
20、选择n确定测试生命周期工具类型。n确定各种系统构架。n确定被测试应用程序管理数据的方式。n确定测试类型。n确定项目进度。n确定项目预算。六、自动测试技术n自动测试发展历程n测试成熟度模型n自动测试原理 自动测试发展历程n第一阶段:机械方式实现人工重复操作n第二阶段:统计分析的自动测试n第三阶段:面向目标的自动测试技术n第四阶段:智能应用的自动测试技术测试成熟度模型 测试成熟度模型(Testing Capability Maturity Model,简称TMM)受CMM模型启发产生,主要关注测试成熟度模型。由于CMM没有充分的定义测试,没有提及测试成熟度,没有对测试过程改进进行充分说明,在KPA
21、中没有定义测试问题,与质量相关的测试问题,如可测性、充分测试标准、测试计划等方面也没有阐述。TMM描述了测试过程,使得项目测试部分得到良好计划和控制的基础。TMM测试成熟度分解为如下5级别:初始级、定义级、集成级、管理和测量级和优化,预防缺陷和质量控制级。1.初始级 TMM初始级软件测试过程的特点是测试过程无序,有时甚至是混乱的,几乎没有妥善定义的。初始级中软件的测试与调试常常被混为一谈,软件开发过程中缺乏测试资源,工具以及训练有素的测试人员。初始级的软件测试过程没有定义成熟度目标。2.定义级 TMM的定义级中,测试己具备基本的测试技术和方法,软件的测试与调试己经明确地被区分开。这时,测试被定
22、义为软件生命周期中的一个阶段,它紧随在编码阶段之后,由于测试计划往往在编码之后才得以制订3.集成级 TMM的集成级中,测试不再是编码阶段之后的阶段,已被扩展成与软件生命周期融为一体的一组活动。测试活动遵循V字模型。测试人员在需求分析阶段便开始着手制订测试计划,根据用户需求建立测试目标和设计测试用例。软件测试组织提供测试技术培训,测试工具支持关键测试活动。但是,集成级没有正式的评审程序,没有建立质量过程和产品属性的测试度量4.管理和测量级 TMM的管理和测量级中,测试活动包括软件生命周期中各个阶段的评审、审查和追查,使得测试活动涵盖软件验证和确认活动。因为测试是可以量化并度量的过程,根据管理和测
23、量级要求,与软件测试相关的活动,如测试计划、测试设计和测试步骤都要经过评审。为了测量测试过程,建立测试数据库,用于收集和记录测试用例,记录缺陷并按缺陷的严重程度划分等级。此外,所建立的测试规程应能够支持软件组终对测试过程的控制和测量。5.优化,预防缺陷和质量控制级 本级的测试过程是可重复、可定义、可管理,因此软件组织优化调整和持续改进测试过程。测试过程的管理为持续改进产品质量和过程质量提供指导,并提供必要的基础设施。TMM 5个阶段总结如下:第一阶段:测试和调试没有区别,除了支持调试外,测试没有其他目的。第二阶段:测试的目的是为了表明软件能够工作。第三阶段:测试的目的是为了表明软件能够正常工作
24、第四阶段:测试的目的不是要证明什么,而是为了软件不能正常工作的预知风险降低到能够接受的程度第五阶段:测试成为了自觉的约束,不用太多的测试投入产生低风险的软件。自动测试原理(1)代码分析代码分析是白盒测试的自动化方法,类似于高级编译系统,一般针对高级语言构造分析工具,定义类、对象、函数、变量等定义规则、语法规则,对代码进行语法扫描,找出不符合编码规范的地方,根据某种质量模型评价代码质量、生成系统的调用关系图等。(2)录制回放 录制回放是黑盒测试的自动化方法,通过捕获用户每一步操作,如用户界面的像素坐标或程序显示对象(窗口、按钮、滚动条等)的位置,以及相应操作、状态变化或属性变化,用一种脚本语言记
25、录描述,模拟用户操作。回放时,将脚本语言转换为屏幕操作,比较被测系统的输出记录与预先给定的标准结果。(3)脚本概述脚本是一组测试工具执行的指令集合,也是计算机程序的另一种形式表现形式。脚本语言至少具有如下的功能:1)支持多种常用的变量和数据类型 2)支持各种条件逻辑、循环结构 3)支持函数的创建和调用 脚本分类n线性脚本n结构化脚本n共享脚木n数据驱动脚本 n关键字驱动脚本n虚拟用户技术小结小结n软件测试自动化可以省去许多繁杂的工作,节省软件测试自动化可以省去许多繁杂的工作,节省软件测试时间,提供比手工测试更好、更快的测软件测试时间,提供比手工测试更好、更快的测试执行方式。试执行方式。n测试工具可以分为白盒测试工具、黑盒测试工具测试工具可以分为白盒测试工具、黑盒测试工具、测试制定工具、测试执行工具、测试管理工具、测试制定工具、测试执行工具、测试管理工具和测试支持工具等几类。和测试支持工具等几类。n测试自动化和测试工具能够通过较少的开销获得测试自动化和测试工具能够通过较少的开销获得更彻底的测试,提高软件产品的质量。但使用自更彻底的测试,提高软件产品的质量。但使用自动测试时,也会遇到许多问题,因为工具毕竟是动测试时,也会遇到许多问题,因为工具毕竟是工具,在处理一些意外事件时,毕竟不如人灵活工具,在处理一些意外事件时,毕竟不如人灵活。