clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现。

简介

利用封装 Winodws Filtering Platform 的WinDivert 库, clumsy 能实时的将系统接收和发出的网络数据包拦截下来,人工的造成延迟,掉包和篡改操作后再进行发送。无论你是要重现网络异常造成的程序错误,还是评估你的应用程序在不良网络状况下的表现,clumsy 都能让你在不需要额外添加代码的情况下,在系统层次帮你达到想要的效果:

特色

  • 下载即用,不需要安装任何东西。
  • 不需要额外设置,不需要修改你的程序的代码。
  • 系统级别的网络控制,可以适用于命令行,图形界面等任何 Windows 应用程序。
  • 不仅仅只支持 HTTP,任何 TCP, UDP 的网络连接都可以被处理。
  • 支持本地调试(服务器和客户端都在 localhost)
  • “热插拔”,你的程序可以一直运行,而 clumsy 可以随时开启和关闭。
  • 实时调节各种参数,详细控制网络情况。

实例

下面的动画展示了 clumsy 作用于一个本地的基于 netcat 的 UDP 服务器/客户端的情况。仔细观察你可以看到数据根据在 clumsy 的影响下产生了相应的变化。如果你基本知道了 clumsy 是干什么用的,不妨到下载页面选择适用于你系统的版本进行下载。

详细信息

clumsy 首先根据用户选择的 filter 来拦截指定的网络数据。在 filter 中可以设定你感兴趣的协议(tcp/udp),端口号,是接收还是发出的端口。你也可以通过简单的逻辑语句来进一步缩小范围。当 clumsy 被激活时,只有符合这些标准的网络数据会被进行处理,而你不感兴趣的数据仍然会由系统正常传输。

当被 filter 的网络数据包被拦截后,你可以选择 clumsy 提供的功能来有目的性的调整网络情况:

  1. 延迟(Lag),把数据包缓存一段时间后再发出,这样能够模拟网络延迟的状况。
  2. 掉包(Drop),随机丢弃一些数据。
  3. 节流(Throttle),把一小段时间内的数据拦截下来后再在之后的同一时间一同发出去。
  4. 重发(Duplicate),随机复制一些数据并与其本身一同发送。
  5. 乱序(Out of order),打乱数据包发送的顺序。
  6. 篡改(Tamper),随机修改小部分的包裹内容。

尽管当前宽带网络连接十分普及,但网络传输其本身在本质上总不是稳定的。如果你的应用程序中没有应对各种情况的处理,那么有可能一个丢失的 UDP 包裹都会让你的程序崩溃。正确的调试这类行为 显然需要再代码结构上进行仔细的设计和处理,还会很花功夫。而且在某些封装紧密的开发环境(Unity3D 自带的网络库可能是一个例子)下会更麻烦。clumsy 以尽可能减轻程序员负担为目标, 希望提供一个简单方便(但并不完美)的解决方案。

如何使用

首先请根据你系统的版本(32位或64位)下载 clumsy 最新版本。注意如果你安装的是64位的系统那么一定要下载64位的 clumsy。另一件重要的事实 clumsy 需要管理员权限才能正常工作。双击打开 clumsy 的话会弹出 UAC 对话框。如果没有的话请右键点击 clumsy.exe 选择"以管理员身份运行"。如果一切正常,你应该能看到如下图的界面:

根据上图中的数字图标顺序:

  1. Filter。详细的 filter 语法在下一部分有仔细的讲解。但是简单的讲它跟你常见的编程语言中的 if 中的条件写法几乎一样。数据包将根据这个标准被拦截。
  2. 预设 Filte。这里提供了一系列内置的预设 Filter 供你使用。你可以通过参考他们来写你自己需要的 Filter,也可以把你发现常用的 filter 写到 clumsy.exe 所在文件夹下的 config.txt 中。
  3. 开始/结束 按钮。点击此按钮 clumsy 就会开始捕捉数据包。在某些情况下,比如提供的 filter 语法有问题 clumsy 无法正常开始工作。请参考底部的提示进行操作。如果一切正常按钮上的文字会变为 “Stop”,按下就会停止捕捉包裹,系统网络会恢复正常。按钮左边有一个小图标,每当数据包被捕获的时候它会变绿,当包裹重新注入失败的时候它会变红色。这时你应该考虑是否遇到了上面限制中提到的问题。另外需要提到的是开启和结束可以随时进行并实时生效。
  4. 功能控制。勾选功能对应的选框来开启对应的功能。每个功能左边也有一个小图标,其起作用的时候就会变绿。在数据包捕获开启的状态下,你可以实时开启/关闭任何功能,它们都会即时生效。
  5. 参数控制。对每个功能,都附有对应的参数控制控件让你进行详细的配置。其中最常见的有:
  6. Inbound/Outbound: 是否处理输入/输出数据包。这里在 filter 的控制之外额外提供一个选择的机会,并且也可以在实时生效。
  7. Chance: 功能生效的概率。显然你需要把它们设置在一个合理的范围内才不会让网络在可以接受的范围内劣化。
  8. 状态。显示 clumsy 当前状态的帮助信息。

手机如何模拟弱网:

