前言
一名合格的自动化测试工程师,究竟需要具备什么样的技能?
从各种自动化测试招聘的岗位要求就能看出端倪。Java、Python、PHP,诸多编程语言至少需要熟练掌握其中一种。TestNG、Selenium、Appium、pytest、HttpRunner,常见的自动化测试框架需要熟练运用。掌握API、Web、App环境的自动化测试部署与整合……你会发现自己很难完全满足岗位需求。在笔者看来,一名合格的UI自动化测试工程师真正需要具备的是对新测试技术的求知精神和空杯心态。
上大学时听到多的几个新鲜词汇: 互联、信息化、数字化,在今天看来也已很平常。互联网时代,一切技术的发展和更新速度都可以用飞速来形容。至今笔者在这个行业工作也有16年了,几乎见证了国内互联网发展的整个过程,并且参与其中,成为互联网技术从业者这个沧海中的一粟。笔者现在主要带团队做CNAS三方评测,几年前开始有想法,将自己工作中沉淀下来的技术分享出来。于是开始授课,写技术类博客,录制视频课程。本书是笔者的本技术类作品,不足之处请多包涵。如果你在学习UI自动化测试技术时,从这本书中得到了一些帮助,那是笔者的荣幸。
本书目标读者
本书未涉及Python基础的讲解,因此在学习本书前需要有一些Python基础知识。书中内容适合大多数有意学习或提升自动化测试技能的读者。目标读者可以概括为下面几类。
(1) 对软件自动化测试技术感兴趣的初学者,跟着书中的讲解顺序学习即可。
(2) 自动化测试工程师,通过本书系统化自己所掌握的自动化测试技术。
(3) 大中专院校测试专业或测试培训班的学生,提升自己的岗位竞争力。
(4) 所有有意愿提升自己测试技术的从业者或准从业者,学习永远不晚。
本书特色
本书是一本适合自学的UI自动化测试技术参考书,涵盖Web端、App端、Window程序等主流测试软件类型。本书以实例代码驱动测试知识点,系统讲述基于Selenium Python unittest架构的Web程序实例测试框架,以及基于Appium Python pytest架构的App程序实例测试框架。
本书主要内容
Web篇(第1~9章)
本篇主要介绍自动化测试行业现状,基础环境的搭建与配置,Selenium版本的下载、安装及浏览器驱动的安装调试; 页面元素定位方法的实现技巧及WebDriver API初级应用案例的分类讲解; 基于Window自动化程序AutoIt的应用,与Selenium的配合使用方法; WebDriver API高级应用案例及unittest框架与Selenium的整合应用。
App篇(第10~15章)
本篇主要讲解App自动化测试现状及常用测试工具,移动端测试环境的搭建与配置; App元素定位技巧及基于App的WebDriver API应用实战; pytest测试框架的应用,以及与Appium的整合应用。
框架篇(第16~20章)
本篇系统讲解数据驱动在测试框架中的应用; 基于PO模式的自动化框架实现及框架实战案例; 持续集成与分布式环境的部署与运行。
致谢
首先要感谢本书编辑赵佳霓老师,你的宽容和责任心让这本书得以顺利出版,其次要感谢笔者的同事韩栋为本书提供参考资料并承担了后期书稿校对工作,后要感谢笔者的妻子,为家庭的付出和包容笔者在写作期间无数次的加班及晚归。感谢一路走来所有关心和帮助过笔者的人。
胡胜强
2021年5月
本书源代码下载
商品简介
本书以UI自动化测试技术为主线,测试方向主要涉及Web、App、Windows应用程序的UI自动化测试实现,实用自动化测试框架的实现过程,持续集成及分布式测试的实现等实用技术知识体系。 全书共分为三部分,Web篇(第1~9章)围绕页面自动化测试中常用定位技术的讲解,结合unittest框架构建实用自动化测试框架的实现,以实例驱动方式引导读者快速上手Selenium Python unittest自动化测试。App篇(第10~15章)讲解移动端常见UI层自动化操作常用技术,以当前较为流行的pytest框架为基础,实现Appium Python pytest自动化测试的实现。框架篇(第16~20章)涵盖自动化测试实施过程中主流的数据驱动、PO模式、CI实施、分布式环境等内核技术。本书内容充实、逻辑严密,是一部自动化测试的案头工具书。 本书适合对从事软件测试工作的人,对软件自动化测试技术感兴趣的初学者,也适合自动化测试从业者对专项技术参考。对于大中专院较和培训班的学生,本书更是学习时的一本教材。
作者简介
"胡胜强 华软盛测评创始人兼CTO,“思课帮”IT教育品牌创始人。15年互联网从业经验。从开发入道,转战测试。薪火相传,希望自己的技术能够帮助更多后来者。
单镜石 软达启航联合创始人兼CTO,曾任职方正科技、新大陆等多家IT企业,资深测试达人,热衷分享近期新测试方法和成果。
李睿 软达启航联合创始人兼CEO,北京航空航天大学软件工程硕士毕业;从事软件测试工作13年,兼修各种测试技术,软件测试经验丰富。"
目录
章Web自动化测试介绍
1.1UI自动化测试现状
1.1.1手工测试的升级
1.1.2被测软件的多样性
1.1.3用户体验式测试
1.2UI自动化测试的优势
1.2.1UI自动化测试的误区
1.2.2适合做自动化测试的项目
1.2.3适合开展自动化测试的团队
1.3主流UI自动化测试工具
1.3.1Selenium
1.3.2UFT/QTP
1.3.3Airtest
1.4UI自动化测试的终极目标
1.4.1以项目为核心打造测试框架
1.4.2以通用功能为核心打造平台
第2章环境搭建及配置
2.1Python的安装及配置
2.1.1Python优势
2.1.2Python的安装
2.1.3Python的配置
2.2PyCharm的安装及配置
2.3个PyCharm项目
2.3.1PyCharm项目创建
2.3.2Python脚本创建
2.3.3运行脚本
2.4PyCharm 的常用配置
2.4.1设置Python自动引入包
2.4.2设置“代码自动完成”时间延迟
2.4.3设置编辑器“颜色与字体”主题
2.4.4设置缩进符为制表符Tab
2.4.5设置Python文件默认编码
2.4.6设置代码断点调试
第3章Selenium及浏览器驱动的安装配置
3.1Selenium的下载及安装
3.1.1Selenium在线安装
3.1.2Selenium离线安装
3.2基于FireFox浏览器的驱动配置
3.2.1GeckoDriver驱动配置的下载与配置
3.2.2调用FireFox驱动测试
3.3基于Chrome浏览器的驱动配置
3.3.1ChromeDriver驱动配置的下载与配置
3.3.2调用Chrome驱动测试
3.4基于IE浏览器的驱动配置
3.4.1IEDriverServer驱动配置的下载与配置
3.4.2调用IE驱动测试
3.5个Web自动化测试脚本
第4章页面元素定位的8种方法
4.1元素定位的重要性
4.2Selenium元素定位方法分类
4.2.1新版本定位方法
4.2.2老版本定位方法
4.36种基本元素定位方法的实现
4.3.1ID定位
4.3.2NAME定位
4.3.3CLASS定位
4.3.4TagName定位
4.3.5LinkText定位
4.3.6PartialLinkText定位
4.4XPath元素定位方法的实现
4.4.1路径
4.4.2相对路径
4.4.3模糊定位
4.4.4XPath表达式
4.5CSS元素定位方法的实现
4.5.1路径
4.5.2相对路径
4.5.3模糊定位
4.5.4辅助定位表达式
4.6元素定位方法的选择
4.6.1多元素定位方法的使用
4.6.2元素定位方法的适用场景
第5章WebDriver API初级应用案例
5.1获取页面属性操作
5.1.1获取页面Title属性值
5.1.2获取页面源码
5.1.3获取页面元素文本信息
5.1.4获取并设置当前窗口大小
5.2输入操作
5.2.1输入文本操作
5.2.2单选、复选框操作
5.2.3下拉列表操作
5.2.4复位操作
5.3鼠标操作
5.3.1单击操作
5.3.2双击操作
5.3.3右击操作
5.3.4鼠标拖曳操作
5.4键盘操作
5.4.1输入操作
5.4.2组合热键操作
5.4.3右击菜单进行选择操作
5.5执行JavaScript脚本操作
5.5.1JavaScript弹窗操作
5.5.2JavaScript输入操作
5.5.3JavaScript滑屏操作
5.5.4JavaScript辅助操作
第6章基于Window自动化程序AutoIt应用
6.1AutoIt介绍
6.2AutoIt安装与调试
6.2.1AutoIt下载与安装
6.2.2AutoIt脚本编辑器
6.2.3Au3Info窗口信息工具
6.2.4脚本的编译运行
6.3个AutoIt自动化脚本的实现
6.3.1脚本编写
6.3.2生成可执行文件
6.3.3运行实例
6.4AutoIt脚本基础语法
6.4.1变量类型、关键字、运算符
6.4.2条件与循环语句
6.4.3用户函数与内置函数
6.4.4宏指令
6.5AutoIt应用案例
6.5.1Notepad案例
6.5.2Inputbox案例
第7章WebDriver API不错应用案例
7.1Handles(句柄)跳转案例
7.1.1浏览器句柄切换实例
7.1.2百度首页登录实例
7.2浮动框定位操作案例
7.2.1搜索页面下拉列表框实例
7.2.2地区定位下拉列表框实例
7.3Window弹窗操作案例
7.3.1文件上传
7.3.2文件下载
7.4基于iframe框架的操作案例
7.4.1动态属性定位
7.4.2邮箱登录实例
7.5断言相关操作案例
7.5.1断言失败截屏
7.5.2图像对比断言
第8章unittest框架的应用
8.1unittest介绍
8.1.1unittest框架的构成
8.1.2个unittest示例
8.2TestCase与TestFixture的应用
8.2.1用例的执行顺序
8.2.2TestFixture的使用
8.3TestSuite的应用
8.3.1测试套件的创建
8.3.2discover执行更多用例
8.3.3批量执行用例
8.4TestRunner的应用
8.4.1断言的使用
8.4.2装饰器的使用
8.4.3生成测试报告
第9章Selenium与unittest框架的整合应用
9.1框架整体思路
9.2case模块用例
9.3data模块数据
9.4report模块
9.5utils功能模块
9.5.1数据读取功能
9.5.2初始化目录
9.5.3日志记录功能
9.6bin运行模块
App篇
0章App自动化测试介绍
10.1App自动化测试现状
10.1.1测试工具的选取
10.1.2移动端软件的多样性
10.2Appium自动化测试工具
10.2.1Appium介绍
10.2.2Appium工作原理
10.3模拟器及手机投屏工具
10.3.1基于Android模拟器
10.3.2真机投屏工具
1章移动端环境搭建及配置
11.1Appium的安装与配置
11.1.1Node.js的安装
11.1.2Appium的安装
11.2Android环境的安装
11.2.1Java的安装与配置
11.2.2Android ADT&SDK的配置
11.2.3SDK Manager下载配置
11.2.4Android模拟器的安装
11.2.5夜神模拟器
11.3个可运行App自动化脚本
11.3.1创建Android模拟器
11.3.2启动Appium
11.3.3自动化脚本编写
11.3.4运行自动化脚本
11.4adb命令基础
11.4.1查看设备命令
11.4.2安装卸载命令
11.4.3文件推送命令
2章App元素定位实战
12.1uiautomatorviewer
12.1.1uiautomatorviewer介绍
12.1.2uiautomatorviewer定位
12.2Appium Inspector
12.2.1设置Appium
12.2.2开启Inspector
12.2.3元素定位
12.2.4录制操作脚本
12.34种属性定位方法
12.3.1ID定位
12.3.2NAME定位
12.3.3CLASS定位
12.3.4accessibility_id定位
12.4XPath 定位方法
12.4.1基本元素定位
12.4.2元素模糊定位
12.4.3层级定位
3章基于App的WebDriver API应用实战
13.1属性获取操作
13.1.1控件文本获取实例
13.1.2获取控件可用性操作
13.1.3获取控件是否选中操作
13.1.4获取控件是否显示操作
13.2手势响应操作
13.2.1滑动操作
13.2.2单击操作
13.2.3缩放操作
13.2.4滚动操作
13.2.5拖曳操作
13.3系统相关操作
13.3.1获取屏幕大小
13.3.2推送文件
13.3.3截屏操作
13.3.4App安装及检测
13.4上下文切换操作
13.4.1切换上下文操作
13.4.2切回操作
4章pytest框架的应用
14.1框架介绍及安装
14.1.1pytest框架构成
14.1.2pytest的安装
14.2使用流程
14.2.1pytest运行规则
14.2.2pytest测试用例
14.3Fixture的使用
14.3.1Fixture的优势
14.3.2用例运行级别和优先级
14.3.3conftest.py的配置
14.4参数化
14.4.1参数化的实现
14.4.2参数组合的实现
14.5装饰器与断言
14.5.1装饰器的使用
14.5.2断言的使用
5章Appium与pytest框架的整合应用
15.1框架整体思路
15.2Report模块的整合
15.2.1Allure的安装与配置
15.2.2运行日志输出
15.2.3运行结果输出
15.3配置与数据模块整合
15.3.1框架配置参数
15.3.2json数据的读取
15.4case模块的整合
15.5框架的运行维护
框架篇
6章数据驱动测试应用
16.1基础数据管理模块的实现
16.1.1从文件中读取测试数据
16.1.2将测试结果写入数据文件
16.2基于ddt数据驱动的实现
16.2.1ddt的介绍及安装
16.2.2ddt读取测试数据
16.2.3ddt对不同数据源的管理
16.3基于Excel表方式数据管理模块的实现
16.3.1Excel管理模块的介绍及安装
16.3.2Excel表数据的读取
16.3.3Excel表数据的写入
16.3.4模块化基于Excel数据表的操作
16.4数据库方式数据管理模块的实现
16.4.1数据库驱动的安装调试
16.4.2基础数据表及数据的初始化
16.4.3测试数据的读取和写入
16.4.4模块化数据库操作
7章基于PO模式的自动化框架实现
17.1什么是PO模式
17.2PO模式在UI自动化中的优势
17.2.1三层模式
17.2.2模式示例
17.3定位元素层的实现
17.3.1实现思路
17.3.2实现过程
17.4操作层的实现
17.4.1实现思路
17.4.2实现过程
17.5业务层的实现
17.5.1实现思路
17.5.2实现过程
8章PO模式的自动化框架实战
18.1框架整体设计思路
18.2utils模块的开发
18.2.1配置数据的存放与读取
18.2.2日志、截图及测试结果的输出
18.2.3驱动及全局变量的设置
18.3page模块的开发
18.3.1通用方法的实现
18.3.2基础页面操作的实现
18.4action模块的开发
18.5business模块的开发
18.5.1业务流用例的执行和输出
18.5.2运行方法的实现
18.6框架整体优化
18.6.1加入数据驱动
18.6.2优化运行方法
18.6.3其他优化项
9章基于Jenkins持续集成的实现
19.1什么是持续集成
19.2Jenkins的安装配置
19.2.1软件的下载
19.2.2JDK的安装和配置
19.2.3Tomcat的安装和配置
19.2.4Jenkins的安装和配置
19.3构建定时任务
19.3.1构建Project的基本流程
19.3.2构建基于Selenium脚本的项目
第20章Selenium Grid部署分布式环境
20.1什么是Selenium Grid
20.2多线程分布式环境构建过程
20.2.1运行环境的准备
20.2.2Selenium Grid配置
20.2.3运行调试
20.3多浏览器兼容性运行测试
20.3.1单浏览器运行调试
20.3.2多浏览器运行调试
20.4分布式自动化测试实例
内容摘要
本书以UI自动化测试技术为主线,测试方向主要涉及Web、App、Windows应用程序的UI自动化测试实现,实用自动化测试框架的实现过程,持续集成及分布式测试的实现等实用技术知识体系。
全书共分为三部分,Web篇(~9章)围绕页面自动化测试中常用定位技术的讲解,结合unittest框架构建实用自动化测试框架的实现,以实例驱动方式引导读者快速上手Selenium+Python+unittest自动化测试。App篇(0~15章)讲解移动端常见UI层自动化操作常用技术,以当前较为流行的pytest框架为基础,实现Appium+Python+pytest自动化测试的实现。框架篇(6~20章)涵盖自动化测试实施过程中主流的数据驱动、PO模式、CI实施、分布式环境等内核技术。本书内容充实、逻辑严密,是一部自动化测试推荐的案头工具书。
本书适合对从事软件测试工作的人,对软件自动化测试技术感兴趣的初学者,也适合自动化测试从业者对专项技术参考。对于大中专院较和培训班的学生,本书更是学习时推荐的一本教材。
主编推荐
本书涵盖Web端、App端和Window程序等主流测试软件类型,以实例代码驱动测试知识点,系统讲述基于Python+Selenium+unittest架构的Web程序实例测试框架,以及基于Python+Appium+pytest架构的App程序实例测试框架。
以下为对购买帮助不大的评价