软件自动化测试入门攻略

133 阅读18分钟

京东购买:item.jd.com/14351742.ht…

在这里插入图片描述

自荐

《软件自动化测试入门攻略》一书是作者花费了近两年时间完成的一本大作,专门为入 门、入行人员编写,无论你是初学者,还是想转型、转专业学习软件自动化测试,本书 都适合你。书中充分考虑到新手入门自动化测试的特点,从工具学习入手,包括Unittest、 Pytest、Requests、Selenium、Postman、Appium、JMeter,对于入行者来说,掌握这几 种工具,是从事相关工具的前题,然后以一个真实的项目为例分别介绍了各种工具在单元测试、代码包测试、接口测试、Web UI测试、移动端测试、性能测试中的应用,各测试范例均依照“需求分析→用例设计→脚本开发→测试执行→结果分析”的自动化测试流程,详细介绍方法论、关键知识与核心技能,这样安排的好处是,学以致用,有的放矢,学完之后,即可直接上手公司项目,本书的最后还介绍了测试项目的容器化部署,这也是目前在测试项目中广泛使用的技术。《软件自动化测试入门攻略》结构新颖,内容丰富,与实际工作紧张结合,看得懂,学得会,用得上,是本书的一大特色,相信所有想入手自动测试的读者,本书都能让你受益匪浅。

作者

杨定佳,一线资深软件测试工程师,博客园优秀博主,蓝桥云课入驻作者,51Testing测试圈讲堂 特邀讲师,长期从事自动化测试设计、框架搭建和开发工作,对各类软件测试工具及相 关技术驾轻就熟。出版《Python Web自动化测试入门与实战》一书,编写的《菜鸟轻松 拿Offer:软件测试工程师面试秘笈》一书荣获2021年度“51CTO.最受读者喜爱有IT图书 ”奖。

前言

自动化测试是软件测试重要的组成部分,于项目而言是一种提高软件测试效率和准确性的方法,能提高生产力和效率,于测试人员而言是一种能力的展示,更是一种价值的肯定。本书以软件自动化测试工具在项目实践中的应用为主线,依照“需求分析→用例设计→脚本开发→测试执行→结果分析”的自动化测试流程,详细介绍了软件自动化测试的方法论、必备知识与核心技能。

笔者工作在一线测试岗位7年有余,在测试领域积累了丰富的实践经验,因此,本书所涉及的技术在当今测试领域都在广泛应用,尽可能使用通俗易懂的语言进行描述,确保读者看得懂、学得会、用到上。如果你是测试岗位的新人或想转行进入测试行业,本书可帮助你快速入门、入行;如果你是具有一定基础的测试人员,书中讲述的项目实战,可帮助你实现自我能力的提高和突破,甚至可以帮助你带领团队完成自动化测试项目。

核心内容

本书的每一章节都融进了笔者的经验和思考,并得到许多经验丰富的测试同行的支持和良好建议,全书共15章,说明如下:

第1章作为本书引子,介绍自动化测试的重要概念、常用工具和如何入门自动化测试,点出自动化测试的本质是将以人为驱动的测试行为转化为机器执行的一种过程。

第2章~第8章,依次介绍当前企业使用率最高的unittest、pytest、Requests、Postman、Selenium、Appium和JMeter 7款自动化测试工具,其中unittest和pytest是Python语言的单元测试框架,大部分以Python语言为基础的自动化测试项目都会使用unittest或pytest组织测试用例;Requests和Postman是两个接口测试工具,Requests是Python语言的一个库,使用Python编程语言实现接口测试项目几乎都是借助Requests完成的。Postman是一个独立接口测试工具,测试人员在不需要编写代码的情况下便可轻松完成项目接口测试用例的编写,实现自动化测试;Selenium和Appium均是Python语言实现UI自动化测试的第三方库,Selenium完成的是Web UI自动化测试,Appium完成的是移动端程序的UI自动化测试;JMeter是一款开源的接口测试工具,也可用来完成产品的性能测试。

上述各章都以概念+示例的方式编写,读者在学习时需要先理解其概念,对知识点有一个正确认识,再跟随示例实践,发现基础薄弱的地方,加强测试和调试的能力,做到概念清晰,手到拈来。

