弱网测试
弱网测试从零到一:SSH连接、环境搭建与自动化测试完整指南
前言
在移动互联网时代,用户所处的网络环境千差万别。地铁里的信号衰减、电梯里的网络中断、偏远地区的窄带连接、高峰期网络拥塞——当产品在这些场景下出现卡顿、超时甚至崩溃时,用户很可能直接选择卸载。
弱网测试,就是为了提前发现这些问题,确保产品在任何网络条件下都能提供可用的体验。
本文将从零开始,完整记录一次弱网测试的全过程:从工具安装、环境配置、SSH连接、脚本编写到测试执行与结果分析。无论你是测试工程师、开发人员还是运维工程师,这份指南都能帮你快速上手。
第一章:什么是弱网测试?
1.1 弱网测试的定义
弱网测试是指模拟真实世界中不稳定的网络环境(如高延迟、丢包、带宽限制、数据损坏等),验证应用或系统在这种极端条件下的表现。
1.2 为什么要做弱网测试?
| 场景 | 网络特征 | 可能的问题 |
|---|---|---|
| 地铁/地下车库 | 信号弱,丢包率高达5-10% | 连接超时、数据加载失败 |
| 电梯/隧道 | 网络频繁中断、重连 | 会话丢失、请求卡死 |
| 偏远地区 | 带宽极低(<1Mbps),延迟高 | 视频无法播放、大图加载失败 |
| 演唱会/体育场 | 网络拥塞,抖动剧烈 | 接口超时、页面白屏 |
| 跨国访问 | 延迟高达300-500ms | 操作响应慢、体验差 |
核心理念:不是保证产品在弱网下"完美运行",而是确保它能"优雅降级"——要么给出友好提示,要么提供简化功能,而不是直接崩溃或无限等待。
第二章:核心技术选型
2.1 工具全景图
| 工具 | 类型 | 用途 |
|---|---|---|
| SSH | 连接工具 | 远程登录Linux服务器 |
| tc (Traffic Control) | 网络控制工具 | Linux内核级流量控制,弱网模拟的核心 |
| netem (Network Emulator) | tc的模块 | 模拟延迟、丢包、损坏、乱序等 |
| htb (Hierarchical Token Bucket) | tc的模块 | 模拟带宽限制 |
| screen | 会话管理器 | 防止SSH断开导致测试中断 |
| ping | 网络诊断工具 | 测量延迟和丢包率 |
2.2 tc + netem 核心命令详解
bash
1 | # ===== 延迟模拟 ===== |
2.3 测试用例设计
| 用例编号 | 弱网参数 | 测试目的 | 预期关注点 |
|---|---|---|---|
| Case-01 | 延迟 200ms,抖动 50ms | 模拟高延迟场景(如跨国访问) | 响应时间、超时设置 |
| Case-02 | 延迟 200ms,抖动 50ms,丢包 3% | 模拟高延迟+不稳定连接 | 重传机制、连接稳定性 |
| Case-03 | 带宽 1Mbps + 延迟 200ms + 丢包 3% | 模拟窄带+高延迟(如2G/3G网络) | 图片加载、视频播放 |
| Case-04 | 延迟 400ms,抖动 100ms,丢包 8%,损坏 2% | 模拟极端恶劣网络 | 崩溃、降级策略 |
第三章:环境搭建(从零开始)
3.1 被测试机器环境准备
如果你面对的是一台全新的Linux服务器,需要先完成以下安装:
Step 1: 安装 tc (iproute2)
bash
1 | # Ubuntu/Debian |
Step 2: 确认 netem 内核模块
bash
1 | # 检查 netem 模块是否加载 |
Step 3: 安装 screen(会话保护)
bash
1 | # Ubuntu/Debian |
Step 4: 确认 ping 工具
bash
1 | # ping 通常已预装,如果没有: |
3.2 本地电脑环境准备
Windows 10/11 用户:SSH 客户端已内置,无需安装。
powershell
1 | # 确认 SSH 可用 |
macOS/Linux 用户:SSH 默认已安装。
3.3 环境验证清单
| 检查项 | 命令 | 预期结果 |
|---|---|---|
| tc 已安装 | tc -V |
显示版本号 |
| netem 可用 | modinfo sch_netem |
显示模块信息 |
| screen 已安装 | screen --version |
显示版本号 |
| 网卡名称 | ip addr |
看到 UP 状态的网卡 |
第四章:SSH远程连接(踩坑实录)
4.1 连接流程全景图
text
1 | ┌─────────────────────────────────────────────────────────────────┐ |
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 moshiqiqian!
评论


