课程咨询: 400-996-5531 / 投诉建议: 400-111-8989
认真做教育 专心促就业
对于许多的软件开发工程师来说,对自己的软件产品进行功能性测试是保障软件正常运行的必要步骤。而市面上能够进行相关测试的工具也有很多种,我们今天就给大家介绍其中一种测试工具的使用方法。
下面,我们就开始今天的主要内容吧,希望大家通过对本文的学习,能够提高功能性软件测试方面的知识与能力。
Fiddler是一款HTTP协议调试代理工具,因为功能强大,交互友好,使用方便,fiddler已经成为功能测试同学不可或缺的抓包工具。与此同时,fiddler具备良好的可扩展性,测试同学可以基于fiddler提供的接口开发符合自身业务需求的插件。通过fiddler插件开发可以实现对httprequest和response的自动修改,并且可以定制自己的检查规则对网络请求进行校验。
最近sdk业务出于安全性考虑,对部分网络请求进行了加密,以密文形式进行传输。而sdk打点数据完整性和正确性校验是业务测试同学的测试重点,密文形式的数据传输极大影响了测试同学的测试进度。因此,笔者临危受命为功能测试同学解决请求加密问题。考虑到功能测试同学平常使用fiddler进行抓包校验,因此笔者决定开发一款fiddler插件对sdk请求进行解密,然后以明文显示在UI上,方便测试同学校验。下面,笔者就来唠一唠如何进行fiddler插件开发。
环境准备
工欲善其事必先利其器,着手开发之前,我们需要将开发环境部署好。
.netframework
本文安装使用的是.netframeworkv4.5.2。
visualstudio
fiddler官方推荐visualstudio2010以上版本。本文使用visualstudio2015.
fiddler安装
本文安装了fiddler4。
开发宝典
网上关于fiddler插件开发资料较少。大家可以通过以下方式获取fiddler插件开发知识:
1.开发者文档
fiddler的官方文档:
官网提供了较全面的fiddler插件开发步骤和相应的api知识。
2.开源项目
大家可以在github上通过fiddler等关键字搜索优秀的开源项目,学习前人的插件开发经验.
3.官方插件
反编译fiddler自带的插件(.dll)文件。笔者使用的是.netreflector反编译软件:
例如,在fiddler中查看Inspectors对应的插件:
选中Inspectors中任意一个tab,然后右键点击“inspectorproperties",查看inspector对应的插件。
使用reflector反编译standard.dll文件,可以了解fiddler提供的接口更详细的信息。
开启fiddlerdebug功能
1.在fiddler命令行工具中开启debug功能
2.显示错误和异常信息
prefssetfiddler.debug.extensions.showerrorsTrue
3.显示log信息
prefssetfiddler.debug.extensions.verboseTrue
开启log显示后,开发者输出的log信息显示在fiddler右侧的logtab的界面中。
开发者可以使用如下接口显示日志信息:FiddlerApplication.Log.LogString()。
新建C#工程
1.在visualstudio中创建一个C#类库工程
选择C#类型项目
fiddler自身基于C#进行开发
选择类库
插件以.dll形式进行加载
2.添加fiddler引用
为项目添加引用
选择fiddler.exe
添加fiddler引用,为插件开发提供库函数支持和接口api。
3.设置Fiddler.RequiredVersion属性
在AssemblyInfo.cs文件中添加fiddler要求的版本号:[assembly:Fiddler.RequiredVersion("4.6.20171.9220")]
具体的版本号,视本地安装fiddler版本而定
构建插件
1.fiddler接口知识
在进一步开发之前,需要明确fiddler插件开发的一些规则和特点,避免踩坑。
接口分类
fiddler提供的接口有多种类别,例如IFiddlerExtension,IAutoTamper,Inspector2,IHandleExecAction等。开发者应该根据具体的业务需求,在插件中实现不同的接口逻辑。
IFiddlerExtension:该接口在fiddler启动时便会调用。
IAutoTamper:对于每个httprequest和response都会自动调用该接口。
Inspector2:当用户选中某一个网络请求,触发该接口逻辑处理。
IHandleExecAction:用户在QuickExec输入命令时,会触发该接口执行。
插件存放位置
fiddler不同类型的插件存放在不同的位置。
IFiddlerExtension、IAutoTamper接口扩展插件主要存放在fiddler安装目录的Scripts文件夹下。
Inspector2接口扩展插件主要存放在fiddler安装目录Inspectors文件夹下。
2.扩展接口
下面回到正题,业务的需求是需要对sdk的加密请求进行解密,并且以明文显示在界面中。所以,笔者需要实现Inspector2,IRequest2接口。并且在抽象方法中实现自己的业务逻辑。
主要接口扩展代码如下:
body数据和header数据在body、headers函数中接口会自动注入。
Inspectors2接口需要用户实现UI逻辑,开发者可以定制自己的UI显示:
选中项目-->右键-->添加-->用户控件
选中用户控件,在控件中实现UI逻辑
开发者实现了自身业务逻辑,基本上完成了fiddler插件开发
3.运行&调试
自动部署插件
为了避免每次生成.dll都要拷贝到Inspectors文件夹下,可以在VS中配置build之后的执行动作,自动拷贝.dll到指定目录。
copy"$(TargetPath)""XXXXXXXX\fiddler\Fiddler4\Inspectors\$(TargetFilename)"
调试配置
开发者调试的过程可以自动调起fiddler进行插件加载。
4.成品
DecryptionFormatJson对加密请求进行解密,并以json格式进行显示,方便功能测试人员进行校验。
写在最后
业务测试中,在fiddler不能满足业务需求的情况下,或者需要对数据包进行自动校验和检查,可以定制有特殊业务需求的fiddler插件。
各位测试同学,如果你的业务也有这样的需求,赶紧动手吧~~
作/译者:喻胜
出处:Qtest之道
【免责声明】本文系本网编辑部分转载,转载目的在于传递更多信息,并不代表本网赞同其观点和对其真实性负责。如涉及作品内容、版权和其它问题,请在30日内与管理员联系,我们会予以更改或删除相关文章,以保证您的权益!