软件测试方法和技术
- 软件测试自动化
@
朱少民
Kerry Zhu
mailto:@
mailto:@
第十一章 软件测试自动化
erry@
gm
测试自动化的内涵
测试工具的分类和选择
测试工具的主流产品介绍
IBM-Rational产品的整体解决方案
Mercury Interactive产品的整体解决方案
Compuware产品的整体解决方案
测试自动化的内涵Z
erry@
gm
为什么要软件测试自动化
自动化测试的引入和应用
测试自动化的基本结构
测试自动化的原理和方法
测试自动化普遍存在的问题
手工测试的局限性
erry@
gm
通过手工测试无法做到覆盖所有代码路径;
许多与时序、死锁、资源冲突、多线程等有关的错误通过手工测试很
难捕捉到
在系统负载、性能测试时,需要模拟大量数据、或大量并发用户等各
种应用场合时,也很难通过手工测试来进行
在进行系统可靠性时,需要模拟系统运行十年、几十年,以验证系统
能否稳定运行,也是手工测试无法模拟的。
如果有大量(几千)的测试用例,需要在短时间内完成,手工测试又
怎么办呢?
测试可以发现错误,并不能表明程序的正确性。
自动测试定义软件系统
功能规格书(Spec)只是从书面上的
一套软件产品是由一套完整的可运行的测试来定义的
测试所有可能情况将遭遇“组合爆炸”问题
Win98, WinME, WinNT, Win2k, WinXP, WinXP TablePC Ed,
WinXP MediaCenter Ed, Longhorn, etc
English, German, Japanese, Chinese, Arabic, Thai…
Office 97, Office2000, Office XP, Office 2003…
X86 32-bit, Intel 64-bit, AMD 64-bit, Alpha, MIPS…
SQL Server , SQL Server , SQL Server 2000…
Visual Studio 6, VS .NET, VS .NET 2003, Whidbey…
手工测试的局限性 (2)
erry@
gm
代码全部Code Path测试覆盖也几乎不可能
每一个if…else…或switch语句就会把情况增加一倍
许多异常处理代码在正常使用中不会碰到
许多与时序,死锁,资源冲突,多线程有关的错误很难捕捉
到
每一个产品都会有不同的版本外加各自的SP与QFE (Quick Fix
Engineering, 又称Hot fix)
NT4, VS6 SP1~SP5, Windows 2000 SP1-SP4
VS .NET, SQL Server SP1 – SP3
可重复使用的自动测试对产品未来版本与Service Pack的测试将
有事半功倍的效果
手工测试的局限性 (2)Z
erry@
gm
自动化测试带来的好处
1. 缩短周期 Testing cycle - Regression Testing
2. Attributes of TA,
•Speed 速度
•Efficiency 效率
•Accuracy and Precise 准确、精确
•Relentlessness 无情
3. 容易实施、结果可靠
4. 做手工不能做
Z
erry@
gm
手工测试
• 耗费时间
• 低可靠性
• 人力资源
• 不一致性
• 仅对于一次性的测试有益
速度
可重复
覆盖率
可靠
可以再度使用
重复测试节省时间
自动测试
手工测试 vs.自动测试Z
erry@
gm
正确认识测试自动化
不现实的期望注定测试自动化的失败
测试自动化能:
显著降低重复手工测试的时间
建立可靠、重复的测试,减少认为错误
增强测试质量和覆盖率
测试自动化不能:
完全替代手工测试和手工测试工程师
保证100%的测试覆盖率
弥补测试实践的不足
Z
erry@
gm
各自特点
软件测试自动化(TA)虽然具有很多优点,但只是对手工测试
的一种补充,TA绝不能代替手工测试,有各自的特点:
在系统功能逻辑测试、验收测试、适用性测试、涉及物理交互性测试
时,多采用黑盒测试的手工测试方法;
单元测试、集成测试、系统负载或性能、稳定性、可靠性测试等比较
适合采用TA;
对那种不稳定软件的测试、开发周期很短的软件、一次性的软件等不
适合测试自动化
工具本身并没有想象力和灵活性,根据经验报道,自动测试只能发现
15%的缺陷,而手工测试可以发现85%的缺陷;TA工具在进行功能测试
时,其准确的含义是回归测试工具,因为工具不能发现更多的新问题,
但可以保证对已经测试过部分进行测试的准确性和客观性
Z
erry@
gm
测试自动化项目的本质
定义:利用GUI自动化测试工具来开发和执行测试
脚本,从而验证是否满足需求
本质:测试自动化项目本质上是软件开发项目
一个测试自动化项目必须具有:
清晰定义并严格实施的过程
来自组织各级的支持
周密的计划
具体的设计和架构
Z
erry@
gm
测试自动化成本/收益分析
结构 成本 收益 净收
益
No Automation 0 0 0
Recording and Playback 11
Data-driven structure using datapools 18
Framework structure 15
Framework / data-driven (hybrid)
structure focusing on views of the
application and using datapools
19
Z
erry@
gm
自动化测试的引入和应用
找准测试自动化的切入点
把测试开发纳入整个软件开发体系
测试自动化依赖测试流程和测试用例
软件测试自动化的投入较大
进行资源的合理调度
Z
erry@
gm
自动化测试工作流程
收集测试信息
•测试需求是什么?
•那里能得到用到的
数据?
建立基本测试
•纪录用户的操作
•核实成功回放
提高基本测试
•插入测试点
•驱动测试数据
整体测试
•关联数据
•建立综合的测
试场景
计划
1
创建
2
核实 和 提高
3
整合
4
计划自动化测试 纪录用户操作形
成基本测试
对 回放 和 测试
提高自动化测试
运行多种测试检
查数据流
Z
erry@
gm
测试自动化的基本结构
机房
客户端
文件服务器
数据库服务器
Web服务器
控制程序
拷贝测试文件
拷贝测试结果
分派工作
分派工作
查询结果
Build系统编译
获取测试任务、数据
更新
显示
软件包
Z
erry@
gm
发布指令
测试自动化的原理和方法
代码分析: 类似于高级编译系统,在工具中定义类/对象
/函数/变量等定义规则、语法规则等,在分析时对代码进
行语法扫描,找出不符合编码规范的地方。
捕获和回放: 代码分析是一种白盒测试的自动化方法,
捕获和回放则是一种黑盒测试的自动化方法。
Z
erry@
gm
对象识别
编辑框
下拉框 按钮
QuickTest 在支持应用中识别、确定每一个对象是什么类型
复选框
选择框
Z
erry@
gm
对象识别 - 2
逻辑名称是对象属性之一的值
数值 用于识别对象名称
Nativeclass: Edit
Attached Text: Agent
Name:
Enabled: True
Focused: True
Height: 20
Text: Harold
Width: 119
Z
erry@
gm
对象识别 - 3
对象库 是本地在测试结构范围内 存储对像信息.
对象库
例如对象 (属性) 包含登陆
窗口在记录过程中捕获的:
- Agent Name field
- Password field
- OK button
- Cancel button
- Help button
Z
erry@
gm
脚本技术
线性脚本,是录制手工执行的测试用例得到的脚本,
这种脚本包含所有的击键、移动、输入数据等,所有录
制的测试用例都可以得到完整的回放。
结构化脚本,类似于结构化程序设计,具有各种逻辑
结构、函数调用功能。
共享脚本,是指某个脚本可以被多个测试用例使用。
数据驱动脚本,将测试输入存储在独立的(数据)文
件中,而不是存储在脚本中。
关键字驱动脚本,是数据驱动脚本的逻辑扩张
Z
erry@
gm
Example -1
• GUI Script (.rec)
• Low-Level script
• VU Script (.S)
• GUI Shell Script (.rec)
• Project Header File (.sbh)
• SQABasic File (.sbl)
Z
erry@
gm
Script example -2Z
erry@
gm
GUI Scripts types
• TS-script
It include the script which can not be re-used, we often use
it to generate test log.
• B-script
TA Building block, it include the script which can be re-
used.
• U-script
Used to make sure all code in a function can work normally.
Z
erry@
gm
Sample script
'====Section Two - header file, public variables and constants declaration area================
'$include ""
'$Include ""
'$include ""
'====Section Three - Unit test scripting area for this subroutine or function
Sub Main
CallScript "rtpCMCSanity0225_init"
Dim Result As Integer
Dim meetingTopic As String
'If there already a meeting meeting, didn't start again
SQASuspendLogOutput
Result = WindowVP (Exists, "Caption={*" +MEETING_CLIENT_CAPTION+ "*}",
"VP=Window Existence;Wait=1,3")
SQAResumeLogOutput
If Result = 0 Then
Result = func_MiscScheduleStartMeetingSimple (PAGE_CAPTION,
meetingTopic, MEETING_PASSWD)
Else
…
End If
Z
erry@
gm
• SQAGetProperty
Result = SQAGetProperty (ObjectRec, "State", CheckState)
• SQAGetPropertyAsString
Result = SQAGetPropertyAsString("\;Caption=Notepad - (Untitled)", "WindowState",
StateString)
• SQASetProperty
SQASetProperty "Name=FirstName", "Text", "Michael“
• SQAWaitForObject
Result = SQAWaitForObject("Type=PushButton;Text=OK", 120000)
Object Scripting commands Z
erry@
gm
• CheckBox
CheckBox Click, "Name=Overdraft"
• ComboBox, ComboListBox
• EditBox
• HTMLDocument , HTMLImage ,
HTMLLink
• InputKeys
InputKeys "This is Robot.{Enter}"
User Action commandsZ
erry@
gm
自动比较
静态比较和动态比较,
简单比较和复杂比较,
敏感性测试比较和健壮性测试比较,。
比较过滤器
Z
erry@
gm
• ComboBoxVP
• EditBoxVP
• FileVP
• HTMLLinkVP
• HTMLDocumentVP
• ListViewVP
• WindowVP
• JavaListViewVP
Syntax of WindowVP function:
Result = WindowVP (action%, recMethod$, parameters$)
[action can be one of following values]
CompareImage
CompareMenu
CompareProperties
Exists/DoesNotExist
…
WindowVP (CompareImage, "Caption=Paint", "VP=PICT1A")
This function returns 1 if the action performed passes
Return 0 if the action performed fails.
Verification Point commandsZ
erry@
gm
测试自动化普遍存在的问题
不正确的观念或不现实的期望
缺乏具有良好素质、经验的测试人才
测试工具本身的问题影响测试的质量
没有进行有效的、充分的培训
没有考虑到公司的实际情况,盲目引入测试工具
没有形成一个良好的使用测试工具的环境
其它技术问题和组织问题
Z
erry@
gm
测试工具的分类和选择Z
erry@
gm
测试工具的分类
测试工具的选择
测试工具是测试自动化的表现
测试工具的研究
软件测试的过程是一项很复杂而费时的工作,它不仅
执行每一个测试用例,还要设置运行环境、记录输出、运行
后清理并记录失败信息。仅仅依靠测试人员手工完成是很困
难的。所以必须研究测试工具以帮助测试人员自动或半自动
的完成测试。
在资金和人力、时间的供给一定的条件下面,拥有好
的测试工具能够提高测试效率从而降低测试成本,则能够选
择更高的测试充分性标准进行测试,从而提高软件质量。
Z
erry@
gm
测试工具的例子
erry@
gm
测试工具的分类
•Code analysis Tools
- Static analysis
- Dynamic analysis
•Test Execution Tool
- Capture and Replay ( Record & Playback)
- Monitor Tool
- Stubs and Drivers
- Automated Testing Environment
•Test case generators
Z
erry@
gm
测试工具的选择Z
erry@
gm
测试工具的主流产品介绍 Z
erry@
gm
面向开发的单元测试工具
负载和性能测试工具
GUI功能测试工具
基于Web应用的测试工具
软件测试管理和其他工具
面向开发的单元测试工具
根据不同的语言进行分类:
C/C++单元级测试工具Panorama C++,C++Test, Numega
JUnit是一个开发源代码的Java测试框架
根据工具的功能特点进行分类:
内存资源泄漏检查工具:Numega中的BounceChecker, Rational
的Purify等
代码覆盖率检查工具:Numega的TrueCoverage, Rational的
PureCoverage,TeleLogic公司的Logiscope
代码性能检查工具:Logiscope和 Macabe等。
软件纠错工具Rational Purl等。
Z
erry@
gm
负载和性能测试工具
属性 LoadRunner /MI QALoad /Compuware WebLoad/Radvi
ew
价格 昂贵 较贵 一般
安装配置 简单 简单 一般
操作性 较复杂 简单 简单
支持测试对象 各种中间件/数据库/应用服务器
的性能监控/企业架构(j2ee和
.net)的测试
客户/服务器系统、企业资源配
置(ERP)和电子商务应用
Web Application
支持平台 windows,unix或linux HP-UX, IBM AIX,Sun Solaris,
Linux, NT/2k
Unix Windows
支持数据库 DB2, SQLserver, Orcale, Sybase ADO, DB2, Oracle, Sybase,
SQLserver, Odbc
ADO, DB2, Oracle,
Sybase, SQLserver,
Odbc
支持协议 web,http(s), soap, streaming, wap,
winsock, xml
http, ssl, oap, xml, streaming,
media
xml,java,ejb,activex,
wap,http,snmp,real/m
$streaming
脚本语言 类似C++ C/C++和VC++ Javascript
自动数据生成 Y Y Y
脚本调试 Y Y Y
报表定制功能 Y Y Y
Z
erry@
gm
GUI功能测试工具
将操作应用程序的各种动作和输入记录下来,包括键盘操作、鼠标点
击等捕捉(Record)下来,生成一个脚本文件,这个脚本以后可以被“回放
( playback)” 。在实际测试过程中,要根据测试需求对录制的脚本进
行一些必要的修改或加入一些参数,如选择不同的测试数据、脚本中插
入检查点(Check Point)进行跟踪调试等。
基于GUI功能测试工具主要适合回归测试阶段。当一个应用开发基本完
成后,程序界面基本定型,虽然业务的需求会很频繁变化,但测试脚本
结构基本不需要改动,只需要做些小调整,就可以自动运行,则可大大
提高了测试的效率和测试的准确性。
目前主要产品有MI公司的 WinRunner, Compuware的QARun,
Rational的 SQA Robot,MS Visual Test Suite等
Z
erry@
gm
GUI自动化测试
设计测试用例,并手工进行测试。
如果测试未通过,则先改正缺陷,再次执行测试。
如果测试通过,利用测试工具运行该测试过程,捕获
运行过程需要检测的屏幕对象,并保存。
在进行回归测试测试,自动利用测试工具运行测试,
并比较运行过程的屏幕对象与保存的屏幕对象比较,
从而判断测试用例是否通过。
Z
erry@
gm
基于Web应用的测试工具
基于Web应用的测试工具主要进行链接检查、HTML检查、
Web功能和Web站点安全性等各个方面的测试。
主要Web测试工具有MI公司的Astra 系列(如
Astra QuickTest )、RSW公司的 E-Test Suite等;
Web系统测试工具: WorkBench、Web Application Stress
Tool(WAS)、页面链接测试Link Sleuth等。
Z
erry@
gm
Website性能测试测什么?
各种操作的响应速度
最大并发用户数
最大数据容量
ACT (Application Center Test)
Z
erry@
gm
ACT测试中的常见术语
RPS (Request Per Second)
并发连接数 (Simultaneous Browser Connections)
思考时间 (Thinking Time)
RPS + SBC + Thinking Time = Concurrent users?
Z
erry@
gm
ACT测试的步骤
创建测试脚本
手工编写VBScript
录音并修改
运行测试脚本
设定并发用户数
设定用户身份
运行、观察、获取主观体验
理解结果报告
图表
各项性能统计数字
日志文件
Z
erry@
gm
解读ACT测试结果
TTFB, TTLB
HTTP错误的含义
401
403
404
500
常见的ACT结果图线
Z
erry@
gm
其他Web负载发生工具
Microsoft's Web Application Stress Tool
Cyrano's OpenSTA
Quest Software's Benchmark Factory
Empirix's E-Test Suite
RadView's WebLoad
Rational Software's Rational Robot
Mercury Interctive's Astra LoadRunner
Compuware's QA Load
Segue Software's SilePerformer
Z
erry@
gm
Rational产品的整体解决方案
erry@
gm
Rational测试产品结构
Rational 全套测试解决方案的特点
TestManager: 集中、可伸缩的测试管理平台
Robot:传统应用自动化测试工具
RobotJ:Web/Java自动测试工具
ClearQuest:缺陷跟踪工具
Rational系统测试方案
Coverage QuantifyPurify
Plan
Test
TestManager
Design
Test
TestManager
Implement
Test
Robot
RobotJ
TestManager
Execute
Test
Robot
RobotJ
TestManager
Evaluate
Test
ClearQuest
TestManager
Change Request and Configuration Management - ClearQuest and
ClearCase LT
Rational Unified Process
Z
erry@
gm
TestManager: 控制中心
View ResultsView Results
PassPass
FailFail
Coverage Coverage
reportsreports
GenerateGenerate
change change
requests requests
Test DesignTest Design
OS/VerOS/Ver
MemMem
DiskDisk
Test IterationsTest Iterations
Test Test
ConfigurationsConfigurations Test PlanTest Plan
Test Test
CasesCases
Test InputsTest Inputs AdaptersAdapters
In
pu
t
In
pu
t
Robot GUI Robot GUI
and and
VU ScriptsVU Scripts
VB or VB or
Java Java
scriptsscripts
External External
Scripts Scripts
on other on other
OS’sOS’s
ExecutionExecution
Ad
ap
te
rs
Ad
ap
te
rs
Rational Rational
TestManagerTestManager
Z
erry@
gm
TestManager和ClearQuest集成Z
erry@
gm
TestManager: 跨越整个测试周期
Z
erry@
gm
自动实现缺陷与需求之间的关联Z
erry@
gm
测试度量: 覆盖, 趋势等
Z
erry@
gm
Robot GUI的自动功能测试
2. 执行测试脚本 OK
Find
执行脚本
检验结果
报告错误
迭代
1. 创建测试脚本
选择测试需求
录制操作过程(面向对象录制®)
插入验证点
编辑生成的脚本(可选)
Z
erry@
gm
和白盒工具集成Z
erry@
gm
RobotJ:测试Java和Web应用
Script
Assure
Dynamic Dynamic
DataData
ValidationValidation
技术保证了即使对象名称发生改变,测试
脚本也能正常回放
验证动态内容
利用Eclipse这一标准的IDE环境,同时提
供与版本控制工具的集成
Professional
Language
and IDE
NEW
Technology for
Java and Web Based
Applications
Z
erry@
gm
ScriptAssure:
降低了测试脚本的维护成本
Version VersionVersion
Determines
Match ??
Tester
sees
Tool
sees
Z
erry@
gm
动态数据验证:可伸缩的测试脚本
Order ID changes with
each order placed
Test Fails
when
comparing
static
baseline to
dynamic data
Test Passes
when
comparing
pattern
baseline to
dynamic data
动态内容匹配
利用模式匹配技术来验证数据
如不是验证 “Order ID 230”, 而是 “Order ID ###”
当验证应用的行为时,考虑了各种不同的合法响应
Z
erry@
gm
业界标准的IDE和测试脚本语言
Eclipse集成环境
调试器、代码编辑器
使用标准的Java语言作为
测试脚本语言
Z
erry@
gm
Z
erry@
gm
MI产品结构
MI三个重量级产品的介绍
MI产品的整体解决方案
MI产品结构Z
erry@
gm
LoadRunner
WinRunner
TestDirector
Astra QuickTest
Astra LoadTest
Topaz Prism
ActiveTest ActiveWatch
测试 监控
软件
MSP
被测系统
LoadRunner 的解决方案
Web服务器 数据库
服务器
压力产生
虚拟用
户压力
测试机
解决测试资源的限制
• 利用图表工具分析测试结果
• 利用录制的脚本进行回归测试
AnalysisController
• 运行大量的“Virtual Users”在不同的机器
上
• 利用 “Virtual Users”代替实际测试人
员
• 通过“Controller”管理“ Vusers”
Z
erry@
gm
61
LoadRunner 的解决方案
支持多种协议和API
Z
erry@
gm
62
LoadRunner 的解决方案
能够对多种Server和资
源进行监控
Web服务器
Web应用服务器
数据库服务器
系统资源
Z
erry@
gm
63
LoadRunner 的解决方案
Virtual User Generator
产生压力和搜集测试结果
生成用于“Controller”部署的
“ Vusers”
通过图表分析工具来编译和显示测试结果
LoadRunner Controller
LoadRunner Analysis
Z
erry@
gm
64
系统性能调优
LoadRunner 工作流程
分析测试结果
阶段 5
LoadRunner
V U G E N
LoadRunner
C O N T R O L L E R &
A N A L Y S I S
执行场景
阶段 4
设计测试场景
阶段 3
创建 Web
Virtual Users
阶段 2阶段 1
制定压力测试
方案
NOTE: 这是LR的一个典型工作流程。为便于理解这个流程,在本教程中有些
步骤将按照 不同的顺序来介绍。
Z
erry@
gm
Compuware产品的整体解决方案Z
erry@
gm
Compuware产品结构
Compuware分阶段解决方案
Compuware产品结构Z
erry@
gm
1.黑盒测试工具 QACenter
2.白盒测试工具—Numega系列产品
3.Vantage 应用级网络性能监控管理软件
编码实现阶段
erry@
gm
•运行期错误检测和诊断工具Error Detection、
•代码覆盖率分析工具Coverage Analysis、
•性能分析和优化工具Performance Analysis、
•设备驱动开发套件NuMega DriverStudio、
•JAVA可视线程和事件分析工具JCheck、
•交互式的存储过程调试和优化工具DBPartner DebuggerVB
源代码分析、错误诊断、处理和恢复工具(CodeReview,
SmartCheck,FailSafe等)。
测试阶段Z
erry@
gm
•自动捕获和回放工具QARun
•应用性能加载工具QALoad
•Web站点质量分析工具WebCheck
•web应用功能测试工具TestPartner
•测试管理和设计系统QADirector
•缺陷跟踪系统TrackRecord。
网络性能测试Z
erry@
gm
•网络应用性能分析工具Application Expert
•网络应用性能监控工具Network Vantage
•服务器数据库性能监控工具Server Vantage
作业Z
erry@
gm
第十一章 2、3、4
Q &
erry@
gm