一、JMETER基本概念
1、 测试计划:顶级菜单,代表一个测试计划;
2、 线程组:代表一个要测试的场景(各种相关的交易集合),对于性能测试来说可以指定多少个用户完成这个场景的内容,对于自动化测试来说,指定一个用户即可;
3、 控制器:挂在线程组下,用来控制各种交易(接口)的调用频率,有循环控制器、简单控制器等等
4、 取样器:代表一次发起请求和接收响应的元件,这里可以认为是一个接口、交易、请求
5、 前置处理器:取样器发起请求前可以用这做一些工作,比如参数化等等
6、 后置处理器:取样器收到响应后做一些工作,比如提取响应报文中的内容
二、前置处理器跟后置处理器的区别
前置处理器是用于发送请求之前,用于准备工作,比如参数化获取当前日期、获取随机字母数字名称、获取当前日期下月日期。
【BeanShell PreProcessor、用户参数】
后置处理器是用于发送请求之后,取样器收到响应后做一些工作,比如提取响应报文中的内容,获取Cookie、token 。
【BeanShell PreProcessor、正则表达式提取器、JSON Extractor、Debug PostProcessor】
三、前置处理器使用
3.1 BeanShell PreProcessor
例如: 通过beanshell 脚本获取当前日期、当前日期减1天、 当前日期加30天
import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.Calendar; import java.util.Date; public class GetTime { /** * 获取当前日期 * * @return */ public String getcurrentDate() { Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String currentDate = formatter.format(currentTime); return currentDate; } /** * 获取当前日期的下一个月 * * @param day * @return */ public String getDateAddMonth() { String year_month_day = "yyyy-MM-dd"; SimpleDateFormat dgt = new SimpleDateFormat(year_month_day); Calendar date = Calendar.getInstance(); date.add(Calendar.MONTH, Integer.parseInt("1")); String endDate = dgt.format(date.getTime()); return endDate; } /** * 获取当前日期减一天 * * @return */ public String getDateBeforeDay() { Calendar c = Calendar.getInstance(); Date date = null; Date currentTime = new Date(); SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd"); String a = formatter.format(currentTime); try { date = new SimpleDateFormat("yy-MM-dd").parse(a); } catch (ParseException e) { e.printStackTrace(); } c.setTime(date); int day = c.get(Calendar.DATE); c.set(Calendar.DATE, day - 1); String dayBefroe = new SimpleDateFormat("yyyy-MM-dd").format(c .getTime()); return dayBefroe; } }
四、后置处理器使用
4.1 BeanShell PreProcessor