【编辑推荐】

本书特色:

* Django Web开发,通过开发发布会签到系统,全面了解Django MTV模型。

* Django单元测试,在Web应用中如何编写单元测试。

* Django接口开发/Django-REST-Framework应用接口开发。

* 主流接口测试工具介绍:Postman、JMeter、Robot Framework、soapUI。

* 接口自动化测试框架设计:Requests + unittest + HTMLTestRunner。

* 接口安全机制:认证、签名、加密。

* Web Services接口开发与测试。

* Django Web项目部署。

* Python性能测试框架:Locust。


【内容简介】

  本书以接口测试为主线,以Web开发为切入点,全面介绍了Web接口开发与自动化测试过程中使用的相关技术。全书分为15章,第1章介绍了Python的基础知识,解答初学Python的同学都会遇到的一些问题;第2章到第5章以开发发布会签到系统为需求,介绍了DjangoWeb开发技术;第6章介绍了unittest单元测试框架,以及在Django中如何编写单元测试;第7章到第10章主要介绍接口的相关概念、Web接口开发、接口测试工具和接口自动化测试框架的开发;第11介绍了安全接口的开发与测试;第12章和第13章介绍了WebServices技术;第14章和第15章介绍了DjangoWeb项目的部署和接口性能测试。

【作者简介】

  胡志恒,高级测试工程师。2011年6月开始在博客园上持续分享各种测试技术和经验,文章多次被51testing等网站转载,精通性能测试、自动化测试等技术。

【目录】

