图书目录

目    录

第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  设备交互API 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