应项目测试需求,测试秒杀并发场景
业务场景:定时开放秒杀商品,商品总库存限购10个,单用户限购1个,秒杀时以用户创建订单锁定库存为基准;预期并发量200;
业务流程:秒杀商品步骤分为1.查询用户,2.创建订单,3.支付;其中支付为异步操作,不需要在本次秒杀场景中进行并发操作;查询用户为基础服务提供,不在本次新增接口中;故次只针对创建订单场景进行并发测试。
测试工具:jmeter
测试数据:通过jdbc请求查询mysql,查询用户表的信息作为请求入参
1. jmeter 连接 jdbc
1.1 测试计划中添加mysql jar包
1.2 连接数据库
1.3 创建jdbc request 查询数据库,设置回参uid\mid
2. 添加循环控制器
2.1 设置循环次数
2.2 添加计数器
2.3 添加http请求
userid、merchantId通过工具-函数助手生成,值为uid_${num},生成对应的入参${__V(uid_${num})},
入参变量结构:${__V(变量名_${计数的变量2})}
3.添加JSon断言
请求的响应数据为
期望:code=000000 为成功
或者设置Beanshell断言
String response = "";
String Str = "{\"code\":\"000000\""; //预期结果,需要校验的字段
response = prev.getResponseDataAsString(); //获取当前请求响应结果
if(response == ""){
Failure = true;
FailureMessage = "系统无响应,获取不到响应数据!";
}
else if(response.contains(Str) == false){
//把断言失败置为真
Failure = true;
String Msg = "\n系统返回响应结果与期望结果不一致!";
FailureMessage = Msg + "\n" + "期望结果:\n" + Str + "\n" + "响应内容: \n" + response +"\n";
}