HTTP抓包之接口自动化测试

978-7-115-53431-6
作者: 肖佳
译者:
编辑: 武晓燕

图书目录:

详情

本书内容来自作者多年从事接口测试的经验总结,贴近实际,能帮助读者解决实际工作中的难题。本书的主要内容有HTTP的基础知识;如何使用Fiddler来抓HTTP包;如何分析HTTP包;如何通过JMeter和Postman等发送HTTP包,从而实现软件自动化测试和接口的自动化测试;如何使用抓包工具来实现安全测试和性能测试等;几个日常生活中应用比较广泛的综合实例。 本书图文并茂、实例丰富,方便读者参考并动手实践,适合前端开发工程师、测试工程师、线上故障技术人员、接口开发人员和Web开发人员阅读。

图书摘要

版权信息

书名:抢鲜版-HTTP抓包之接口自动化测试

ISBN:978-7-115-53431-6

本书由人民邮电出版社发行数字版。版权所有,侵权必究。

您购买的人民邮电出版社电子书仅供您个人使用,未经授权,不得以任何方式复制和传播本书内容。

我们愿意相信读者具有这样的良知和觉悟,与我们共同保护知识产权。

如果购买者有侵权行为,我们可能对该用户实施包括但不限于关闭该帐号等维权措施,并可能追究法律责任。

著    肖 佳

责任编辑 武晓燕

人民邮电出版社出版发行  北京市丰台区成寿寺路11号

邮编 100164  电子邮件 315@ptpress.com.cn

网址 http://www.ptpress.com.cn

读者服务热线:(010)81055410

反盗版热线:(010)81055315


本书内容来自作者多年从事接口测试的经验总结,贴近实际,能帮助读者解决实际工作中的难题。本书的主要内容有HTTP协议的知识,如何使用Fiddler来抓HTTP包,如何分析HTTP包,如何通过JMeter和Postman等发送HTTP包从而实现软件自动化测试和接口的自动化测试,如何使用抓包工具来实现安全测试和性能测试等。本书最后介绍了几个日常生活中应用比较广泛的综合实例。

本书图文并茂,实例丰富,方便读者参考并动手实践,适合前端开发工程师、测试工程师、线上故障支持人员、接口开发人员和Web开发人员阅读。


肖佳是我在EMC的同事,但是在他入职之前我们就神交已久。2012年我从微软来到EMC,工作方向从传统的操作系统数据库转向前后端结合的云存储系统,彼时我对Web系统测试方面的知识一片空白,又面临着非常大的项目压力。偶然间在网上阅读了肖佳关于Fiddler的一篇博客文章。那篇文章解决了我当时遇到的一个问题,令我受益匪浅。后来,我阅读了肖佳许多的关于Fiddler使用的经典文章。这一系列文章为我提供了巨大的帮助,不仅让我快速了解了Web开发测试的相关知识,还让我对测试有了一个全新的认识。再后来,肖佳先生入职EMC,他的丰富知识、专注和努力为团队的Web系统测试水平的快速提升做出了巨大贡献。

非常高兴看到肖佳先生把他的专业测试知识整理成书。这本书不仅全面介绍了如何使用Fiddler进行HTTP抓包,也提供了丰富的应用场景实战。本书除了HTTP抓包及其应用之外,还介绍了许多Web应用方面的相关知识。本书内容深入浅出,图文并茂,阅读起来非常轻松。这本书对HTTP抓包技术的知识体系重新进行了梳理,加入了作者在工作中新的实践、新的总结。本书对初、中级的测试人员而言是一本入门自动化测试非常有用的读物,对高级测试工程师来说是一本可以随时翻阅的参考书。希望读者能和我一样:从本书中获益,并在工作中不断取得进步。

林 应  

分众传媒技术总监

2020年5月 


《HTTP抓包实战》一书出版后受到了大家的广泛关注,非常感谢读者的信任。但是书里面还是有很多知识点需要扩展和深入,本书是《HTTP抓包实战》的提升版。

“HTTP抓包”我打算写成一个系列,接下来几年会陆续出版《HTTP抓包之性能测试》(暂定名)和《HTTP抓包之安全测试》(暂定名)。

在现在的移动互联网时代,接口测试具备以下的优点。

在过去几年,测试行业中比较流行的是UI自动化测试,然而在移动互联网时代,UI自动化有一些缺点使其不太适合再使用。

