书籍作者:王浩然 | ISBN:9787121356872 |
书籍语言:简体中文 | 连载状态:全集 |
电子书格式:pdf,txt,epub,mobi,azw3 | 下载次数:6471 |
创建日期:2021-02-14 | 发布日期:2021-02-14 |
运行环境:PC/Windows/Linux/Mac/IOS/iPhone/iPad/Kindle/Android/安卓/平板 |
王浩然,网名大婶N72,测试技术专家。作者曾在科大讯飞、时代新媒体担任软件测试工程师。从事近7年的自动化测试工作,擅长基于Python语言的自动化测试框架及开发,现在在一家互联网企业中,担任测试开发工程师职位。
真正做到学以致用,以编写一套可落地的接口自动化脚本为目的。
本书是实实在在的一线测试干货积累,提供落地化的HTTP协议接口自动化脚本,以及实实在在的可运行环境。有了这本书,就等于有了一套实实在在的测试平台。
轻松入门Python语法,书中涉及的语法都是脚本中用到的,并在这个基础上做出适当的延伸,使读者在编写代码的同时,知其然,也知其所以然。
书中源码公开,拥有这本书,就拥有了整套的源码,按照本书的环境设置,这套源码是完全可运行的。
序
如今,软件测试岗位受到很大的挑战。一方面,敏捷开发模式、DevOps实践等愈发流行,其强调开发与测试相融合,即测试人员能干开发的工作,开发人员能干测试的工作;另外一方面,测试行业开始认为自动化测试很重要,如果实现不了自动化测试,那么测试就无法敏捷起来(特别是在快速迭代、持续交付的环境下)。
说起自动化测试,根据公众号“软件质量报道”和相关机构最近的调查,目前的自动化测试(特别是面向GUI的自动化测试)效果还不够好,产出投入比不高,自动化测试做得好的公司或团队也不多。但是,基于API进行自动化测试(接口自动化测试)还是比较容易实施的,自动化率能达到90%以上,并且投入产出比高。另外,如今软件架构也慢慢转向SOA架构、微服务架构,基于API进行测试的需求越来越大,这给自动化测试提供了更多的机会。
本书正是帮助那些自动化测试基础比较弱,甚至是零基础的测试工程师转型做接口自动化测试,而且是基于现在如日中天的Python语言来开发自动化脚本,对渴望入门Python编程的朋友也有价值。本书循序渐进地引导读者完成接口自动化测试。
本书直接基于Python代码来实现接口自动化测试,不依赖其他测试工具,降低了学习门槛和使用成本。自动化测试所需的Python技能其实也很简单,读者也不用恐惧,用一些资深人士的话说:1~2天就可以了。即使学得慢一些,一周就能学会。在接口自动化测试过程中,一般建议以自动生成测试数据为主(即先基于自定义的业务数据模板来自动生成大部分测试数据,然后手工再补充一些特殊的测试数据)。未来可以结合人工智能算法来完善测试数据、自动分析与生成接口调用链等,虽然本书没有介绍这方面的内容,但有了本书作为的基础,读者就可以通过自学深入下去。
最后需要提醒读者:想要做好测试,深刻理解用户、产品和业务是非常重要的。任何商业软件最终都是为了解决业务问题和满足用户的需求,而测试正是对这种质量的保障。所以,在学习自动化测试的过程中,一定要重视业务需求、测试思维和测试方法等。只有具备良好的测试素质,才能让自动化测试发挥其价值,才能真正做到事半功倍。
朱少民
国内知名测试专家
前言:本书整体设计思想
自动化测试的前景
软件测试,在大多数的公司还是处于相对弱势的地位,原因还主要在软件测试本身:相比于软件开发,软件测试无论是进入门槛还是编程能力,要求都低一些;而且大多数公司的软件测试还局限于手工测试。这就造成了业界对软件测试的偏见——软件测试只是随便点一点鼠标、技术含量低。
诚然,软件测试离不开手工测试,但不能只有手工测试没有编程能力。技术性测试的方法有很多,常见的有自动化测试、性能测试、白盒测试、安全性测试等,这些测试方法都需要测试人员有比较强的编程能力。其中,自动化测试的进入门槛较低,但效果最明显,所以,自动化测试可以作为广大测试人员进入技术性测试的切入点。
现阶段,薪资高一些的测试岗位,普遍需要做从业人员具有自动化基础及实际操作能力。所以,从就业角度来说,自动化测试是突破测试行业薪资瓶颈的一条捷径;从测试人员的职业发展来说,学习一定的技术,有助于建立技术思维以及行业内部的沟通,便于将来或是继续走测试技术路线,或是转到其他岗位。
本书写作目的
相信很多测试人员和我的经历很像,从最开始的手工测试开始积累经验,在这个过程中肯定想过做自动化,做技术。我最开始是用QTP(Quick Test Professional,一种自动测试工具)录制了登录功能,看着浏览器自动打开、自动输入网址、自动登录,那种愉悦的心情是不言而喻的,但是真正能转型成功,或者说能有一技之长的测试人员还是偏少的,原因就在于技术点的突破。
各种编程语言本身都有相同点,只要突破了一门,其他语言学起来也就没那么难了。所以,如何突破一门语言,如何跨过第一道门槛,成为制约测试人员技术能力提升的关键点,这也是本书编写的目的——引导测试人员突破Python的入门难点。
为什么要选择Python?最主要的原因是——合适。正所谓鞋合不合适只有脚知道。Python简单易学的特点,恰好符合测试人员的要求。很多时候,我都在怀疑Python是不是专为测试人员量身打造的。关于Python的更多优势,读者可以在正文看到。
本书特点
作者在构思本书的时候,也翻阅了市面上很多同类技术书籍,发现绝大多数都有一个通病——采用教科书式的写作模式。所谓“教科书模式”,即按照“语言的历史→语法→章节练习→案例讲解“的模式来展开。这种模式很经典,内容也很翔实,但是太过于死板和理论化。这样的书虽然仔细阅读后确实能收获很多,但是不利于快速上手。
读教科书模式的书时,学习者很容易半途而废,包括我自己,经常是看不到三分之一的内容就放弃了,所有的新鲜劲、韧性都在语法和练习中消磨殆尽了。我真正开始写脚本并不是从某本书开始的,而是从实际的项目拆分入手,遇到问题再去翻这类教科书,纯粹将它当作工具书来使用。
所以,本书不是按照传统的教科书模式编写,而是从实际要实现的目的着手,一步步将其拆分成知识点,再对知识点进行突破,将每个点拆分成一个个小的突破点——类似于“拆书帮”的形式,将“Python+MySQL处理HTTP协议接口的过程”拆解到一个个章节中。读者在每个章节中都能学到完整的一个知识点,最后串联各个知识点,实现最终的学习目标。关于如何分解、如何逐个突破,读者可以在正文中看到。
读者通过每个章节的功能实现,逐步建立对Python的理解,通过小篇幅的功能实现来提升成就感,激发自己继续往下看、继续往下学的信心和勇气。本书所介绍的方法是作者在实际项目中实践过的,并且也被很多业内同事所采用。读者不仅可以将其用在Python学习中,也可以用在其他语言甚至生活中。
读者对象
? 对Python语言感兴趣的人员;
? 想在项目中实现HTTP协议接口自动化测试的人员;
? 想要提升技术,突破技术的人员;
? 初、中级测试工程师。
代码下载
本书配套代码的下载地址:https://pan.baidu.com/s/1h_OVP0QdhIgZ0pl8OWWekw。
密码:fa68
有关于任何问题、建议和疑问,欢迎发邮件到:[email protected]
致谢
感谢Guido van Rossum于1989年发明了Python。
感谢电子工业出版社,审校此书,以及为本书能够快速出版而付出的辛苦。
感谢何飞在本书构思和出版中所做的指导和帮助。没有他的指引也没有该书的出现。
感谢我的家人,感谢你们对我工作的理解和支持,有你们一路的付出才有今天的这本书。
目录
1 本书整体设计思想 . 1
1.1 为什么要做懂技术的测试人员 . 2
1.2 为什么选择这本书. 4
1.3 为什么选择Python 5
1.4 本书能给你带来什么 . 6
1.5 自动化代码的设计思路 . 6
1.5.1 由手工测试分析出哪些步骤可自动化处理 . 8
1.5.2 以可重复步骤为契机,梳理自动化测试的步骤 . 9
1.5.3 抽象自动化步骤到功能点 . 10
1.6 补充知识点 10
1.6.1 什么是面向对象编程中的对象 . 10
1.6.2 什么是面向对象编程中的类 . 11
1.6.3 什么是编程语言中的实例 . 11
1.6.4 自动化测试是不是比手工测试覆盖率高 . 12
1.6.5 什么是自动化测试 . 13
1.6.6 什么是分层自动化测试 . 14
2 接口基础 18
2.1 什么是接口 19
2.2 接口的分类 23
2.3 HTTP 接口 . 24
2.3.1 HTTP 发送请求的方式 28
2.3.2 GET 方式和POST 方式的区别 29
2.4 接口测试 30
2.4.1 什么是接口测试 . 30
2.4.2 为什么要做接口测试 . 30
2.4.3 如何开展接口测试 . 31
2.4.4 前/后端交互的“契约―接口”文档 32
2.5 接口实例 34
2.5.1 前端页面 . 34
2.5.2 数据流图 . 35
2.5.3 逻辑代码 . 39
2.6 补充知识点 40
2.6.1 名词解释 . 40
2.6.2 答疑 . 41
3 接口手工测试 . 43
3.1 HTTP 接口工具 . 44
3.2 Fiddler 工具的使用 47
3.2.1 Fiddler 工具介绍 47
3.2.2 手工调用HTTP 接口 . 48
3.2.3 获取PC 端的网络数据包 51
3.2.4 获取手机端的网络数据包 . 52
3.2.5 截包与改包 . 54
3.2.6 Fiddler 工具的其他功能 . 58
3.3 接口手工测试的用例设计 . 59
3.3.1 接口测试用例设计――总纲 59
3.3.2 接口测试用例设计――参数校验 59
3.3.3 参数校验――SQL 注入 . 62
3.3.4 接口测试用例设计――逻辑校验 63
3.3.5 接口测试用例设计――用例模板 64
3.4 补充知识点 65
4 编程前的准备 67
4.1 Python 环境准备 68
4.1.1 选择Python 2 还是Python 3 68
4.1.2 在Windows 下安装Python 3 . 69
4.1.3 Python 2 和Python 3 共存之道 70
4.2 准备本地MySQL 服务 . 71
4.3 补充知识点 74
4.3.1 Python 2 与Python 3 的语法区别 74
4.3.2 Python 解释器 . 75
4.3.3 Python 的函数 . 75
5 用Python 操作MySQL 数据库 77
5.1 提前工作 78
5.2 操作MySQL 数据库 . 80
5.2.1 用Python 操作MySQL 数据库的流程 . 80
5.2.2 用Python 操作MySQL 代码 . 81
5.3 本章所涉及的Python 语法 . 95
5.3.1 模块与包 . 95
5.3.2 类 . 99
5.3.3 条件判断 . 104
5.3.4 异常处理 . 106
5.3.5 Python 3 代码注释 107
5.4 PyCharm 使用基础 109
5.4.1 为什么选择PyCharm . 109
5.4.2 PyCharm 使用基础 . 110
5.5 补充知识点 113
5.5.1 MySQLdb 与PyMySQL. 113
5.5.2 Python 命名规则 . 113
5.5.3 self.cur.scroll 源码分析 113
5.5.4 主流数据库的分类 . 115
5.5.5 MySQL 的基本语法 . 117
6 用Python 发送HTTP 请求 120
6.1 准备工作 121
6.2 发送HTTP 请求实例 123
6.2.1 用Python 发送HTTP 请求的流程 123
6.2.2 用Python 操作HTTP 请求的代码 125
6.3 本章所涉及的Python 语法 . 135
6.3.1 数据类型 . 135
6.3.2 方法与函数 . 137
6.3.3 切片 . 140
6.3.4 日志模块logging 141
6.4 补充知识点 142
6.4.1 Python 的循环机制 . 142
6.4.2 logging . 143
7 用Python 处理HTTP 返回包 144
7.1 提前工作 145
7.2 处理HTTP 返回包实例 . 145
7.2.1 用Python 处理HTTP 返回包的基础 145
7.2.2 用Python 处理HTTP 返回包的流程 148
7.2.3 用Python 处理HTTP 返回包的代码 150
7.3 本章所涉及的Python 语法 . 161
7.3.1 json 方法 . 161
7.3.2 字典的两个方法 . 162
7.3.3 eval()与instance()方法 . 163
7.3.4 set()方法与issubset()方法 163
7.4 补充知识点 164
7.4.1 Python 的垃圾回收机制 . 164
7.4.2 字符串的startswith()和endswith()方法 166
8 用Python 导出测试数据 168
8.1 提前工作 169
8.2 用Python 导出测试数据 170
8.2.1 导出测试数据的基础知识 170
8.2.2 导出测试数据实例 171
8.3 整体业务流程图 176
8.4 补充知识点 178
8.4.1 Python 时间戳 178
8.4.2 Excel 的操作178
9 接口自动化起航 179
9.1 提前工作 180
9.2 代码之外 180
9.2.1 初始化数据 180
9.2.2 代码结构图181
9.3 接口自动化起航代码 182
9.3.1 业务逻辑梳理 182
9.3.2 代码实例 183
9.4 代码操作步骤 188
9.5 补充知识点 190
9.5.1 用print 格式化输出 190
9.5.2 数据驱动和关键字驱动 191
10 实际接口场景演示 192
10.1 提前工作 193
10.2 接口举例 193
10.3 准备与执行 193
10.3.1 设计接口测试用例193
10.3.2 按照接口用例设计准备测试数据 193
10.3.3 在config_total 表中增加执行与导出配置项 193
10.3.4 执行main.py 195
附录A 本书用到的Python 代码清单 196