目 录∣ V目 录第1 章 Python 学习必知 ............................................................................................................ 11.1 Python 2.x 与Python 3.x 选择 ............................................................................... 11.2 Python 的安装 ........................................................................................................ 21.2.1 在Windows 下安装Python ....................................................................... 21.2.2 安装Python 2 和Python 3 两个版本 ........................................................ 31.2.3 “python”不是内部或外部命令 ............................................................. 51.3 扩展库的安装 ........................................................................................................ 61.3.1 pip 安装扩展库 .......................................................................................... 61.3.2 tar.gz 文件安装 .......................................................................................... 91.3.3 .whl 文件安装 ............................................................................................ 91.3.4 GitHub 克隆项目安装 ............................................................................... 91.4 开发工具选择 ...................................................................................................... 111.4.1 Sublime Text3 ........................................................................................... 111.4.2 Atom ......................................................................................................... 131.4.3 PyCharm ................................................................................................... 141.5 程序报错不要慌 .................................................................................................. 151.5.1 缩进错误 .................................................................................................. 151.5.2 引包错误 .................................................................................................. 161.5.3 编码错误 .................................................................................................. 161.5.4 学会分析错误 .......................................................................................... 17第2 章 Django 入门 ................................................................................................................. 192.1 Django 开发环境 .................................................................................................. 192.1.1 在Windows 下安装Django .................................................................... 20VI ∣ Web 接口开发与自动化测试——基于Python 语言2.1.2 在Ubuntu 下安装Django........................................................................ 202.2 开始第一个demo ................................................................................................ 212.2.1 创建项目与应用 ...................................................................................... 222.2.2 运行项目 .................................................................................................. 252.2.3 Hello Django! ......................................................................................... 272.2.4 使用模板 .................................................................................................. 292.3 Django 工作流 ...................................................................................................... 302.3.1 URL 组成 ................................................................................................. 312.3.2 URLconf ................................................................................................... 322.3.3 views 视图 ................................................................................................ 332.3.4 templates 模板 .......................................................................................... 342.4 MTV 开发模式 .................................................................................................... 34第3 章 Django 视图 ................................................................................................................. 363.1 来写个登录功能 .................................................................................................. 363.1.1 GET 与POST 请求 .................................................................................. 373.1.2 处理登录请求 .......................................................................................... 403.1.3 登录成功页 .............................................................................................. 423.2 Cookie 和Session ................................................................................................. 443.2.1 Cookie 的使用 .......................................................................................... 443.2.2 Session 的使用 ......................................................................................... 463.3 Django 认证系统 .................................................................................................. 493.3.1 登录Admin 后台 ..................................................................................... 493.3.2 引用Django 认证登录 ............................................................................ 503.3.3 关上窗户 .................................................................................................. 51第4 章 Django 模型 ................................................................................................................. 534.1 设计系统表 .......................................................................................................... 534.2 admin 后台管理 ................................................................................................... 564.3 基本数据访问 ...................................................................................................... 594.3.1 插入数据 .................................................................................................. 604.3.2 查询数据 .................................................................................................. 61目 录∣ VII4.3.3 删除数据 .................................................................................................. 634.3.4 更新数据 .................................................................................................. 634.4 SQLite 管理工具 .................................................................................................. 644.4.1 SQLite Manager ....................................................................................... 644.4.2 SQLiteStudio ............................................................................................ 654.5 配置MySQL ........................................................................................................ 654.5.1 安装MySQL ............................................................................................ 654.5.2 MySQL 基本操作 .................................................................................... 674.5.3 安装PyMySQL ........................................................................................ 684.5.4 在Django 中配置MySQL ...................................................................... 694.5.5 MySQL 管理工具 .................................................................................... 72第5 章 Django 模板 ................................................................................................................. 735.1 Django-bootstrap3 ................................................................................................ 735.2 发布会管理 .......................................................................................................... 745.2.1 发布会列表 .............................................................................................. 745.2.2 搜索功能 .................................................................................................. 785.3 嘉宾管理 .............................................................................................................. 795.3.1 嘉宾列表 .................................................................................................. 805.3.2 分页器 ...................................................................................................... 835.4 签到功能 .............................................................................................................. 875.4.1 添加签到链接 .......................................................................................... 875.4.2 签到页面 .................................................................................................. 885.4.3 签到动作 .................................................................................................. 915.5 退出系统 .............................................................................................................. 93第6 章 Django 测试 ................................................................................................................. 956.1 unittest 单元测试框架 .......................................................................................... 956.1.1 单元测试框架 .......................................................................................... 956.1.2 编写单元测试用例 .................................................................................. 966.2 Django 测试........................................................................................................ 1006.2.1 一个简单的例子 .................................................................................... 100VIII ∣ Web 接口开发与自动化测试——基于Python 语言6.2.2 运行测试用例 ........................................................................................ 1026.3 客户端测试 ........................................................................................................ 1046.3.1 测试首页 ................................................................................................ 1046.3.2 测试登录动作 ........................................................................................ 1056.3.3 测试发布会管理 .................................................................................... 1076.3.4 测试嘉宾管理 ........................................................................................ 1086.3.5 测试用户签到 ........................................................................................ 109第7 章 接口相关概念 ............................................................................................................. 1117.1 分层的自动化测试 ............................................................................................ 1117.2 单元测试与模块测试 ........................................................................................ 1127.3 接口测试 ............................................................................................................ 1147.3.1 接口的分类 ............................................................................................ 1157.3.2 接口测试的意义 .................................................................................... 1167.4 编程语言中的Interface ..................................................................................... 1177.4.1 Java 中的Interface ................................................................................. 1177.4.2 Python 中的Zope.interface .................................................................... 119第8 章 开发Web 接口 ........................................................................................................... 1218.1 为何要开发Web 接口 ....................................................................................... 1218.2 什么是Web 接口 ............................................................................................... 1248.2.1 HTTP ...................................................................................................... 1258.2.2 JSON 格式 .............................................................................................. 1288.3 开发系统Web 接口 ........................................................................................... 1298.3.1 配置接口路径 ........................................................................................ 1298.3.2 添加发布会接口 .................................................................................... 1308.3.3 查询发布会接口 .................................................................................... 1328.3.4 添加嘉宾接口 ........................................................................................ 1338.3.5 查询嘉宾接口 ........................................................................................ 1358.3.6 发布会签到接口 .................................................................................... 1368.4 编写Web 接口文档 ........................................................................................... 138目 录∣ IX第9 章 接口测试工具介绍 ..................................................................................................... 1439.1 Postman 测试工具 .............................................................................................. 1439.2 JMeter 测试工具 ................................................................................................ 1469.2.1 安装JMeter ............................................................................................ 1469.2.2 创建测试任务 ........................................................................................ 1479.2.3 添加接口测试 ........................................................................................ 1519.2.4 添加断言 ................................................................................................ 1539.3 Robot Framework 测试框架 .............................................................................. 1549.3.1 环境搭建 ................................................................................................ 1559.3.2 基本概念与用法 .................................................................................... 1579.3.3 接口测试 ................................................................................................ 160第10 章 接口自动化测试框架 ............................................................................................... 16510.1 接口测试工具的不足 ...................................................................................... 16510.2 Requests 库 ....................................................................................................... 16610.2.1 安装 ...................................................................................................... 16710.2.2 接口测试 .............................................................................................. 16710.2.3 集成unittest ......................................................................................... 16810.3 接口测试框架开发 .......................................................................................... 16910.3.1 框架处理流程 ...................................................................................... 16910.3.2 框架结构介绍 ...................................................................................... 17010.3.3 修改数据库配置 .................................................................................. 17110.3.4 数据库操作封装 .................................................................................. 17210.3.5 编写接口测试用例 .............................................................................. 17610.3.6 集成测试报告 ...................................................................................... 178第11 章 接口的安全机制 ....................................................................................................... 18111.1 用户认证 .......................................................................................................... 18111.1.1 开发带Auth 接口 ................................................................................ 18211.1.2 接口文档 .............................................................................................. 18411.1.3 接口测试用例 ...................................................................................... 185X ∣ Web 接口开发与自动化测试——基于Python 语言11.2 数字签名 .......................................................................................................... 18711.2.1 开发接口 .............................................................................................. 18811.2.2 接口文档 .............................................................................................. 19111.2.3 接口用例 .............................................................................................. 19211.3 接口加密 .......................................................................................................... 19411.3.1 PyCrypto 库 .......................................................................................... 19411.3.2 AES 加密接口开发 .............................................................................. 19611.3.3 编写接口文档 ...................................................................................... 20111.3.4 补充接口测试用例 .............................................................................. 202第12 章 Web Services .......................................................................................................... 20512.1 Web Services 相关概念 .................................................................................... 20512.2 Web Services 的开发与调用 ............................................................................ 21412.2.1 suds-jurko 调用接口 ............................................................................ 21412.2.2 spyne 开发接口 .................................................................................... 21912.3 JMeter 测试SOAP 接口 .................................................................................. 221第13 章 REST ........................................................................................................................ 22413.1 RPC 与REST ................................................................................................... 22413.2 Django REST Framework................................................................................. 22713.2.1 创建简单的API ................................................................................... 22713.2.2 添加接口数据 ...................................................................................... 23113.2.3 测试接口 .............................................................................................. 23213.3 集成发布会系统API ....................................................................................... 23413.3.1 添加发布会API ................................................................................... 23413.3.2 测试接口 .............................................................................................. 23713.4 soapUI 测试工具 .............................................................................................. 23813.4.1 创建SOAP 测试项目 .......................................................................... 23913.4.2 创建REST 测试项目 .......................................................................... 241目 录∣ XI第14 章 Django 项目部署 ..................................................................................................... 24414.1 uWSGI .............................................................................................................. 24414.1.1 uWSGI 介绍 ......................................................................................... 24414.1.2 安装uWSGI ......................................................................................... 24514.1.3 uWSGI 运行Django ............................................................................ 24614.2 Nginx ................................................................................................................ 24714.2.1 安装Nginx ........................................................................................... 24714.2.2 Nginx+uWSGI+Django ........................................................................ 24814.2.3 处理静态资源 ...................................................................................... 25114.3 创建404 页面 .................................................................................................. 253第15 章 接口性能测试 ........................................................................................................... 25615.1 Locust 性能测试工具....................................................................................... 25615.1.1 安装Locust .......................................................................................... 25715.1.2 性能测试案例 ...................................................................................... 25915.2 发布会系统性能测试 ...................................................................................... 26215.2.1 性能测试准备 ...................................................................................... 26315.2.2 编写性能测试脚本 .............................................................................. 26615.2.3 执行性能测试 ...................................................................................... 26715.3 接口性能测试 .................................................................................................. 27015.3.1 编写接口性能测试脚本 ...................................................................... 27015.3.2 执行接口性能测试 .............................................................................. 27115.3.3 多线程测试接口性能 .......................................................................... 274

