使用 Charles 模拟手机弱网测试

news2025/4/18 10:27:34

在移动互联网时代,网络状况的不确定性给应用程序带来了挑战。尤其是在偏远地区或信号不佳的地方,用户的网络连接可能会变得不稳定。因此,对应用程序进行弱网测试变得尤为重要。Charles Proxy 是一款广泛使用的网络调试工具,它不仅能够捕获和修改 HTTP/HTTPS 请求和响应,还提供了模拟弱网环境的功能。本文将详细介绍如何使用 Charles Proxy 进行弱网测试,并结合实际示例进行演示。

1. 弱网测试的重要性

弱网测试是指在网络状况较差的情况下对应用程序进行测试的过程。这包括但不限于低带宽、高延迟、丢包等情况。弱网测试有助于发现应用程序在网络不稳定时可能出现的问题,例如页面加载缓慢、请求超时、数据丢失等。通过模拟不同的网络环境,开发人员可以验证应用程序在各种网络条件下是否能够正常工作。

2. Charles Proxy 简介

Charles Proxy 是一款跨平台的 HTTP 代理服务器,用于监测 HTTP/HTTPS 请求和响应,以及 SSL/TLS 加密的 HTTPS 流量。它可以帮助开发人员调试网络请求,同时提供了多种高级功能,如断点调试、重放请求、模拟网络环境等。

3. 安装 Charles Proxy
  1. 下载安装包:访问 Charles Proxy 官方网站下载最新版本的安装包。
  2. 安装 Charles:根据操作系统的提示完成安装过程。
4. 配置 Charles 代理

在开始模拟弱网测试之前,需要确保 Charles Proxy 成功配置为系统代理。

  1. 启动 Charles:双击桌面上的 Charles 图标启动 Charles。
  2. 配置系统代理:根据你的操作系统,将网络设置中的 HTTP 代理指向 Charles 的 IP 地址和端口(默认为 127.0.0.1:8888)。
    在这里插入图片描述

在这里插入图片描述

手机端设置代理,确保手机和电脑连接的是同一个WIFI网络,然后设置WIFI为手动代理,填写电脑的IP及上面Charles设置的代理端口8888

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述
设置代理完成后保存设置,一般情况下就能够抓到手机里应用的数据包了,如果不行的话,装一下证书,小编完成上述设置已经能够抓包了。
在这里插入图片描述

如果抓不到包就装下证书,在手机浏览器输入http:\chls.pro\ssl,会自动下载CA证书。
在这里插入图片描述
然后装一下证书
在这里插入图片描述
我这是模拟器直接点击下载文件就能安装,实际手机需要进入“安全设置”–“用户凭据”中手动安装CA证书,这里就不啰嗦了。

  1. 测试代理设置:打开浏览器访问任意网站,确保 Charles 正常捕获网络流量。
    在这里插入图片描述
5. 模拟弱网环境

Charles 提供了“Throttle Settings”功能,可以用来模拟不同类型的网络环境。以下是具体步骤:

  1. 打开 Throttle 设置:在 Charles 主界面的顶部菜单栏中,选择“Proxy” -> “Throttle Settings…”。
    在这里插入图片描述

  2. 选择预设网络类型:Charles 提供了几种预设的网络类型,如 2G、3G、4G 等。对于弱网测试,可以选择 2G 或者自定义网络设置。

  3. 自定义网络设置

    • Downstream Kbps:设置下行带宽。2G 网络的下行带宽通常较低,可以设置为 40 kbps。
    • Upstream Kbps:设置上行带宽。2G 网络的上行带宽同样较低,可以设置为 20 kbps。
    • Latency ms:设置延迟。2G 网络的延迟较高,可以设置为 500 ms。
      在这里插入图片描述

在这里插入图片描述

  1. 启用设置:点击“OK”按钮启用设置。

在这里插入图片描述

6. 实际示例

假设我们要测试一个电商应用在弱网环境下的表现。我们可以通过 Charles 捕获并分析应用在弱网环境下的网络请求。

  1. 启动电商应用:在手机上启动电商应用。
  2. 浏览商品页面:在应用中浏览商品页面,Charles 会自动捕获所有相关的网络请求。
  3. 查看请求详情:在 Charles 的主界面中,可以查看每个请求的详细信息,包括请求 URL、HTTP 方法、响应时间等。
  4. 分析响应时间:重点关注页面加载的时间,查看是否有请求超时或响应时间过长的情况。
  5. 测试登录功能:尝试登录功能,观察是否能够在弱网环境下顺利完成登录操作。
  6. 测试支付流程:进行支付操作,检查支付过程中是否存在网络不稳定导致的问题。
