本帖最后由 测试积点老人 于 2018-12-17 15:23 编辑
Jmeter我也是第一次使用,测试同事要帮忙看下工具怎么使用,做几个demo,留下记录。 怎么新建一个普通的http请求? 怎么查看请求结果? 怎么做账号登录? 怎么测试需要登录后操作的接口? JMeter中的变量使用? JMeter BeanShell中内置对象有哪些? 如何使用beanshell 脚本对密码md5加密?
1、怎么新建一个普通的http请求?
这个很简单,首先先建一个线程组。线程组可以模拟多线程访问。
然后添加一个sampler,选择http请求。
我们以登录接口为例,登录url:http://127.0.0.1/login.do 登录名:admin,密码:123456 在路径上填写测试url。有参数的在参数列表中添加。
保存 然后在菜单工具栏上找到绿色开始的三角图标。 怎么查看请求情况呢?添加监听器-查看结果树
再次运行,就可以看到结果了。 如果有个方法需要登录后操作,改怎么处理?
例如:更改我的用户信息的接口需要登录操作之后才可以。 url:http://127.0.0.1/user.do; params:birthDate=1989-01-01&nickName=张三
就在之前的登录操作http之后再建个http请求。但是允许后报错,服务器找不到对应用户。 这个是因为登录后cookie没有带回服务器,服务器不认为2次操作是同一用户操作。 这里就需要加个 配置元件-http cookie管理器,默认配置就可以
这个放在最前面,
在JMeter中怎么使用变量,可以在添加 配置元件-用户定义变量。使用方式${变量名}。这样做可以统一管理接口参数。
怎么在请求前或者请求后做一些操作呢?例如给密码做md5加密?如何把登录返回结果作为变量,给后续的接口使用? 这就涉及到前置处理器和后置处理器。 给密码加密使用前置处理器,返回结果处理使用后置处理器。 写到这,先说下JMeter内置变量有哪些?
Log:该函数的日志记录器。 Ctx:JmeterContext对象。 Vars:JmeterVariables对象。 threadName:字符串包含当前线程名称 (在2.3.2 版本中它被误写为"theadName")。 sampler:当前采样器对象(如果存在)。 sampleResult:前面的采样结果对象(如果存在)。 props:JMeter属性对象。
先来解决密码MD5,前置处理器很多,我们现在使用BeanShell PreProcessor; BeanShell脚本语言是使用java语法编写的。很简单。
- import org.apache.jmeter.config.*;
- import java.security.*;
- import sun.misc.*;
- import java.math.*;
- log.info("===================密码md5处理==================");
- //获取参数
- public static String getParam(key){
- //获取参数
- Arguments args = sampler.getArguments();
- //参数转map
- Map map = args.getArgumentsAsMap();
- return map.get(key);
- }
- //设置参数
- public static void setParam(key,val){
- sampler.getArguments().removeArgument(key);
- sampler.addArgument(key,val);
- }
- //md5加密
- public static String md5(signData){
- MessageDigest md5=MessageDigest.getInstance("MD5");
- md5.update(signData.getBytes());
- return new BigInteger(1, md5.digest()).toString(16);
- }
- //获取原密码参数
- String passwordSrc = getParam("passWord");
- log.info("passwordSrc:"+passwordSrc);
- //MD5
- String passpowdMd5 = md5(passwordSrc);
- log.info("passpowdMd5:"+passpowdMd5);
- //设置密码参数
- setParam("passWord",passpowdMd5);
复制代码
后置操作一样可以通过BeanShell脚本来处理;
- String json = prev.getResponseDataAsString();
复制代码
先这样吧。
|