python性能测试手机号验证码登录压测示例详解
作者:fun 时间:2021-06-05 13:21:25
引言
这两天遭遇了手机号登录相关的压测需求,算是比较棘手的。主要原因有两个,第一:之前从来没有接手过这个项目,不熟悉各种规则;第二:数据量偏大,需要开发配合协调校验规则。
业务逻辑:
请求发送验证码接口,发送成功(已绑定的手机号,且有效的用户状态)可以获取到登录的一个参数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<UserInfo> {
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;
}
来源:http://170e.cn/86t6
标签:python,手机号,验证码,登录,性能测试
![](/images/zang.png)
![](/images/jiucuo.png)
猜你喜欢
让ASP搭配MYSQL
2009-10-04 20:30:00
用户如何有效地利用ORACLE数据字典
2008-03-04 18:19:00
Python 中如何实现参数化测试的方法示例
2023-10-19 14:19:56
Python 函数装饰器应用教程
2022-08-17 05:53:24
端午节将至,用Python爬取粽子数据并可视化,看看网友喜欢哪种粽子吧!
2023-08-23 06:29:31
![](https://img.aspxhome.com/file/2023/2/62272_0s.png)
让Entity Framework支持MySql数据库
2010-12-14 15:22:00
![](https://img.aspxhome.com/file/UploadPic/201012/14/20101214153519606s.png)
MySQL数据库之UPDATE更新语句精解
2009-03-20 15:21:00
自定义用于ASP Web站点的 SQL 7.0 数据库
2008-10-28 21:09:00
数据库名词解释
2008-09-12 17:28:00
php+mysql开发的最简单在线题库(在线做题系统)完整案例
2023-08-21 20:03:14
![](https://img.aspxhome.com/file/2023/3/553631_0s.png)
OraclePL/SQL单行函数和组函数详解
2010-07-28 13:02:00
nginx简单配置多个php服务实例教程
2023-06-11 22:53:30
MySQL 通过索引优化含ORDER BY的语句
2010-03-25 10:28:00
Python操作MySQL模拟银行转账
2022-05-19 21:23:11
解决django的template中如果无法引用MEDIA_URL问题
2023-06-12 15:09:07
js读取图片的宽和高
2007-08-04 10:14:00
详解new function(){}和function(){}()
2008-02-28 12:28:00
MySQL数据库搜索中的大小写敏感性
2008-11-24 12:44:00
从数据行入手保护SQL Server数据安全
2009-04-13 10:28:00
![](https://img.aspxhome.com/file/UploadPic/20094/2009413132414109.jpg)
Oracle 数据表分区的策略
2010-07-21 13:30:00