Fiddler是什么? Fiddler被称为“抓包神器”,是目前常用的HTTP抓包工具之一 ,有人也称它为强大的抓包工具,它能够抓取客户端和服务器之间的所有 HTTP(https)请求、响应(接口主要是通过HTTP请求实现数据传输),可以针对特定的HTTP请求,分析请求数据、设置断点、调试web应用、修改请求的数据,甚至可以修改服务器返回的数据,功能非常强大,是web调试的利器。 Fiddler要比其他网络调试器更加简单,操作便捷,格式显示清晰,这个工具可以进行接口测试,但是不能写断言,只能用composer构造HTTP请求,需要人工确认返回结果的正确性。 Jmeter又为何方神圣? Jmeter是开源的测试工具,而且是一款**纯Java编写的免费开源工具。它是Apache组织开发的由Java编写,常用来对WEB程序进行接口与性能测试; 配合后置处理器与断言,可以满足大部分的接口测试场景,JMeter提供了BeanShell编程能力,可以写出比较灵活的测试脚本,通过jmeter+ant+jenkins可以实现接口和性能自动化测试。 那么二者有哪些区别呢? 通过上面我们可以看出来,Fiddler是一个抓取客户端和服务器之间的所有 HTTP(https)请求、响应数据的工具,而Jmeter则是进行接口与性能测试工具。 通过以上说明,可以发现它们两者之间没有直接的联系。也就是说如果进行接口测试不一定要使用Fiddler。当然我们也可以通过Fiddler+Jmeter去实现接口测试。 为什么这么讲,主要是我们接口测试可以根据开发模型的不同选择不同的测试节点,下面以V模型开发的项目为例说明: 通过V模型我们可以看出,在“编码”之后我们测试人员就可以开展相应的测试工作了,可以分为单元测试、集成测试、系统测试、验收测试等。而我们的接口测试所 开展的节点可以在集成测试阶段,甚至是单元测试阶段。若在集成测试阶段开展接口测试,那我们所面临的情况就是此时这个系统并没有开发完成! 也就是说此时只是完成了系统后端功能的开发,前端系统的页面还没有开发出来,而没有开发出页面我就无法去访问这个页面,所以此时Fiddler就无法抓取到客户端和服务器之间的所有 HTTP(https)请求、响应。Fiddler抓包必须建立在有页面的基础上。若我们仍然选择在集成测试阶段去做接口测试那么就只能选择专门的接口测试工具去实现,比如选择Jmeter。只要开发人员提供了相应的《接口文档》,测试人员就可以根据《接口文档》再结合Jmeter去实现接口测试。 如何借助Fiddler进行接口测试 Fiddler的工作原理 那下面谈谈借助Fiddler进行接口测试。 如果选择Fiddler+Jmeter进行接口测试,则需要上图中对就的“系统测试”阶段。在系统测试阶段已经完成了整个系统的开发,所以工作内容全部移交给测试人员进行。此时进行接口测试则可以对我们的功能测试进行辅助,实现功能测试时无法实现场景,比如:输入参数**长、必传字段不传、非必传字段不传等等。实现这些场景我们可以不根据《接口文档》,完全通过Fiddler去抓取HTTP请求和HTTP响应等内容,再将我们抓取的结果填写到Jmeter中然后执行就可以进行接口测试。 Fiddler在有些特定情况可以代替一部分Jmeter功能,比如可以composer功能自定义发送一个请求给服务器,查看服务器如何响应,这也相当于是在进行一次接口测试。 此外对于一些APP产品,需要测试在弱网条件下的使用情况,比如在隧道、地下室中网络较差时APP的功能是否正确 。此时我们不必一定要亲身到隧道、地下室中测试,只需要通过Fiddler限制网络访问的速度就可以实现,甚至是模拟服务器异常等 情况都可以实现。 总的来说,Fiddler是我们测试时的一种抓包工具,主要抓取HTTP请求。我们可能通过Fiddler抓取结果再结合Jmeter就可以实现接口测试,而Jmeter则一个款开源免费的接口、性能测试的工具,在你有《接口文档》的情况就可以不需要使用Fiddler去实现接口测试。一个是抓取接口数据据的工具(Fiddler),一个是执行接口测试 的工具(Jmeter)。 大家明白Fiddler与Jmeter的区别了吗?