新用户注册

新用户注册的接口是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":,
"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

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

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

Jmeter接口测试-新用户注册API的更多相关文章

  1. jenkins+ANT+jmeter 接口测试环境搭建

    目的 jmeter很早就接触了,最近又在接触项目的时候整了一下.写这篇博客主要有两个目的 1,为了给自己搭建jmeter做一个总结. 2,在部署过程中遇到过一些坑,在这分享出来,也希望能给需要的人一个 ...

  2. jmeter接口测试实战-创建用户

    jmeter接口测试实战-创建用户 相信大多数看到标题的同学都会有疑问, 创建用户不是很简单吗, 调用一下创建用户接口, 传入指定入参, 用户即可创建成功, 今天我们的实战来讲讲创建场景.通过接口创建 ...

  3. JMeter 接口测试-if控制器

    JMeter 接口测试-if控制器 ​ 使用场景: 当业务场景是用户登录才能支付操作, 不登录点击支付, 页面会跳转到登录页面. 对于接口也是这样, 一个接口需要执行前, 需要有前提条件, 比如0状态 ...

  4. JMeter接口测试系列:Jmeter+jenkins+ant 的自动化构建

    在JMeter接口测试不断深入的过程中,发现可以和jenkins和ant一起搭配进行自动化的构建.下面是jmeter自动化构建的整理笔记. 准备环境 需要本机上确定安装了jmeter.ant和jenk ...

  5. Jmeter 接口测试实战-有趣的cookie

    Jmeter 接口测试实战-有趣的cookie 场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都 ...

  6. 【JMeter】【微信好文收藏】Jmeter接口测试实战-有趣的cookie

    场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都有一个共同的特点, 有效期(expires). ...

  7. Jmeter接口测试实战-Cookies

    场景: 接口测试时常都需要登录,请求方式(post), 登录常用的方法有通过获取token, 获取session, 获取cookie, 等等. 这几种都有一个共同的特点, 有效期(expires). ...

  8. Jmeter接口测试与数据驱动

    一. 背景 数据驱动Data Driven Testing(DDT),是一种用于创建自动化测试的方法,或者说是一种架构, 本质是输入数据和用这些数据获取测试结果, 使测试逻辑和测试数据分离. DDT的 ...

  9. 全网最全最细的jmeter接口测试教程以及接口测试流程详解

    一.Jmeter简介 ​ Jmeter是由Apache公司开发的一个纯Java的开源项目,即可以用于做接口测试也可以用于做性能测试. Jmeter具备高移植性,可以实现跨平台运行. Jmeter可以实 ...

随机推荐

  1. C#网络编程(异步传输字符串) - Part.3

    这篇文章我们将前进一大步,使用异步的方式来对服务端编程,以使它成为一个真正意义上的服务器:可以为多个客户端的多次请求服务.但是开始之前,我们需要解决上一节中遗留的一个问题. 消息发送时的问题 这个问题 ...

  2. tomcat部署去掉项目名称

    1.在tomcat下的conf路径找到server.xml文件. 2.找到Host如图 <Host name="localhost" appBase="webapp ...

  3. Python学习系列(五)(文件操作及其字典)

    Python学习系列(五)(文件操作及其字典) Python学习系列(四)(列表及其函数) 一.文件操作 1,读文件      在以'r'读模式打开文件以后可以调用read函数一次性将文件内容全部读出 ...

  4. 【转】Python自动化测试 (一) Eclipse+Pydev 搭建开发环境

    原文网址:http://www.cnblogs.com/TankXiao/archive/2013/05/29/3033640.html C#之所以容易让人感兴趣,是因为安装完Visual Studi ...

  5. jmeter ---单个server最大连接数的设置

    为了模拟浏览器关于建立多少并行的链接设置,在jmeter中也有相关的设置 在HTTP请求设置页面,勾选“Use concurrent pool" 选型,并将pool size设置为所需的并发 ...

  6. 使用resteasy作为dubbox消费者

    dubbox服务提供者是REST风格的,消费者可能是从dubbox过来的,也可能是从第三方外部系统过来的.后者的话我们没得选,只能以服务提供者直连,服务治理平台和监控中心手再长,也管不到别人的地盘.但 ...

  7. Oracle查询脚本优化

    发现生产环境的Oracle数据库cpu使用率上升超过70%,其中一条查询语句达到每秒调用40多次.现在我们来观摩下该语句: select t.id,t.level,t.policy, t.type,t ...

  8. 不让activity显示UI的办法

    直接把 //setContentView(R.layout.activity_welcome); 注释掉就是了

  9. java中String和char的区别

    首先来看一下Java的数据类型.Java 包括两种数据类型: 1.原始数据类型(primitive data type):byte,short, char, int, long,float,doubl ...

  10. 杂项-EMS:CRM

    ylbtech-杂项-EMS:CRM CMS是"Content Management System"的缩写,意为"内容管理系统". 内容管理系统是企业信息化建设 ...