使用Taurus进行登录测试

时间:2019-10-23 16:13:51

标签: jmeter taurus

使用Taurus测试登录操作

execution:
  -
    concurrency: 5
    ramp-up: 5
    hold-for: 1m
    scenario: Buyer-logs-in


scenarios:
  Buyer-logs-in:
    variables:
      baseurl: http://localhost:3000
    default-address: ${baseurl}
    data-sources:
      - path: './login.csv'
        delimeter: ','
        variable-names: userName, password
    keepalive: true
    retrieve-resources: false

    requests:
      - url: 'http://localhost:3000/login'
        label: login
        method: POST
        body:
          user[email]: {userName}
          user[password]:  {password}
        assert:
          - contains:
              - 200
            subject: http-code

      - url: 'http://localhost:3000/action'
        label: page1
        method: GET
        assert:
          - contains:
              - 200
            subject: http-code 

这是我的示例Taurus代码,用于模拟登录并衡量性能。

  1. 在我的应用中,一次只能有一个用户登录,而我的csv文件有2个用户。当我将并发设置为5并且Taurus说5个用户登录时,该测试仍然有效。这怎么可能。当同一用户再次登录时,他将被踢出登录的第一个浏览器。那么,如果有2个用户登录,那么Tuarus如何模拟5个用户?

  2. 有了这个问题,金牛座真的使用我在csv文件中提供的凭据登录吗?还是应该使用硒/金牛座来模拟它?

  3. 真正让我感到困惑的是,当我删除csv文件中的所有用户时,测试仍然没有为我提供200登录名和page1。

TIA

1 个答案:

答案 0 :(得分:1)

如果您未指定executor,金牛座将使用jmeter as default,这意味着您的YAML配置将转换为Apache JMeter测试计划

您可以通过运行bzt your-test.yaml -gui命令来查看生成的测试计划

  1. data-sources被翻译为CSV Data Set Config,看起来像:

    enter image description here

    这意味着每个线程(虚拟用户)每次迭代都会从CSV文件中获取新值,例如:

    • 虚拟用户1-迭代1-1行
    • 虚拟用户2-迭代1-第二行
    • 虚拟用户3-迭代1-1行
    • 虚拟用户1-迭代2-第二行
  2. 我不这么认为,您正在从CSV文件中读取凭据,但未在任何地方使用它,JMeter Variables的正确语法为${variable_name_here},因此您需要设置登录请求正文至:

    user[email]: ${userName}
    user[password]:  ${password}
    

    只要您正确configure JMeter to behave like a real browser,就无需使用硒

  3. 由于您的Response Assertion并没有做很多有用的工作,您可能会得到假阳性结果,JMeter会自动认为HTTP Status Codes在400以下是成功的。因此,与其检查状态码,不如建议您验证使用情况是否已登录,即“欢迎”消息存在,或者API响应包含一些用于成功登录的特定文本和/或不包含错误。