Fiddler Response私人订制

在客户端接口的测试中,我们经常会需要模拟各种返回状态或者特定的返回值,常见的是用Fiddler模拟各种请求返回值场景,如重定向AutoResponder、请求拦截修改再下发等等。小编在近期的测试中遇到的一些特殊的请求返回模拟的测试场景,借此机会总结分享给大家,抛砖引玉。

特定返回状态码的模拟

近期的项目中,在测试客户端对原网站的异常返回的错误提示处理时,需要模拟网站的不同返回状态。使用Fiddler的小伙伴们会知道,我们可以使用Fiddler的重定向功能AutoResponder来快速模拟,但是AutoResponder中只有几种常用的返回状态码的模拟,所以,需要尝试在Fiddler中添加其他返回状态码。

如果你想学习Fiddler抓包工具,我这边给你推荐一套视频,这个视频可以说是B站播放全网第一的Fiddler抓包工具教程,同时在线人数到达1000人,并且还有笔记可以领取及各路大神技术交流点击文章最下方卡片‘

零基础玩转Fiddler抓包在测试领域应用实战!_哔哩哔哩_bilibili【Python接口自动化测试笔记及视频源码 +微信:mashang-nn 备注(b站555)即可通过 收藏等于白嫖,点赞三连才是真情!】, 视频播放量 1303、弹幕量 2、点赞数 4、投硬币枚数 2、收藏人数 20、转发人数 0, 视频作者 自动化测试码尚科技, 作者简介 领取笔记加微信:mashang-nn 备注:B站555,相关视频:2023专为b站打造的最详细Jmeter接口测试工具实战教程,2023最新pytest接口自动化测试框架,三天带你精通pytest,带你写出最好的代码!(已更新2023新版),从0玩转fiddler抓包在测试领域的四大应用实战!,Fiddler抓包工具实战全网最全最细教程,没有之一,从0玩转Fiddler抓包在测试领域的四大应用实战!,Charles抓包在测试领域应用实战,一小时精通!,接口测试神器:Apifox,究竟有多香!,B站福利!Web自动化测试从0-到项目实战教程,免费学!!!,2023年最全自动化测试实战教程,十天学完!入职阿里,月入30K!,b站最全Jmeter接口测试和Jmeter接口自动化测试实战全集https://www.bilibili.com/video/BV14g4y1H7vv/?spm_id_from=333.999.0.0

在Fiddler中添加不同返回状态的简便方法如下:

STEP-1:进入Fiddler安装路径,查看ResponseTemplates文件夹中的响应样例;

Fiddler Response私人订制_第1张图片

STEP-2: 参照Templates中的样例,拷贝和添加新的返回状态码,以添加504状态码为例;

Fiddler Response私人订制_第2张图片

STEP-3: 重新启动Fiddler,查看AutoResponder中是否有新增的状态码返回;

Fiddler Response私人订制_第3张图片

STEP-4: 以m.sogou.com为例,查看是否返回目标的状态码;

Fiddler Response私人订制_第4张图片

特定字段数据的模拟

小编最近在测试某接口容错时,遇到了这样一个问题,如何在超时判断时间内保证Response中字段值1与实际匹配的前提下,模拟字段2的各种返回值场景。

具体场景如下:客户端对于请求接口返回数据各个字段的处理方式时,先对字段1进行时间戳校验(该字段为客户端在每次请求发送前生成,并通过请求发送给服务端),若校验成功后,才会处理Response中的字段2,测试的目的是对字段2进行容错,需保证排除字段1的干扰,也就是说在请求返回模拟时,需要保证模拟的Response中的字段1与Request中一致(小Tip:客户端请求超时限制约为5s,且与开发沟通后不方便修改)。如何在模拟的Response中字段1一致的前提下,修改字段2的值呢?

修改“Customize Rules"

修改Fiddler中的“Customize Rules",可以模拟特定域名的请求返回的Json数据中的特定字段。

具体添加内容如下:

// 判断是否为目标请求
var isVoiceRequest = false;
if ((oSession.host == "xx.xx.xx.xx") &&   // host  
oSession.fullUrl.Contains("xx/xxi/xx"))   // url
{
isVoiceRequest = true;
}
// 修改返回JSON串
if (isVoiceRequest)
{
// 1, 获取Response Body中JSON字符串
var responseStringOriginal =  oSession.GetResponseBodyAsString();
//FiddlerObject.log(responseStringOriginal);    // 可在控制台中输出Log   
// 2, 转换为可编辑的JSONObject变量
var responseJSON = Fiddler.WebFormats.JSON.JsonDecode(responseStringOriginal);        
// 3, 修改JSONObject变量
// 3.1修改字段
responseJSON.JSONObject['data']['voice'] = "testtesttest";
// 3.2添加字段
// 4, 重新设置Response Body
var responseStringDestinal = Fiddler.WebFormats.JSON.JsonEncode(responseJSON.JSONObject);
//FiddlerObject.log(responseStringDestinal);
oSession.utilSetResponseBody(responseStringDestinal);
}

通过该种方式,可以模拟修改,特定域名请求Response中Json数据的特定字段值。

特定加密返回值的模拟

测试中会遇到请求返回密文的情况(常见的有URLencode、Base64编码等),这种情况下就需要先进行解密处理。

Fiddler的TextWizard

Fiddler自带的TextWizard可以对常见的多种密文进行解密,还可以反向编码,例如本次场景,可以对解密的原文进行修改后(改成异常内容情况),再进行加密,从而得到待模拟的特定返回内容。这样可以不用再查找借助第三方的编码工具。

Fiddler Response私人订制_第5张图片

结束语

以上为小编在测试过程中发现的比较好的Fiddler模拟请求Response小方法,在此分享共勉。

你可能感兴趣的:(fiddler,软件测试,测试工具,python,经验分享)