App移动端测试-Fiddler工作场景总结

2023-05-16

文章目录

    • 一.测试思路
      • 1.1App测试内容
      • 1.2APP功能测试思路
    • 二.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

  • 访问该主机 IP 的 Fiddler 默认端口,如 http://192.168.137.1:8888/ 或 http://localhost:8888 ,出现以下内容,即验证 Fiddler 代理服务已启动
    image-20200906150150206

2.2模拟器端配置

  • 下载逍遥模拟器,安装完后复制 adb.exe 所在路径

image-20200906151608870

  • adb (Android debug bridge) 路径,注册到环境变量(用户或系统级别)

image-20200906151209367

  • 启动模拟器后,运行 adb devices 验证模拟器连接正常,adb install 安装待测试应用 ECMoblie_v3.2.apk

    image-20200906152751767

2.3模拟器端代理设置

查看所连接设备App的抓包,首先要使【安卓端模拟器代理】和【PC端Fiddler代理】保持一致。

  • 模拟器设置–修改网络

image-20200906153230735

  • 模拟器网络–高级选项,设置 Fiddler 手机代理为连接的主机IP 192.168.137.1:8888与一致

image-20200906153446620

三.Fiddler测试工作应用场景

笔者总结以往工作经历,Fiddler大致有四类测试应用场景:

Fiddler模块应用场景具体使用
Inspectors抓包辅助定位Bug原因①通过参数分析是前端还是后端;②参数是否加密;③在没有接口文档时抓包获得Http后台接口
AutoResponder、BreakPointsMock模拟构建测试场景①绕过前端测试功能在服务端处理异常请求的场景;②前后端开发进度不一致,没有HTTP后台服务情况下;③或要快速验证完信息匹配测试
Simulate Modem SpeedsAPP弱网测试设置模拟调制解调器的速度,模仿不同网络速率
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

b.请求Session过滤

在过滤器 Filters 勾选 Use Filters 并选择 show only the following hosts 可只查看指定服务器的抓包,如 shop.ecmobile.cn;cloud.ecmobile.cn

image-20200906155407417

c.抓取数据

如图Inspectors 模块请求部分的 Headers(请求头),JSON(响应数据),还可以查看WebForms、Raw等格式

image-20200906155958102

2) Https协议的抓包配置

a.PC安装 Fiddler 根证书
  • Fiddler -> Tools -> Options -> HTTPS 勾选 Capture HTTPS CONNECTsDecrypt HTTPS traffic,允许捕获 HTTPS 连接并破解 HTTPS

image-20200906164457229

  • 同意安装 Fiddler 根证书

image-20200906164913400

  • 信任证书成功

image-20200906164938945

  • Options -> HTTPS -> ActionsOpen Windows Certificate Manager打开 certmgr 证书管理中心

    image-20200906164629720

  • 查看已安装的 DO_NOT_TRUST_FiddlerRoot certificate 证书

image-20200906165032733

b.模拟器/手机安装 Fiddler 根证书
  • 模拟器/手机端浏览器访问主机IP的8888端口 http://192.168.137.1:8888/ 下载 FiddlerRoot certificate 安装

image-20200906165637760

  • 安装证书可命名为 Fiddler

image-20200906165850929

  • 访问 HTTPS 协议站点如 https://www.baidu.com,用 Fiddler -> Inspectors 查看返回的 https 响应信息

    image-20200906171123449

3.2 Fiddler模拟构建测试场景-MOCK

为保证测试覆盖率,要验证某个功能在各种场景下的业务处理能力,包括正常、异常场景,但这还不是所有场景。

如:对某个功能在服务端处理异常请求的场景,只通过页面端(前端)来发起是不行的

  • 登录功能:输入超出长度的账号、密码,基本都在前端就提示错误了,这样就不能测试服务端接收到超出长度请求时的处理场景——需要绕过前端,拦截请求,再发送修改后的异常请求,测试响应是否符合预期。

如:对前后端开发进度不一致,没有HTTP后台服务情况下要快速验证完信息匹配测试需要模拟服务器端响应

  • 天气预报:只能根据当前城市、天气情况来测试——要快速将全部天气信息和匹配图标、出行提示验证完毕,就可以修改响应数据来实现测试场景。

通过Fiddler的Breakpoints、AutoResponsder等修改request、response参数来模拟构建测试场景。

1) Breakpoints设置断点中断请求/响应

a.设置断点-Before Requests-拦截请求
  • 第一种,Rules->Automatic BreakPoints->Before RequestsF11 (会中断所有会话)image-20210407015644365

    也可以在工具最下方切换图标来控制断点状态

image-20210407020113116

  • 第二种,bpu URL命令行输入“bpu命令+Host地址”如 bpu https://s.taobao.com(只会中断该会话)

  • 未启用断点拦截请求(Disabled)前,请求参数不可修改image-20210407215101929

  • 启用断点拦截请求(Before Requests)后,可突破前端对表单输入的限制,在Inspectors->WebForms将请求参数修改为特殊边界值等测试数据,点Run to Completion发送修改后请求,测试后端响应是否符合预期image-20210407220739911

  • 下图为Fiddler请求断点设置成功的提示

