本书围绕Python技术栈,讲解测试开发技术栈领域的各项核心技术要点。全书共11章,首先讲解pytest单元测试框架在测试领域的技术栈要点,包含pytest从最基本的应用到高阶应用。接着讲解服务端测试开发领域主流的核心思想、主流测试开发工具在解决服务端测试开发中的技术难点,以及服务端测试框架的设计和项目实战案例。在框架的基础上扩展了服务端测试开发领域的知识面,主要介绍Docker容器化技术、基于DevOps体系的CI/CD技术栈体系以及CI/CD的技术落地案例、服务端测试开发领域的性能测试核心理论,方法论、流程化和主流性能测试在服务端的最佳实践、性能测试过程中主流的监控技术解决方案和JVM性能分析与实践。同时在书中详细讲解了微服务架构下质量体系建设的方法论、可落地的思想和混沌工程针对底层高可用系统的保障技术。
本书适合不同业务领域的不同级别的测试工程师学习,特别适合功能测试工程师、自动化测试工程师和想要系统提升测试开发能力的读者学习。
大厂服务端测试技术专家10年实战经验总结,手把手教您快速摆脱编程语言、框架、中间件及传统编程思想束缚,全景式、体系化解读服务端测试开发的流程、技术栈和实用规范
创作背景
随着微服务架构技术和容器化技术在企业的全面落地,对构建高可用以及可持续提供服务产品的能力要求越来越高,同时也对原有的质量团队提出了更高的要求,特别是既不能局限于端到端的测试,也不能局限于功能性层面的测试,而是要在深入了解底层架构设计以及程序内在逻辑的基础上,运用测试工具或者编写代码来测试底层服务的稳定性,即在高并发的场景下可持续提供服务的能力。随着敏捷开发的持续推进,通过快速迭代和快速交付来应对市场的变化和不确定性,对质量团队而言,使用传统模式已经很难满足这一特定需求,也很难应对快速交付市场的诉求,因为这中间涉及产品质量的把控。所以在这个过程中,市场需要QA(quality assurance,质量保证)工程师不仅要进行自动化测试,而且能够内建质量体系,在技术手段以及测试思维的基础上打造可持续构建使用的质量体系,在产品发展的不同阶段引入如混沌工程等技术,以保障底层服务的稳定性。
不管是企业的需要还是市场的诉求,都需要QA工程师具备服务端测试开发技术栈的知识体系,包括对架构、CI/CD、容器化技术、服务端性能测试领域、JVM、主流协议(HTTP&RPC)测试的支持,以及质量体系的建设技术诉求和人员需要具备的技术栈能力模型。
本书以Python语言作为主线(不仅是Python)展开,从理论到实战,带领读者实现从功能测试工程师到自动化测试工程师以及测试管理者的进阶,从零开始构建服务端测试开发的知识体系和领域内的知识对质量体系的保障和落地。本书的核心内容来自笔者在网易云课堂的Python服务端测试开发实战视频课程,课程中融入了大量的实践思考以及可在企业落地的技术,对QA工程师将有很大的借鉴意义。
目标读者
功能测试工程师。
自动化测试工程师。
测试开发工程师。
测试管理者。
读者服务
实战源码。
学习视频。
读者可以通过扫码访问本书专享资源官网,获取项目实战源码、学习视频,加入读者群,下载最新学习资源或反馈书中的问题。
勘误和支持
本书在编写过程中历经多次勘校、查证,力求能减少差错,做到尽善尽美,但由于笔者水平有限,书中难免存在疏漏之处,恳请广大读者批评指正,也欢迎读者来信一起探讨。
无 涯
资深测试工程师,Python自动化测试博主,拥有多年工作经验。在自动化测试、服务端测试、性能测试、质量管理等方向具备丰富的实战经验。
第1章 pytest测试实战 1
1.1 编写自动化测试 1
1.2 初识pytest 2
1.2.1 函数方式编写测试用例 3
1.2.2 面向对象方式编写测试用例 3
1.2.3 pytest执行结果信息 5
1.3 pytest执行规则 6
1.4 pytest常用命令 9
1.5 pytest参数化驱动实战 14
1.5.1 参数化实战 14
1.5.2 固件request 27
1.6 fixture实战 28
1.6.1 fixture返回值 29
1.6.2 初始化清理 30
1.6.3 fixture重命名 33
1.7 conftest.py实战 34
1.8 pytest常用插件 35
1.8.1 pytest-dependency 35
1.8.2 pytest-returnfailures 38
1.8.3 pytest-repeat 39
1.8.4 pytest-timeout 39
1.8.5 pytest-xdist 41
1.8.6 pytest-html 42
1.9 pytest配置 43
1.9.1 pytest.ini 43
1.9.2 tox.ini 44
1.10 Allure报告 47
1.10.1 搭建Allure环境 47
1.10.2 Allure测试报告实战 47
1.10.3 Allure扩展 52
第2章 服务端测试开发实战 54
2.1 服务端测试思想 54
2.2 HTTP协议 56
2.2.1 HTTP协议交互 56
2.2.2 通信模式 58
2.2.3 常用请求方法 59
2.2.4 常用状态码 60
2.2.5 SESSION详解 60
2.2.6 TOKEN详解 64
2.3 gRPC协议 65
2.3.1 gRPC调用流程 66
2.3.2 gRPC协议通信 67
2.3.3 gRPC协议实战 71
2.4 Thrift 74
2.5 API测试维度 78
2.5.1 单个API测试 78
2.5.2 业务驱动服务测试 80
2.5.3 OpenAPI测试 82
2.5.4 API测试用例编写规则 82
2.6 服务端业务关联 83
2.6.1 PostMan解决思路 83
2.6.2 JMeter解决思路 85
2.6.3 代码解决思路 87
2.7 MockServer 89
2.7.1 Moco实践应用 90
2.7.2 Mock实践应用 91
2.8 API测试的本质 93
第3章 API测试框架 94
3.1 测试框架概述 94
3.2 Tavern实战 94
3.2.1 单一API测试 95
3.2.2 关联API测试 98
3.3 模板化API测试框架设计 100
3.4 面向对象API测试框架设计 108
第4章 Docker实战 118
4.1 Docker镜像管理 118
4.2 Docker容器管理 124
4.3 Dockerfile命令和实战 128
4.3.1 Dockerfile命令 128
4.3.2 Dockerfile实战 130
第5章 持续交付 139
5.1 持续交付概述 139
5.2 GitLab持续交付 140
5.3 Jenkins整合GitLab 150
5.4 SonarQube实战 158
5.4.1 搭建SonarQube 159
5.4.2 SonarScanner配置 161
5.4.3 Maven整合Sonar 161
5.4.4 Jenkins整合Sonar 163
5.5 打造企业级的CI/CD持续
交付 166
第6章 性能测试理论 169
6.1 软件性能的概念 169
6.2 性能测试常用术语 170
6.3 性能测试理论 172
6.3.1 调度器 172
6.3.2 等待队列 175
6.3.3 并行&并发 176
第7章 常用性能测试工具及实战 178
7.1 常用性能测试工具概述 178
7.2 JMeter实战 178
7.2.1 JMeter执行原理 179
7.2.2 测试计划 179
7.2.3 场景设置 179
7.2.4 JMeter监听器 181
7.2.5 JMeter配置元件 182
7.2.6 JMeter性能测试实战 185
7.2.7 JMeter命令行执行 185
7.2.8 JMeter整合Taurus 187
7.2.9 JMeter整合CI 190
7.2.10 JMeter分布式执行 192
7.2.11 JMeter性能测试平台 195
7.3 Gatling实战 199
7.3.1 Gatling安装配置 200
7.3.2 Gatling性能测试实战 201
7.4 nGrinder实战 207
7.4.1 nGrinder安装配置 207
7.4.2 nGrinder性能测试实战 209
7.5 Locust实战 212
7.5.1 什么是协程 212
7.5.2 Locust测试实战 213
7.6 自研性能测试工具实战 218
第8章 性能测试监控实战 225
8.1 构建监控基础设施 225
8.1.1 Grafana 225
8.1.2 Prometheus 226
8.1.3 Prometheus整合Grafana 229
8.1.4 Linux资源监控 230
8.1.5 MySQL资源监控 231
8.2 全链路监控 233
8.2.1 搭建Skywalking 234
8.2.2 Spring Boot整合Skywalking 238
8.3 分布式追踪监控 243
8.3.1 分布式追踪系统 243
8.3.2 Jaeger实战 244
第9章 JVM性能测试实战 255
9.1 JVM概述 255
9.2 JVM资源监控 256
9.2.1 内存溢出案例 256
9.2.2 XX参数 258
9.2.3 导出内存映像文件 259
9.2.4 MAT分析内存泄露 260
9.2.5 JVisualVM监控 263
9.2.6 JConsole监控 269
9.2.7 jstat监控 271
9.2.8 GC日志 273
第10章 微服务质量体系保障 277
10.1 微服务架构的前世今生 277
10.2 微服务的注册与发现机制 282
10.3 质量体系建设 288
10.3.1 质量管理挑战 288
10.3.2 测试策略 288
10.3.3 构建质量体系 289
10.3.4 多集群保障 291
10.3.5 线上巡检机制 294
10.3.6 稳定性体系建设 297
第11章 混沌工程实战 298
11.1 混沌工程的前世今生 298
11.2 混沌工程的原则 299
11.3 混沌工程实验 300
11.4 混沌工程实践 302
11.4.1 chaosblade环境搭建 302
11.4.2 系统资源负载实践 303
11.4.3 磁盘写满实践 304
11.4.4 数据库调用延迟 305
11.4.5 网络丢包实验 307