您现在的位置是:网站首页> 编程资料编程资料
python性能测试手机号验证码登录压测示例详解_python_
2023-05-26
1429人已围观
简介 python性能测试手机号验证码登录压测示例详解_python_
引言
这两天遭遇了手机号登录相关的压测需求,算是比较棘手的。主要原因有两个,第一:之前从来没有接手过这个项目,不熟悉各种规则;第二:数据量偏大,需要开发配合协调校验规则。
业务逻辑:
请求发送验证码接口,发送成功(已绑定的手机号,且有效的用户状态)可以获取到登录的一个参数traceNo
使用traceNo、短信验证码、手机号请求登录接口
基本的校验规则如下:
手机号校验,排除一些不存在的号段,11位数字类型(接口传string类型)
间隔(60s)内不允许发第二条短信,短信有效期同隔间
自然天不允许发10条以上的短信
验证码随机和traceNo必需从发送验证码接口获得
解决方案:
限制条件已经做成可配置,可以随时更改重启服务即可
选中14号段,用户手机号=14+uid
测试环境固定验证码
测试方案:
将发送验证码和短信登录两个接口放在一起压测,需要准备一批测试用户
单个线程绑定一个用户,然后不停地发送验证码和使用验证码登录
增加基类属性phone和模块类属性lastTraceNo来完成参数传递
压测脚本:
threadmark用来标记任务的,我在模块方法里面返回了token,表示唯一用户登录接口请求操作,方便开发追踪日志。
/** * 100个用户通过发短信然后通过验证码登录 */ class LoginByTel extends OkayBase { public static void main(String[] args) { def argsUtil = new ArgsUtil(args) def thread = argsUtil.getIntOrdefault(0, 100) def times = argsUtil.getIntOrdefault(1, 50) ClientManage.init(10000, 5000, 0) def threads = [] thread.times { def base = getBase(it) def info = new UserInfo(base) threads << new LoginTel(info, times) } new Concurrent(threads, "学生留存1.2.3手机验证码登录").start() FanLibrary.testOver() } static class LoginTel extends ThreadLimitTimesCount { public LoginTel(UserInfo info, int times) { super(info, times, null) } @Override protected void doing() throws Exception { threadmark = t.loginByTel() } } } 模块类方法:
/** * 手机号登录 */ public String loginByTel() { sendCodeOffline(2, phone); String url = Profile.LOGIN; JSONObject params = getParams(); params.put("login_mode", 2); params.put("params", getJson("code=" + Profile.LOGIN_CODE, "phone=" + phone)); JSONObject response = getPostResponse(url, params); if (isRight(response)) { token = response.getJSONObject("data").getString("token"); super.token = token; logger.info("账号 {} 登录成功", account); } else { output(response); logger.warn("账号 {} 登录失败", account); fail(); } return token; }以上就是python性能测试手机号验证码登录示例详解的详细内容,更多关于python手机号验证码登录测试的资料请关注其它相关文章!
您可能感兴趣的文章:
相关内容
- python接口测试对修改密码接口进行压测_python_
- Python详细讲解浅拷贝与深拷贝的使用_python_
- python单链路性能测试实践_python_
- Python字符串拼接的4种方法实例_python_
- 关于Python文本生成的Beam Search解码问题_python_
- python函数默认参数使用避坑指南_python_
- python 服务器批处理得到PSSM矩阵的问题_python_
- Python boxplot 用法详解_python_
- Python最好的日期处理库pendulum的使用指南_python_
- Python详解如何动态给对象增加属性和方法_python_
