内容简介
从目前主流的Web 自动化测试工具入手,由浅入深、全面、细致地阐述了如何使用开源测试工具来完成Web 自动化测试,便于读者轻松掌握Web 自动化测试的原理、方法和实际操作。它并不是一本讲述深奥测试理论的教科书,而是一本实战类书籍,作者尝试在书中向读者演示如何使用Selenium、WebDriver 和Cucumber 搭建起一整套稳定、、零成本的自动化测试平台。本书以测试Google Gmail 和Test Perfect 为例,提供了完整的Web 自动化测试解决方案。
《零成本实现Web 自动化测试——基于Selenium WebDriver 和Cucumber》是一本Web 自动化测试的专业工具书,也是软件测试工程师的良师益友,它可作为软件测试培训、高等院校软件相关专业的辅助教材,目标读者是初级或者有经验的软件测试工程师、对提高自动化测试的有效性感到困惑的测试经理,以及有志于从事软件测试工作的朋友。
目录
Selenium和WebDriver工具篇
第1章 自动化测试基础
1.1 初识自动化测试
1.1.1 自动化测试是什么
1.1.2 常见的自动化测试架构
1.1.3 自动化测试的基本流程
1.1.4 自动化测试脚本分类
1.1.5 走出自动化测试认知的误区
1.2 开源Web自动化测试
1.2.1 是否选择开源自动化测试
1.2.2 使用开源自动化测试工具的优势
第2章 Selenium简介和基础
2.1 Selenium简介
2.1.1 Selenium组件
2.1.2 Selenium发展历程
2.1.3 Selenium浏览器支持情况
2.2 Selenium基础
2.2.1 Selenium命令——Selenese
2.2.2 Selenium脚本语法
2.2.3 Selenium测试案例集
2.2.4 常用的Selenium命令
2.3 小结
第3章 Selenium IDE
3.1 Selenium IDE简介
3.1.1 安装Selenium IDE
3.1.2 运行Selenium IDE
3.2 Selenium IDE的操作接口
3.2.1 菜单栏
3.2.2 工具栏
3.2.3 测试案例面板
3.2.4 Log、Reference、UI-Element和Rollup面板
3.3 测试案例和测试案例集
3.3.1 创建测试案例
3.3.2 运行测试案例
3.3.3 调试测试案例
3.3.4 测试案例集
3.4 Selenium IDE功能扩展
3.4.1 用户扩展
3.4.2 转换代码形式
3.5 常见错误处理
第4章 Selenium命令
4.1 验证页面元素
4.2 定位页面元素
4.3 文字模板匹配
4.4 命令使用技巧
4.5 警告框、弹出框以及多窗口
第5章 Selenium 1.0(Selenium RC)
5.1 Selenium 1.0(Selenium RC)简介
5.2 Selenium RC基础
5.2.1 Selenium RC工作原理
5.2.2 Selenium RC架构
5.2.3 Selenium RC安装
5.3 使用Selenium RC
5.3.1 从Selenese到测试程序
5.3.2 构建你的测试程序
5.3.3 学习Selenium RC API
5.3.4 报告测试结果
5.3.5 为测试加入一些编程逻辑
5.3.6 Server选项
5.3.7 Selenium Server日志记录
5.3.8 处理HTTPS和安全弹出对话框
5.3.9 支持其他浏览器和浏览器配置
5.4 常见错误处理
第6章 Selenium测试案例设计
6.1 测试设计导言
6.2 测试什么
6.3 验证结果
6.3.1 断言vs.验证
6.3.2 权衡:assertTextPresent、assertElementPresent、assertText
6.4 选择一个定位策略
6.4.1 定位动态对象
6.4.2 如何避免在测试中使用复杂的XPath表达式
6.5 测试AJAX应用系统
6.6 封装Selenium通用函数
6.7 UI映射
6.8 Page Object设计模式
6.9 数据驱动测试
6.10 数据库验证
第7章 Selenium用户扩展
7.1 Selenium用户扩展简介
7.2 Action
7.3 Accessor/Assertion
7.4 定位策略
7.5 在Selenium IDE中使用用户扩展
7.6 在Selenium RC中使用用户扩展
第8章 Selenium Grid
8.1 Selenium Grid是什么
8.2 什么时候使用Selenium Grid
8.3 Selenium Grid如何工作——通过中心和节点
8.3.1 安装Selenium Grid
8.3.2 启动Selenium Grid
8.3.3 通过Selenium Grid运行测试
8.4 Selenium Grid配置
8.4.1 中心(hub)配置
8.4.2 节点(Node)配置
8.5 中心(hub)诊断信息
8.6 常见错误
第9章 Selenium 2.0和WebDriver
9.1 WebDriver基础
9.1.1 WebDriver如何驱动浏览器
9.1.2 WebDriver
摘要与插图
我有一个梦想,有一天,我的办公桌上不再是一片狼藉,整洁的台面上只有一个大大的红色按钮。我每天要的工作,就是上班后狠狠地按下红色按钮,然后悠闲地泡上一杯西湖龙井,拿起一期的《参考消息》,看看美联储是不是又在加印该死的“废纸”。在我享受生活的同时,一份份准确严谨的测试报告就会自动发往开发部门,并抄送到各位领导的邮箱中。测试报告中包含的软件版本的缺陷列表,并指出了可接受的缺陷修复时间。剩下的一切都是“傲慢自大”的软件开发人员的事,多么美妙的一天。不过梦想永远都是梦想,就像马丁路德金遇刺身亡42年后的今天,美国仍然不是人人平等。没有种族歧视的国家。如果我的梦想有一天变为现实,那么我需要面对的可能不是悠闲的生活,而是一份解聘通知书。因为真到那一天,软件测试工作就变成扫地大妈都能完成的简单事情,公司可以请一位清洁工来负责我的工作,而不必付出更高的薪水。这真是一个一点也不好笑的笑话,测试人员的目标居然是让自己失去饭碗,不过幸好这一天还远着呢。
现在,让我们从梦想世界回到现实中来。现实是残酷的,笔者所在的测试部门,已经拥有了成千上万个QTP自动化测试案例,不过它们仅仅是自动化测试案例而已。这些案例总是执行失败,而失败原因也是千奇百怪,既有测试环境不稳定导致的失败,也有QTP工具莫名其妙的错误。测试工程师投入了大量的精力去维护这些自动化测试案例,可惜效果并不好,自动化测试有的效率依然很低。很多软件系统的自动化测试效率常年保持在60%左右,怎么办?如何向领导汇报?如何解释?
要提高自动化测试的有效性,笔者认为有两种办法。
第一,降低自动化测试对象的层次,即采用底层接口自动化测试。一个软件系统的上层接口可能会经常发生变化,但是底层功能模块间接口、系统间接口的变化却一定不会很频繁,除非是遇到软件重构。这样做就能在很大程度上避免用户接口频繁变化对自动化测试的影响,从而降低维护工作量。
第二,采取更可靠的、基于GUI的自动化测试工具。目前QTP无疑是使用泛的自动化测试工具,但是实践中笔者发现它的“录制/回放”功能很不稳定,经常会发生测试对象无法识别的异常情况,甚至莫名其妙地运行失败。怎么办?放弃基于、用于用户界面的自动化测试?显然不行,因为底层接口的自动化测试有其自身的局限性。先,你无法通过它来测试用户界面;其次,你很难用它来测试软件系统的完整业务流程。可行的办法就是寻找一种更可靠、更有效的工具来代替它,笔者在这里Selenium和WebDriver两种开源自动化测试工具。从笔者目前的实践来看,它们远比QTP更稳定,测试案例的执行速度也更快,使用成本会更低。
写作背景
几年自动化测试可谓深入人心,如果现在有人去面试软件测试工程师岗位,而又不了解自动化测试,那么他几乎不可能得到职位。对软件测试工程师而言,了解自动化测试原理,掌握几种主流自动化测试软件,已经变成岗位本的要求。对有志于从事软件测试行业的大学应届毕业生而言,了解自动化测试也是块不错的敲门砖。今年笔者所在的测试部门招聘了两位实习生,由笔者辅导他们完成一些自动化测试任务。实习结束后他们并没有与公司签约,笔者后来与他们沟通才知道,有家公司肯出双倍的薪水聘用他们,看重的正是他们有自动化测试的工作经验。由此读者朋友们不难看出业界对自动化测试的重视程度。
几年“云计算”一直是很火的IT词汇,甚至沾上一点“云”概念的股票都会一飞冲天。“云”听起来很虚幻,但其实就是客户端加网格计算。今后客户端再不会有大量的计算任务,计算和存储