基于Fiddler的APP抓包及服务端模拟

在HTTP接口的测试过程中,一般我们会按照如下的步骤进行:

1)测试环境的准备

2)HTTP消息体的构造

3)HTTP消息的发送及断言

如果我们可以拿到项目组的接口文档,并且HTTP后台服务是可以工作的,那我们的接口测试会非常顺利,可以不使用Fiddler工具。

但是,实际情况中,不断的测试前移,需要我们的接口自动化测试用例在编码工作还未完成的情况下,就能准备完成。代码开发完成之后,直接运行自动化用例。

这种情况下,Fiddler工具就能大显身手了。本文介绍两种Fiddler工具的使用场景:

1)在没有接口文档的情况,使用Fiddler抓包,获得HTTP后台接口;

2)在没有HTTP后台服务的情况下,使用Fiddler模拟服务端。

01

移动APP下Fiddler 抓包

为了行文及截图方便,我们使用android模拟器操作,真机的操作步骤一样:

1)让手机和PC在同一个局域网下面,如果PC是笔记本,它们连接同一个wifi网络即可

2)找到PC的IP地址,如下图,运行ipconfig,得到192.168.0.103:

3)在Fiddler工具上点击:Tools->TelerikFiddler Options->connections,在如下的Allow remote computers to connect 的勾打上,记住Fiddler的监听端口8888,稍后会使用上

4)打开手机,长按已连接的wifi网络,点击修改网络

5)在代理上面选择手动,IP填写上面获取的192.168.0.103,端口填写Fiddler的监听端口8888,之后点击保存。

6)此时,我们在手机上面,打开被测试移动APP,在Fiddler上面就可以看到消息体了。以华为应用市场为例:

我们打开华为应用市场,点击我的:

截取的消息如下:

我们可以清晰的看到通过post接口发送的消息包括headers以及body等,以及响应消息体:

至此,移动APP的前后台抓包大功告成。

02

使用Fiddler模拟服务端

通过Fldder的AutoResponder可以做到模拟服务端。

首先,我们介绍最简单的服务模拟方式,即我们有真实响应的情况下,如何模拟服务端。

1)选中我们需要模拟的消息,也就是第11条:

2)保存该消息的响应消息体,用于我们的桩去回一样的响应:

3)点击模拟功能的入口AutoResponder,选中Enablerules,以及Unmatched requests passthrough:

4)点击添加一条规则,在最下面的响应消息下拉框中,选中find a file,指向我们上面保存的文件

5)这样,一条消息的服务端模拟就完成了。

6)我们使用postman检验一下,响应消息和预期的一样,并且是在我们本机的桩上响应的。

上面的这个例子,我们使用了精确匹配EXACT,是最简单的应用。实际上,很多时候,服务端响应的消息体是需要我们自己去构造的,并且上面的消息匹配方式是精确匹配,应用面偏窄了些,这些再普及一下自动匹配的一些知识:

关于自动匹配,可以使用的有:

前缀为“EXACT:”表示完全匹配(大小写敏感)

无前缀表示基本搜索,表示搜索到字符串就匹配

前缀为“REGEX:”表示使用正则表达式匹配

前缀为“REGEX:(?insx)”表示匹配方式其中:

  • i表示不区分大小写;
  • n表示指定的唯一有效的捕获是显式命名或编号的形式;
  • s表示单行模式;
  • x表示空格说明的;

本文分享自微信公众号 - V社 北京社(SoftwareTesters)

原文出处及转载信息见文内详细说明,如有侵权,请联系 yunjia_community@tencent.com 删除。

原始发表时间:2019-04-15

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏腾讯技术工程官方号的专栏

代码之美,正则之道

? 导语 “如果罗列计算机软件领域的伟大发明,我相信绝对不会超过二十项,在这个名单当中,当然应该包括分组交换网络,Web,Lisp,哈希算法,UNIX,编译技...

9530
来自专栏call_me_R

谈谈正则表达式

基础语法的东西,记住下相关的英文就比较好理解了,比如: digit指的是数字[0-9],转换为正则关键字为\d,而其大写\D则表示非digit,即非[0-9]。

9420
来自专栏Eureka伽罗的技术时光轴

delphi使用bcb的c++ .obj .o,lazarus x64内联汇编,att和intel

The {$ASMMODE XXX} directive informs the compiler what kind of assembler it can ...

14720
来自专栏渔夫

Java-正则表达式学习总结

版权声明:署名,允许他人基于本文进行创作,且必须基于与原先许可协议相同的许可协议分发本文 (Creative Commons)

11820
来自专栏LNMP开发那些事

正则表达式的使用

preg_filter 执行正则表达式搜索和替换 preg_grep 返回匹配模式的数组条目 preg_last_error 返回最后一个正则...

8020
来自专栏卯金刀GG

nginx rewrite指令

语法:rewrite regex replacement [flag]; 默认值:无 作用域:server,location,if 如果一个URI匹配指定...

8510
来自专栏keinYe

Python 正则表达式

在开始之前我们先要明白两个问题。 1、什么是正则表达式? 2、为什么要学习正则表达式? 人类在做一件事之前,总是会先问一下为什么要这么做『你可能说你没有这么想过...

8220
来自专栏数据处理与分析

正则在FME中的应用

能看到此文,我就粗暴的认为你已经对FME有了一定的了解。不了解没关系可以去FME博客进行学习,也可以去看FME十分钟进行相关的了解。下面我将结合...

10220
来自专栏铭毅天下

干货 | Logstash自定义正则表达式ETL实战

本文建立在干货 | Logstash Grok数据结构化ETL实战上,并专注于在Grok中使用自定义正则表达式。

15910
来自专栏李才哥

Date.prototype.format

Date.prototype.format = function(format){

21030

扫码关注云+社区

领取腾讯云代金券

年度创作总结 领取年终奖励