【前言/序言】

  前 言

  本书的原型是我整理的一份Django 学习文档。在从事软件测试工作的这六七年里,我一直有整理学习资料的习惯,这种学习理解再输出的方式对我非常受用,博客和文档是我主要的输出形式,这些输出同时也帮助到许多软件测试人员。

  说回到接口测试的话题上来,根据分层自动化测试的思想,上层为UI 层。关于UI 层的自动化测试我们已经很熟悉了,许多技术和工具都是围绕这一层来设计的,我们要想做自动化,首先想到和尝试去做的也是这一层的自动化实现。底层为单元测试,对于单元级别的自动化测试来说,虽然大多数测试人员并没有真正做过,但我们知道,它一般使用单元测试框架,通过一段代码去测试另一段代码;而接口测试刚好处于中间层,不太好理解,也不太好解释,因为在开发的项目中只有程序目录/文件、类、方法、函数这些,并没有一个叫作“接口”的东西。但是,它却又无处不在,是一个出现频率极高的词,时刻挂在开发人员的嘴边。

  什么是接口?如何对接口进行测试呢?我曾经也有很长一段时间并不太理解什么是接口测试。为什么没有一本讲接口测试的书呢?性能测试和UI 自动化测试的书籍每年都会出版好几本,与之相比,几乎找不到一本专门介绍接口测试的书。现在想来可能是因为它太简单了吧!简单到没什么可讲的,甚至接口测试比功能测试还要简单得多。但是,真的做好接口测试又很难,或者说难点并不在于接口测试本身,而是需要有读懂接口代码处理逻辑的能力,这就要求你必须具备一定的开发基础,因而对许多测试人员来说,已经形成了门槛。要写一本关于接口测试的书,一种讨巧的做法就是把目前主流的接口测试工具都介绍一遍,这很符合主题。然而,我并不认为把这些工具都学好就可以做好接口测试。举一个简单的例子,我的接口使用了加密,例如,用时间戳+密钥生成AES 加密字符串,再将字符串生成base64 字符串作为接口参数传输,这其实是一种常见的加密策略,而我所了解的大多数接口测试工具都无法做到对这种加密接口的测试。原因很简单,加密算法和加密策略多种多样,而工具却很难模拟这种多样性的加密策略。但是,站在开发的角度上看,接口测试就很简单了,开发怎么调用,测试就怎么调用呗!只不过测试的目的是验证在传各种参数的情况下,接口是否可以正确地处理并返回结果。

  所以,我选择另一种需要很高学习成本的方法来讲解接口测试,从Web 接口开发讲起,理解了接口是如何开发的,再做接口测试自然就变得非常简单了。你会看到本书前几章都是在讲Web 开发以及Web 接口开发,你可能会怀疑自己是不是买错书了,明明是要学习接口测试的,怎么介绍的都是开发的技术。其实,如果你只是想学习Web 开发的话,那么本书也是一本不错的入门教程。

  本书共分为15 个章节,涵盖了不少话题,这也是我在写作时对自己的要求,不要讲解太基础的东西,不要讲太多无聊的概念,要有很强的可操作性。第1 章是Python 基础,第2~5 章是Web 开发,第6 章是单元测试,第7~10 章主要讲接口的概念、开发与测试,第11 章介绍安全接口的开发与测试,第12~13 章讲Web Service 技术,第14~15 章介绍项目的部署与性能测试。所以,这并不是一本单纯面向测试人员的书,同样适合开发的小伙伴阅读。

  到了感谢部分,首先,感谢身边的同事,一年多的接口自动化测试实践过程中,我收获了很多,感谢测试经理唐亮对我们在尝试新技术时的支持,感谢开发组的蓝仕坤、陈晓发在技术上给了我很大的帮助。其次,感谢接口自动化测试群里的小伙伴,他们给本书提了很多建议,包括本书的名字,也是在群里投票的结果。再次,感谢我的妻子,她默默地容忍着我每天晚睡的坏习惯,感谢她一直以来的包容与理解。最后,感谢编辑安娜,没有她这本书也不会出版,我们合作一直很愉快。

  由于作者水平有限,希望你带着怀疑的精神阅读本书,如果发现错误,欢迎批评指正。

  2017 年1 月13 号凌晨

  虫师

京东~Web接口开发与自动化测试――基于Python语言