第1部分 入门篇
第1章 大话测试行业 2
1.1 测试行业现状分析 2
1.2 未来发展趋势 4
1.3 测试工程师的核心竞争力 8
1.4 测试知识体系 12
1.5 测试发展能力图谱及推荐书单 23
1.6 本章总结 25
第2章 认识自动化测试 26
2.1 为什么自动化测试是必要的 26
2.2 手工测试与自动化测试的区别 28
2.3 自动化测试常见误区 29
2.4 自动化测试的优劣分析 31
2.5 提倡分层自动化测试 32
2.6 什么项目适合做自动化测试 33
2.6.1 什么样的项目或团队适合做自动化测试 34
2.6.2 不适合做自动化测试的项目有什么特点 35
2.7 做好自动化测试需要具备哪些能力 36
2.8 自动化测试引入时机和适用场景 37
2.9 常用主流工具有哪些 38
2.10 自动化测试面临的挑战 41
2.11 本章总结 41
第2部分 基础学习篇
第3章 Robot Framework框架准备 44
3.1 Robot Framework框架介绍 44
3.1.1 优势和亮点 44
3.1.2 不足 45
3.1.3 Robot Framework生态系统 45
3.2 Windows平台环境搭建 47
3.2.1 Python的安装与配置 47
3.2.2 pip的安装与升级 49
3.2.3 Robot Framework框架的安装 50
3.2.4 wxPython框架的安装 50
3.2.5 Robot Framework RIDE的安装 51
3.3 Mac平台环境搭建 52
3.3.1 Python的安装与配置 52
3.3.2 pip的安装 53
3.3.3 Robot Framework框架的安装 54
3.3.4 Mac OS X无法启动RIDE的解决方案 54
3.4 Linux平台环境搭建 57
3.4.1 Python的安装与配置 57
3.4.2 pip的安装与配置 58
3.4.3 Robot Framework框架的安装 58
3.4.4 wxPython框架的安装 59
3.5 Robot Framework RIDE支持Python 3 59
3.5.1 Robot Framework RIDE 1.7.3的新特性 59
3.5.2 Robot Framework RIDE 1.7.3的安装与升级 60
3.6 本章总结 60
第4章 Python测试编程 62
4.1 语法规范 62
4.1.1 代码编排 63
4.1.2 文档编排 63
4.1.3 空格的使用 64
4.1.4 注释及文档描述 64
4.1.5 命名规范 65
4.1.6 编码建议 66
4.2 Python 2和Python 3如何选择 67
4.2.1 为什么Python 2和Python 3都要学 67
4.2.2 Python 2和Python 3的主要特性区别 68
4.2.3 Python 2和Python 3同时兼容的技巧 73
4.3 快速入门 75
4.3.1 Python变量和赋值 75
4.3.2 Python字符串 77
4.3.3 Python列表和元组 78
4.3.4 Python字典 79
4.3.5 Python if分支条件 80
4.3.6 Python while循环 81
4.3.7 Python for循环 81
4.3.8 Python range内建函数 82
4.3.9 Python列表解析 83
4.3.10 Python open函数 85
4.3.11 Python错误和异常 88
4.3.12 Python函数 93
4.3.13 Python类 102
4.3.14 Python模块与包 110
4.3.15 Python常用内置函数 115
4.4 Python编程常用技巧 116
4.4.1 Python拼接字符串的7种方式 116
4.4.2 Python列表推导、字典推导、集合推导 118
4.4.3 Python三元操作符用来进行条件赋值 119
4.4.4 Python同时迭代两个列表 120
4.4.5 Python带索引的列表迭代 120
4.4.6 Python 迭代列表组合 120
4.4.7 Python 统计元素出现次数 121
4.4.8 Python 找出列表中出现次数最多的元素 121
4.4.9 Python一键启用文件服务器 122
4.4.10 Python 快速拼接构造列表 122
4.4.11 Python 一行代码搜索字符串的多个前后缀 122
4.4.12 Python实现真正的switch-case语句 123
4.4.13 Python实例方法、静态方法、类方法 123
4.4.14 Python求集合并集、交集、差集 124
4.4.15 Python去除列表重复元素的几种方法 125
第5章 Robot Framework功能的使用 127
5.1 RIDE两种启动方式 127
5.2 RIDE功能介绍 128
5.2.1 菜单栏 128
5.2.2 工具栏 131
5.2.3 案例区 131
5.2.4 工作区 131
5.2.5 常用快捷键 132
5.3 常用Robot Framework编辑器工具 133
5.3.1 PyCharm 133
5.3.2 Sublime Text 138
5.3.3 其他工具 140
5.4 测试项目、测试套件和测试用例 141
5.4.1 测试项目 141
5.4.2 测试套件 141
5.4.3 测试用例 142
5.5 资源文件 143
5.5.1 内部资源文件 143
5.5.2 外部资源文件 143
5.6 常量和变量 144
5.6.1 变量与常量介绍 144
5.6.2 变量作用域 145
5.6.3 Robot Framework内置变量 146
5.6.4 标量变量的定义和使用 147
5.6.5 列表变量的定义和使用 149
5.6.6 字典变量的定义和使用 151
5.6.7 变量知识补充 153
5.7 用户关键字 153
5.7.1 关键字Arguments 154
5.7.2 关键字Teardown 160
5.7.3 关键字Return 161
5.8 Edit选项卡 162
5.8.1 测试项目Edit选项卡 162
5.8.2 测试套件Edit选项卡 163
5.8.3 测试用例Edit选项卡 165
5.8.4 小结 166
5.9 Text Edit选项卡 167
5.10 Run选项卡 168
5.10.1 自动保存 168
5.10.2 失败暂停 168
5.10.3 Arguments参数配置 169
5.10.4 Only run tests with these tags 170
5.10.5 Skip tests with these tags 171
5.10.6 查看测试报告和测试日志 172
5.11 Robot Framework常用技巧 173
5.11.1 If分支结构 173
5.11.2 For循环结构 174
5.11.3 列表变量的用法和元素获取 176
5.11.4 变量使用方法补充 177
5.11.5 搜索关键字 178
5.11.6 测试用例执行六大技巧 179
5.11.7 测试标签技巧 181
5.11.8 Setup和Teardown 183
5.11.9 Pybot和Robot命令 183
5.11.10 Jybot模式安装与运行 185
第6章 Robot Framework常用函数库 189
6.1 内置库介绍 189
6.1.1 标准库 189
6.1.2 扩展库 190
6.2 Evaluate万能关键字 191
6.3 类型转换 194
6.3.1 Convert To String:转换成字符串 194
6.3.2 Convert To Integer:转换成整数 194
6.3.3 Convert To Number:转换成符点数 194
6.3.4 Convert To Boolean:转换成布尔值 195
6.3.5 Encode String To Bytes:字符编码 196
6.4 变量操作 196
6.4.1 Log Variables:打印变量 196
6.4.2 Import Variables:导入变量 196
6.4.3 Set Variable:设置变量 197
6.4.4 Set Global Variable:设置全局变量 197
6.4.5 Set Suite Variable:设置测试套件变量 198
6.4.6 Set Test Variable:设置测试用例变量 198
6.4.7 Set Variable If:当条件满足时设置变量 199
6.4.8 Get Variables:获取所有变量 199
6.4.9 Get Variable Value:获取变量值 199
6.4.10 Get Environment Variables:获取所有环境变量 200
6.4.11 Get Environment Variable:获取环境变量值 200
6.4.12 Set Environment Variable:设置环境变量 200
6.5 关键字操作 201
6.5.1 Run Keyword:运行关键字 201
6.5.2 Run Keyword If:当条件满足时运行关键字 201
6.5.3 Run Keyword Unless:当条件不满足时运行关键字 201
6.5.4 Repeat Keyword:重复运行某关键字 202
6.5.5 Run Keywords:运行多个关键字 202
6.5.6 Run Keyword And Return:运行关键字并返回结果 202
6.5.7 Run Keyword And Return If:当条件满足时运行关键字并返回结果 203
6.5.8 Run Keyword And Continue On Failure:失败后仍运行指定关键字 203
6.5.9 Run Keyword And Ignore Error:运行关键字并忽略错误 203
6.5.10 Run Keyword If All Tests Passed:所有测试用例通过后运行关键字 203
6.5.11 Run Keyword If Any Tests Failed:任一测试用例失败后运行关键字 204
6.5.12 Run Keyword If Test Passed:测试用例通过后运行关键字 204
6.5.13 Run Keyword If Test Failed:测试用例失败后运行关键字 204
6.5.14 Run Keyword If Timeout Occurred:测试用例超时后运行关键字 204
6.6 条件与循环 205
6.6.1 Continue For Loop:直接继续下一次循环 205
6.6.2 Continue For Loop If:当条件满足时继续下一次循环 205
6.6.3 Exit For Loop:立即退出循环 205
6.6.4 Exit For Loop If:当条件满足时退出循环 206
6.7 断言操作 206
6.7.1 Should (Not) Be Empty:断言是否为空 206
6.7.2 Should (Not) Be Equal:断言是否相等 207
6.7.3 Should (Not) Be Equal As Strings:断言作为字符串是否相等 207
6.7.4 Should (Not) Be Equal As Integers:断言作为整数是否相等 208
6.7.5 Should (Not) Be True:断言是否为真 208
6.7.6 Should (Not) Contain:断言是否包含某元素 209
6.7.7 Should (Not) Contain Any:断言是否包含任一元素 210
6.7.8 Should Contain X Times:断言某元素是否被包含指定次数 210
6.7.9 Should (Not) Start With:断言是否以某某开头 210
6.7.10 Should (Not) End With:断言是否以某某结尾 211
6.7.11 Should (Not) Match Regexp:断言是否匹配正则表达式 211
6.7.12 Length Should Be:断言长度是否相等 212
6.7.13 Keyword Should Exist:断言关键字是否存在 213
6.7.14 List Should (Not) Contain Value:断言列表是否包含某值 213
6.7.15 Lists Should Be Equal:断言两个列表是否相等 213
6.7.16 List Should Not Contain Duplicates:断言列表不包含重复项 214
6.7.17 Dictionary Should Contain Item:断言字典是否包含某键值对 214
6.7.18 Dictionary Should (Not) Contain Key:断言字典是否包含某Key值 214
6.7.19 Dictionary Should (Not) Contain Value:断言字典是否包含某Value值 215
6.7.20 Dictionaries Should Be Equal:断言给定的字典是否相等 215
6.8 集合操作 215
6.8.1 Create List:创建列表 215
6.8.2 Log List:打印输出列表中的值 216
6.8.3 Append To List:添加元素到列表 216
6.8.4 Insert Into List:插入元素到列表 216
6.8.5 Copy List:复制列表 217
6.8.6 Get From List:从列表中取值 217
6.8.7 Get Index From List:获取列表值对应的索引位置 217
6.8.8 Reverse List:反转列表 218
6.8.9 Set List Value:设置列表值 218
6.8.10 Sort List:排序列表 219
6.8.11 Remove From List:移除列表中指定位置的元素 219
6.8.12 Remove Values From List:从列表中移除给定的所有值 219
6.8.13 Remove Duplicates:从列表中移除重复项 220
6.8.14 Create Dictionary:创建字典 220
6.8.15 Log Dictionary:打印字典 220
6.8.16 Set To Dictionary:添加元素到字典 221
6.8.17 Copy Dictionary:复制字典 221
6.8.18 Get Dictionary Items:获取字典中的所有元素 221
6.8.19 Get Dictionary Keys:获取字典中的所有Key值 222
6.8.20 Get Dictionary Values:获取字典中的所有Value值 222
6.8.21 Get From Dictionary:获取字典中的指定Key值 222
6.8.22 Pop From Dictionary:删除并返回字典中的指定Key值 222
6.8.23 Remove From Dictionary:删除字典中的指定Key值 223
6.9 常用关键字 223
6.9.1 Log:打印输出 223
6.9.2 Log Many:打印各元素值 224
6.9.3 Log To Console:打印到控制台 225
6.9.4 Sleep:延时等待 225
6.9.5 Comment:添加注释 226
6.9.6 Call Method:调用方法 226
6.9.7 Get Count:获取数量 227
6.9.8 Get Length:获取长度 227
6.9.9 Get Time:获取时间 227
6.9.10 Pass Execution:标记测试用例执行成功 229
6.9.11 Pass Execution If:当条件满足时标记测试用例执行成功 229
6.9.12 Fail:标记当前测试用例失败 229
6.9.13 Fatal Error:停止执行所有测试用例 230
6.9.14 Import Library:导入测试库 230
第3部分 项目实战篇
第7章 基于HTTP接口的自动化测试 234
7.1 接口测试扫盲 234
7.1.1 接口的本质 234
7.1.2 接口有哪些类别 235
7.1.3 什么是接口测试 236
7.1.4 接口测试的重要性 236
7.1.5 接口测试的关注点 237
7.1.6 接口测试的介入时机 238
7.1.7 接口测试的根本目标 238
7.2 开展接口测试的基本流程 239
7.3 接口测试用例设计 240
7.3.1 三类对象抽象模型 240
7.3.2 接口测试三层模型 240
7.3.3 接口输入用例设计 241
7.3.4 接口逻辑用例设计 243
7.3.5 接口输出用例设计 245
7.3.6 其他部分用例设计 246
7.3.7 一个完整的例子 247
7.3.8 小结 250
7.4 环境依赖安装 250
7.4.1 所需第三方库列表 250
7.4.2 安装Requests依赖库 251
7.4.3 安装RequestsLibrary依赖库 251
7.4.4 安装HttpLibrary.HTTP依赖库 251
7.5 接口测试设计规范 252
7.5.1 接口测试整体分层结构 252
7.5.2 接口测试功能划分原则 254
7.5.3 接口测试套件命名约定 255
7.5.4 接口测试用例命名与分类 255
7.6 接口测试项目实战:最佳实践 257
7.6.1 实战项目接口分析 257
7.6.2 实战项目框架设计 260
7.6.3 实战项目业务分层 262
7.6.4 实战项目模块划分 264
7.6.5 公共请求方法 265
7.6.6 业务资源文件 271
7.7 接口测试项目实战:用例设计 273
7.7.1 实战一:登录型接口功能测试设计 274
7.7.2 实战二:列表型接口功能测试设计 286
7.7.3 实战三:信息型接口功能测试设计 295
7.7.4 实战四:基于业务场景下的接口组合测试设计 301
7.8 接口测试项目实战:成果展示 307
7.9 Robot Framework实战常用技巧 308
7.9.1 一套测试用例支持多个环境运行 309
7.9.2 测试用例标签分类策略 311
7.9.3 测试套件和测试用例Hook 313
7.9.4 动态构造测试数据 315
7.9.5 自定义Python方法 317
7.10 Robot Framework开发系统关键字 319
7.11 Robot Framework+GitLab代码管理 323
7.12 Robot Framework+Jenkins构建持续集成 324
7.12.1 Jenkins环境搭建 325
7.12.2 Robot Framework Jenkins插件安装 327
7.12.3 添加运行节点Slave 328
7.12.4 Robot Framework+Job接口自动化测试配置 332
7.12.5 Robot Framework+Job测试构建及结果查看 336
第8章 基于Selenium的Web UI自动化测试 339
8.1 Selenium框架介绍 339
8.1.1 Selenium是什么 339
8.1.2 Selenium与Robot Framework的关系 339
8.2 环境安装 340
8.2.1 安装依赖库 340
8.2.2 查看库版本 340
8.3 第一个示例 340
8.3.1 打开RIDE 341
8.3.2 创建项目 341
8.3.3 创建测试套件 342
8.3.4 创建测试用例 342
8.3.5 编写测试用例 343
8.3.6 运行及查看结果 344
8.4 常用关键字 346
8.4.1 浏览器操作 346
8.4.2 iFrame操作 347
8.4.3 输入操作 347
8.4.4 单击元素操作 348
8.4.5 属性获取 349
8.4.6 元素等待操作 349
8.4.7 预期结果校验 350
8.4.8 Cookie操作 351
8.4.9 其他常用关键字 352
8.4.10 小结 352
8.5 元素定位 353
8.5.1 常用定位工具 353
8.5.2 常用定位方法 355
8.6 多浏览器处理 357
8.6.1 Chrome浏览器 357
8.6.2 Firefox浏览器 358
8.6.3 Safari浏览器 360
8.6.4 PhantomJS 浏览器 362
8.7 Robot Framework+Selenium Web UI自动化测试项目实战 363
8.7.1 实战项目背景说明 363
8.7.2 Web UI项目分层设计 365
8.7.3 实战一:Web UI登录类测试设计 367
8.7.4 实战二:Web UI应用类测试设计 372
8.7.5 实战三:Web UI列表类测试设计 376
8.7.6 小结 379
第9章 基于Appium的移动端自动化测试 381
9.1 Appium框架介绍 381
9.1.1 Appium是什么 381
9.1.2 Appium常见概念 382
9.1.3 Appium工作原理 383
9.1.4 Appium与Robot Framework的关系 385
9.2 环境搭建 385
9.2.1 Android自动化测试所需环境搭建 385
9.2.2 Appium框架所需环境搭建 388
9.2.3 iOS自动化测试所需环境搭建 391
9.3 Appium Desktop使用介绍 393
9.3.1 Appium Desktop的安装 393
9.3.2 Appium Desktop的功能介绍 393
9.4 Robot Framework+ Appium开展Android自动化测试 400
9.4.1 需要了解的ADB知识 400
9.4.2 获取Android设备序列号 402
9.4.3 获取App包名和Activity名 403
9.4.4 第一个Appium Android自动化测试示例 406
9.4.5 获取Android App控件元素的方法 408
9.4.6 Android App元素常用定位方式 411
9.4.7 Appium Library常用关键字 413
9.4.8 Android自动化测试实战:前期准备 414
9.4.9 Android自动化测试实战:项目结构设计 416
9.4.10 Android自动化测试实战:公共关键字设计 418
9.4.11 实战一:实现Android App自动登录测试 420
9.4.12 实战二:测试Android App同页面的多个同类型元素 423
9.4.13 实战三:获取并断言Android App Toast提示信息 427
9.4.14 小结 428
9.5 Robot Framework+Appium开展iOS自动化测试 429
9.5.1 iOS开发证书、描述文件与Bundle ID的关系 430
9.5.2 iOS产出物的几种格式 431
9.5.3 获取iOS设备的UDID和App Bundle ID 432
9.5.4 iOS常用命令 434
9.5.5 iOS模拟器的安装和使用 435
9.5.6 iOS模拟器simctl常用命令 437
9.5.7 Appium安装配置WebDriverAgent 439
9.5.8 获取iOS App控件元素的三种方法 444
9.5.9 iOS App元素常用定位方式 448
9.5.10 第一个Appium iOS模拟器自动化测试示例 450
9.5.11 第一个Appium iOS真机自动化测试示例 452
9.5.12 Robot Framework + Appium实现iOS模拟器自动化测试 454
9.5.13 Robot Framework + Appium实现iOS真机自动化测试 459
9.5.14 小结 464
9.6 Appium+Python开展H5混合应用自动化测试 465
9.6.1 在混合应用中识别H5页面的几种方法 465
9.6.2 混合应用元素定位整体思路 467
9.6.3 App WebView调试模式的检查和开启 467
9.6.4 利用DevTools远程调试WebView 468
9.6.5 一个Appium+Python H5自动化测试示例 469
9.6.6 小结 475
9.7 Robot Framework+ Appium开展小程序自动化测试 476
9.7.1 小程序和H5的区别 476
9.7.2 一个Appium+Python 小程序自动化测试示例 477
9.7.3 Robot Framework+ Appium实现小程序自动化测试 480
9.8 本章总结 486
第4部分 扩展篇
第10章 Robot Framework框架部分源码解析 490
10.1 Robot Framework框架目录结构 490
10.1.1 Robot Framework源码位置 490
10.1.2 Robot Framework源码目录结构 492
10.2 Robot Framework执行用例逻辑分析 500
10.3 Robot Framework二次开发—命令行实时显示日志 511
· · · · · · (
收起)