阿里云PTS-原生JMeter压测实战-云测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 阿里云PTS-原生JMeter压测实战-云测试

在进行性能测试时很多同学在工作中会选择jmeter作为工具来测试,但是jmeter本身有很多限制;于是现在有很多云测试了。

阿里云的PTS是一款云化性能测试工具,同时也支持原生Jmeter压测(把写好的jmeter脚本传入即可)。以下就介绍快速压测(9.9尝鲜包)和JMeter压测(278的峰值5k并发的入门包),而云端录制就不介绍了主要是这都是我自己花钱实践的,这个套餐是要628以上。。。

快速压测

一:场景配置

阿里云的PTS性能测试目前有三种方法可以创建场景;快速压测,Jmeter压测,云端录制;每一个种方法都有不同的价格套餐,如果是想试用一下就买尝鲜包好了,但是尝鲜包不可以使用JMeter压测和云端录制。

image.png

1.出参/断言定义

点击“添加压测API”;填写URL和Headers,此处的出参需注意;比如一般的系统都需要登录,登陆后会有相应的token以供后面的接口使用,那么在这里就可以把登录响应的token存下来,给后面使用。断言就是判断此条用例是否通过;

需要注意的是数据轮询:关联数据文件后才可用,选中后关联的数据文件会被轮询一次,轮询完后就不再发送新的请求。比如:设置的并发是100,但是轮询的数据只有50条,那么数据文件轮询一次后,就不会再次发送新的请求。

 

image.png

image.png

 

image.png

2.在接口中引用参数

在第二个请求就会用到:Key是系统里接口中验证权限的字段,根据各自的项目设置,Value就是登录这个接口返回的token值,使用${参数名}即可引用,这里的参数名是登录接口在出参时定义的。

image.png

3.Header设置

其实很多接口的请求头都是大同小异,可以把公共的信息写在全局变量中,那么在请求接口时就会自动带上全局设置的Header。

image.png

 

 

image.png

4.数据文件的引入

每一个用户的操作有所不同,因此每一个接口的传入参数也会不一样;比如:压测时选择并发模式,最大并发1000用户,每一个用户的用户名和密码都不一样,因此在压测登录这个接口时是不可能写定一个用户名和密码的,这样达不到压测的目的。因此就是用到了数据文件的引入。将用户名和密码写在一个文件里,用户名和密码的字段各自对应数值;可以先用excel打开在前两行分别写入用户名和密码的值,另存为csv格式。

点击:全局自定义参数->上传文件;上传后设置用户名和密码的参数,loginName,password;分别对应csv文件的第一列和第二列。

在接口中如何引用参数:使用${参数名}即可引用。

image.png

二.施压配置

1.此处的设置需要去了解什么是TPS,RPS(每秒请求数),具体如何设置是要根据系统的业务量来设置的。

image.png

2.比如:有时会遇到这种情况

为何设置了300并发,实际压测过程中并未能达到?

基本概念

  • 并发模式:即虚拟用户模式。详细定义,参见并发虚拟用户、RPS、TPS的解读
  • 并发用户数(以下简称“并发”):现实系统中同时操作业务的用户数量,在性能测试工具中一般称为虚拟用户(Virutal User)。最大并发用户数,即在压测中最多多少用户同时对压测业务产生压力。
  • RPS:Request Per Second,每秒请求数。RPS 是从服务端的视角衡量系统每秒处理的请求数,一个并发用户可能产生多个请求。
  • 由于压测的施压机计算资源有限,同时为了保证压测流量更稳定,在施压时对 RPS 有一定的限制(资源包规格中不同并发有相应的 RPS 上限)。RPS 如果到达上限,即不会增加更大的压力。

例如,将最大并发设置为 300 时,在施压配置页面您可以看到对应的 RPS 限制为 4000:

image.png

以最上面图片所示的压测为例,您会发现平均 RPS(总请求数/总压测时长)已经达到 4001(4001是采集周期内计算的合理误差),在压测趋势图中已经达到了 4000 的 RPS 上限,所以并发不会再继续往上涨了。

image.png

三:调试场景

1.调试场景

设置好一系列的请求和配置要求后为了验证每一个接口是正常的业务流程,也为了避免浪费资源,可以在正式压测之前使用调试场景。点击接口可以查看此接口的详情信息。

image.png

2.测试出参正则表达式

有时候在接口的出参设置那里不知道参数的提取表达是如何书写,就可以使用这样的方法。

选中某一个接口后点击右侧的:去测试出参正则表达式,就会出现以下界面:

image.png

在正则表达式的输入框输入表达式即可验证表达式是否正确,比如:

image.png

黄色部分就代表输入的表达式期望得到的结果;或者点击输入框的右侧下拉箭头也可选择写好的表达式;粘贴表达式到出参设置或者点击 “同步出参配置”。

JMeter压测

1. 创建压测->原生Jmeter压测->场景配置中单击上传文件,添加JMeter脚本、JAR文件(即放置在JMeter的安装目录.../lib/ext 下的相关JAR文件)和其他数据文件。  95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

2. 施压配置

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

四.压测报告

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

95dcc176-b4fc-48d6-a19a-6239ba1c34f2.png

右上角还可以导出PDF查看。

原生JMeter压测配置阿里云官方文档:https://help.aliyun.com/document_detail/91788.html?spm=5176.5176.0.dexternal.585967e4WU2y7y

 

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
4天前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
14 4
|
2天前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
8 1
|
1月前
|
人工智能 分布式计算 DataWorks
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
2024年5月31日,在中国信通院组织的首批数据智能平台专项测试中,阿里云数据智能平台解决方案(MaxCompute、DataWorks、PAI)顺利完成测试。
138 5
首批!阿里云 MaxCompute 完成中国信通院数据智能平台专项测试
|
5天前
|
测试技术 PHP 开发者
原生php单元测试示例
通过上面的示例,我们可以看到,即使在缺乏专门测试框架的情况下,使用原生PHP代码进行基本的单元测试也是完全可行的。当然,对于更复杂的项目,利用像PHPUnit这样的专业工具将带来更多的便利和高级功能。不过,理解单元测试的基本概念和能够手工编写测试是每个PHP开发者的宝贵技能。
8 0
|
1月前
|
测试技术 Windows
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(下)
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(下)
30 2
|
1月前
|
测试技术 程序员
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(上)
软件测试之 性能测试 性能测试基础指标 Loadrunner、Jmeter等工具(上)
43 1
|
28天前
|
关系型数据库 MySQL 测试技术
《阿里云产品四月刊》—瑶池数据库微课堂|RDS MySQL 经济版 vs 自建 MySQL 性能压测与性价比分析
阿里云瑶池数据库云原生化和一体化产品能力升级,多款产品更新迭代
|
29天前
|
敏捷开发 测试技术 API
阿里云云效产品使用问题之API中包含有获取测试计划的接口吗
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
1月前
|
JSON Java 测试技术
必知的技术知识:Jmeter压测工具使用手册(完整版)
必知的技术知识:Jmeter压测工具使用手册(完整版)
|
1月前
|
测试技术 API
PTS压测问题之压测空白如何解决
很遗憾,我没有找到关于PTS压测空白问题的详细解决步骤,但可以给出一些建议和思路。 首先,面对PTS压测空白问题,可以从以下几个方面进行排查和解决: 1. **检查API配置**:确认是否