内容简介
第一篇 在实践中熟悉自动化测试过程
第1章 自动化测试基础
1.1什么是软件功能测试自动化
1.2增量式测试
1.3订票系统做了什么
1.3.1测试用例
1.3.2页面流
1.4测试
第2章 搭建基础性测试脚本
2.1自动化测试相关概念
2.1.1对象
2.1.2关键字
2.2根据案例录制脚本
2.2.1创建不同的Action
2.2.2修改IE浏览器配置
2.2.3录制脚本
2.2.4让脚本跑起来
2.3QTP录制的技巧
2.3.1QTP支持的浏览器版本
2.3.2QTP Event的设置
2.3.3Java应用录制设置过程
2.4总结
第3章 完善登录模块测试脚本
3.1数据池
3.2参数化用户名和密码数据
3.2.1参数化Login Action的用户名和密码
3.2.2参数化技巧
3.2.3参数化Relogin Action的用户名和密码
3.3页面流程控制
3.3.1判别单击登录按钮页面流转
3.3.2如何控制脚本调用流程
3.3.3如何在页面参数校验
3.4我们做了什么
第4章 完善订票模块测试脚本
4.1往返城市的动态选择
4.1.1QTP关于动态控件判别函数
4.1.2随机获取往返城市
4.2找出脚本原因
4.3如何修正脚本
4.3.1脚本修正思路
4.3.2编写技巧
4.3.3脚本实现分析
第5章 完善删票模块测试脚本
5.1删除模块运行出错的原因
5.2如何随机删除一张或者多张机票
5.2.1对象信息分析
5.2.2如何获取页面票号并随机选择
5.2.3如何动态生成票号对象
5.2.4删除随机选择的票号
5.3我们做了什么
第6章 让测试脚本灵活起来
6.1工作流程的维护
6.1.1工作流程的变化
6.1.2工作流程的设置方法
6.2测试数据维护的便捷性
6.2.1测试数据维护分析
6.2.2测试数据输入编写技巧
6.3错误处理机制
6.3.1错误处理的约定
6.3.2错误处理程序实践
6.4我们做了什么
第二篇 QTP功能详解
第7章 QTP安装、运行及常见错误处理
7.1QTP安装中常见问题解决策略
7.1.1安装提示InstallShield 1607错误
7.1.2重复安装QTP不同的版本导致QTP安装出错
7.1.3QTP安装时提示Command错误
7.2QTP运行常见问题
7.2.1QTP无法正常识别对象
7.2.2无法启动IE浏览器进行录制
7.2.3QTP在连续运行长时间后出现内存耗尽解决策略
7.2.4解决QTP 9.X不支持IE8浏览器兼容性的问题
7.3小结
第8章 QTP的工作流程与录制及运行模式
8.1QTP结构整体介绍
8.1.1QTP视窗
8.1.2QTP的工作流程
8.2QTP录制过程
8.2.1QTP三种录制模式
8.2.2三种录制策略
8.2.3影响QTP录制和脚本更改的属性
8.3运行设置
8.3.1三种运行模式
8.3.2运行并更新属性
8.4脚本调试
8.4.1设置/取消断点的方法
8.4.2调试的三种模式
8.4.3调试信息跟踪
8.5小结
第9章 脚本的参数化处理过程
9.1输入参数
9.1.1图形化参数化设置
9.1.2参数输入来源
9.2输出参数过程
9.2.1图形化参数输出过程
9.2.2GetRoProperty与GetToProperty函数
9.3Action参数传递
9.3.1通过Parameter函数进行参数传递
9.3.2采取Environment函数进行参数传递
9.3.3采取DataTable进行参数传递
9.3.4三种模式参数传递的异同
9.4数据驱动运行模式
9.4.1图形化运行控制设置
9.4.2动态控制运行模式
9.5小结
第10章 数据池技术(DataTable)
10.1DataTable整体结构图
10.2DataTable Sheet的管理
10.2.1两种类型的DataTable Sheet
10.2.2创建Sheet
10.2.3删除Sheet
10.2.4获取Sheet对象
10.3DataSheet Parameter管理
10.3.1图形化参数管理
10.3.2AddParameter函数
10.3.3DeleteParameter函数
10.3.4GetParameter函数
10.4DataSheet行号控制与获取及设置参数值
10.4.1设置、获取当前行
10.4.2设置上移与下移行号
10.4.3获取或者设置参数值
10.5小结
第11章 QTP过程校验
11.1QTP提供的检查点类型与对不同的环境的支持力度
11.2数据校验
11.2.1标准检查点
11.2.2文本检查点
11.2.3文本区域检查点
11.2.4XML检查点
11.3图片校验
11.3.1图片检查点设置方法
11.3.2图片检查结果校验
11.4数据库校验
11.4.1数据检查点案例分析
11.4.2设置数据库检查点
11.4.3结果校验
11.5手工校验模式
11.5.1校验控件是否存在(Exist)
11.5.2CheckProperty函数
11.6小结
第12章 QTP对象采集、回放与管理过程
12.1QTP对象采集
12.1.1对象属性采集设置流程
12.1.2对象属性设置方法
12.1.3Order Identifier功能详解
12.1.4Smart Identifier(智能标识)操作流程
12.2脚本运行过程中对象识别过程
12.2.1QTP对象识别的流程图
12.2.2影响运行过程中对象识别能力的设置
12.3对象信息管理
12.3.1两种类型的对象库(Local、Share)异同
12.3.2混合对象库的对象存储流程
12.3.3更新共享库中的对象信息
12.3.4比较与合并对象
12.4小结
第13章 QTP自定义模式
13.1QTP控件函数自定义扩展策略
13.1.1RegisterUserFunc函数介绍与图形化的操作
13.1.2扩展QTP控件中提供的默认函数功能
13.1.3添加新的方法到指定的控件
13.2QTP自定义编程策略
13.2.1调用控件内部方法
13.2.2描述性编程
13.2.3DotNetFactory接口
13.3QTP自定义错误处理
13.3.1QTP错误处理循环控制四种策略
13.3.2Recovery策略
13.3.3自定义错误处理程序
13.4小结
第14章 QTP自动化测试对象模型介绍
14.1自动化测试对象控制模型(AOM)介绍
14.1.1自动化测试对象控制模型(AOM)接口的分类
14.1.2AOM接口调用所支持的开发语言
14.1.3C#与VBScript调用AOM接口的方法
14.2对QTP脚本进行各类自定义设置操作
14.2.1通过程序来设置插件属性
14.2.2通过程序动态设置脚本资源文件
14.2.3通过程序动态设置对象标识属性
14.3通过程序控制脚本的运行与Datatable设置
14.3.1通过程序来控制QTP脚本运行
14.3.2通过程序进行管理DataTable操作
14.4通过程序进行控制脚本参数的传输
14.4.1手工设置脚本参数
14.4.2通过AOM使得外部程序与QTP进行数据交互
14.5在C#中调用AOM关注事项
14.5.1在C#中启动QTP注意事项
14.5.2在C#中无法直接调用AOM对象的一些方法
14.6小结
第三篇 QTP实战技术应用
第15章 QTP与Ajax测试
15.1Ajax技术简介
15.2案例讲解—Ajax应用分析
15.2.1应用框架介绍
15.2.2应用的元素分析
15.2.3采用第三方工具捕获隐藏对象
15.2.4编写脚本思路与脚本实现
15.3Ajax自动化测试分析
第16章 QTP与PDF文件测试
16.1PDF文件测试技术简介
16.2案例讲解:如何获取PDF文件的页数
16.3Adobe COM接口介绍
16.3.1注册表信息
16.3.2Adobe OLE Automation DOM结构图
16.3.3Acrobat对象详解
16.4案例讲解:PDF格式文件文本检查以及按钮状态检查
16.4.1封装Adobe调用接口
16.4.2QTP脚本调用
16.5测试结果分析
第17章 QTP与DOS命令行程序的测试
17.1DOS命令行操作简介
17.2通过SystemUtil对象模拟DOS操作
17.2.1SystemUtil对象介绍
17.2.2QTP对象属性分析
17.2.3键盘模拟操作特殊键值
17.3输出的捕获与校验
17.3.1GetVisibleText函数介绍
17.3.2结果输出与校验
17.3.3GetVisibleText函数的局限性
17.4利用WSH对象进行DOS结果校验
17.4.1WshScriptExec对象
17.4.2环境变量的设置
17.4.3WSH方法的结果输出与校验
17.5案例讲解:测试WorkingSetDOS程序
17.5.1Working Set程序介绍
17.5.2程序测试用例
17.5.3自动化测试程序实现
17.6DOS测试思路分析
第18章 QTP与Win 32 API测试
18.1Win 32 API测试简介
18.2QTP调用Win 32 API的方法
18.2.1Win32 API函数声明格式
18.2.2QTP中调用Win 32 API函数介绍
18.2.3案例讲解:调用FindWindow函数
18.2.4Win 32 API参数类型的转化
18.2.5自动生成QTP调用函数工具介绍
18.2.6案例讲解:QTP脚本回放时控件状态自动校验并高亮显示控件
18.3自定义动态链接库并发布接口在QTP中调用
18.3.1动态链接库技术简介
18.3.2在Visual C++中如何编写动态链接库
18.3.3如何校验动态链接库发布出来的接口
18.3.4QTP调用自定义动态链接库
18.4QTP调用第三方链接库思路分析
第19章 Telnet和SSH远程操作自动化测试
19.1远程操作技术简介
19.2SecureCrt ActiveX介绍
19.2.1ActiveX接口结构图
19.2.2接口对象介绍
19.2.3SecureCrt支持的语言及调用方法
19.2.4脚本运行方法
19.2.5SecureCrt错误处理方法
19.3SecureCrt关键对象详解
19.3.1Session对象
19.3.2Connect函数的语法
19.3.3Screen对象
19.3.4多样的检查点
19.3.5获取指定位置的字符
19.3.6请求的发送
19.4案例讲解:远程登录UNIX服务器自动化测试
19.4.1测试案例
19.4.2脚本实现
19.5远程服务自动测试思路分析
第20章 Windows脚本宿主(WSH)应用
20.1WSH技术简介
20.1.1WSH引擎定义
20.1.2WSH的主要用途
20.2WSH对象详解
20.2.1WSH对象结构图
20.2.2WSH内嵌对象说明
20.2.3CreateObject与GetObject
20.3什么是WMI
20.4在QTP中不支持的WScript的属性和方法
20.5WSH常用对象介绍
20.5.1Wshell对象
20.5.2Wshell主要功能
20.5.3Wshell常用的方法与属性
20.5.4案例讲解:结合QTP来获取系统中相关的环境变量值
20.5.5案例讲解:判别某一程序是否被激活
20.5.6案例讲解:获取、写操作系统日志
20.5.7案例讲解:定时弹出窗口
20.5.8案例讲解:注册表操作
20.5.9案例讲解:模拟键盘发送快捷方法
20.6WSH其他相关对象
20.6.1网络映射
20.6.2增加快捷栏标识
20.7WSH总结
第21章 正则表达式应用
21.1正则表达式技术简介
21.1.1结果校验的两种方法
21.1.2正则表达式应用无处不在
21.2正则表达式使用
21.2.1正则表达式的用途
21.2.2元字符
21.2.3特殊字符
21.2.4非打印字符
21.2.5普通字符
21.2.6字符匹配
21.2.7括号表达式
21.2.8限定符
21.2.9定位符
21.2.10选择与编组
21.2.11向后引用
第22章 QTP实用技巧
22.1QTP应用技巧简介
22.2巧用QTP中Web脚本回放类型
22.2.1QTP中Web两种回放类型
22.2.2UI修改回放类型的方法
22.2.3程序修改回放类型的方法
22.2.4类型设置不当引发的错误
22.2.5案例讲解:回放类型适用范围
22.2.6回放类型选择的思路分析
22.3QTP脚本无法保存
22.3.1脚本无法保存的表象
22.3.2挖掘问题的原因
22.3.3问题的三种解决策略
22.4QTP与Java程序测试
22.4.1QTP无法录制Java Applet程序解决策略
22.4.2在QTP脚本中调用Java程序run time的方法
22.4.2.1调用Java控件提供的方法
22.4.2.2识别java runtime方法
22.4.2.3创建Java新的方法实例
22.4.2.4解决QTP无法接收Java runtime返回数组
22.4.3隐藏的QTP Java插件调试方法
22.4.3.1通过环境变量设定跟踪级别
22.4.3.2通过环境变量修改日志输出路径
22.4.3.3通过注册表修改日志输出
22.5巧用WSC编写VBScript COM组件与QTP保留组件调用
22.5.1WSC技术简介
22.5.1.1WSC含义
22.5.1.2WSC结构
22.5.1.3生成GUID的值
22.5.2WSC文件生成向导
22.5.3添加COM组件实现方法
22.5.4注册WSC文件
22.5.5使用QTP保留对象调用COM组件
22.5.5.1注册表中增加Reserved对象
22.5.5.2QTP中调用预先设定的保留关键对象
22.6解决QTP对象无法识别的问题
22.6.1对象无法识别分析
22.6.1.1问题表现与分析
22.6.1.2案例讲解:录制属性无法标识对象
22.6.1.3解决程序录制时对象属性无法标识的策略
22.6.2录制时对象能被识别,但是回放失败(应用程序发生变更)
22.6.3无法录制应用自定义对象
22.6.3.1自定义对象分析
22.6.3.2设定对象映射关系
22.6.4无法识别Web页面自定义的事件
22.6.4.1问题的表现
22.6.4.2问题原因分析
22.6.4.3添加预定义Web事件方法
22.6.4.4添加未预定的事件方法
22.7无法录制自定义控件的执行方法
22.7.1自定义控件问题分析
22.7.2案例讲解:无法录制自定义TreeView控件的Checkbox操作方法
22.7.2.1案例程序实现逻辑
22.7.2.2QTP原始脚本与回放存在的问题
22.7.2.3脚本问题分析
22.7.3自定义控件的测试解决策略
22.7.4总结
第四篇 自动化测试框架设计与实践
第23章 测试自动化框架设计基础
23.1测试与自动化测试
23.1.1测试
23.1.2自动化测试
23.2测试自动化特点
23.3测试自动化的限制
23.3.1测试自动化无法智能化
23.3.2测试自动化无法完全替代手工测试
23.3.3测试自动化无法提升测试的有效性
23.3.4测试自动化将制约了开发的效率
23.4测试自动化过程
23.4.1测试自动化前期过程
23.4.2输入
23.4.3执行
23.4.4输出
23.4.5比较
23.4.6缺陷发布与影像回放
23.5小结
第24章 测试数据自动化管理的设计
24.1测试数据自动化管理设计要素
24.2测试数据的维度
24.3测试数据的分类
24.3.1业务数据
24.3.2待测的对象
24.4测试数据之间的关系
24.4.1数据的权重
24.4.2数据的内在约束
24.4.3数据的惟一性
24.5测试字段之间的关联与组合
24.5.1字段之间的约束
24.5.2字段之间的组合
24.6测试数据设计要素
24.7数据运行控制
24.7.1手工测试数据运行控制模式
24.7.2测试数据关系提炼角度
24.7.3测试数据运行控制导图
24.7.4数据运行控制设计所涉及的问题
24.8测试数据自动化设计
24.8.1测试数据保存约定
24.8.2数据字典
24.8.3数据运行控制模型
24.8.4数据关系运算模式
24.8.5数据关系运算
24.9数据处理模型的实现
24.9.1数据存储层实现
24.9.2数据关系处理实现
24.9.3数据格式定义与实例调用
24.9.4QTP调用实例
24.10C#实现数据管理程序实例
24.10.1设计结构简介
24.10.2案例管理控制过程
24.10.3数据关系设计
24.10.4数据组合生成过程
24.10.5自动生成用例
24.10.6修改用例
24.10.7COM数据调用接口简介
24.10.8QTP即插即用接口与VBS调用方法
24.11小结
第25章 案例解析:自动化测试框架设计与实践
25.1初识案例解析技术
25.1.1案例解析技术产生的原因
25.1.1.1传统的自动化测试过程
25.1.1.2案例解析技术自动化测试过程
25.1.1.3两种自动化测试技术的异同
25.1.2案例解析技术的优势
25.1.2.1由“被动”变为“主动”
25.1.2.2脚本的“原子化”
25.1.2.3脚本的高扩展性
25.1.3案例解析技术的缺点
25.2案例解析技术脚本形成要素
25.2.1测试脚本结构分析
25.2.2操作三种类型的数据分析
25.2.2.1数据的预知
25.2.2.2测试数据预知的意义
25.2.2.3三类测试数据的内在分析
25.3案例解析技术设计蓝图
25.3.1案例解析技术所涵盖的模块
25.3.2案例解析技术设计结构图
25.4自动化测试案例编写规则设计
25.4.1自动化测试案例规则提炼
25.4.1.1规则设定的意义
25.4.1.2原始案例内在特性分析
25.4.1.3测试脚本与测试案例
25.4.2自动化测试案例的规则映射
25.4.2.1直接映射
25.4.2.2间接映射
25.4.3自动化测试案例编写设计
25.4.4自动化案例管理媒介
25.4.5自动化测试案例编写的基本模式
25.4.6待测对象与案例关系的映射
25.5自动化测试对象管理
25.5.1获取待测对象属性以及对象之间的模式
25.5.1.1最佳的控制模式
25.5.1.2递进的控制模式
25.5.2对象采集的两种策略
25.5.2.1程序采集
25.5.2.2二类应用模式的程序采集实例
25.5.2.3手工采集模式
25.5.3对象的保存模式和读取
25.5.3.1对象的保存格式与物理存储方式
25.5.3.2XML存储结构
25.5.3.3数据库存储格式
25.5.3.4对象的读取
25.6错误处理与缺陷发送
25.6.1传统的错误处理模式
25.6.1.1传统的错误处理模式的不足
25.6.1.2改进的策略
25.6.2错误处理模式三种测试设计技术
25.6.2.1图片处理技术
25.6.2.2伪视频技术
25.6.2.3视频技术
25.6.3错误处理程序实例讲解
25.6.3.1错误处理程序设计思路
25.6.3.2图片处理技术实例
25.6.3.3错误处理程序调用方式
25.6.3.4如何获取到错误控件的位置
25.6.4缺陷发送处理技术
25.6.4.1缺陷发送模式
25.6.4.2什么是同步模式、异步模式
25.6.4.3两种模式的异同
25.6.4.4异步模式两种操作方式
25.6.4.5缺陷发送接口的实例
25.7自动化测试运行调度
25.7.1作业的调度
25.7.1.1作业调度的两种模式
25.7.1.2作业调度最容易忽视的问题
25.7.1.3作业调度信息交互的过程
25.7.2调度的前置任务
25.7.2.1什么是前置任务
25.7.2.2前置任务的类型
25.7.2.3为什么要自动化前置处理
25.7.3运行控制
25.7.3.1运行控制简介
25.7.3.2自动化测试运行控制过程
25.7.3.3运行控制内容
25.7.3.4循环控制部分设计
25.7.3.5运行控制代码实例
25.7.3.6传递请求、获取返回值以及日志系统
25.7.3.7日志控制信息
25.7.4调度的后置任务
25.7.4.1后置任务的分类
25.7.4.2后置任务的意义
25.8小结