Jmeter 使用Taurus进行登录测试

Jmeter 使用Taurus进行登录测试,jmeter,taurus,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: - p

使用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代码,用于模拟登录和测量性能

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

  • 有人问,金牛座真的使用我在csv文件中提供的凭据登录吗?或者我应该用selenium/Taurus来模拟它

  • 真正让我困惑的是,当我删除csv文件中的所有用户时,测试仍然没有给我200的登录和页面1


  • TIA

    如果您没有指定Taurus将使用的执行器,这意味着您的YAML配置将转换为测试计划

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

  • 数据源
    被转换为如下格式:

    这意味着每个线程(虚拟用户)将在每次迭代中从CSV文件中提取新值,如下所示:

    • 虚拟用户1-迭代1-第1行
    • 虚拟用户2-迭代1-第2行
    • 虚拟用户3-迭代1-第1行
    • 虚拟用户1-迭代2-第2行
    • 等等
  • 我不这么认为,您正在从CSV文件读取凭据,但没有在任何地方使用它,正确的语法是
    ${variable\u name\u here}
    ,因此您需要将登录请求主体设置为:

    user[email]: ${userName}
    user[password]:  ${password}
    
    只要你正确,就没有必要使用硒

  • 您可能会得到假阳性结果,因为您没有做很多有用的工作,JMeter会自动将低于400视为成功。因此,与其检查状态代码,我宁愿建议验证用户是否已登录,即是否有“欢迎”消息,或者API响应是否有某些特定文本用于成功登录和/或不包含错误


  • 如果您没有指定Taurus将使用的执行器,这意味着您的YAML配置将被转换为测试计划

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

  • 数据源
    被转换为如下格式:

    这意味着每个线程(虚拟用户)将在每次迭代中从CSV文件中提取新值,如下所示:

    • 虚拟用户1-迭代1-第1行
    • 虚拟用户2-迭代1-第2行
    • 虚拟用户3-迭代1-第1行
    • 虚拟用户1-迭代2-第2行
    • 等等
  • 我不这么认为,您正在从CSV文件读取凭据,但没有在任何地方使用它,正确的语法是
    ${variable\u name\u here}
    ,因此您需要将登录请求主体设置为:

    user[email]: ${userName}
    user[password]:  ${password}
    
    只要你正确,就没有必要使用硒

  • 您可能会得到假阳性结果,因为您没有做很多有用的工作,JMeter会自动将低于400视为成功。因此,与其检查状态代码,我宁愿建议验证用户是否已登录,即是否有“欢迎”消息,或者API响应是否有某些特定文本用于成功登录和/或不包含错误


  • 谢谢@dmitri。我终于能够使用Jmeter,看看你在说什么。你的解释很好。谢谢@dmitri。我终于能够使用Jmeter,看看你在说什么。你的解释很好。