概述:

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

对于Ex:

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

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

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

  • 用户访问应用程序,搜索产品,选择产品,注册,订购产品

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

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

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

测试片段:

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

模块控制器:

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

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

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

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

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

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

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

参数化控制器:

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

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

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

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

包括控制器:

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

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

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

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

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

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

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

摘要:

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

JMeter - 如何创建可重用和模块化测试脚本的更多相关文章

  1. 7.Jmeter 快速入门教程--录制复杂web测试脚本

    Jmeter的功能简单,不需要有脚本语言的编写经验,纯图形界面添加测试场景, 用起来上手很快.但是如果手动添加每一个web(http/https)请求,费时又费力.而且有可能最后手动编写的和实际发的请 ...

  2. 在Jmeter中使用自定义编写的Java测试代码

    我们在做性能测试时,有时需要自己编写测试脚本,很多测试工具都支持自定义编写测试脚本,比如LoadRunner就有很多自定义脚本的协议,比如"C Vuser","Java ...

  3. JMeter http(s)测试脚本录制器的使用

    JMeter http(s)测试脚本录制器的使用 by:授客 QQ:1033553122 http(s) Test Script Recorder允许Jmeter在你使用普通浏览器浏览web应用时,拦 ...

  4. [转]jmeter 自定义测试脚本

    http://blog.csdn.net/kash_chen007/article/details/37690411 http://wangym.iteye.com/blog/731729 1.创建一 ...

  5. 使用JMeter录制Web应用测试脚本

    环境 操作系统:Windows 7 工具:JMeter.Badboy 1. 使用代理录制Web性能测试脚本 使用代理录制脚本来创建测试计划无疑是一个简便的方法,代理所要完成的工作就是录制发往服务器的请 ...

  6. JMeter AI图片识别接口并发量测试

    由于临时接到一个性能测试任务,测试8个独立接口在实验室环境的TPS.响应时间以及服务器性能监控如CPU.内存.IO等,没有明确具体的响应时间与并发数,需求较模糊. 1.软件.硬件环境信息:JMeter ...

  7. 『动善时』JMeter基础 — 48、使用JMeter自身代理录制测试脚本

    目录 1.测试计划内包含的元件 2.HTTP代理服务器的设置内容 3.设置浏览器的代理服务器 4.录制脚本 5.查看录制的脚本 6.HTTP代理服务器的排除模式 7.保存脚本 录制脚本只不过是我们日常 ...

  8. 『动善时』JMeter基础 — 49、使用JMeter自身代理录制APP测试脚本

    目录 1.测试计划内包含的元件 2.HTTP代理服务器的设置内容 3.设置手机的代理服务器 4.录制脚本 5.查看录制的脚本 6.HTTP代理服务器的排除模式 7.保存脚本 8.注意坑点 录制脚本只不 ...

  9. 用BlazeMeter录制JMeter测试脚本

    工具: 1,JMeter 2,Chrome 3,BlazeMeter 4,SwitchyOmega(如果需要代理) 步骤: 以上工具准备好以后就可以录制JMeter的测试脚本了, 在Chrome中点击 ...

随机推荐

  1. Failed to install xxxx.apk on device 'emulator-5554!

    异常信息:[HelloAndroid] Performing com.example.helloandroid.HelloAndroid activity launch[HelloAndroid] U ...

  2. PS色调— —通道混合

    clc; clear all; close all; addpath('E:\PhotoShop Algortihm\Image Processing\PS Algorithm'); Image=im ...

  3. 流媒体直播服务器:Bull-Live-Server

    Bull Live Server 简称 BLS ,旨在使用C++语言提供强大功能和高性能的流媒体直播服务器. 为何要写 BLS ? 1.simple rtmp server https://githu ...

  4. luogu1833 樱花

    背包问题小合集 01背包 完全背包 多重背包混着来 对于01背包:把它想象成最大物品数为1的多重背包 对于完全背包:把它想象成最大物品数为m/w[i]的多重背包 对于多重背包:把它想象成...等等这本 ...

  5. 图解Stm32使用jlink下载程序时jtag接口(SW和JTAG模式)的简化方法

    转自: http://www.it165.net/embed/html/201308/2332.html 用过stm32的人都知道stm32有两种常用下载程序的方法,用串口和jlink.串口下载方法和 ...

  6. 忘记mysql密码,但是可以用navicat修改MySQL密码

    1.首先:要知道你的账户 2.打开可以连接的navicat,在查询语句页面,输入以下操作,就可以修改成功密码了

  7. 关于surf显示立体图,可视化分析数据

    如果想判断一个点(x,y)对应的ZV值是否在平面上方.平面上.平面下方,只要将(x,y)带入方程,得到z. 如果ZV大于>Z,则在平面上方:如果ZV<Z,则在方面下方:若ZV=Z,则在平面 ...

  8. hibernate中的session的获取方法以及区别

    获取sesstionFactory的方法: // sessionFactory factory = new AnnotationConfiguration.configure("hibern ...

  9. CSDN优秀博客连接,博客之星连接。

    点击链接 获得[红杏出墙]插件,FQ上网无压力!谷歌搜索无压力! 2013年度CSDN十大博客之星 TOP 作者 专注领域 博客地址 邹晓艺 机器学习及算法 zouxy09 2 王然 潜在的集大成者 ...

  10. Codeforces 1107G Vasya and Maximum Profit 线段树最大子段和 + 单调栈

    Codeforces 1107G 线段树最大子段和 + 单调栈 G. Vasya and Maximum Profit Description: Vasya got really tired of t ...