在高速迭代的移动互联网时代,越来越多的公司抛弃了UI自动化而选择了接口自动化测试。

本书花了一年半的时间才写完。写书的过程非常累,非常痛苦,而且费脑子。每天早上5点多就起床,利用早上的2小时来写书。因为这个时候头脑最清醒,效率最高。

建议读者先阅读《HTTP抓包实战》后,再阅读本书。

本书适合测试工程师或者想要学习接口测试的读者。如果你是“大牛”级别的人物,请忽略本书。

本书可以帮助软件测试人员在较短时间内快速掌握接口自动化测试,为项目中实施接口自动化测试提供更多的思路。

本书的内容都是我多年从事接口测试的经验总结,非常贴近我们的实际工作,能帮助大家解决实际工作中的难题。

本书的内容比较简单,实例丰富,读者阅读起来会感觉比较轻松、容易上手,读完本书不需要花费太多时间。通过本书的学习,如果读者能够自行开发出一个订票工具,或者实现一个电商网站的自动下订单操作,那么恭喜你,已经掌握了本书的所有知识。

本书适用软件测试人员或者接口开发人员学习HTTP接口测试。

本书分为30章,每章的内容并不多,但却配有生动有趣的实例和大量的图片,方便读者参考并动手实践。读者可以很快学完一章,每学一章都会有成就感。

第1~11章:补充了一点HTTP协议的知识,以及如何使用Fiddler来抓HTTP包,如何分析HTTP包。

第12~22章:介绍了如何通过JMeter、Postman和Python+requests来发送HTTP包以实现软件自动化测试和接口的自动化测试。

第23~26章:通过列举很多有意思的案例,介绍了如何使用抓包工具来实现安全测试和性能测试。

第27~30章:运用本书所讲述的内容,实现了几个日常生活中应用比较广泛的综合实例。

我为本书创建了一个学习QQ群:1035642205。我将在QQ群中解答读者的问题,并且给大家发送一些补充的学习资料。篇幅有限,还有很多复杂的例子没有办法写在本书上。

由于本人能力有限,书中难免会出现一些错误,或者写得不好的地方,恳请读者批评指正。您可以加入我们的QQ群或者直接联系我。期待得到读者朋友的反馈。

感谢多位读者帮忙对这本书进行公测。我写完后找了读者试读,读者给我提供了很有用的建议。感谢陈慧楠、胡卉。

另外要感谢人民邮电出版社的编辑武晓燕在本书写作过程中给予的大力支持。

写于上海市杨浦区五角场

2019年7月27日  

肖 佳    


