zoukankan      html  css  js  c++  java
  • Jmeter接口测试-新用户注册API

    新用户注册

    新用户注册的接口是POST /register username/password/password_confirmation

    该接口需要提供3个参数,分别是

    • username 用户名
    • password 密码
    • password_confirmation 重复一遍密码

    我们现在的任务就是使用jmeter来测试新用户注册这个接口,如果该接口返回了新注册用户的信息,那么我们可以认为注册是成功了的,否则会出现各种报错。

    步骤

    1. 在express_api_demo路径下使用npm start启动smile api的后台服务
    2. 在测试计划下新建一HTTP请求默认值

      • 服务器名或IP:localhost
      • 端口号: port
    3. 新建线程组(ctrl+0)

    4. 在线程组下新建Random Variable配置元件

      • 名称: username
      • Variable Name: username
      • Output Format: user_000
      • Minimum Value: 1
      • Maximum Value: 999
    5. 新建HTTP请求取样器

      • 名称: 注册
      • 路径: /register
      • 请求参数:
        • username: ${username}
        • password:  ${username}
        • password_confirmation: ${username}
    1. 在线程组下添加1个查看结果树(ctrl+9)
    2. 在线程组下添加1个Debug Sample(ctrl+8)
    3. 保存并运行,结果如下图所示

     

    断言

    我们现在已经调通了接口,下面就可以给接口做断言了。

    该接口的输入是

    • username
    • password
    • password_confirmation

    输出是

    • id: 数据库中的id
    • username
    • password: 密文的
    • updatedAt: 修改时间
    • createdAt: 创建时间
    {
      "id":7,
      "username":"user_527",
      "password":"$2a$10$VynjsNb8BwvTsKBRJ68/MObtKYLhtK7TrKxjfWrtufoOOO/yS5qZu",
      "updatedAt":"2016-09-09T09:29:36.000Z",
      "createdAt":"2016-09-09T09:29:36.000Z"
    }

    很容易想到,我们的断言可以判断下面几件事情

    • 创建成功后返回的json字符串里应该包含username这个key
    • 创建成功后返回的json字符串里username这个key的值应该跟我们随机生成的用户名是一致的

    下面我们就开始添加这些断言

    在"注册"这个HTTP请求下新建JSON PATH PostProcessor

    • 名称: 获取注册成功后返回的用户名
    • Variable names: returned_username
    • JSON Path expressions: $.username
    • Match Numbers: 1
    • Default Value: NOT FOUND

    新建JSR223 Assertion

    • 名称: 用户名不能为空
    • Language: javascript
    • Script:
     var returned_username = vars.get('returned_username');
    
      if(returned_username == 'NOT FOUND'){
        AssertionResult.setFailure(true);
        AssertionResult.setFailureMessage('没有返回用户名');
      }

    新建JSR223 Assertion

    • 名称: 用户名应该是正确的
    • Language: javascript
    • Script:
    var returned_username = vars.get('returned_username');
    var expected_username = vars.get('username');
    
    if(returned_username != expected_username){
        AssertionResult.setFailure(true);
        AssertionResult.setFailureMessage('返回的用户名不正确');
    }

    因为断言通过的时候我们是没有办法在查看结果树里看到断言的信息的,所以我们需要故意让断言不通过来测试断言的准确性。

    将"注册"HTTP请求中的password参数改为secret

    保存并运行,结果如下图所示:

    这就证明在注册失败的时候,断言也相应失败了,断言的行为是准确的。

  • 相关阅读:
    java.lang.IllegalArgumentException: No converter found for return value of type: class XXX.XXXX
    关于websocket集群中不同服务器的用户间通讯问题
    JavaScript中 location.host 与 location.hostname 的区别
    Spring在代码中获取bean的几种方式
    在websocket中怎么样注入service类
    阿里云上部署kafka--遇到的坑
    linux系统部署Java程序获取ip时报Caused by: java.net.UnknownHostException: XXXXXXXXXX: XXXXXXXXXX: Name or service not known
    解决bash: mysql: command not found 的方法
    Nginx的启动、停止与重启
    Java8:Lambda表达式增强版Comparator和排序
  • 原文地址:https://www.cnblogs.com/fighter007/p/8446442.html
Copyright © 2011-2022 走看看