7. 分析测试结果

在完成弱网测试后,需要对测试结果进行分析,找出潜在的问题点,并提出改进措施。

  1. 检查错误码:查看是否有请求返回了错误码,如 4xx 或 5xx 状态码。
  2. 分析超时情况:检查是否有请求超时的情况,特别是对于那些耗时较长的操作。
  3. 优化网络请求:对于那些在弱网环境下表现不佳的请求,可以考虑优化网络请求,例如减少不必要的数据传输、使用更高效的数据格式(如 JSON 代替 XML)等。
  4. 改进用户体验:针对弱网环境下的用户体验问题,可以考虑增加加载指示器、优化缓存策略等。
8. 总结

通过使用 Charles Proxy 进行弱网测试,我们可以模拟真实的网络环境,发现并解决应用程序在弱网环境下的问题。这对于提升应用程序的稳定性和用户体验至关重要。在实际测试过程中,可以根据具体情况调整 Charles 的网络设置,以便更准确地模拟目标网络环境。

通过本文的介绍和示例,相信你已经掌握了如何使用 Charles Proxy 进行弱网测试的基本方法。在实际开发工作中,不断优化测试策略,可以有效提升应用程序的质量和稳定性。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2061638.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

分享小诗梦404炫酷单页面html5源码

源码介绍 分享小诗梦404炫酷单页面html5源码,小诗梦的一个很炫酷页面,感觉应该符合一些人的感觉!可以用来做404页面。 源码下载 分享小诗梦404炫酷单页面html5源码

C++ | Leetcode C++题解之第363题矩形区域不超过K的最大数值和

题目&#xff1a; 题解&#xff1a; class Solution { public:int maxSumSubmatrix(vector<vector<int>> &matrix, int k) {int ans INT_MIN;int m matrix.size(), n matrix[0].size();for (int i 0; i < m; i) { // 枚举上边界vector<int> sum(…

SAP凭证分割【Document Splitting】

在SAP系统中&#xff0c;凭证分割&#xff08;Document Splitting&#xff09;是一种用于在财务会计模块中特别是总帐会计中进行更细粒度的财务报表分析的技术。通过凭证分割&#xff0c;可以按照不同的标准&#xff08;如成本中心、利润中心、公司代码等&#xff09;对会计凭证…

C语言 | Leetcode C语言题解之第363题矩形区域不超过K的最大数值和

题目&#xff1a; 题解&#xff1a; int maxSumSubmatrix(int** matrix, int matrixSize, int* matrixColSize, int k){int preSum[matrixSize][*matrixColSize];for(int i0; i<matrixSize; i){preSum[i][0] matrix[i][0];}for(int i0; i<matrixSize; i){for(int j1; j…

Funsound语音识别技术之 语音识别多路并发转写

免费语音识别转写&#xff08;优于讯飞&#xff09;&#xff1a;www.funsound.cn Funsound语音识别工具包&#xff1a;https://github.com/pika-online/Funsound/tree/main 1. 前言 本文主要介绍一种简单的多路语音识别转写部署方案&#xff0c;基于多线程开发实现后台同时转…

總結熱力學_2

個人近況 在考慮廷畢的選課情況&#xff0c;以及更改教資的科目三&#xff1a;比如由物理改為音樂 在看<<怪談直播間>>&#xff0c;顧毅的第五關太長了... <<詭舍>>不知道&#xff0c;三下鄉完了就没看了 參考: 陈曦<<热力学讲义>>ht…

甄选范文“论软件体系结构的演化”软考高级论文,系统架构设计师论文

论文真题 软件体系结构的演化是在构件开发过程中或软件开发完毕投入运行后,由于用户需求发生变化,就必须相应地修改原有软件体系结构,以满足新的变化了的软件需求的过程。体系结构的演化是一个复杂的、难以管理的问题。 请围绕“论软件体系结构的演化”论题,依次从以下三…

Array List集合的基本使用

数组&#xff1a;长度固定 集合&#xff1a;自动扩容 数组&#xff1a;可以存基本数据类型&#xff0c;可以存引用数据类型 集合&#xff1a;可以存引用数据类型&#xff0c;不可以存基本数据类型&#xff08;要换成对应的包装类&#xff09; package ArrayListDemo;import j…

Java | Leetcode Java题解之第363题矩形区域不超过K的最大数值和

题目&#xff1a; 题解&#xff1a; class Solution {public int maxSumSubmatrix(int[][] matrix, int k) {int ans Integer.MIN_VALUE;int m matrix.length, n matrix[0].length;for (int i 0; i < m; i) { // 枚举上边界int[] sum new int[n];for (int j i; j <…

