本书从Python基础入手,系统讲解了使用Python语言来做接口自动化测试、性能自动化测试、安全测试以及功能自动化回归测试。
全书由浅入深,系统化地将作者多年测试开发工作中遇到的问题、解决方案等进行了实例化的阐述,书中丰富的实例代码可以直接在软件的各个自动化测试场景中使用。
作者针对近年来企业对测试开发岗位的需求倾力打造了此书,希望借由此书的出版能够使更多的读者更好地掌握Python测试开发的技能,并找到更理想的软件测试工作。
本书附赠全部测试实例源代码文件及Python软件测试核心知识点精讲视频。本书适合从事软件测试工作的技术人员及希望从事软件测试的专业人员阅读,也适合计算机、软件工程、自动化等相关专业的学生与老师参考。
前言
第1章 测试工程师需要掌握的
Python基础 /1
1.1 让Python飞一会儿 /1
1.2 测试工程师常用到的数据类型 /7
1.2.1 用Python做加减乘除 /7
1.2.2 用Python来写字符串 /8
1.2.3 列表是什么 /11
1.2.4 元组是什么 /14
1.2.5 字典是什么 /16
1.2.6 集合是什么 /21
1.2.7 文件处理的常用方法 /21
1.3 条件语句 /23
1.3.1 实例:爱我还是他 /24
1.3.2 实例:猜一猜今天是星期几 /24
1.3.3 实例:从Json中获取今天猪肉的
价格 /25
1.4 循环语句 /25
1.4.1 实例:从无限循环中逃离 /26
1.4.2 实例:用for遍历字符串、列表、元组、
字典 /26
1.5 函数 /27
1.5.1 实例:登录过程的函数模拟 /28
1.5.2 实例:抽奖游戏的函数模拟 /28
1.6 异常的处理 /29
1.7 模块和类 /29
1.7.1 模块 /29
1.7.2 类 /30
1.8 装饰器 /33
1.8.1 实例:在函数中定义 /33
1.8.2 实例:给每一个测试函数打印执行
时间 /34
第2章 用Python开始做接口自动化
测试 /36
2.1 HTTP协议与接口测试 /36
2.1.1 快速掌握HTTP协议 /36
2.1.2 Fiddler工具的使用 /37
2.1.3 接口测试的通用方法与要点 /39
2.2 requests:让HTTP服务人类 /40
2.3 grequests:requests的异步
模块 /43
2.4 HTTP接口测试从这儿开始 /45
2.4.1 实例:从一个简单的接口测试代码
开始 /45
2.4.2 实例:关联参数的处理 /46
2.4.3 实例:如何在多个请求的函数中传递
关联参数 /46
2.4.4 实例:如何在多个请求的类中传递关联
参数 /47
2.5 如何访问接口测试中无所不在的
数据存储 /49
2.5.1 实例:如何访问数据库 /49
2.5.2 实例:用ORM访问数据库 /50
2.5.3 实例:对接口返回的数据增加数据库
检查 /51
2.5.4 实例:如何访问MongoDB缓存库 /52
2.5.5 实例:如何访问Redis缓存 /53
2.5.6 实例:对接口返回的内容增加MongoDB
的检查 /53
2.6 logbook:增强性日志包 /55
实例:在接口测试中增加日志逻辑 /56
2.7 pytest:优雅地检查接口测试的
结果 /57
2.7.1 用pytest对接口返回的内容进行
检查 /58
2.7.2 常用的pytest.mark方法 /59
2.7.3 一起来测试多个测试数据吧 /62
2.7.4 pytest的fixture固件 /66
2.7.5 pytest常用第三方插件 /72
2.8 汇报接口测试的结果 /74
2.9 Allure:更佳的接口测试报告 /75
2.10 HTTP接口自动化测试中的
特殊处理 /78
2.10.1 实例:模拟Web HTTP请求时
如何保持Session /78
2.10.2 实例:模拟Web HTTP请求时
如何处理HTML /79
2.10.3 实例:模拟Web HTTP请求时
如何调用JS函数 /80
2.10.4 接口测试中常见的加解密处理 /80
2.11 综合实例:微型HTTP接口
自动化测试代码的实现 /83
2.11.1 代码工程构造的说明 /84
2.11.2 接口测试主测试代码 /85
第3章 用Python模拟“千军万马”去
做性能自动化测试 /93
3.1 Python中模拟多用户的基础 /93
3.1.1 实例:如何用多线程来做性能测试 /93
3.1.2 实例:如何用线程池来做性能测试 /94
3.1.3 实例:如何用多进程来做性能测试 /96
3.1.4 实例:如何用进程池来做性能测试 /96
3.1.5 实例:如何将线程与进程结合后做
性能测试 /97
3.1.6 实例:如何用协程来做性能测试 /99
3.2 更适合做性能测试的HTTP包 /101
3.2.1 实例:使用grequests来做性能测试 /101
3.2.2 实例:使用aiohttp来做性能测试 /102
3.3 Python中强大的性能测试
框架Locust /103
3.3.1 Locust常用类 /104
3.3.2 实例:让Locust飞起来 /106
3.3.3 Locust测试脚本的增强处理 /111
3.3.4 如何在Locust中分布式多机执行 /116
3.3.5 将Locust的结果与Loadrunner进行
对比 /117
3.3.6 实例:使用FastHttpUser来做性能
测试 /119
3.3.7 实例:自定义扩展grequests来做性能
测试 /122
3.4 如何在多个压测机中执行
命令 /124
3.5 专为性能测试准备的监控
工具NetData /125
3.6 综合实例:用Locust做某OSS
服务的性能测试 /127
3.6.1 Locust主测试代码 /127
3.6.2 压测结果分析 /130
第4章 用Python轻松做HTTP协议的
安全测试 /134
4.1 OWASP DVWA环境的搭建 /134
4.2 如何用Python去发现命令执行
漏洞 /139
4.3 如何发现CSRF漏洞 /143
4.4 如何用Python去发现文件包含
漏洞 /148
4.5 如何用Python去发现上传文件
漏洞 /152
4.6 如何用Python去发现SQL注入
漏洞 /154
4.7 如何用Python去发现XSS
漏洞 /157
4.8 Mitmproxy的综合运用 /162
4.8.1 Mitmproxy简介 /162
4.8.2 Mitmdump的使用方法 /164
4.8.3 实例:Mitmdump悄无声息地改变
响应内容 /165
4.8.4 实例:Mitmdump结合Sqlmap进行
自动化检测 /168
4.8.5 实例:Mitmdump批量自动化检测
越权请求 /172
第5章 用Python做UI自动化回归
测试 /177
5.1 不好好评估的UI自动化测试,
最后可能变成“鸡肋” /177
5.2 UI自动化测试开始于Selenium /178
5.3 元素查找的八种方法 /180
5.3.1 与HTML标签属性对应的四种
方法 /180
5.3.2 根据文本信息查找的两种方法 /185
5.3.3 根据页面路径深度查找的两种
方法 /186
5.4 智能识别元素插件Ranorex
Selocity /191
5.5 find_相关方法 /193
5.6 Selenium提供的常用方法 /194
5.6.1 实例:对浏览器进行控制的
方法和属性 /194
5.6.2 实例:对网页控制的方法和属性 /195
5.6.3 实例:对元素的控制方法和属性 /196
5.7 轻松应对网页中的自定义
控件 /198
5.7.1 实例:对菜单、导航等元素进行
操作 /198
5.7.2 实例:对单选、复选控件进行操作 /199
5.7.3 实例:对上传控件进行操作 /200
5.7.4 实例:对下拉框控件进行操作 /202
5.7.5 实例:多标签和iframe的处理 /204
5.8 使用unittest来管理测试案例 /205
5.8.1 实例:用unittest把测试案例管理
起来 /206
5.8.2 实例:如何在unittest中使用数据
驱动 /206
5.8.3 实例:生成HTML报告并发送 /207
5.9 Page Object设计模式的应用 /208
5.9.1 如何组织Page Object模式的代码 /208
5.9.2 实例:把Page Object模式应用到登录
功能中 /209
5.10 更快地执行UI自动化回归
测试 /211
5.10.1 实例:Selenium Grid多机执行测试
案例 /212
5.10.2 实例:如何在多进程中执行
Selenium Grid /215
5.11 使用增强型框架SeleniumBase来
实现UI自动化测试 /216
参考文献 /219