性能测试实战-XYB项目-外网访问
压测业务选择
跟产品、开发负责人评估系统中需要压测的重要业务接口
考虑到考勤业务是每天老师都需要做的且可多次考勤,列入压测重要业务中
值日检查也是每天老师都需要操作的业务,最终选择了考勤业务及值日检查业务
性能压测目标:根据sis现有业务数据,评估性能指标
xyb是一位上线的一个应用,需要评估性能测试目标
计算规则:80% 的请求发生在20%的时间里
数据脚本准备
压测用的用户、学生、班级,需要提前在测试环境导入批量数据
接口脚本调试,有些有必要让开发放开鉴权,比如移动端登录,需要鉴权,让开发帮忙写个鉴权接口
用到了前置处理器:BeanShell PreProcessor,将上一个接口的返回值作为下一个接口的传参
背景:考勤提交的传参里面学生列表跟上一个接口返回的一样,但是需要加入考勤状态的一串字符串,所以自己写脚本,将字符串拼接,此处需要导入jar包支持,一般放在目录apache-jmeter-4.0\lib\ext下
import org.json.*; JSONArray stu_array = new JSONArray(vars.get("cl_studentlist")); JSONArray status_array = new JSONArray(); JSONObject normal = new JSONObject(); normal.put("selected", true); normal.put("name", "正常"); normal.put("valve", 1); status_array.put(normal); JSONObject late = new JSONObject(); late.put("selected", false); late.put("name", "迟到"); late.put("valve", 2); status_array.put(late); JSONObject leftEarly = new JSONObject(); leftEarly.put("selected", false); leftEarly.put("name", "早退"); leftEarly.put("valve", 4); status_array.put(leftEarly); JSONObject absence = new JSONObject(); absence.put("selected", false); absence.put("name", "缺勤"); absence.put("valve", 8); status_array.put(absence); JSONArray leaves_array = new JSONArray(); for(int i=0;i<stu_array.length();i++){ JSONObject new_stu = stu_array.get(i); new_stu.put("leaves",leaves_array); new_stu.put("statusList",status_array); } vars.put("cl_studentlist",stu_array.toString());