热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

性能测试之混合场景中业务请求比例如何配置

在实际性能测试中,我们经常会遇到对多支交易进行混合压测的情况,此时为了在测试环境中模拟生产中交易量分布,我们会根据生产上各交易的交易量占比来配置压测时各交易的用户数,一般情况会采用

在实际性能测试中,我们经常会遇到对多支交易进行混合压测的情况,此时为了在测试环境中模拟生产中交易量分布,我们会根据生产上各交易的交易量占比来配置压测时各交易的用户数,一般情况会采用以下两种方法。

 

1

设置多个线程组

 

将不同的交易放到单独的线程组下,根据生产上各交易量占比按比例设置不同线程组的并发用户数量。

 

例如有A、B、C三支交易需要进行混合压测,生产上ABC三支交易交易量占比为1:2:3,则在同一个测试计划下设置三个线程组,分别添加一个取样器,三个线程组设置并发用户数为1、2、3(并发用户数按照交易占比进行设置,实际用户数大小参考业务实际情况),如下图所示。

 

 

 

 

 

 

 

 

这种方法适合服务器对以上三支交易的请求处理能力相当的情况,即各交易响应时间接近的情况,这样才能保证最后压测结果各交易请求数量占比接近1:2:3。

 

若服务器对以上三支交易的请求处理能力不同,有的处理快有的处理慢,即响应时间有的长有的短,差别较大时,采用以上方法时,压测的结果就会与我们预期结果有差别。

 

2

设置一个线程组

使用Random函数实现

 

设置一个线程组,将不同的交易均放在该线程组下,使用生成随机数Random函数与If控制器来保证各交易请求数量占比与预期占比一致。

 

例如有两支交易AB,两支交易生产交易量占比为2:8,首先添加一个线程组,该线程组下添加配置元件-Random Variable,用来生成随机数,然后设置随机变量的名称以及最大和最小值,如下图所示。

 

 

 

 

之后再在该线程组下添加逻辑控制器-如果(If)控制器1,并填写条件表达式,如刚刚我们所说交易AB交易量占比为2:8,此时我们条件表达式可写为randomnum<=2,然后在该逻辑控制器下添加取样器A,用于发送请求A。

 

同理再在该线程组下添加逻辑控制器-如果(If)控制器2,填写条件表达式randomnum>2,然后在该逻辑控制器下添加取样器B,用于发送请求B,这样当生成的随机数小于等于2时,执行取样器A,当生成的随机数大于2时,执行取样器B,如下图所示。

 

 

 

 

由于生成随机数函数能保证随机数小于等于2与大于2的占比为2:8,也就能保证压测结果中取样器A和取样器B的请求数量占比接近2:8。

 

这种方法不受各交易响应时间长短的影响,无论各交易响应时间接近还是相差较大,都能使最终压测结果中各交易的请求数量占比接近我们之前预期结果。

 

我们在做混合场景压测时可根据所测场景来选择以上方法之一进行测试。

 