image-20210407215936362

b.设置断点-After Responses-伪造响应
  • 第一种,Rules->Automatic BreakPoints->After ResponsesAlt+F11(会中断所有会话)

    第二种,bpafter URL命令行输入“bpafter+Host地址”(只会中断该会话)

    image-20210409035409785

  • 启用断点修改响应(After Responses)后,可在Inspectors->TextView修改响应体内容

    如图浏览器会一直处于加载状态,请求会被挂起

    image-20210409032450298

    例如:在响应体中修改某商品为“100000000人付款”,点Run to Completion回送修改后的响应,测试页面展现的变化情况;实际当中响应修改会更复杂一些,此处仅为示例。

    image-20210409034004911

    如图,响应的Web页面已经对应发生变化了

    image-20210409034305755

  • 下图为Fiddler响应断点设置成功的提示

image-20210409031933705

2) AutoResponder模块伪造服务器响应数据

AutoResponder模块可快速模拟服务器在各种情况下响应的数据,给APP发送伪造的响应数据,从而测试不同场景下APP的响应。

以测试把商品订单添加到购物车后,结算为待付款状态为例,一件件加显然不可能,可修改响应体中待付款数字1为1000

  • 注册一个账户登录并购买一个商品不付款

    image-20200906161018006

  • 在 Fiddler 中能查到对应操作的抓包列表

    image-20200906161540337

  • 找到购物车对应的抓包信息,在 Inspector 模块下查看 Headers (请求信息头) 和 JSON (响应数据)

    image-20200906173450428

  • Fiddler 抓包列表选中要篡改的记录 ,右键 Save 完整的“Response”响应数据Cui_My_Response.txt

    image-20200906180951056

  • AutoResponder->Add Rule,将刚保存的响应数据 Cui_My_Response.txt 添加为响应规则 image-20200906181225137

  • Inspectors->JSON选择要修改的抓包项,在它响应数据中的 JSON,发现对应待付款字段是 await_pay=0image-20200906180745860

  • 编辑Cui_My_Response.txt 修改响应体中 "await_pay":"0""await_pay":"1000",保存后关闭image-20200906181410408

  • 模拟器App个人中心查看“待付款”的结果已经变成1000,初步测试出了UI出现了错乱image-20200906182733196

3.3 Fiddler模拟弱网测试-Simulate Modem Speeds

App测试与Web测试的不同点之一是:网络的多样性。不同网络环境、制式的差异,都会对App造成一定影响。

因此需要保证各种情况下(2G-4G、WiFi、网络切换,DNS劫持,IP更换等)功能正常使用、响应时间合理。

如:地铁、郊区、电梯,若没有对各种网络异常进行兼容处理,那么用户可能在日常生活中遇到闪退、ANR、数据丢失等问题。

  • Rules->Customize RulesCtrl+R查找到代码,设置网络上行/下行速率

    上行速率默认:1kb/0.3s,即只有3.3kb/s
    下行速率默认:1kb/0.15s,即只有6.6kb/s
    