本书由异步社区出品,社区(https://www.epubit.com/)为您提供相关资源和后续服务。

作者和编辑尽最大努力来确保书中内容的准确性,但难免会存在疏漏。欢迎您将发现的问题反馈给我们,帮助我们提升图书的质量。

当您发现错误时,请登录异步社区,按书名搜索,进入本书页面,点击“提交勘误”,输入勘误信息,点击“提交”按钮即可。本书的作者和编辑会对您提交的勘误进行审核,确认并接受后,您将获赠异步社区的100积分。积分可用于在异步社区兑换优惠券、样书或奖品。

我们的联系邮箱是contact@epubit.com.cn。

如果您对本书有任何疑问或建议,请您发邮件给我们,并请在邮件标题中注明本书书名,以便我们更高效地做出反馈。

如果您有兴趣出版图书、录制教学视频,或者参与图书翻译、技术审校等工作,可以发邮件给我们;有意出版图书的作者也可以到异步社区在线投稿(直接访问www.epubit.com/ selfpublish/submission即可)。

如果您是学校、培训机构或企业,想批量购买本书或异步社区出版的其他图书,也可以发邮件给我们。

如果您在网上发现有针对异步社区出品图书的各种形式的盗版行为,包括对图书全部或部分内容的非授权传播,请您将怀疑有侵权行为的链接发邮件给我们。您的这一举动是对作者权益的保护,也是我们持续为您提供有价值的内容的动力之源。

“异步社区”是人民邮电出版社旗下IT专业图书社区,致力于出版精品IT技术图书和相关学习产品,为作译者提供优质出版服务。异步社区创办于2015年8月,提供大量精品IT技术图书和电子书,以及高品质技术文章和视频课程。更多详情请访问异步社区官网https://www.epubit.com。

“异步图书”是由异步社区编辑团队策划出版的精品IT专业图书的品牌,依托于人民邮电出版社近30年的计算机图书出版积累和专业编辑团队,相关图书在封面上印有异步图书的LOGO。异步图书的出版领域包括软件开发、大数据、AI、测试、前端、网络技术等。

异步社区

微信服务号


数据包也叫报文,捕获数据包简称抓包。抓包(Packet Capture)就是对网络传输中发送与接收的数据包进行截获、重发、编辑、转存等操作,也用来检查网络安全。IT从业人员都应该学会抓包。抓到包后,具体能做什么取决于你的思路。

改包指把抓到的包进行修改,再发送出去。Fiddler是抓包、改包的“神器”,简称FD。搜索“FD抓包”或“FD改包”可以搜索到Fiddler很多特殊的用法。

很多人听说过抓包,但是并不知道抓包可以做什么。抓到包后,你就可以分析客户端与服务器之间是如何交互的了。

修改包的用途就更广泛了。把抓到的数据包修改后再发送给服务器,可以测试服务器的安全机制。抓包本身不难,关键在于如何分析。

抓包高手能做到这些:

抓包的应用非常广泛,如图1-1所示。

图1-1 抓包的应用

HTTP协议是一种网络协议,学习HTTP协议较好的方法就是使用抓包工具去分析HTTP请求和响应的内容。就好比如果想学习TCP/IP协议,就必须使用Wireshark工具去抓包,分析TCP包的内容。

学习HTTP协议,非常重要的是熟记HTTP请求和HTTP响应的结构。不管用什么抓包工具都是为了抓想要的数据包,不管用什么发包工具都是为了发送数据包。

HTTP请求分为3部分:首行、信息头和信息主体。这3部分的结构一定要记住。特别是信息主体中数据的格式一定要清楚。

POST http://123.206.30.76/clothes/index/login HTTP/1.1
Host: 123.206.30.76
Content-Type:application/x-www-form-urlencoded;charset=utf-8
User-Agent: Mozilla/5.0  Chrome/71.0.3578.98 Safari/537.36
Connection: keep-alive

username=tankxiao%40outlook.com&password=test1234

HTTP响应也分为3部分,重点要理解状态码的含义。状态码是一个3位数字的代码,用以表示网页服务器超文本传输协议响应状态。

HTTP/1.1 200 OK
Date: Sun, 06 Jan 2019 23:30:17 GMT
Content-Type: text/html; charset=utf-8
Content-Length: 63
Connection: keep-alive
Cache-Control: private
Set-Cookie: ASP.NET_SessionId=0q1bheoez45kimbejjsixove; path=/; HttpOnly
Set-Cookie: ht_cookie_user_name_remember=HT=%e8%82%96%e4%bd%b3; path=/
Set-Cookie: ht_cookie_user_pwd_remember=HT=CF03E6F3D17B1851; path=/
Server: WAF/2.4-12.1

{"status":1, "msg":"会员登录成功!","url":"/index.aspx"}

理解HTTP协议是写爬虫的必备基础。学习任何爬虫都要从HTTP协议学起。

抓包是了解客户端和服务器交互的过程,爬虫是了解交互过程后模拟请求获取数据的工具,两者相辅相成。可以说抓包是做爬虫的基础,不抓包直接写爬虫就像是蒙着眼睛找东西。爬虫示意图如图1-2所示。

图1-2 爬虫示意图

先进行抓包分析,再进行程序模拟,这就是爬虫的开发过程,以此来达到爬虫的目的。

爬虫抓取数据的优先级是手机App端>手机网页端>PC端。

接下来介绍一下如何对二手房楼盘数据进行爬取。

某程序员想要买房,于是他写了二手房楼盘数据爬虫,来抓取二手房楼盘的各种数据,包括房屋大小和价格。然后他就从中挑选满意的房子,相比去现场看房,这种方法的效率更高,或许更有可能买到实惠、优质的房子。

爬虫的运行结果如图1-3所示。

图1-3 爬虫捕捉房屋销售数据

Fiddler常用于性能测试、安全测试、接口测试等测试方向。

性能测试的本质是模拟多个用户同时发包,所以需要知道发送的数据包长什么样子。性能测试必然会用到抓包工具,如图1-4所示。

图1-4 性能测试

先用Fiddler捕获到一个用户发送的数据包,然后再用工具模拟很多用户同时发包,这就是性能测试的原理。目前主流的性能测试工具是JMeter和LoadRunner。

SQL注入、重放攻击、修改订单金额、冒充账号等,都需要用HTTP协议。HTTP协议是安全测试的基础,你需要深刻地理解HTTP协议中的Cookie和认证机制。安全测试如图1-5所示。

图1-5 安全测试

如果开发人员没有给测试人员接口文档,那测试人员可以自己去抓包查看接口的信息。在给其他公司的产品做接口测试的时候,测试人员也需要抓包。

即使开发人员给了接口文档,我们还可以用Fiddler进行抓包,因为通过Fiddler抓包,我们可以看到首行、信息头和信息主体,再结合开发给的开发文档从而提高设计接口测试用例的效率。

有时在一个新的环境中需要大量的数据,我们可以通过抓包获得请求参数之后,直接调用接口,填充数据。比如在一个新环境中,没有广告相关的数据,我们可以通过抓包模拟用户发布广告,给测试环境制造大量测试数据。

Fiddler还可用来模拟一些异常情况,比如模拟服务器返回500错误,模拟服务器崩溃的情况,从而测试客户端是否正常工作。

很多测试人员在测试App或者Web的时候,发现页面上的数据不对,比如数据库里有14个订单,而页面只显示12个订单,就马上发送Bug给前端开发人员。前端人员看到Bug后很不高兴,回复说:服务端只给我12个订单的信息,我把12个订单的信息显示在页面上,前端代码没有任何问题;不是我的Bug,是服务端的问题。

这时,我们可以用Fiddler来抓包,来分析这个Bug是前端的Bug还是后端的Bug。抓包后,如果发现响应返回的是12个订单信息,则说明是后端的Bug。后端在数据库查询的时候,没有获取全部数据。该过程如图1-6所示。

如果发现后端服务返回了14个订单信息,而页面上只显示了12个订单信息,说明这是前端的Bug。Fiddler定位Bug的原理如图1-7所示。

在图1-8中单击“查询”按钮后,发现页面没有数据。然后通过F12开发者工具抓包,可以看到页面根本没有发送HTTP请求,说明这是一个前端Bug。

现在我们以测试短信验证码是否过期为例进行讲解,详细测试步骤如下。

图1-6 页面数据和数据库的不一致

图1-7 Fiddler定位Bug

第1步:输入正确的手机号码,单击获取验证码。

第2步:收到短信验证码后,等待180秒,此时验证码已经过期。

第3步:输入短信验证码,单击“登录”按钮。

测试结果:页面没有“验证码过期”提示,如图1-9所示。

如果抓包发现服务器返回了“短信验证码已过期”的错误,但是页面上没有任何显示,那么这是一个前端Bug。

图1-8 单击“查询”按钮没有数据

图1-9 单击“登录”按钮

查询时出错的界面如图1-10所示。通过抓包发现服务器返回了500错误,并且有SQL的错误信息,这明显是一个后端Bug。

图1-10 查询出错

Fiddler是一个Web调试工具,可以对HTML、CSS、JS文件修改,还可以伪造各种HTTP请求和响应。前端开发人员利用Fiddler可以调试Web页面的功能。

前端人员和后端人员是分开工作的,前端人员的UI组件写好了,但是后端人员的接口还没有写好,那么前端人员可以利用Fiddler中的AutoResponder来模拟请求接口,来调试自己的UI组件查看有没有Bug。

在前端调试数据Ajax接口时,为了测试一些后端返回的特殊数据结构对页面和客户端的影响,测试人员需要造一些假数据来测试,假数据有XSS、长数据、不同字段类型(数组、字符串、数字)等。

如果线上产品出现了Bug,前端人员要去修复这个Bug,那需要调试服务器上某个HTML/ CSS/JavaScript文件。此时我们可以使用Fiddler中的AutoResponder功能。直接用本地的HTML/CSS/JavaScript文件来替换线上的文件,这样就可以直接线上调试。

后端开发人员会先使用Fiddler或者Postman来测试接口,主要是测试接口的主流程能否跑通。能跑通之后才给前端开发人员联调或者给测试人员做接口测试。

安全测试人员会用抓包工具来进行安全性测试,如图1-11所示。

图1-11 安全测试人员使用Fiddler

给自己公司的产品做安全测试叫作安全测试或者渗透测试,有些公司专门给别人公司的产品做安全性测试。两者用的技术一样,目的也基本一样。

在网站开发过程中,可以用Fiddler来发现404错误,以及较大的响应输出问题。

过多的404会影响网站的性能,多数的404错误都与一些资源文件的引用有关,比如代码中引用了不存在的CSS或者JS文件。这些404错误发生时,可能并不会影响页面的正常显示,因此这类错误根本不会引起一些开发人员的注意。

当404错误产生时,响应的内容是一个正常的网页,虽然这个响应看起来不大,但是由于请求不成功,每当打开这些页面时,请求都会重新发起,其数量会越来越多。

反过来,我们可以想一下,如果引用的资源文件存在,这些文件仅仅需要请求一次,浏览器就会缓存它们,根本不需要每次都重新发起请求。这样一来客户端减少了请求次数,服务器减轻了连接压力,那些无意义的404响应所浪费的网络流量也能避免。

因此,过多的404请求是一个恶性循环,它延长了页面的加载时间,给服务端带来了连接压力,也浪费了网络资源。

可以用Fiddler来检查网站的404错误,如图1-12所示。

图1-12 用Fiddler检查网站的404错误

大响应(响应数据很多)会导致浏览器显示变慢。大响应就是指服务器返回的HTTP响应太大了,花费了较长的网络传输时间。可以用Fiddler检查大响应,如图1-13所示。

图1-13 Fiddler检查大响应

可以通过抓包来开发一些小工具,用来做测试的辅助。

图1-14展示了一个买票助手,类似的工具非常多。这种工具的思路都是先通过抓包来分析浏览器和Web服务器的HTTP请求和HTTP响应,然后自己开发一个程序来发包,从而模拟登录、查询、预订、提交订单等。这样可以实现无人值守,自动买票。我们可以开发买火车票、演唱会门票、足球比赛门票和电影票等工具。

图1-14 订票助手

这种工具的强大之处就是可以多线程并发操作,甚至可以一次登录十多个账号,而且可以挂机。这种工具无须用户的操作,可以实现全部自动化。

互联网公司一般都有几套测试环境,比如QA测试环境、准上线环境、线上环境等。这几个环境是独立的。测试人员有时候需要在QA环境上申请账号,有时候需要在准上线环境上申请账号。手动申请账号很麻烦,比较费时间。我们可以开发一个自动申请账号的工具,一键申请。

当我们忘记密码的时候,恰好浏览器记住了密码(见图1-15),那我们可以用Fiddler找回密码,如图1-16所示。

图1-15 忘记网站的密码

图1-16 Fiddler抓包看密码

通过Fiddler抓包,我们可以抓到浏览器登录等请求,然后从请求中找到密码。这种情况只适合密码没有被JS加密的情况。

游戏测试中会用到Fiddler来抓包,从而寻找游戏的漏洞。

经常会听到抓包、录制、自动化测试和外挂等词语,这些概念很容易让人感到困惑。其实这些概念之间有关系。

自动化测试中还有两个重要的概念:录制和重放,详细说明如图1-17所示。

图1-17 录制和重放

抓包其实就是一种录制,Fiddler抓包其实就是录制脚本。Fiddler可以把录制后的脚本保存下来,也可以重发。

自动化测试和爬虫都是模拟浏览器发送HTTP请求,用的技术和写的脚本都差不多,区别在于目的不同。爬虫是为了获取页面上的信息;自动化测试的目的是验证软件是否存在Bug。

自动化测试和外挂用的技术是一样的。区别在于:自动化测试是给自己公司的产品做自动化测试;外挂是给别人公司的产品做自动化测试。

本章通过大量的实例列举了抓包的用途。抓包的用途非常广泛,大多数的IT工程师会用到抓包。同时,根据抓包目的的不同,本章对抓包、录制、爬虫、外挂和自动化测试的概念进行了区分。


相关图书

渗透测试技术
渗透测试技术
现代软件测试技术之美
现代软件测试技术之美
JUnit实战(第3版)
JUnit实战(第3版)
深入理解软件性能——一种动态视角
深入理解软件性能——一种动态视角
云原生测试实战
云原生测试实战
Android自动化测试实战:Python+Appium +unittest
Android自动化测试实战:Python+Appium +unittest

相关文章

相关课程