手机扫码免费下载
纠错留言#电子书截图
#电子书简介
自动化测试相较于手工测试的优势在于:
1)自动化测试可以完成某些手工测试难以完成的工作,如并发测试、压力测试等。
2)自动化测试可以提高手工测试的工作效率,如执行具有多个重复步骤的测试用例。
3)自动化测试在敏捷开发过程中,可以快速验证代码修改的正确性。
4)自动化测试和手工测试相辅相成,互相促进。
实施自动化测试前需要对软件开发过程进行分析,以观察其是否适合使用自动化测试。通常需要满足以下几个条件:
1)需求变动不频繁。测试脚本的稳定性决定了自动化测试的维护成本。如果软件需求变动过于频繁,测试人员需要根据变动的需求来更新测试用例和相关的测试脚本,而脚本的维护本身就是一个代码开发的过程,需要修改和调试,必要时还需要修改自动化测试的框架。如果耗费的成本高于节省的测试成本,那么自动化测试便是失败的。如果项目中的某些模块相对稳定,而某些模块需求变动性很大,可以针对相对稳定的模块进行自动化测试,而变动较大的仍采用手工测试。
2)项目周期足够长。自动化测试需求的确定、框架的设计、测试脚本的编写和调试都需要相当长的时间来完成,这个过程本身就是一个测试软件的开发过程,需要较长的时间来完成。如果项目的周期比较短,没有足够的时间去支持这样一个过程,那么自动化测试便成为笑谈。
3)自动化测试脚本可重复使用。如果费尽心血开发了一套近乎完美的自动化测试脚本,而脚本的重复使用率很低,致使期间所耗费的成本大于所创造的经济价值,自动化测试便成为了测试人员的练手之作,而并非是真正可产生效益的测试手段。
4)手工测试无法完成的测试工作。某些测试采用手工的方式无法完成,或者需要投入大量时间与人力,此时就可以考虑引入自动化测试,如性能测试、配置测试、兼容性测试、大数据量输入测试等。
自动化测试虽然有如此多的优势,那是不是意味着自动化测试就是“包治百病”的软件“银弹”呢?有些人可能会有如下误区:
1)自动化测试是一种比人工测试更先进、更高级的测试手段。自动化测试既有自身的优点,也有其局限性。例如对于需求不明确,或者界面经常发生变动的产品就不适合使用自动化测试。自动化测试与手工测试的关系应该是相辅相成,互相弥补各自的局限性,相互促进。
2)所有的手工测试都应该被100%的自动化。一味片面地追求自动化率,不仅软件的质量得不到提高,而且还会让测试人员疲于奔命,投入和产出的性价比很低。有不少负面测试就只能通过手工测试的方式完成并进行验收。自动化测试不是万能的,需要根据实际情况引入并有的放矢地设定其覆盖率。
3)自动化测试能够发现大量的缺陷,它比手工测试更有效。实际情况是,自动化测试只能发现30%以下的软件缺陷,而手工测试反而能发现更广泛且很深层次的问题。自动化测试在回归测试时可以节省很多时间并快速验收,但这并不意味着其发现问题的能力比手工测试更强。单从发现缺陷的角度而言,自动化测试的效率低于手工测试。
……
前言
第1章初识Selenium
★1.1简介
★1.2自动化测试
★1.3Web自动化测试
★1.4Selenium的前世今生
★1.5Selenium
★1.6Selenium
★1.7Selenium
★1.8Selenium IDE
★1.9Selenium Grid
★1.10Selenium与嵌入式
★1.11Selenium与云计算
★1.12小结
第2章牛刀小试之Selenium IDE
★2.1简介
★2.2安装Selenium IDE
★2.3Selenium IDE界面一览
★2.4创建测试用例
★2.5存储页面信息
★2.6与AJAX页面进行交互
★2.7处理多窗口
★2.8Rollup的简介
★2.9小结
第3章Selenium玩转页面元素
★3.1简介
★3.2浏览器调试工具
3.2.1Google Chrome
3.2.2Mozilla Firefox
3.2.3Internet Explorer
★3.3查找页面元素
3.3.1通过ID查找元素
3.3.2通过Name查找元素
3.3.3通过ClassName查找元素
3.3.4通过TagName查找元素
3.3.5通过LinkText查找元素
3.3.6通过PartialLinkText查找元素
3.3.7通过CSS选择器查找元素
3.3.8通过XPath查找元素
3.3.9通过jQuery查找元素
★3.4元素的Actions
★3.5小结
第4章初识Selenium WebDriver
★4.1简介
4.1.1概述
4.1.2WebDriver与Selenium RC的区别
★4.2WebDriver的架构
4.2.1synthesized事件和native事件
4.2.2RPC调用
4.2.3兼容性矩阵
4.2.4缺陷
4.2.5与DOM交互
★4.3WebDriver、Eclipse和Java
★4.4WebDriver的部署
4.4.1使用Firefox Driver
4.4.2使用Chrome Driver
4.4.3使用Internet Explorer Driver
★4.5WebDriver与浏览器
4.5.1操作页面元素之单选按钮
4.5.2操作页面元素之多选按钮
4.5.3操作弹出窗口之验证标题
4.5.4操作弹出窗口之验证内容
4.5.5操作警告框、提示框和确认框
4.5.6操作浏览器最大化
4.5.7操作浏览器Cookies
4.5.8操作浏览器前进后退
4.5.9操作页面元素等待时间
★4.6WebDriver与文件系统
4.6.1屏幕截图操作
4.6.2复制文件操作
4.6.3创建目录操作
4.6.4删除目录操作
4.6.5读取文件操作
4.6.6压缩目录操作
4.6.7临时目录操作
4.6.8文件权限操作
★4.7小结
第5章玩转Selenium WebDriver
★5.1WebDriver与HTML
5.1.1HTML5中的Video
5.1.2HTML5中的Canvas
5.1.3HTML5中的Drag/Drop
5.1.4HTML5中的Geolocation
★5.2RemoteWebDriver
5.2.1RemoteWebDriver简介
5.2.2RemoteWebDriver的优缺点
5.2.3RemoteWebDriver服务器端
5.2.4RemoteWebDriver客户端
★5.3WebDriver的事件处理
5.3.1自定义事件侦听
5.3.2事件处理实例
★5.4Page Object与Page Factory
5.4.1不使用Page Object
5.4.2使用Page Object
5.4.3使用Page Object、Page Factory、@FindBy和How
★5.5Selenium RC迁移到WebDriver
5.5.1简介
5.5.2从Selenium RC迁移到WebDriver的优势
5.5.3迁移Selenium运行实例
5.5.4迁移测试代码到WebDriver API
★5.6小结
第6章Selenium玩转Android
★6.1简介
★6.2玩转Android
6.2.1架构
6.2.2搭建Android WebDriver环境
6.2.3最简单的测试用例
6.2.4旋转屏幕
6.2.5触摸和滚动
★6.3当Android遇到HTML
6.3.1HTML5中的Web Storage
6.3.2HTML5中的Application Cache
★6.4在Cloud中测试Android
★6.5小结
第7章Selenium玩转iOS
★7.1简介
★7.2ios-driver
7.2.1ios-driver简介
7.2.2ios-driver的Web app实例
7.2.3ios-driver的Native app实例
7.2.4ios-driver的源码编译
★7.3Appium
7.3.1Appium简介
7.3.2Appium的iOS配置
7.3.3Appium的Web app实例
★7.4小结
第8章Selenium玩转Raspberry Pi
★8.1简介
★8.2操作系统层面的准备工作
★8.3依赖包的安装
★8.4运行Python版的Selenium
★8.5运行Standalone版的Selenium Server
★8.6小结
第9章Selenium Grid
★9.1简介
9.1.1Selenium Grid是什么
9.1.2何时使用Selenium Grid
9.1.3Selenium Grid 2.0 & 1.
★9.2Selenium Grid的架构
★9.3Selenium Grid的部署
★9.4Selenium Grid Hub
9.4.1默认启动Hub
9.4.2配置Hub端口
9.4.3JSON配置文件
★9.5Selenium Grid Node
9.5.1默认启动Node
9.5.2注册Mac OS X & Opera
9.5.3注册Linux & Firefox
9.5.4注册Windows & Internet Explorer
9.5.5注册Android & Chrome
9.5.6注册Appium-iOS & Safari
9.5.7注册多个不同类型的浏览器
★9.6编写Selenium Grid的测试用例
★9.7小结
第10章Selenium的“兄弟姐妹们”
★10.1简介
★10.2Jenkins
★10.3Web前端性能
10.3.1BrowserMob Proxy
10.3.2HttpWatch
★10.4Ruby的光芒
10.4.1Watir-WebDriver
10.4.2Capybara
★10.5JMeter
★10.6Sikuli
★10.7小结
参考文献
《基于Selenium 2的自动化测试:从入门到精通》向开发人员和测试人员展示了如何使用Selenium进行Web自动化测试。《基于Selenium 2的自动化测试:从入门到精通》从自动化测试的特点娓娓道来,引出了主角Selenium;介绍了Selenium IDE的使用;讲述了获取页面元素和定位页面元素的多种方式;讲解了WebDriver与Selenium RC的区别、WebDriver的架构和设计理念;阐述了WebDriver的部署、基本使用方法、对HTML5特性的支持,以及如何迁移已有的Selenium RC代码到Selenium WebDriver的解决方案;展示了在嵌入式系统中使用Selenium进行自动化测试的方法,涵盖Android、 iOS和Raspberry Pi等;此外,本书还描述了Selenium Grid的架构和部署方法;最后介绍了Selenium周边的测试工具和套件。无论从深度还是广度上,本书为开发人员和测试人员学习并掌握Selenium提供了一定的辅助作用。
《基于Selenium 2的自动化测试:从入门到精通》适合开发人员、测试人员、测试管理人员使用,也适合作为大中专院校相关专业师生的学习用书,以及培训学校的教材。
多年以前,自动化测试还不够成熟。人们往往把自动化测试当作手工测试的附属品,就像当年把测试当成开发的附属品一样。从1997年的开源运动开始,开源软件在过去的十多年间蓬勃发展。大到操作系统,小到一个功能模块,开源运动已经渗透到各个领域并结出丰硕的果实。在软件测试领域,特别是自动化测试领域,开源软件涵盖了方方面面。从单元测试、功能测试到性能测试,从Web页面测试到数据库、多媒体、通信等应用领域的测试,都可以发现开源软件的身影。开源软件给自动化测试技术带来巨大变革和进步。
Web自动化测试从无到有、由浅入深,已经逐步走向成熟。互联网的出现亦改变了许多软件研发的模式。在互联网和软件产业,一切变化都如此迅速,以至于许多最近几年才出版的软件测试方面的书籍内容已跟不上软件更新迭代的速度。许多红极一时的测试工具和测试实践,在当前的环境下效率会大打折扣。作为Web测试工具中的佼佼者——Selenium已经走过了近10个春秋,从Selenium1发展到Selenium2,可谓“十年磨一剑”。它是如何做到与时俱进并继续引领业界潮流的呢?本书将由浅入深地展示Selenium的独特魅力之所在。
而国内的Web自动化测试资源,经过这么多年的发展,已然在自动化测试领域遍地开花。无论测试人员的水平,还是测试工具的成熟度,抑或测试资料的完备性,都已达到蓬勃发展的阶段。正所谓“乱花渐欲迷人眼”,如何在众多的Web自动化测试工具和资料中选取最适合自己学习、并且能应用到实际项目中的测试套件,已经成为不少自动化测试人员犹豫不决的选择题。
许多刚入行的测试人员希望获取入门级的书籍,以此引导他们入门和上手某测试工具。本书由浅入深,从最基本的SeleniumIDE的使用进行介绍并逐步深入,进而讲解了Selenium2/WebDriver的架构、功能、使用等方面的相关知识点;除了纵向的知识深入,本书还横向涵盖了一些拓展知识点,包括WebHTML5、嵌入式系统的自动化测试、软件持续集成、其他Web自动化测试工具等。希望本书不仅仅只是一本为初级测试人员准备的入门书籍,还能成为资深测试人员的案头参考资料。
为了便于读者实践,本书还提供了配套的代码包和工具包,基本囊括了本书中的示例代码、配置文件和自动化脚本文件。所有的示例代码文件、配置文件和自动化脚本文件都以章节进行了划分,并且通过第4章的内容配置好WebDriver和Eclipse后,导入相关的Java示例代码即可运行。而配套的配置文件和自动化脚本文件可根据对应章节所阐述的方法部署到合适的环境中运行。
特别感谢我的幺爷爷黄忠霖教授,我才有机会结识机械工业出版社电工电子分社张俊红副社长。同时感谢张俊红副社长,没有他的鼓励、支持和指导,我很难有勇气和毅力完成这样一本书。此外,还需要感谢张讯讯和张慧智在文字方面的审校工作。最后,要特别感谢我的妻子黄静嵽以及家人对我的理解和支持。
由于水平和时间的限制,书中难免会存在一些错误,还望见谅,并恳请读者提出宝贵意见和建议。
作者于上海
评论列表(0)