掌握自动化测试工具是入门自动化测试的必备技能,有助于提高对自动化测试的认知,同时,从工具开始学习,边学边练,也有成就感,是一个不错的入门路径。

第9章~第14章,分别以开源项目“Leadshop开源商城系统”中的部分模块为例,运用前述章节的测试工具依次实现单元测试、代码包测试、接口测试、Web UI测试、移动端测试和性能测试演练,完成测试工具的单个知识点学习到项目的综合应用。每一章实战均以“需求分析→用例设计→脚本开发→测试执行→结果分析”的自动化测试流程为顺序展开,需求分析阶段会澄清测试对象、测试范围以及最终结果等内容;用例设计阶段会先介绍用例设计方法,再结合被测对象设计出最少的用例覆盖最全的使用场景;脚本开发阶段是结合被测对象和测试类型,设计出结构清晰的自动化测试框架,开发出复用性强的基础代码,并在此基础上实现自动化测试用例;测试执行阶段是编写执行脚本实现自动化测试用例的执行;结果分析阶段有两个目标:一是对测试结果分析,成功和失败用例的总结;二是对自动化测试项目的思考,当下的实现逻辑是否有弊端,对测试结果有何影响。当明确了测试项目的每一个阶段后,你已经可以参与企业项目的测试工作了。

这一部分内容是在Leadshop开源商城系统环境下,将基础知识综合运用的一个过程,不但涉及很多基础知识,而且需要考虑全局的应用搭配。另外,通过项目实践,读者要注意不断总结思考、发现规律,逐步形成一套自己的测试体系,为未来带领测试团队体积累经验。

第15章介绍了容器化部署与自动化测试,容器化部署是一种流行的技术,引入自动化测试中极大地简化了各种测试项目的部署,提高了工作效率。本章以Docker技术为基础部署持续集成工具Jenkins,在Jenkins工具中实现测试项目的任务部署,完成分布式节点挂载和定时执行。

配书资源

本书所有脚本均以Python语言实现,读者可扫描下述二维码免费下载。

在这里插入图片描述

本书各章还提供了思考题,各题的答案请扫描下述二维码下载。

在这里插入图片描述

如果下载有问题,请联系booksaga@126.com,邮件主题为“软件自动化测试入门攻略”。

读者对象

本书适合对自动测试感兴趣的各层次读者,比如,初入职场的测试新人、转型测试岗位的非计算机专业的职场人士和学生等,也适合作为自动化测试培训机构或大中专院校计算机专业测试课程的教学用书,本书提供的真实测试项目实践,也可以帮助有一定测试基础的测试人员作为实施自动化测试项目的指南。

致 谢

本书能够得以成功出版离不开开源项目“Leadshop开源商城系统”和笔者身边亲朋好友的大力支持,在此对他们表示衷心的感谢。

感谢Leadshop开源项目的开发者,使本书的实践篇章有了真实的实战对象。

感谢杨瑞、李先丽、范申、马敬宾、杨亚理、林静芬、张露、冶心怡、抄帅、李亚萍、胡列、陆怡颐、周燕、丁扬健等为本书做了大量审稿工作,你们的真知灼见,使本书更臻完善。

感谢清华大学出版社的各位编辑,尤其是王金柱老师两年来的鼎力支持,让这本书能够高质量地与广大读者见面。

感谢每一位测试人,书中借鉴了他们很多的经验与智慧,他们对软件测试行业的热爱、持续耕耘和深度实践,使笔者受益良多。

因能力所限,书中难免存在疏漏,如果读者存在求职困惑或对本书的改进有更好的建议,请发送邮件联系笔者共同探讨。

最后,希望本书能成为各位读者自动化测试之路上的向导和伴侣。

杨定佳

2023年11月12日

