zoukankan      html  css  js  c++  java
  • JMeter

    概述:

    我的应用程序几乎没有业务关键流程,我们可以从中提出不同的业务工作流程。当我试图在JMeter中提出性能测试脚本时,我需要找到一些方法来创建可重用/模块化的测试脚本。这样我就可以创建不同的工作流程。

    对于Ex:

    让我们考虑一个具有以下功能的示例应用程序。

    • 登录
    • 登出
    • 用户注册
    • 搜索产品
    • 选择产品
    • 使用不同的付款方式订购产品
    • 编辑订单
    • 取消订单
    • 搜索用户个人资料

    使用上述功能,我可以提出不同的工作流程,如下所示。

    • 用户访问应用程序,搜索产品,选择产品,注册,订购产品
      • 用户注册 - >搜索产品 - >选择产品 - >订购产品 - >注销
    • 现有用户登录,搜索产品,选择产品,注册,订购产品
      • 登录 - >搜索产品 - >选择产品 - >订购产品 - >退出
    • 管理员用户登录,搜索用户并取消订单
      • 登录 - >搜索用户 - >取消订单 - >退出

    由于我有太多的组合,我想找到一种合适的方法来设计我的JMeter测试脚本。在本文中,我将解释如何使用以下JMeter元素实现该目标。

    1. 测试片段
    2. 模块控制器
    3. 参数化控制器
    4. 包括控制器

    测试片段:

    Test Fragment元素是一个特殊的控制器,可以直接在线程组等JMeter测试计划下添加。但它除了持有其他元素外什么也没做!只有当其他线程组的Module / Include控制器引用它时才会执行它。它就像一个可重用的脚本库。

    模块控制器:

    JMeter中的模块控制器可用于引用JMeter 测试计划中的任何逻辑控制器

    例如,我的测试中有5个线程组,如下所示。

    1. 新用户注册
    2. 用户登录和订单创建
    3. 用户登录和产品视图
    4. 现有订单编辑/取消
    5. 用户搜索

    某些功能对于这些线程组可能很常见。例如,用户必须登录包装箱/查看现有产品。

    mod001

    在上面的示例中,您可以看到,两个线程组都必须具有登录功能。每当登录功能发生变化时,我都需要确保在两个线程组中更新脚本。

    因此,而不必在这两个线程组登录重复简单的控制器,我可以添加一个测试片段及移动“用户登录”  简单的控制器下的测试片段这样它就可以被模块控制器引用[它不一定是一个简单的控制器它可以是任何控制器]。

    mod002

    现在,如果登录脚本发生变化,我只需要更新测试片段下的“用户登录” 两个线程组都可以正常工作。

    参数化控制器:

    在上面的示例中,一个“用户登录”正由多个线程组访问有时,这些线程组可能希望测试片段使用这些简单 / 事务控制器,就像一个函数,以便它们可以传递不同的数据,并期望控制器根据传递给它的数据执行操作。

    例如,我的要求是在订购新产品时使用VISA信用卡,并在编辑/升级现有订单时使用万事达卡。[对不起,如果这是一个愚蠢的例子。:)] 
    我可以使用  参数化控制器来实现这个目的。

    mod003

    我首先添加参数化控制器然后我参数化控制器添加模块控制器现在模块控制器调用'Checkout'并传递要在'Checkout'中使用的测试数据。

    mod004

    mod005

    结账控制器将在执行请求时使用传递给它的测试数据。

    mod006

    包括控制器:

    由于模块控制器用于调用测试计划中的逻辑控制器,因此Include Controller用于引用现有的.jmx文件本身。

    例如,应用程序非常复杂,有2名工程师参与脚本创建。
    开发人员A正在为登录和搜索应用程序的产品功能创建测试脚本。
    开发人员B正在为Checkout创建测试脚本。

    两位工程师都为应用程序的不同模块提供了不同的.jmx文件。

    现在我们创建最终的JMeter测试计划,它将引用这些外部'.jmx'文件,如下所示。

    mod007

    我可以为登录,订购产品,产品搜索,用户搜索,查看产品,编辑订单,取消订单提供不同的jmx文件

    现在我可以通过引用外部jmx文件来创建我想要的任何业务流程。[在最终的JMeter测试中添加用户定义的变量,Cookie管理器等。不在包含的文件中。]

    登录 - >订购产品 - >查看产品
    登录 - >订购产品 - >编辑订单
    登录 - >产品搜索 - >订购产品
    登录 - >订购产品 - >产品搜索 - >取消订单

    摘要:

    通过如上所示设计我的JMeter测试脚本,我可以为不同的业务工作流创建不同的线程组。每当应用程序发生变化时,我都必须在一个地方更新脚本。所有工作流程都将保持不变!

  • 相关阅读:
    如何将jar包加入到Maven本地仓库
    dubbo 常见错误
    关于spring”通配符的匹配很全面, 但无法找到元素 'context:component-scan' 的声明“的错误
    Maven类包冲突终极三大解决技巧 mvn dependency:tree
    springMVC传对象参数
    scp 对拷文件夹 和 文件夹下的所有文件 对拷文件并重命名
    CATALINA_BASE与CATALINA_HOME的区别
    有return的情况下try catch finally的执行顺序(最有说服力的总结)
    Slf4j MDC 使用和 基于 Logback 的实现分析
    Docker 系列01: Centos7.3 上安装docker
  • 原文地址:https://www.cnblogs.com/a00ium/p/10381278.html
Copyright © 2011-2022 走看看