弱网环境测试与重复提交问题总结

导语:

我们的做的那款App有个签到功能,该功能的基本逻辑是:用户当天签到时会先去数据库查询一下是否已经签到过,如果没有则插入数据作为当天的签到记录。有段时间经常发现会有重复签到的问题,某些用户几乎同一个时间点会有多次签到记录,后来经过排查发现在弱网环境会出现这种情况,详情如下。

一、弱网环境测试

所谓弱网环境简单来说就是网络质量较差导致丢包和延迟等现象,具体现象就是app响应很慢。测试工具用的是强大的fillder(没用过的自行google),fiddler是通过延迟发送或接收数据的时间来模拟限速,设置方法是:Rules → Performances → Simulate Modem Speeds,然后按Ctrl+r快捷键会自动打开一个CustomRules.js文件,里面有各种自定义的规则。其中有这么一段:

if (m_SimulateModem) {

        oSession["request-trickle-delay"] = "300"; 

        oSession["response-trickle-delay"] = "150";
    }

意思是每延迟300ms发送1kb的数据,每延迟150ms下行1kb的数据,具体值可以修改,自定义限速。定义完数据保存之后,已经勾选的SimulateModem Speeds会被取消,按照上面的步骤再次将其勾选即可。

再说下通过fillder来调试手机app运行所需要的基本设置:

  1. 设置手机代理IP和端口

    找到手机的设置–>WLAN–>已连接的WiFi,长按,弹出修改网络的选项,点击进入,在“显示高级选项”前打钩,将电脑的IP和端口设置进去,端口一般选的是8080,但是可能会出现此端口被占用的情况,选择其他端口也可以。

2.设置filler,如下图

3.打开app点击签到功能,发现签到响应缓慢,可重复点击,这就造成了几乎同一时间,同一个用户有多个签到请求发送到服务器,这几个请求检查是否已经签到时发现当天记录为空(还都没有来得及写进到数据库),这样在高并发的情况下就会有多条记录同时写入签到记录表。

二、并发重复提交解决方案

弱网环境所引发的这个并发重复提交问题,在服务器端有一个比较简单的解决方案:利用mysql唯一索引机制的验证,当有重复数据写入时就会被拒绝,保证数据的唯一性。

另外一种方案是利用redis计数器特性,由于redis是单线程原子性操作,不存在多线程并发的问题,将userId和年月日作为key,每次签到请求进来加1,如果得到的值等于1,说明这是当天第一次签到,写入数据库,如果大于1,则直接返回“已签到”信息提醒用户即可。

时间: 2024-10-13 15:39:57

弱网环境测试与重复提交问题总结的相关文章

IOS与Android弱网环境测试

弱网环境下App的功能是否正常使用,是否会发生Crash的等情况? 1.IOS ios系统一般自带弱网环境测试,可以通过设置各种网络环境,模拟弱网环境,如3G,wifi,very bad Network或者自定义网络环境进行测试. 在苹果手机的设置如下:设置>开发者选项>Status:on,选择想要测试的网络环境,便可以在该环境下测试App. 弱网环境下的设置参数如下: in bandwidth 下行带宽in packet loss 下行丢包率in delay 下行延迟out bandwidt

弱网环境测试点总结

一.[弱网环境测试点总结] 1.场景:弱网环境下某个操作响应时间 原因:APP用户对等待时间容忍度低,若弱网环境loading超过5s,用户很容易kill应用后再次进入应用 [测试点]性能测试中,加入弱网环境测试点,检测各个场景网络请求的 API 消耗时间(此处可以放入性能测试中,做为衡量APP性能好坏的指标) 2.场景:弱网环境下直至超时,UI界面友好度&APP是否稳定 原因:容错机制主要是考虑弱网情况下带来的不稳定,常见的问题是:loading超时导致ANR or crash [测试点]弱网

小程序弱网环境卡顿怎么办?一招迅速提升小程序运行速度

2018 年 1 月 15 日,微信公开课 PRO 在广州正式"开课".与往年不同,今年的微信公开课将整场大会的焦点都放在了小程序上.从 2017 年 1 月上线到现在,小程序依托于微信这个庞大的流量机器,在不知不觉间构建了一个新型的移动互联网生态圈. 微信小程序从麦当劳.肯德基等在线点餐服务到共享单车.共享充电宝等租用服务,再到与京东.拼多多等电商结合,小程序正在全方位的"入侵"人们的衣食住行.  △ 知晓程序官网小程序分类 张小龙在微信公开课上讲到:"

Charles-模拟弱网环境

在做弱网测试时,经常需要模拟各种网络环境,Charles恰好也提供了网络限制的功能,我们可以在"Proxy->Throttle Settings"路径下找到它,如下图所示. "Throttle Settings"提供了一个总开关,勾选"Enable Throttling"即开启网络限制功能.在其下方,可以添加我们想要限制网络的hosts,并勾选"Only for selected hosts",来实现仅仅限制该hosts

web开发中禁止因为网速慢导致重复提交数据

var checkSubmitFlg = false;  function check() {                if (!checkSubmitFlg) {                    checkSubmitFlg = true;                    return true;                }                else {                    alert('禁止重复提交!');               

使用Fiddler模拟弱网络环境测试

https://blog.csdn.net/swordgirl2011/article/details/51765237 https://www.cnblogs.com/longronglang/p/9524889.html https://blog.csdn.net/chyo098/article/details/81628242 原文地址:https://www.cnblogs.com/jtestroad/p/11173958.html

Fidder 弱网模式测试

1.运行,fiddler,选择Rules—>Cutomize Rules打开CustomRules.js 文档 2.修改如下图部分: if (m_SimulateModem) { // Delay sends by 300ms per KB uploaded. oSession["request-trickle-delay"] = "300"; // Delay receives by 150ms per KB downloaded. oSession[&qu

移动APP需要重视弱网测试

什么是弱网测试 在当今移动互联网盛行的时代,网络的形态除了有线连接,还有2G/3G/Edge/4G/Wifi等多种手机网络连接方式.不同的协议.不同的制式.不同的速率,使移动应用运行的场景更加丰富. 从测试角度来说,需要额外关注的场景就远不止断网.网络故障等情况了.对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分.按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网.除此之外,弱信号的Wifi通常

测试移动弱网

从测试角度来说,需要额外关注的场景就远不止断网.网络故障等情况了.对于弱网的数据定义,不同的应用所界定的含义是不一样且不清晰的,不仅要考虑各类型网络最低速率,还要结合业务场景和应用类型去划分.按照移动的特性来说,一般应用低于2G速率的都属于弱网,也可以将3G划分为弱网.除此之外,弱信号的Wifi通常也会被纳入到弱网测试场景中. 为何要进行弱网测试 我当前所在项目的产品是一款适配于低资源环境的医疗IT系统,目前主要是在坦桑尼亚地区使用.根据资料显示,在坦桑尼亚等东非国家,普遍使用的都是2G网络,覆