电脑上设置好网络后,如果是笔记本,可以直接开个WIFI手机连;如果是PC,可以买个小米WIFI或360WIFI,然后手机连接。这样手机的网就和电脑上一样了。

学习资源分享

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走

这些资料,对于想自学【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助,加入下方我的交流群免费获取!

弱网测试工具—— clumsy相关推荐

  1. 弱网测试工具clumsy

    clumsy 能在 Windows 平台下人工造成不稳定的网络状况,方便你调试应用程序在极端网络状况下的表现. 简介 利用封装 Winodws Filtering Platform 的WinDiver ...

  2. 弱网测试工具使用--web/pc/app

    各端弱网测试工具使用 涉及到web端和移动端: windows系统下推荐使用clumsy,clumsy工具简单易上手,可以上下行网络的延迟和丢包. clumsy工具下载地址:http://jagt.g ...

  3. 测试丢包_入行游戏测试之弱网测试工具

    接上次的弱网测试要点,今天我想写一下一些常用的弱网测试工具: 一.谷歌浏览器自带的开发者工具 想起我去年一次短暂的三月份棋牌测试时间,后端是用java,客户端是用json?引擎是cocos? 一不小心 ...

  4. tcp连接测试工具_“国货之光”!国产弱网测试神器 QNET,比主流弱网测试工具强在哪?...

    弱网测试,是软件测试不可缺少的一个环节,但目前主流的一些弱网测试工具,或多或少暴露了一些缺点,这工具称不称手只有自己知道. 最近腾讯出了一款弱网测试神器 QNET,被誉为测试行业的"国货之光 ...

  5. 弱网测试工具-qnet

    备注:个人学习笔记整理,仅供测试同学学习,切莫转载商用,有错误或者更好的方案可以留言,一同进步! 参考学习: https://www.cnblogs.com/quark/p/10734587.html ...

  6. Qnet弱网测试工具操作指南

    Qnet弱网测试工具操作指南 一.下载安装 Qnet官网下载地址:https://wetest.qq.com/product/qnet/ 注:目前只支持Android版本,iOS暂不支持 二.特点 1 ...

  7. 弱网测试工具以及模拟真实的网络环境

    弱网测试的情况和意义我就不讲了,基本上浏览器搜一下就清楚了,我这里主要是讲下我在实际测试环境中对弱网的工具选择以及怎么去模拟真实的网络环境. 弱网工具 现在网络上用于限制网络的工具有很多,我这里主要介 ...

  8. IOS开发者自带弱网测试工具界面说明NETWORK LINK CONDITIONER

    IOS手机的开发者自带了弱网模拟工具,以下是界面说明,便于大家使用时自行配置使用.测试工具NETWORK LINK CONDITIONER. 1.准备环境,设置中调出:开发者选项(如果没有,需要真机联 ...

  9. 弱网测试工具-Network-Emulator-Toolkit

    一.安装弱网模拟工具-Network-Emulator-Toolkit(主要是设置丢包率和延时) 1.下载安装 下载地址:https://blog.mrpol.nl/2010/01/14/networ ...

最新文章

  1. OpenCV下利用傅里叶变换和逆变换实现图像卷积算法,并附自己对于卷积核/模板核算子的理解
  2. 《一个程序员的奋斗史》正式上架~
  3. Retrofit解析网页Json数据简单实例
  4. 匿名类、包、权限修饰符_DAY10
  5. Java配置信息工具jinfo
  6. 最全的Pycharm debug技巧
  7. 卷积神经网络-进化史 | 从LeNet到AlexNet
  8. Forrester报告拆解:强劲冲击第一梯队后,京东智联云站稳云市场新格局
  9. Maven编译时跳过Test
  10. Mysql删除数据报外键约束解决方法
  11. mysql alter auto increment_将MySQL列更改为AUTO_INCREMENT
  12. jade linux 安装教程,ROS-Jade版在UbuntuKylin15.04上的安装
  13. Arduino mixly 点灯科技(blinker) 在线电压监测(带电压高低提醒)
  14. 胡润:马云捐1000亿仍是中国首富,中国10亿美元俱乐部比美国多400人
  15. 人工智能--不确定性推理概述
  16. 联想服务器改xp系统,联想win7改xp蓝屏怎么解决
  17. 企业微信群:机器人定时提醒功能数据库配置化
  18. 热议!211高校近200名硕博新生开学无宿舍住,需校外租房...
  19. 开发者百度地图的使用,做一个小demo,ak秘钥,
  20. 中级的“信息系统管理工程师”、“系统集成项目管理工程师”和高级的“信息系统项目管理师”有什么区别?

热门文章

  1. final、finally的区别和用法
  2. 西门子伺服分拣机西门子S7-1200 PLC程序,有自己录4平详细讲解项目程序
  3. JavaSE图像验证码简单识别程序
  4. 第4章-21 判断上三角矩阵 (15 分)
  5. 【Qt入门第13篇】 2D绘图(三)绘制文字
  6. java基础学习资料(一)
  7. 业务流程图模板分享及绘制方法总结
  8. 2021年1月29日 星期五 农历冬月五九 晴 天津
  9. 最齐全的教辅文具3dm犀牛模型素材,速来收藏
  10. 电子计算机在可视范围内由,电话的种类有(移动电话、可视电话)。——青夏教育精英家教网——...