51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 2077|回复: 0
打印 上一主题 下一主题

Apache JMeter 接口测试

[复制链接]
  • TA的每日心情
    擦汗
    昨天 09:09
  • 签到天数: 526 天

    连续签到: 3 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-12-17 15:21:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    本帖最后由 测试积点老人 于 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语法编写的。很简单。


    1. import org.apache.jmeter.config.*;
    2. import java.security.*;
    3. import sun.misc.*;
    4. import java.math.*;

    5. log.info("===================密码md5处理==================");


    6. //获取参数
    7. public static String getParam(key){
    8.         //获取参数
    9.         Arguments args = sampler.getArguments();
    10.         //参数转map
    11.         Map map = args.getArgumentsAsMap();
    12.         return map.get(key);
    13. }

    14. //设置参数
    15. public static void setParam(key,val){
    16.         sampler.getArguments().removeArgument(key);
    17.         sampler.addArgument(key,val);
    18. }


    19. //md5加密
    20. public static String md5(signData){
    21.         MessageDigest md5=MessageDigest.getInstance("MD5");
    22.         md5.update(signData.getBytes());
    23.         return new BigInteger(1, md5.digest()).toString(16);
    24. }

    25. //获取原密码参数
    26. String passwordSrc = getParam("passWord");
    27. log.info("passwordSrc:"+passwordSrc);
    28. //MD5
    29. String passpowdMd5 = md5(passwordSrc);
    30. log.info("passpowdMd5:"+passpowdMd5);
    31. //设置密码参数
    32. setParam("passWord",passpowdMd5);
    复制代码

    后置操作一样可以通过BeanShell脚本来处理;


    1. String json = prev.getResponseDataAsString();
    复制代码

    先这样吧。



    本帖子中包含更多资源

    您需要 登录 才可以下载或查看,没有帐号?(注-册)加入51Testing

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-15 01:24 , Processed in 0.063646 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表