概述:

我的应用程序几乎没有业务关键流程,我们可以从中提出不同的业务工作流程。当我试图在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测试脚本,我可以为不同的业务工作流创建不同的线程组。每当应用程序发生变化时,我都必须在一个地方更新脚本。所有工作流程都将保持不变!

转载于:https://www.cnblogs.com/a00ium/p/10381278.html

JMeter - 如何创建可重用和模块化测试脚本相关推荐

  1. 开发人员学Linux(4):使用JMeter对网站和数据库进行压力测试

    前言 表面看来,JMeter与本系列课程似乎关系不大,但实际上在后面的很多场景中起着重要作用:如何获知修改了某些代码或者设置之后系统性能是提升了还是下降了呢?商业的压力测试工具LoadRunner确实 ...

  2. 《C语言接口与实现:创建可重用软件的技术》一1.5 习题

    本节书摘来自异步社区<C语言接口与实现:创建可重用软件的技术>一书中的第1章,第1.5节,作者 傅道坤,更多章节内容可以访问云栖社区"异步社区"公众号查看 1.5 习题 ...

  3. 如何使用JMeter自身代理录制APP测试脚本

    录制脚本只不过是我们日常工作中的一个小应用而已,只是为了能快速看到应用程序跑的逻辑及实现顺序.并够帮助测试人员,快速查出问题出现的节点. 而对于做有针对性的测试时,比如做某个接口的测试,建议大家还是自 ...

  4. 如何使用JMeter自身代理录制测试脚本

    录制脚本只不过是我们日常工作中的一个小应用而已(对!就是玩儿!),只是为了能快速看到应用程序跑的逻辑及实现顺序.并够帮助测试人员,快速查出问题出现的节点. 而对于做有针对性的测试时,比如做某个接口的测 ...

  5. python学习第八天---用Django框架创建可重用注册登录系统

    python学习第八天---用Django框架创建可重用注册登录系统 实现的功能 项目开始前的整体规划 搭建环境完成基础配置 创建app 更改语言和时区 数据库表生成 启动开发服务器 浏览器访问,检测 ...

  6. jmeter聚个报告怎么看qps_jmeter测试接口qps

    1. 如何使用jmeter进行接口测试 服务端系分提供的某接口样例为: 评估后可采用使用jmeter进行压力测试的步骤为: 启动jmeter:在bin下点击jmeter.bat,运行jmeter 2. ...

  7. JMeter:使用Docker进行分布式负载测试

    本文的原文链接 概述 单个的JMeter实例可能无法生成足够的负载来对应用程序进行压力测试.如本网站所示,一个JMeter实例将能够控制多个远程JMeter实例,并在你的应用程序上产生更大的负载.JM ...

  8. C语言接口与实现:创建可重用软件的技术

    关注.星标公众号,直达精彩内容 来源:技术让梦想更伟大 作者:李肖遥 大家后,我是肖遥,静默的两天,终于可以在家里安静的坐下来,思考和躺平了. 最近发现一本好书,<C语言接口与实现(创建可重用软 ...

  9. 《C语言接口与实现:创建可重用软件的技术》一2.6 扩展阅读

    本节书摘来自异步社区<C语言接口与实现:创建可重用软件的技术>一书中的第2章,第2.6节,作者 傅道坤,更多章节内容可以访问云栖社区"异步社区"公众号查看 2.6 扩展 ...

最新文章

  1. ren`guang-boss面试
  2. Android2.3解析json出错
  3. Android 4.0 Notification
  4. linux与windows互传文件、用户与用户组管理、密码配置文件
  5. oracle 11.2.4联机文档,ORACLE 11G 联机文档partition_extended_name的一个错误
  6. 从 Windows 换到 Mac,真没有想象中的那么难
  7. centos 7 mysql 源码安装_centos7 mysql5.7.17源码安装
  8. 零基础(转行,应届生、在校生)前端开发学习计划
  9. android---手电筒之摩尔斯电码
  10. IT人才需要怎样的沟通表达能力
  11. 至强cpu型号列表_Cascade Lake全家福:图说第二代至强可扩展处理器
  12. 聊聊 Tomcat 的单机多实例
  13. 多功能科学计算机在线使用,多功能科学计算器
  14. 【快代理API】获取隧道代理IP
  15. 2. UFS2.1 —— Descriptor描述符
  16. Linux的命令行无法粘贴
  17. FilterConfig接口及其使用方法详解
  18. 免费数据 | CnOpenData国际足球比赛结果数据
  19. Android监听按键锁屏广播
  20. 研发部门压力管理探讨

热门文章

  1. 【RK3399Pro学习笔记】五、ROS与USB摄像头
  2. Exynos4412 IIC总线驱动开发(一)—— IIC 基础概念及驱动架构分析
  3. Python中的元类及元类实现的单例模式
  4. Ubuntu网络连接未托管的解决办法
  5. NUC972配置为支持NFS
  6. JAVA进阶day02
  7. React开发(168):...dva调用不成功的原因
  8. [html] 如何解决微信浏览器视频点击自动全屏的问题?
  9. 工作372-cookie和sessionstroage以及localstroage区别
  10. [css] 使用css3做一个魔方旋转的效果