软件测试 —— 自动化测试
2 人与工具 工欲善其事,必先利其器。 荀子曰:吾尝终日而思矣, 不如须臾之所学也。吾尝〔 足支〕而望矣,不如登高之 博见也。登高而招,臂非加 长也,而见者远。顺风而呼 ,声非加疾也,而闻者彰。 假舆马者,非利足也,而致 千里。假舟辑者,非能水也 ,而绝江河。君子生非异也 ,善假于物也。君子性非异 也,善假于物也。
3 测试面临的问题 测试用例会越来越多,工作量越来越大,而且许多测试用 例会被不断地重复执行。如果由手工来完成,不仅占用很 多人力资源,而且工作重复单调,会影响测试人员的积极 性,降低测试工作人员的热情 … 怎么办? 自动化测试
4 简单的实验 批处理文件 Word 的邮件合并功能 “ 工具 ” “ 信和邮件 ” “ 邮件合并 ”
5 Word 中的宏
6 自动化测试的例子( 1 )
7 录制操作 查看脚本 回放脚本
8 自动化测试的例子( 2 ) 先下载并安装 Selenium IDE
9
10 支持语言
11 工具选择
12 自动化测试的例子( 2 ) 录制操作 查看脚本 回放脚本
13 什么是自动化测试 (Test Automation) 自动化测试 : 用测试工具代替人工执行测试用 例,自动生成输入数据、结果验证、生成测 试日志或报告的过程。 自动执行测试用例往往是通过执行由某种语 言编制的自动测试程序(脚本)来实现的。 测试工具的使用是自动化测试的主要特征。
14 问题一 自动化测试 = 动态测试? 手工测试 = 静态测试?
15 手工测试的局限性 无法做到覆盖所有代码路径 很难捕捉到与时序、死锁、资源冲突、多线程等有关的错误 难以实施系统负载 / 性能测试,因为需要模拟大量数据或大量 并发用户 难以实施系统可靠性测试,因为需要模拟系统运行十年、甚 至几十年。 难以在短时间内完成大量(如几千个)的(回归)测试用例 面对测试条件组合爆炸,无能为力或效率非常低。 您的看法?
16 自动化测试的特点 自动运行的速度快, 是手工无法相比的 。 测试结果准确。 例如搜索用时及时是 0.33 秒或 0.24 秒,系统都会发现问题,不会忽视任何差异 高复用性 。一旦完成所用的测试脚本,可以一劳 永逸运行很多遍 永不疲劳 可靠 独特的能力
17 自动化测试带来的好处 测试周期缩短 更高质量的产品 软件过程更规范 高昂的团队士气 节省人力资源,降低企业成本 充分利用硬件资源,降低企业成本 表 4-2 自动化测试在不同测试阶段的应用
18 手工测试 发现缺陷率高 容易实施 创造性、灵活性 覆盖率量化困难 重复测试效率低 一致性、可靠性低 依赖人力资源 高效率(速度) 高复用性 覆盖率容易度量 准确、可靠 不知疲劳 激励团队士气 机械、难以创造性地发现缺陷 一次性投入大 对工具的依赖,工具局限性 自动测试 手工测试 vs. 自动测试
19 两者相互补充 在系统功能逻辑测试、验收测试、适用性测试、涉及交 互性测试时,多采用手工测试方法; 回归测试、系统负载或性能、可靠性测试、压力测试等 比较适合采用自动化测试; 对那种不稳定、开发周期短或一次性的软件等情形不适 合自动化测试 工具本身缺乏想象力和创造性,自动测试只能发现 15% 左右的缺陷,而手工测试可以发现 85% 左右的缺陷;
20 自动化测试的流程举例 保存脚本 记录执行 Log 验证测试结果 启动应用、执行脚本 调用脚本 创建脚本 录制对象及其操作 插入验证点 调试脚本 启动应用 测试报告
21 自动化测试原理 代码扫描及其分析 GUI 对象识别 DOM 技术 捕获和回放( record/playback ) 脚本技术 自动结果比较
22 代码扫描及分析 编译器 规则 工具
23 GUI 对象识别 C/S 架构
24 GUI 对象识别 基于 GUI 对象识别技术主要有三种不同的实现方 法 基于 Windows 平台的 基于 windows API 函数调用 MSAA(MicroSoft Active Accessibility ) UIAutomation Windows Automation API 3.0(UIA SP1) Reflection WSH:Windows Scripting Host VS Spy++
25 DOM 技术( Document Object Model ) 基于浏览器对象 B/S 架构
26 脚本技术 线性脚本,是录制手工执行的测试用例得到的脚本, 这种脚本包含所有的击键、移动、输入数据等,所有 录制的测试用例都可以得到完整的回放。 结构化脚本,类似于结构化程序设计,具有各种逻 辑结构、函数调用功能。 数据驱动脚本,将测试输入存储在独立的(数据) 文件中,而不是存储在脚本中。 关键字驱动脚本,是数据驱动脚本的逻辑扩展。
27 线性脚本
28 结构化脚本
29 数据驱动测试脚本 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 将测试输入数据存储在文件中,而不是存储在脚本中, 执行测试时,是从文件中而不是直接从脚本中读取测 试输入。
30 另外一个例子
31 关键字驱动脚本
32 自动比较 静态比较和动态比较 简单比较和复杂比较 敏感性测试比较和健壮性测试比较 比较过滤器
33 验证点 VP 通过比较控件的基准值与回放脚本时的值来判断程序 是否按照预期的设想在执行,验证点往往插入在脚本中 ,供自动化测试工具进行结果比较。
34 正确认识测试自动化 不现实的期望注定测试自动化的失败 测试自动化能: 显著降低重复手工测试的时间 建立可靠、重复的测试,减少认为错误 增强测试质量和覆盖率 测试自动化不能: 完全替代手工测试和手工测试工程师 保证 100% 的测试覆盖率 弥补测试实践的不足
35 系统解决方案 缺陷报告 代码 功能测试性能测试单元测试 录制 / 编写 软件 脚本 测试环境测试环境 配置管理
36 本章内容 4.1 测试自动化的内涵 4.2 自动化测试的原理 4.3 测试工具的分类和选择 4.4 自动化测试的引入
37 各类测试工具 根据测试方法不同,分为白盒测试工具和 黑盒测试工具、静态测试工具和动态测试工 具等。 根据工具的来源不同,分为开源测试工具 (多数是免费的)和商业测试工具、自主开 发的测试工具和第三方测试工具等。 根据测试的对象和目的,分为单元测试工 具、功能测试工具、性能测试工具、测试管 理工具等
38 测试工具的分类 静态测试工具 - 扫描分析: Findbugs, JTest/C++Test - 规则定义 动态测试工具 - 内存检测工具 - 录制 / 回放工具 - 负载测试工具 - 监控工具
39 商业工具解决方案 单元测试: Parasoft JTest /C++test, PR QAC/C++ 、 CompuWare DevPartner for Visual C++ CompuWare BounceChecker , IBM Rational PurifyPlus/PureCoverage, CompuWare TrueCoverage , TeleLogic Logiscop 功能测试: HP QTP/WinRunner, IBM Rational Functional Tester/Robot, Segue SilkTest, Oracle Empirix e-Test Suite, Compuware Test Partner, Parasoft WebKing 性能测试: HP LoadRunner, Borland SilkPerformer, IBM Rational Performance Tester, Radview WebLoad, Compuware QA Load
40 开源工具解决方案 单元测试: JUnit & XUnit 家族 功能测试: Selenium 、 Abbot AutoIT/AutoHotkey 性能测试: JMeter 数据库: DBprobe 网络监控: Wireshark/Ethereal, Netcat, Snort
软件本地化测试
42 穿上唐装的米老鼠 天涯节物遮愁眼 且复随乡便入乡
43 国际化生活的体验 去美国旅行,最感不适应会有 什么? 2/3/2009 代表哪一天, 2 月 3 日或 3 月 2 日? 乔治 · 布什( George Bush ) 属于哪个家族? 收到邮件,出现乱码 …… 倒时差 格林尼治时区分界线
44 本地化的概念 是在源语言版本的基础上,通过翻译、定制和参数 配置等工作,使软件产品或系统在语言、时区、度 量衡、文化、风俗习惯等各个方面与当地国家和地 区的相应内容相一致,从而满足特定地区的用户的 使用需求。
45 国际化的概念 为保证所开发的软件能适应 全球市场的本地化工作而不需要 对程序做任何系统性或结构性变 化的特性,这种特性通过特定的 系统设计、程序设计、编码方法 来实现。
46 国际化( internationalization ) 本地化( Localization ) 全球化( Globalization ) 翻译 本地化 国际化 全球化 市场概念 纯技术概念 国际化设计 本地化集成 全球市场的推广和销售 国际化和本地化
47 软件本地化 技术层面的更改 调整大小、调整默认设置、重新编译、创建新 的图形、重新编排文档格式 文化层面的更改 包装、图标、宣传、样品、政治 敏感的术语,地方规章和宗教信仰
48 软件本地化基本步骤 1. 建立配置管理体系,跟踪目标语言各个版本的源代码; 2. 创建和维护术语表,存储在相关的数据库中 ; 3. 从源语言代码中分离资源文件或提取需要本地化的文本; 4. 把分离或提取的文本、图片等翻译成目标语言; 5. 把翻译好的文本、图片重新插入目标语言的源代码中; 6. 如果需要,编译目标语言的源代码 ; 7. 定制软件的界面,包括改变颜色、默认值等; 8. 测试翻译后的软件,调整 UI 以适应翻译后的文本; 9. 测试本地化后的软件,确保格式和内容都正确。
49 软件本地化测试 1. 功能性测试:所有基本功能、安装、升级 … 2. 翻译测试:语言完整性、术语准确性 … 3. 可用性测试:用户界面、时区 、 度量衡 … 4. 兼容性调试:硬件、版本 … 5. 适用性测试:文化、宗教、喜好 … 6. 手册验证:联机文件、在线帮助、 PDF 文件 …
50 功能测试 集成测试(客户端和服务器之间) 索引和排序 联机文档( HTML 、 PDF 、 Flash… ) 不仅要查看用户界面,而且要对文件保存、打印 等功能进行测试,特别要注意语言环境特定的组 件,比如时间、日期格式以及文字处理等相关方 面的功能进行测试。
51 数据格式
52 数据格式 ( 1 ) 日期 1. 中国: 或 2003 年 2 月 14 日 2. 美国: 或 Feb.14 , 英国: 14/2/2003 或 14 Feb , 2003 年/月/日年/月/日 月/日/年月/日/年 日/月/年日/月/年
53 数据格式 ( 2 ) 时间 1. 中国: 22:45 2. 美国: 10:45 PM 3. 加拿大: 22 h 45
54 数据格式 ( 3 ) 货币和数字
55 数据格式( 4 ) 度量衡 复数 姓名 排序 中文名:朱少民 英文名: Kerry Zhu
56 页面显示和布局 德语最长,汉语比较精炼 乱码 (双字节语言 GB/BIG5/JP/ … ) 字符索引、排序
57 UI 验证的常见问题 控件重叠、排列间隔不均匀、字符显示不完整 文字遮挡图像、超过边界、文字方向 左右对齐、段落开头的空格数 连字符号连接规则 拉丁语言的大小写、多字节语言的显示 本地化问题??国际化特性支持不够!!
58 配置和兼容性验证 数据库问题 热键 …… 适应本地的一些特殊应用环境要求,所以兼容性测试 也被称为本土测试, 包括本地的硬件(如键盘、打印机、 扫描仪等)、第 3 方本地化软件等。
59 翻译验证测试的主要工作 专 专业术语的建立、翻译和存储 应 应该翻译而没有翻译的内容 部 部分遗漏的未被翻译的内容 不 不应该翻译而翻译的内容(如 Windows ) 错 错误的翻译 译 译文复杂、难懂 缩 缩写词:首次出现是否标出了全称 语 语言和文化环境:标点符号、货币单位 政 政治宗教敏感内容
60 软件本地化测试 在本地化软硬件环境中进行测试。 尽早、不断地对本地化软件进行测试。