最新动态鲨鱼导航网引导页html源码

源码介绍 最新动态鲨鱼导航网引导页html源码 源码由HTMLCSSJS组成&#xff0c;记事本打开源码文件可以进行内容文字之类的修改&#xff0c;双击html文件可以本地运行效果&#xff0c;也可以上传到服务器里面&#xff0c;重定向这个界面 https://download.csdn.net/download/h…

算法小白刷力扣 3 - 回文数

题目描述 原题链接&#xff1a;https://leetcode.cn/problems/palindrome-number/description/ 给你一个整数 x &#xff0c;如果 x 是一个回文整数&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 回文数是指正序&#xff08;从左向右&#xff09;和倒序&a…

【功能自动化】使用Excel文档获取参数数据

环境搭建&#xff1a; 1.需要配置WebTours网站 2.安装pandas pip install -i https://pypi.tuna.tsinghua.edu.cn/simple numpy pip install -i https://pypi.tuna.tsinghua.edu.cn/simple pandas pip install -i https://pypi.tuna.tsinghua.edu.cn/simple python_dateutil…

EasyExcel 导入计算公式导出展示字符串问题(SUM)

导出自定义表单 结果遇到 SUM函数 时 没有算出结果&#xff0c;直接展示的函数字符串 处理思路 拦截公式字符串 &#xff1a; 将对应的cell 设置 setCellFormula 字符串公式 然后cell类型设置为 CellType.FORMULA 重新配置 这样就解决了问题。 注意先设置CellFormula 然…

物品租赁管理系统-押金预授权-原路退回系统-SAAS本地化及未来之窗行业应用跨平台架构

一、物品租赁管理必要性 经济角度 1. 降低成本 - 对于租赁方而言&#xff0c;无需一次性投入大量资金购买物品。比如&#xff0c;企业在项目初期&#xff0c;如果购买昂贵的设备&#xff0c;会占用大量流动资金&#xff0c;增加财务风险。而通过租赁&#xff0c;可以将固…

从0开始搭建一个SpringBoot项目(从环境配置到运行项目)

文章目录 环境配置JAVA环境配置MySQL数据库配置IDEA安装Navicat 15安装Maven配置 SpringBoot项目创建 环境配置 JAVA环境配置 JDK8下载&#xff1a; 官网下载CSDN下载网盘 安装JDK&#xff0c;一直下一步即可&#xff0c;注意安装的位置&#xff1a; 3. 配置环境变量 &…

R语言统计分析——回归中的异常观测值

参考资料&#xff1a;R语言实战【第2版】 一个全面的回归分析要覆盖对异常值的分析&#xff0c;包括离群点、高杠杆点和强影响点。这些数据点需要更深入的研究&#xff0c;因为它们在一定程度上与其他观点不同&#xff0c;可能对结果产生较大的负面影响。 1、离群点 离群点是指…

【MySQL 10】表的内外连接 (带思维导图)

文章目录 &#x1f308; 一、内连接⭐ 0. 准备工作⭐ 1. 隐式内连接⭐ 2. 显式内连接 &#x1f308; 二、外连接⭐ 0. 准备工作⭐ 1. 左外连接⭐ 2. 右外连接 &#x1f308; 一、内连接 内连接实际上就是利用 where 子句对两张表形成的笛卡儿积进行筛选&#xff0c;之前所有的…

git错误fatal: Unpack error, check server log

git错误fatal: Unpack error, check server log fatal: Unpack error, check server log error: remote unpack failed: error Missing tree xxxxxxxxxxxxxxxxxx 先执行 git fetch 命令&#xff0c;再push。 git拉取远程所有分支/添加远程仓库_git pull所有分支代码-CSDN博客…

SQL基础——MySQL的触发器、存储引擎、事务

简介&#xff1a;个人学习分享&#xff0c;如有错误&#xff0c;欢迎批评指正。 一、MySQL的触发器 1.概述 介绍 触发器&#xff0c;就是一种特殊的存储过程。触发器和存储过程一样是一个能够完成特定功能、存储在数据库服务器上的SQL片段&#xff0c;但是触发器无需调用&…

StarRocks 存算分离 Compaction 原理

前言 StarRocks 中每次数据摄入都会生成一个新的数据版本&#xff0c;而查询时需要将所有版本数据进行合并才能获得一个正确的结果&#xff0c;如果历史数据版本太多&#xff0c;那么查询时需要读取的文件数也会很多&#xff0c;造成查询效率低下。因而 StarRocks 存在内部任务…