image-20210411021349072

  • Rules->Performances->Simulate Modem Speeds启动使用模拟调制解调器的速度

    image-20210411022422105

  • 在弱网条件下操作App,通过查看第一个和最后一个请求的Statistics,获得完整加载的耗时。

  • 或对同一个接口,对比开启弱网前后的数据。通过Timeline条形图表可以直白观察到耗时最多的请求,为页面访问速度的优化提供依据。

    image-20210411023559990

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(使用前将#替换为@)

App移动端测试-Fiddler工作场景总结 的相关文章

随机推荐

  • Centos7安装KVM虚拟化

    Centos7安装部署KVM 一 配置网桥 1 备份原来的配置文件2 修改配置文件a 修改已连接的网卡配置文件 以ifcfg eno1为例 b 配置网桥配置文件 xff08 以ifcfg br0为例 xff09 c 重启网卡 xff08 建
  • Nanopi M4 基于Opencv 打开USB摄像头

    一 环境选择 首次使用Nanopi M4 ARM板 xff0c 最初加载的是官方给的rk3399 sd friendlydesktop bionic 4 4 arm64 20190523 img xff0c 但我最终放弃使用该系统 xff0
  • “学C语言计划”后续

    从上一篇日记 学C语言计划 到现在已经过去了一个季节了 季节翻页 xff0c 而我菜鸟依旧 xff01 连大自然节奏都跟不上 xff0c 这真是要作死的节奏啊 几天前 xff0c 考完了高数和C语言 xff0c 顺便 玩完 了 后天要考英语
  • 解决KEIL中ARM编译器不能编译的问题

    keil编译器出现问题 xff0c 根据提示意思就是ARM编译器选择不对的问题 Target 39 Printf 39 uses ARM Compiler 39 V5 06 update 6 build 750 39 which is no
  • C++ ZeroMQ 发布订阅模式例子跟注意事项

    发布订阅模式 接收端 xff1a void context void subscriber 第一步 xff1a zmq ctx new 创建context对象 context 61 zmq ctx new 第二步 xff1a 创建socke
  • 目标检测算法——anchor free

    一 anchor free 概述 1 先要知道anchor 是什么 xff08 这需要先了解二阶段如faster rcnn xff0c 一阶检测器如YOLO V2以后或SSD等 xff09 在过去 xff0c 目标检测通常被建模为对候选框的
  • 度量学习(Metric learning)—— 基于分类损失函数(softmax、交叉熵、cosface、arcface)

    概述 首先 xff0c 我们把loss归为两类 xff1a 一类是本篇讲述的基于softmax的 xff0c 一类是基于pair对的 xff08 如对比损失 三元损失等 xff09 基于pair对的 xff0c 参考我的另一篇博客 xff1
  • Oauth2知识总结

    官网 xff1a OAuth Community Site OAuth是一个关于授权 xff08 authorization xff09 的开放网络工业标准 xff0c 允许用户授权第三方应用访问用户存储在其它应用上的信息 xff0c 而不
  • 重构技巧之策略模式优化业务代码

    重构技巧之策略模式优化业务代码 策略模式对业务代码进行重构背景分析 在日常的开发过程中 xff0c 我们肯定会遇到很多if else或者switch case的业务代码 xff0c 作为维护这类代码的开发者来说 xff0c 分支太长 xff
  • 64位Ubuntu使用john破解密码的No password hashes loaded

    最近研究了一下Linux的密码破解 xff0c 因为正好在学习computer security 计算机信息安全 这门课 我在使用 john the ripper 的时候遇到了一个问题 No password hashes loaded 今
  • Java常量池详解之抓狂的面试题

    今天My partner问我一个让他头疼的Java question xff0c 求输出结果 xff1a 64 author DreamSea 2011 11 19 public class IntegerTest public stati
  • PC软件问题定位工具-windbg

    windbg工具使用 windbg是微软的工具 xff0c 可以从百度或微软官网获取 工具支持 xff1a 分析dmp文件 定位CPU 内存 崩溃等异常问题 代替VS调试C 43 43 程序 这里主要整理了收集或分析dmp文件的相关命令 x
  • Ubuntu18.04使用RealVNC进行远程桌面连接

    可以直接查看最新的 xff1a RealVNC Server Ubuntu 20 04 无显示器连接 虚拟显示器 捉不住的鼬鼠的足迹 CSDN博客 使用Linux服务器 xff0c 在一般情况下是不太用桌面环境的 不过现在我想着开发用Lin
  • CMakeLists.txt 详解

    目录 CMakeLists txt用例详解 xff08 WDS中的用例 xff09 CMakeLists txt作用 生成对象库OBJECT实例 xff08 wds libwds common CMakeLists txt xff09 生成
  • ubuntu16.10安装numpy, scipy, matplotlib

    在Python3 x中安装numpy sudo apt get span class hljs keyword install span python3 pip pip3 span class hljs keyword install sp
  • Linux进程状态分析

    最近在看APUE过程中 xff0c 遇到了一个有关于进程的 僵死进程 的状态 既然遇到了进程状态的问题 xff0c 索性就查了查 Linux内核设计与实现 xff0c 里面给出了5种状态 xff0c 分别是 TASK RUNNING TAS
  • IDEA自动生成Javadoc代码注释

    在日常写代码时往往不会注重注释的格式 规范等问题 xff0c 可能注释都不会写 xff0c 但是一旦代码完成后要交付他人 xff0c 就需要考虑注释的问题了 xff0c 因为重要函数 方法的注释往往对整个代码的阅读起着十分重要的作用 xff
  • VNC连接远程服务器

    记录探索之路 由于跑深度学习算法 xff0c 需要连接服务器 xff0c 以前都是利用XShell连接 xff0c 也比较好用 xff0c 但是没有界面 VNC可以展示界面 xff0c 更加清晰 xff0c 以下是探索的方法 1 下载软件
  • Linux文件权限管理命令学习

    你必须非常努力 xff0c 才能看起来毫不费力 xff01 微信搜索公众号 漫漫Coding路 xff0c 一起From Zero To Hero 前言 本篇文章主要讨论Linux中的文件权限管理命令 xff0c 包括更改文件权限 文件所有
  • App移动端测试-Fiddler工作场景总结

    文章目录 一 测试思路1 1App测试内容1 2APP功能测试思路 二 Fiddler测试环境配置2 1Fiddler PC配置2 2模拟器端配置2 3模拟器端代理设置 三 Fiddler测试工作应用场景3 1 Fiddler抓包辅助定位B