推荐阅读
  • 本文介绍了Windows操作系统的版本及其特点,包括Windows 7系统的6个版本:Starter、Home Basic、Home Premium、Professional、Enterprise、Ultimate。Windows操作系统是微软公司研发的一套操作系统,具有人机操作性优异、支持的应用软件较多、对硬件支持良好等优点。Windows 7 Starter是功能最少的版本,缺乏Aero特效功能,没有64位支持,最初设计不能同时运行三个以上应用程序。 ... [详细]
  • 本文介绍了如何使用php限制数据库插入的条数并显示每次插入数据库之间的数据数目,以及避免重复提交的方法。同时还介绍了如何限制某一个数据库用户的并发连接数,以及设置数据库的连接数和连接超时时间的方法。最后提供了一些关于浏览器在线用户数和数据库连接数量比例的参考值。 ... [详细]
  • 本文介绍了操作系统的定义和功能,包括操作系统的本质、用户界面以及系统调用的分类。同时还介绍了进程和线程的区别,包括进程和线程的定义和作用。 ... [详细]
  • 如何实现织梦DedeCms全站伪静态
    本文介绍了如何通过修改织梦DedeCms源代码来实现全站伪静态,以提高管理和SEO效果。全站伪静态可以避免重复URL的问题,同时通过使用mod_rewrite伪静态模块和.htaccess正则表达式,可以更好地适应搜索引擎的需求。文章还提到了一些相关的技术和工具,如Ubuntu、qt编程、tomcat端口、爬虫、php request根目录等。 ... [详细]
  • 本文详细介绍了SQL日志收缩的方法,包括截断日志和删除不需要的旧日志记录。通过备份日志和使用DBCC SHRINKFILE命令可以实现日志的收缩。同时,还介绍了截断日志的原理和注意事项,包括不能截断事务日志的活动部分和MinLSN的确定方法。通过本文的方法,可以有效减小逻辑日志的大小,提高数据库的性能。 ... [详细]
  • 本文介绍了Python高级网络编程及TCP/IP协议簇的OSI七层模型。首先简单介绍了七层模型的各层及其封装解封装过程。然后讨论了程序开发中涉及到的网络通信内容,主要包括TCP协议、UDP协议和IPV4协议。最后还介绍了socket编程、聊天socket实现、远程执行命令、上传文件、socketserver及其源码分析等相关内容。 ... [详细]
  • PHP设置MySQL字符集的方法及使用mysqli_set_charset函数
    本文介绍了PHP设置MySQL字符集的方法,详细介绍了使用mysqli_set_charset函数来规定与数据库服务器进行数据传送时要使用的字符集。通过示例代码演示了如何设置默认客户端字符集。 ... [详细]
  • Android中高级面试必知必会,积累总结
    本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ... [详细]
  • 本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ... [详细]
  • 本文介绍了使用PHP实现断点续传乱序合并文件的方法和源码。由于网络原因,文件需要分割成多个部分发送,因此无法按顺序接收。文章中提供了merge2.php的源码,通过使用shuffle函数打乱文件读取顺序,实现了乱序合并文件的功能。同时,还介绍了filesize、glob、unlink、fopen等相关函数的使用。阅读本文可以了解如何使用PHP实现断点续传乱序合并文件的具体步骤。 ... [详细]
  • 本文介绍了在Oracle数据库中创建序列时如何选择cache或nocache参数。cache参数可以提高序列的存取速度,但可能会导致序列丢失;nocache参数可以避免序列丢失,但在高并发访问时可能导致性能问题。文章详细解释了两者的区别和使用场景。 ... [详细]
  • MySQL中的MVVC多版本并发控制机制的应用及实现
    本文介绍了MySQL中MVCC的应用及实现机制。MVCC是一种提高并发性能的技术,通过对事务内读取的内存进行处理,避免写操作堵塞读操作的并发问题。与其他数据库系统的MVCC实现机制不尽相同,MySQL的MVCC是在undolog中实现的。通过undolog可以找回数据的历史版本,提供给用户读取或在回滚时覆盖数据页上的数据。MySQL的大多数事务型存储引擎都实现了MVCC,但各自的实现机制有所不同。 ... [详细]
  • 篇首语:本文由编程笔记#小编为大家整理,主要介绍了软件测试知识点之数据库压力测试方法小结相关的知识,希望对你有一定的参考价值。 ... [详细]
  • 本文介绍了lua语言中闭包的特性及其在模式匹配、日期处理、编译和模块化等方面的应用。lua中的闭包是严格遵循词法定界的第一类值,函数可以作为变量自由传递,也可以作为参数传递给其他函数。这些特性使得lua语言具有极大的灵活性,为程序开发带来了便利。 ... [详细]
  • 本文介绍了一个React Native新手在尝试将数据发布到服务器时遇到的问题,以及他的React Native代码和服务器端代码。他使用fetch方法将数据发送到服务器,但无法在服务器端读取/获取发布的数据。 ... [详细]
author-avatar
通天论坛it技术
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有