目录

  • 第1章 自动化测试概述 ·················· 1
  • 1.1 什么是软件自动化测试 ················ 1
  • 1.1.1 定义 ······························· 1
  • 1.1.2 应用条件 ························· 1
  • 1.1.3 对比手工测试 ··················· 2
  • 1.1.4 分类 ······························· 3
  • 1.1.5 价值 ······························· 4
  • 1.2 自动化测试的概念 ······················ 6
  • 1.2.1 流程 ······························· 6
  • 1.2.2 原则 ······························· 7
  • 1.2.3 测试模型 ························· 8
  • 1.2.4 度量模型 ························ 10
  • 1.3 自动化测试常用工具 ·················· 12
  • 1.3.1 单元测试工具 ·················· 12
  • 1.3.2 代码包测试工具 ··············· 13
  • 1.3.3 接口测试工具 ·················· 13
  • 1.3.4 Web UI测试工具 ·············· 14
  • 1.3.5 App测试工具 ·················· 15
  • 1.3.6 性能测试工具 ·················· 16
  • 1.4 如何入门自动化测试 ·················· 17
  • 1.4.1 入门是基础 ····················· 17
  • 1.4.2 入行是起点 ····················· 18
  • 1.4.3 入职是挑战 ····················· 18
  • 1.5 思考题 ···································· 18
  • 第2章 unittest ···························· 19
  • 2.1 简介 ······································· 19
  • 2.2 测试用例 ································· 20
  • 2.3 测试脚手架 ······························ 21
  • 2.4 测试套件 ································· 23
  • 2.4.1 TestSuite类构建 ··············· 23
  • 2.4.2 TestLoader类构建 ············ 25
  • 2.4.3 其他方法构建 ·················· 26
  • 2.5 测试运行器 ······························ 27
  • 2.6 命令行接口 ······························ 28
  • 2.7 用例执行顺序 ··························· 30
  • 2.8 测试断言 ································· 31
  • 2.9 skip装饰器 ······························ 33
  • 2.10 模拟对象mock ························ 36
  • 2.11 ddt实现参数化 ························ 38
  • 2.12 多线程运行 ···························· 42
  • 2.13 定时运行 ······························· 44
  • 2.14 生成测试报告 ························· 46
  • 2.15 发送测试结果通知 ··················· 48
  • 2.16 思考题 ·································· 54
  • 第3章 pytest····························· 55
  • 3.1 简介 ······································· 55
  • 3.2 第一个示例 ······························ 55
  • 3.3 测试用例 ································· 57
  • 3.4 命令行参数 ······························ 59
  • 3.5 跳过 ······································· 61
  • 3.6 标记 ······································· 62
  • 3.6.1 内置标记 ························ 63
  • 3.6.2 自定义标记 ····················· 64
  • 3.7 夹具 ······································· 66
  • 3.7.1 fixture参数 ····················· 66
  • 3.7.2 夹具的使用 ····················· 67
  • 3.7.3 夹具作用域 ····················· 68
  • 3.7.4 共享夹具 ························ 70
  • 3.8 参数化 ···································· 72
  • 3.8.1 标记方式实现 ·················· 72
  • 3.8.2 夹具方式实现 ·················· 73
  • 3.9 配置文件 ································· 74
  • 3.10 插件 ······································ 76
  • 3.11 分布式执行 ····························· 77
  • 3.12 Allure测试报告 ······················· 79
  • 3.12.1 Allure安装 ···················· 79
  • 3.12.2 生成测试报告 ················· 80
  • 3.12.3 Allure特性与应用示例 ····· 82
  • 3.13 思考题 ··································· 87
  • 第4章 Requests ························· 88
  • 4.1 简介 ······································· 88
  • 4.2 主要方法 ································· 89
  • 4.2.1 请求示例 ························ 89
  • 4.2.2 查询参数 ························ 90
  • 4.2.3 响应对象 ························ 91
  • 4.3 发送GET请求 ·························· 92
  • 4.3.1 params参数 ···················· 92
  • 4.3.2 自定义请求头 ·················· 93
  • 4.4 发送POST请求 ························ 94
  • 4.4.1 data参数 ························ 95
  • 4.4.2 json参数 ························ 96
  • 4.5 发送其他类型的请求 ·················· 97
  • 4.5.1 发送HEAD请求 ·············· 98
  • 4.5.2 发送PUT请求 ················· 98
  • 4.5.3 发送PATCH请求 ············ 98
  • 4.5.4 发送DELETE请求 ··········· 99
  • 4.6 文件上传 ································· 99
  • 4.7 文件下载 ································ 100
  • 4.8 Cookies参数 ··························· 101
  • 4.9 Session对象 ···························· 103
  • 4.10 重定向 ································· 104
  • 4.11 添加代理 ······························ 105
  • 4.12 超时设置 ······························ 106
  • 4.13 异常处理 ······························ 106
  • 4.14 证书验证 ······························ 107
  • 4.15 身份认证 ······························ 107
  • 4.16 生成测试用例脚本 ·················· 108
  • 4.17 思考题 ································· 110
  • 第5章 Postman························· 111
  • 5.1 安装 ······································ 111
  • 5.2 界面介绍 ································ 113
  • 5.3 HTTP请求 ······························ 115
  • 5.3.1 请求界面介绍 ················· 116
  • 5.3.2 GET请求 ······················ 117
  • 5.3.3 POST请求 ···················· 118
  • 5.3.4 其他类型请求 ················ 121
  • 5.3.5 文件上传 ······················ 122
  • 5.3.6 文件下载 ······················ 123
  • 5.3.7 授权 ···························· 124
  • 5.3.8 前置脚本 ······················ 126
  • 5.3.9 后置脚本 ······················ 128
  • 5.3.10 请求设置 ····················· 131
  • 5.3.11 其他 ··························· 132
  • 5.4 环境和变量 ···························· 132
  • 5.5 Cookies管理 ··························· 135
  • 5.6 代理设置 ······························· 136
  • 5.7 证书管理 ······························· 138
  • 5.8 集合管理 ······························· 140
  • 5.8.1 执行集合 ······················ 141
  • 5.8.2 参数化 ························· 142
  • 5.8.3 分支和循环 ··················· 144
  • 5.9 模拟服务器 ···························· 145
  • 5.10 监视器 ································· 148
  • 5.11 命令行执行集合 ····················· 152
  • 5.12 思考题 ································· 157
  • 第6章 Selenium ······················· 158
  • 6.1 简介 ····································· 158
  • 6.1.1 版本演进 ······················ 158
  • 6.1.2 特点 ···························· 159
  • 6.1.3 WebDriver的工作原理 ····· 159
  • 6.2 环境准备 ······························· 160
  • 6.2.1 安装Selenium ················· 160
  • 6.2.2 安装浏览器驱动 ·············· 161
  • 6.2.3 第一个示例 ···················· 162
  • 6.3 浏览器操作 ····························· 163
  • 6.4 页面元素定位 ·························· 169
  • 6.4.1 页面查找元素 ················· 170
  • 6.4.2 id定位 ·························· 171
  • 6.4.3 name定位 ····················· 171
  • 6.4.4 class定位 ······················ 172
  • 6.4.5 tag定位 ························ 172
  • 6.4.6 link定位 ······················· 173
  • 6.4.7 partial link定位 ··············· 173
  • 6.4.8 css定位 ························ 173
  • 6.4.9 xpath定位 ····················· 174
  • 6.4.10 相对定位 ····················· 178
  • 6.4.11 定位一组元素 ··············· 179
  • 6.5 获取页面内容 ·························· 180
  • 6.6 获取元素属性 ·························· 181
  • 6.7 页面元素操作 ·························· 183
  • 6.7.1 单击 ····························· 183
  • 6.7.2 输入文本 ······················· 184
  • 6.7.3 清除文本 ······················· 184
  • 6.7.4 提交表单 ······················· 185
  • 6.7.5 单选框操作 ···················· 186
  • 6.7.6 复选框操作 ···················· 187
  • 6.7.7 下拉框操作 ···················· 187
  • 6.7.8 Frame结构操作 ·············· 189
  • 6.8 文件操作 ································ 191
  • 6.8.1 文件上传 ······················· 191
  • 6.8.2. 文件下载 ······················· 192
  • 6.9 模拟鼠标操作 ························· 194
  • 6.10 模拟键盘操作 ························ 197
  • 6.11 延时等待 ······························ 198
  • 6.12 浏览器配置 ··························· 201
  • 6.13 其他操作 ······························ 203
  • 6.13.1 调用JavaScript ············· 203
  • 6.13.2 Cookie操作 ················· 204
  • 6.13.3 屏幕截图 ····················· 205
  • 6.13.4 获取环境信息 ··············· 205
  • 6.13.5 执行CDP命令 ············· 206
  • 6.13.6 设置超时时间 ··············· 207
  • 6.14 Webdriver Manager ·················· 207
  • 6.15 Selenium Grid ························ 208
  • 6.16 生成测试用例脚本 ·················· 212
  • 6.17 思考题 ································· 218
  • 第7章 Appium ························· 219
  • 7.1 简介 ····································· 219
  • 7.2 Android模拟器 ························ 220
  • 7.3 ADB工具 ······························ 221
  • 7.3.1 ADB的工作原理 ············ 221
  • 7.3.2 ADB工具安装 ··············· 222
  • 7.3.3 ADB常用命令 ··············· 224
  • 7.3.4 自动化测试中常用的ADB 命令 ···························· 225
  • 7.4 Appium环境准备 ····················· 228
  • 7.4.1 安装Appium Desktop ······· 228
  • 7.4.2 安装Appium Inspector ······ 229
  • 7.4.3 Appium简单使用 ············ 230
  • 7.4.4 Inspector功能 ················· 233
  • 7.4.5 脚本录制 ······················· 233
  • 7.4.6 查看元素属性 ················· 236
  • 7.5 Appium Server ·························· 236
  • 7.6 Appium Client ·························· 238
  • 7.7 UI Automator Viewer ················· 240
  • 7.8 元素定位 ································ 241
  • 7.9 元素操作 ································ 243
  • 7.10 获取元素属性 ························ 244
  • 7.11 触控事件 ······························ 246
  • 7.11.1 TouchAction ················· 246
  • 7.11.2 输入源行为 ·················· 248
  • 7.11.3 单点触控 ····················· 249
  • 7.11.4 多点触控 ····················· 250
  • 7.11.5 其他触控操作 ··············· 252
  • 7.12 设备交互 ······························ 254
  • 7.13 Android Toast识别 ·················· 258
  • 7.14 其他操作 ······························ 259
  • 7.15 不同应用的测试 ····················· 262
  • 7.15.1 App应用程序的分类 ······ 262
  • 7.15.2 案例一: 原生应用的测试 ············· 263
  • 7.15.3 案例二: Web应用测试 ················ 271
  • 7.15.4 案例三: 混合应用测试 ················ 275
  • 7.15.5 案例四: 微信小程序测试 ············· 277
  • 7.16 稳定性测试 ··························· 279
  • 7.16.1 Monkey简介 ················ 279
  • 7.16.2 Monkey常用参数 ·········· 280
  • 7.16.3 Monkey日志分析 ·········· 282
  • 7.17 思考题 ································· 285
  • 第8章 JMeter ·························· 286
  • 8.1 简介 ····································· 286
  • 8.2 安装 ····································· 287
  • 8.3 配置文件 ······························· 288
  • 8.4 界面介绍 ······························· 291
  • 8.5 脚本录制 ······························· 293
  • 8.6 基本组件 ······························· 297
  • 8.7 测试计划 ······························· 298
  • 8.8 线程组 ·································· 301
  • 8.8.1 普通线程组 ··················· 302
  • 8.8.2 开放模型线程组 ············· 304
  • 8.9 取样器 ·································· 305
  • 8.9.1 HTTP请求 ···················· 306
  • 8.9.2 调试取样器 ··················· 311
  • 8.9.3 BeanShell 取样器 ··········· 312
  • 8.9.4 FTP请求 ······················ 314
  • 8.9.5 JDBC请求 ···················· 316
  • 8.9.6 SMTP取样器 ················· 316
  • 8.10 配置元件 ······························ 320
  • 8.10.1 CSV数据文件设置 ········ 321
  • 8.10.2 HTTP信息头管理器 ······ 323
  • 8.10.3 HTTP Cookie管理器 ······ 324
  • 8.10.4 HTTP请求默认值 ········· 326
  • 8.10.5 JDBC连接配置器 ·········· 327
  • 8.10.6 随机变量 ····················· 330
  • 8.11 前置处理器 ··························· 332
  • 8.11.1 用户参数 ····················· 333
  • 8.11.2 取样器超时 ·················· 334
  • 8.12 后置处理器 ··························· 334
  • 8.12.1 CSS/Query提取器 ·········· 335
  • 8.12.2 JSON提取器 ················ 337
  • 8.12.3 正则表达式提取器 ········· 338
  • 8.12.4 XPath提取器 ················ 339
  • 8.13 断言 ···································· 341
  • 8.13.1 响应断言 ····················· 342
  • 8.13.2 JSON断言 ··················· 343
  • 8.13.3 XPath断言 ··················· 345
  • 8.14 定时器 ································· 346
  • 8.14.1 固定定时器 ·················· 347
  • 8.14.2 统一随机定时器 ············ 347
  • 8.14.3 同步定时器 ·················· 347
  • 8.14.4 高斯随机定时器 ············ 348
  • 8.15 监听器 ································· 348
  • 8.15.1 查看结果树 ·················· 349
  • 8.15.2 聚合报告 ····················· 350
  • 8.15.3 响应时间图 ·················· 351
  • 8.15.4 断言结果 ····················· 351
  • 8.16 逻辑控制器 ··························· 352
  • 8.16.1 IF控制器 ····················· 353
  • 8.16.2 循环控制器 ·················· 354
  • 8.16.3 ForEach控制器 ············· 355
  • 8.16.4 仅一次控制器 ··············· 356
  • 8.17 作用域和执行顺序 ·················· 357
  • 8.18 插件 ···································· 357
  • 8.19 函数 ···································· 360
  • 8.20 分布式部署 ··························· 362
  • 8.21 可视化监控平台的搭建与使用 ··· 364
  • 8.21.1 安装和部署InfluxDB 1.7 ·· 365
  • 8.21.2 安装和部署Grafana ······· 365
  • 8.21.3 Grafana中添加 JMeter模板 ·················· 366
  • 8.21.4 创建和运行JMeter脚本 ··· 367
  • 8.22 思考题 ································· 368
  • 第9章 实现单元测试 ················· 370
  • 9.1 被测产品介绍 ························· 370
  • 9.1.1 项目介绍 ······················ 370
  • 9.1.2 产品搭建 ······················ 371
  • 9.2 单元测试简介 ························· 374
  • 9.2.1 概念 ···························· 374
  • 9.2.2 分类 ···························· 375
  • 9.2.3 对测试人员的要求 ·········· 375
  • 9.3 用例设计方法 ························· 376
  • 9.3.1 路径覆盖 ······················ 377
  • 9.3.2 语句覆盖 ······················ 377
  • 9.3.3 条件覆盖 ······················ 378
  • 9.3.4 判定覆盖 ······················ 379
  • 9.3.5 判定和条件覆盖 ············· 380
  • 9.3.6 条件组合覆盖 ················ 381
  • 9.4 实战对象 ······························· 381
  • 9.5 设计测试用例 ························· 383
  • 9.6 编写测试脚本 ·························· 384
  • 9.7 统计代码覆盖率 ······················· 385
  • 9.8 思考题 ··································· 387
  • 第10章 实现代码包测试 ·············· 389
  • 10.1 什么是代码包 ························ 389
  • 10.2 用例设计方法 ························ 389
  • 10.3 实践对象 ······························ 390
  • 10.4 设计测试用例 ························ 392
  • 10.5 编写测试脚本 ························ 393
  • 10.6 测试运行 ······························ 397
  • 10.7 思考题 ································· 398
  • 第11章 实现接口测试 ················· 399
  • 11.1 接口测试简介 ························ 399
  • 11.1.1 概念 ··························· 399
  • 11.1.2 常见接口协议 ··············· 400
  • 11.2 用例设计方法 ························ 401
  • 11.3 实战对象 ······························ 403
  • 11.4 构建项目结构 ························ 404
  • 11.5 设计测试用例 ························ 406
  • 11.6 编写项目脚本 ························ 407
  • 11.6.1 设计测试用例文件 ········· 407
  • 11.6.2 添加基础配置数据 ········· 413
  • 11.6.3 读取配置文件内容 ········· 414
  • 11.6.4 获取测试用例数据 ········· 415
  • 11.6.5 封装接口请求函数 ········· 418
  • 11.6.6 设置共享夹具 ··············· 419
  • 11.6.7 封装断言函数 ··············· 419
  • 11.6.8 添加测试用例函数 ········· 422
  • 11.7 执行测试项目 ························ 425
  • 11.8 思考题 ································· 427
  • 第12章 实现Web UI测试 ·········· 428
  • 12.1 Web UI测试简介 ···················· 428
  • 12.2 用例设计方法 ························ 429
  • 12.3 Page Object模型 ····················· 430
  • 12.4 实战对象 ······························ 432
  • 12.5 设计测试用例 ························ 433
  • 12.6 项目结构搭建 ························ 434
  • 12.7 编写测试脚本 ························ 436
  • 12.7.1 封装元素定位 ··············· 436
  • 12.7.2 添加测试数据 ··············· 438
  • 12.7.3 页面功能函数封装 ········· 439
  • 12.7.4 实现测试用例 ··············· 446
  • 12.8 执行测试项目 ························ 452
  • 12.9 思考题 ································· 453
  • 第13章 实现移动端测试 ············· 454
  • 13.1 App测试简介 ························ 454
  • 13.2 项目实战对象 ························ 455
  • 13.3 项目结构搭建 ························ 456
  • 13.4 编写测试脚本 ························ 457
  • 13.4.1 封装元素定位 ··············· 457
  • 13.4.2 添加测试数据 ··············· 458
  • 13.4.3 页面功能函数封装 ········· 459
  • 13.4.4 实现测试用例 ··············· 465
  • 13.5 执行测试项目 ························ 466
  • 13.6 思考题 ································· 467
  • 第14章 实现性能测试 ················· 468
  • 14.1 性能测试简介 ························ 468
  • 14.1.1 测试流程 ····················· 469
  • 14.1.2 常见性能指标 ··············· 469
  • 14.1.3 流量回放技术 ··············· 470
  • 14.2 性能需求分析 ························ 471
  • 14.3 制订测试计划 ························ 472
  • 14.4 确定测试方案 ························ 475
  • 14.5 搭建测试环境 ························ 478
  • 14.6 准备测试数据 ························ 479
  • 14.7 开发压测脚本 ························ 479
  • 14.7.1 添加请求 ····················· 479
  • 14.7.2 运行调试 ····················· 485
  • 14.7.3 设置断言 ····················· 487
  • 14.7.4 增加压力 ····················· 490
  • 14.8 测试执行及监控 ····················· 492
  • 14.9 结果分析 ······························ 493
  • 14.10 性能调优 ····························· 497
  • 14.11 编写测试报告 ······················· 498
  • 14.12 思考题 ································ 498
  • 第15章 容器化部署与自动化测试 ··· 499
  • 15.1 什么是容器化部署 ·················· 499
  • 15.2 Docker安装 ··························· 500
  • 15.3 Docker核心概念 ····················· 502
  • 15.4 Docker使用 ··························· 503
  • 15.4.1 仓库操作 ····················· 503
  • 15.4.2 镜像操作 ····················· 504
  • 15.4.3 容器操作 ····················· 506
  • 15.5 Dockerfile ····························· 510
  • 15.6 Docker部署Jenkins ················· 513
  • 15.6.1 Jenkins安装 ················· 513
  • 15.6.2 Jenkins在自动化测试中的 应用 ···························· 515
  • 15.7 持续集成与自动化测试 ············ 522
  • 15.7.1 什么是持续集成 ············ 523
  • 15.7.2 持续集成常用工具 ········· 523
  • 15.7.3 部署测试项目 ··············· 524
  • 15.8 思考题 ································· 524
  • 参考文献 ····································· 525

图解

宣传内容.jpg