文章目录
- 一.测试思路
-
- 二.Fiddler测试环境配置
- 2.1Fiddler PC配置
- 2.2模拟器端配置
- 2.3模拟器端代理设置
- 三.Fiddler测试工作应用场景
- 3.1 Fiddler抓包辅助定位Bug原因
- 1) Inspectors模块查看抓包信息
- a.服务器映射
- b.请求Session过滤
- c.抓取数据
- 2) Https协议的抓包配置
- a.PC安装 Fiddler 根证书
- b.模拟器/手机安装 Fiddler 根证书
- 3.2 Fiddler模拟构建测试场景-MOCK
- 1) Breakpoints设置断点中断请求/响应
- a.设置断点-Before Requests-拦截请求
- b.设置断点-After Responses-伪造响应
- 2) AutoResponder模块伪造服务器响应数据
- 3.3 Fiddler模拟弱网测试-Simulate Modem Speeds
- 3.4 Fiddler前端性能分析-Statistic
- 四.原创手动码字,喜欢就点赞收藏哦
一.测试思路
1.1App测试内容
笔者认为对Web还是App测试思路通常应先按照测试类型来进行考虑。
类型 | 内容 |
---|
功能测试 | 业务逻辑的正确性测试;以某商品网站搜索功能为例: **单功能测试:**考虑单个关键字和多个关键字等;功能交互测试:考虑搜索已下架的商品、搜索已删除的商品等;用户场景测试:考虑在登录之后的搜索,未登录时候的搜索等。 |
性能测试 | 负载测试、压力测试、容量测试等通过Emmagee、Solopi、Monkey监测性能指标,包括时间(adb logcat|finstr exception)、存储空间(du -sh/adb shell)、CPU、GPU占用、流量、电量消耗等 |
兼容测试 | 对App,通过腾讯云、华为云等云测平台,测试操作系统版本、机型、分辨率等兼容性 |
网络测试 | 对App,通过NEWT、ATC、Qnet、Fiddler等,测试不同网络下(2G、3G、4G、WiFi)的表现,弱网、无网、网络切换的测试 |
安装测试 | 对App,各版本的安装/卸载/升级测试,启动检查测试 |
中断测试 | App遇到断网、断电、闪退、通话、收到异常数据 |
用户体验测试 | 操作是否方便,界面是否美观 |
1.2APP功能测试思路
以钉钉中发送消息功能为例:
-
单功能测试:考虑发送文本、图片、语音、视频消息等;
-
功能交互测试
-
与手机本身功能的交互,如通话、短信、闹钟等。在编辑待发送消息时接听、拒接电话等;
-
与手机助手App功能的交互,如限制低电量时不允许使用网络,此时发送消息;
-
与App本身功能的交互,给已拉黑自己好友发消息、给已删除自己好友发消息、给被封号好友发消息等;
-
用户场景测试:如连续发送消息、撤回已发送消息再发送等;
-
特殊的测试点:手机横竖屏、分屏;通知栏;长按、滑屏、双击等对应的App功能操作。
二.Fiddler测试环境配置
移动App测试,仅通过界面上测试往往不够,常常还需要使用抓包工具,抓取App、Server
之间数据的交互,更详细的测试。常用抓包工具有 Fiddler(Windows)、Charles(Windows、Mac)。有关Wireshark可参考我另一篇《Wireshark 抓包过滤器使用》。
2.1Fiddler PC配置
Fiddler -> Tools -> Options -> Connections
中,全勾选【允许远程计算机(包括真机/模拟器)连接】,默认监听端口是 8888
![image-20200906144344912](https://img-blog.csdnimg.cn/img_convert/94d9099a9b3244f2356a700cd5ccf302.png#pic_center)
- 访问该主机 IP 的 Fiddler 默认端口,如 http://192.168.137.1:8888/ 或 http://localhost:8888 ,出现以下内容,即验证 Fiddler 代理服务已启动
![image-20200906150150206](https://img-blog.csdnimg.cn/img_convert/6f2b1ffd254618750be0ee94b3dca7b1.png#pic_center)
2.2模拟器端配置
- 下载逍遥模拟器,安装完后复制
adb.exe
所在路径
![image-20200906151608870](https://img-blog.csdnimg.cn/img_convert/e5437cb3b0555d4389d628932153f3d0.png#pic_center)
- 将
adb (Android debug bridge)
路径,注册到环境变量(用户或系统级别)
![image-20200906151209367](https://img-blog.csdnimg.cn/img_convert/c8fad9ab8d211315e0d7b715813bc50e.png#pic_center)
2.3模拟器端代理设置
查看所连接设备App的抓包,首先要使【安卓端模拟器代理】和【PC端Fiddler代理】保持一致。
![image-20200906153230735](https://img-blog.csdnimg.cn/img_convert/2aafbbecffd86739683aaae4502d6ef2.png#pic_center)
- 模拟器网络–高级选项,设置 Fiddler 手机代理为连接的主机IP
192.168.137.1:8888
与一致
![image-20200906153446620](https://img-blog.csdnimg.cn/img_convert/523a5cc6d8bd174cc3592c875cb74f8c.png#pic_center)
三.Fiddler测试工作应用场景
笔者总结以往工作经历,Fiddler大致有四类测试应用场景:
Fiddler模块 | 应用场景 | 具体使用 |
---|
Inspectors | 抓包辅助定位Bug原因 | ①通过参数分析是前端还是后端;②参数是否加密;③在没有接口文档时抓包获得Http后台接口 |
AutoResponder、BreakPoints | Mock模拟构建测试场景 | ①绕过前端测试功能在服务端处理异常请求的场景;②前后端开发进度不一致,没有HTTP后台服务情况下;③或要快速验证完信息匹配测试 |
Simulate Modem Speeds | APP弱网测试 | 设置模拟调制解调器的速度,模仿不同网络速率 |
Statistic、Timeline | 前端性能分析调优 | 客户端开始请求、服务器获取请求、开始响应、完成响应等时间点 |
3.1 Fiddler抓包辅助定位Bug原因
合格的测试攻城狮,不仅需要能发现Bug,还需要能透过Bug表象,分析定位出Bug的根本原因,从而提升开发的Bug的解决效率。因此提Bug时,不能直接把APP页面报错信息截个图就了事,而不去定位Bug。
通过Fiddler->Inspectors
抓取request、response
,分析参数可以定位Bug是前端还是后端问题。
例如:APP内输入数据,点下一步时,提示错误;这时候不能判断问题的根本原因在哪里?
是前端页面限制导致?**前端request参数问题?或者后端程序挂了?**此时可通过Fiddler抓包,分析请求、响应判断Bug的根本原因。
1) Inspectors模块查看抓包信息
Fiddler - Inspectors 模块
支持多种不同格式如 Raw、WebForm
来查看请求数据、响应数据信息。
a.服务器映射
有时由于被测试App版本过旧问题,App访问服务器不成功。可在Fiddler -> Tools -> Options -> Hosts
设置 App 所访问服务器 shop.ecmobile.cn
与所测试服务器 118.25.179.224
映射关系。重启ECMoblie.apk
即可正常访问App的服务器网络。
![image-20200906154149125](https://img-blog.csdnimg.cn/img_convert/23f091c12ff7c2bed1398907c32e7a90.png#pic_center)
b.请求Session过滤
在过滤器 Filters
勾选 Use Filters
并选择 show only the following hosts
可只查看指定服务器的抓包,如 shop.ecmobile.cn;cloud.ecmobile.cn
![image-20200906155407417](https://img-blog.csdnimg.cn/img_convert/2ba01f0c7b2a84ea23295bb5647c2b83.png#pic_center)
c.抓取数据
如图Inspectors
模块请求部分的 Headers
(请求头),JSON
(响应数据),还可以查看WebForms、Raw
等格式
![image-20200906155958102](https://img-blog.csdnimg.cn/img_convert/14c8f3a1159b416b6bb42ec36720d74c.png#pic_center)
2) Https协议的抓包配置
a.PC安装 Fiddler 根证书
Fiddler -> Tools -> Options -> HTTPS
勾选 Capture HTTPS CONNECTs
及 Decrypt HTTPS traffic
,允许捕获 HTTPS 连接并破解 HTTPS
![image-20200906164457229](https://img-blog.csdnimg.cn/img_convert/e93c993a19086195b36ef7bb89825efd.png#pic_center)
![image-20200906164913400](https://img-blog.csdnimg.cn/img_convert/e48b212d6a3241d99e83e59a8eff9f60.png#pic_center)
![image-20200906164938945](https://img-blog.csdnimg.cn/img_convert/8712082d213282418d519a29b294e9a0.png#pic_center)
![image-20200906165032733](https://img-blog.csdnimg.cn/img_convert/d0b3bbc4911345f11302841e27dc5d78.png#pic_center)
b.模拟器/手机安装 Fiddler 根证书
- 模拟器/手机端浏览器访问主机IP的8888端口 http://192.168.137.1:8888/ 下载 FiddlerRoot certificate 安装
![image-20200906165637760](https://img-blog.csdnimg.cn/img_convert/d27dd0285b0cd449f484fb0e9507fc51.png#pic_center)
![image-20200906165850929](https://img-blog.csdnimg.cn/img_convert/26cfaf5bc17605a9908c4bec312de918.png#pic_center)
3.2 Fiddler模拟构建测试场景-MOCK
为保证测试覆盖率,要验证某个功能在各种场景下的业务处理能力,包括正常、异常场景,但这还不是所有场景。
如:对某个功能在服务端处理异常请求的场景,只通过页面端(前端)来发起是不行的
- 登录功能:输入超出长度的账号、密码,基本都在前端就提示错误了,这样就不能测试服务端接收到超出长度请求时的处理场景——需要绕过前端,拦截请求,再发送修改后的异常请求,测试响应是否符合预期。
如:对前后端开发进度不一致,没有HTTP后台服务情况下或要快速验证完信息匹配测试,需要模拟服务器端响应
- 天气预报:只能根据当前城市、天气情况来测试——要快速将全部天气信息和匹配图标、出行提示验证完毕,就可以修改响应数据来实现测试场景。
通过Fiddler的Breakpoints、AutoResponsder
等修改request、response
参数来模拟构建测试场景。
1) Breakpoints设置断点中断请求/响应
a.设置断点-Before Requests-拦截请求
![image-20210407020113116](https://img-blog.csdnimg.cn/img_convert/642cc654a6000adac73650e591240fe5.png#pic_center)
-
第二种,bpu URL
命令行输入“bpu命令+Host地址”如 bpu https://s.taobao.com
(只会中断该会话)
-
未启用断点拦截请求(Disabled)
前,请求参数不可修改![image-20210407215101929](https://img-blog.csdnimg.cn/img_convert/94842cb7617c6c078252305c627c0b5d.png#pic_center)
-
启用断点拦截请求(Before Requests)
后,可突破前端对表单输入的限制,在Inspectors->WebForms
将请求参数修改为特殊边界值等测试数据,点Run to Completion
发送修改后请求,测试后端响应是否符合预期![image-20210407220739911](https://img-blog.csdnimg.cn/img_convert/9f6d3b04272f5f023b67a1ed9b0df464.png#pic_center)
-
下图为Fiddler请求断点设置成功的提示
![image-20210407215936362](https://img-blog.csdnimg.cn/img_convert/fc87587e00d5a354f5a859014b8cc579.png#pic_center)
b.设置断点-After Responses-伪造响应
-
第一种,Rules->Automatic BreakPoints->After Responses
或Alt+F11
(会中断所有会话)
第二种,bpafter URL
命令行输入“bpafter+Host地址”(只会中断该会话)
![image-20210409035409785](https://img-blog.csdnimg.cn/img_convert/95517b81d9fe4c8795ff7d9942f27460.png#pic_center)
-
启用断点修改响应(After Responses)
后,可在Inspectors->TextView
修改响应体内容
如图浏览器会一直处于加载状态,请求会被挂起
![image-20210409032450298](https://img-blog.csdnimg.cn/img_convert/9d2510eb94c8684c2b880933779a1de5.png#pic_center)
例如:在响应体中修改某商品为“100000000人付款”,点Run to Completion
回送修改后的响应,测试页面展现的变化情况;实际当中响应修改会更复杂一些,此处仅为示例。
![image-20210409034004911](https://img-blog.csdnimg.cn/img_convert/16cc7a3ee367abd7fdb3e2c2a8688039.png#pic_center)
如图,响应的Web页面已经对应发生变化了
![image-20210409034305755](https://img-blog.csdnimg.cn/img_convert/1d14911603aed893f80abd1e92ccb85e.png#pic_center)
-
下图为Fiddler响应断点设置成功的提示
![image-20210409031933705](https://img-blog.csdnimg.cn/img_convert/9cc3834696adb9293f1a97a50434baee.png#pic_center)
2) AutoResponder模块伪造服务器响应数据
AutoResponder模块
可快速模拟服务器在各种情况下响应的数据,给APP发送伪造的响应数据,从而测试不同场景下APP的响应。
以测试把商品订单添加到购物车后,结算为待付款状态为例,一件件加显然不可能,可修改响应体中待付款数字1为1000
:
-
注册一个账户登录并购买一个商品不付款
![image-20200906161018006](https://img-blog.csdnimg.cn/img_convert/e91c6687cd860124c78c036d54e39e08.png#pic_center)
-
在 Fiddler 中能查到对应操作的抓包列表
![image-20200906161540337](https://img-blog.csdnimg.cn/img_convert/8947ae0fdbebde00f7e554f890990146.png#pic_center)
-
找到购物车对应的抓包信息,在 Inspector 模块下查看 Headers (请求信息头) 和 JSON (响应数据)
![image-20200906173450428](https://img-blog.csdnimg.cn/img_convert/59c775f2daabdd3ba057ef4a1aaad3c5.png#pic_center)
-
Fiddler 抓包列表选中要篡改的记录 ,右键 Save 完整的“Response”响应数据Cui_My_Response.txt
![image-20200906180951056](https://img-blog.csdnimg.cn/img_convert/07d24633a36c92b1344ef23f1a047ddf.png#pic_center)
-
AutoResponder->Add Rule
,将刚保存的响应数据 Cui_My_Response.txt
添加为响应规则 ![image-20200906181225137](https://img-blog.csdnimg.cn/img_convert/c22060260dd622668301d531b1a40f39.png#pic_center)
-
Inspectors->JSON
选择要修改的抓包项,在它响应数据中的 JSON,发现对应待付款字段是 await_pay=0
![image-20200906180745860](https://img-blog.csdnimg.cn/img_convert/a50825109a6a296b7eb18ba75b41599c.png#pic_center)
-
编辑Cui_My_Response.txt
修改响应体中 "await_pay":"0"
为 "await_pay":"1000"
,保存后关闭![image-20200906181410408](https://img-blog.csdnimg.cn/img_convert/21b0f49d94c4fe0e8fd76286ba84e266.png#pic_center)
-
模拟器App个人中心查看“待付款”的结果已经变成1000,初步测试出了UI出现了错乱![image-20200906182733196](https://img-blog.csdnimg.cn/img_convert/79f00a5cc88b1ce299699f714dea4d3a.png#pic_center)
3.3 Fiddler模拟弱网测试-Simulate Modem Speeds
App测试与Web测试的不同点之一是:网络的多样性。不同网络环境、制式的差异,都会对App造成一定影响。
因此需要保证各种情况下(2G-4G、WiFi、网络切换,DNS劫持,IP更换等)功能正常使用、响应时间合理。
如:地铁、郊区、电梯,若没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到闪退、ANR、数据丢失等问题。
![image-20210411021349072](https://img-blog.csdnimg.cn/img_convert/5599661a33d1911565b8439b24e1ae3c.png#pic_center)
-
Rules->Performances->Simulate Modem Speeds
启动使用模拟调制解调器的速度
![image-20210411022422105](https://img-blog.csdnimg.cn/img_convert/17e6b89d48bd700a1af9fe4b7296d3c4.png#pic_center)
-
在弱网条件下操作App,通过查看第一个和最后一个请求的Statistics
,获得完整加载的耗时。
-
或对同一个接口,对比开启弱网前后的数据。通过Timeline
条形图表可以直白观察到耗时最多的请求,为页面访问速度的优化提供依据。
![image-20210411023559990](https://img-blog.csdnimg.cn/img_convert/b3d54d6cf9f1f9184a7fbc66ba32f40c.png#pic_center)
3.4 Fiddler前端性能分析-Statistic
前端性能数据可通过Fiddler->Statistics、Timeline
获取,从而为性能分析及优化提供依据,提升用户体验。
指标时间包括了:客户端连接、客户开始请求、获取请求头、HTTPS握手、服务器获取请求、服务器开始响应、服务器完成响应、总运行时间等等
ACTUAL PERFORMANCE
--------------
ClientConnected: 02:25:15.251
ClientBeginRequest: 02:27:11.869
GotRequestHeaders: 02:27:11.869
ClientDoneRequest: 02:27:11.869
Determine Gateway: 0ms
DNS Lookup: 0ms
TCP/IP Connect: 23ms
HTTPS Handshake: 79ms
ServerConnected: 02:27:11.889
FiddlerBeginRequest: 02:27:11.969
ServerGotRequest: 02:27:12.929
ServerBeginResponse: 02:27:12.929
GotResponseHeaders: 02:27:12.929
ServerDoneResponse: 02:27:12.929
ClientBeginResponse: 02:27:12.929
ClientDoneResponse: 02:27:13.249
Overall Elapsed: 0:00:01.379
四.原创手动码字,喜欢就点赞收藏哦
博主CSDN@崔同学原创手动码字,喜欢记得点赞收藏哦 😃
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)