性能测试|基于JMeter 完成典型电商场景(首页浏览)的性能压测

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 性能测试|基于JMeter 完成典型电商场景(首页浏览)的性能压测

1.1 场景预设

之前的测试中单独抽离出了一个注册登录的场景,而实际的电商场景中,绝大多数都是已经登录并保持登录状态的,用户的登录信息可能被保存在浏览器的 cookie 中或在 App 的 localstorage 中,更多的是拿到现有的 cookie 去做验证;

因此这里在默认用户登录状态下抽离出一个典型的电商场景,浏览首页-添加商品-下单结算,涉及到的接口如下:

1)浏览首页

在这里插入图片描述

2)增加浏览记录(自动触发)

在这里插入图片描述

3)添加商品/购物车

在这里插入图片描述

4)下订单/结算

在这里插入图片描述

1.2 Token 数据准备

在此次演示场景中,是获取 token 值带入 header 中的 Authorization 以完成用户身份的验证,借用之前创建的注册登录脚本,获取到了很多用户 token 值保存在了本地以供测试使用:
在这里插入图片描述

2. 脚本编写

在这里插入图片描述
在这里插入图片描述

2.1 浏览首页

2.1 浏览首页

1)设置请求头的全局变量——HTTP Header Manager

由于每个请求都需要在 header 中带入 token ,所以我们借用 HTTP Header Manager 来完成一个全局变量的设定。

在这里插入图片描述

在这里插入图片描述

2)token数据的参数化获取——CSV Data set Config
利用 CSV Data set Config,获取提前在 TokenFile 准备好的 token 值,传给变量 ${auth}。
在这里插入图片描述

3)事务抽离——Transaction Controller
根据场景,我们可将不同的事务进行抽离合并,以方便我们后续的数据查看,这里可以事务控制器 Transaction Controller 将首页的事务单独抽离在一起。
在这里插入图片描述
在这里插入图片描述

4)控制首页接口比例——Loop Controller
首页中有很多商品分类,这里假设访问一次首页后会访问两次商品分类列表,那么利用 Loop Controller 来控制在它里面的商品分类列表请求 /home/productCateList/{parentId} 会被请求两次:
在这里插入图片描述
在这里插入图片描述

5)这里可以看到商品分类接口需要传入参数 parentId:
在这里插入图片描述

通常不太建议在压测脚本中使用 同一个 id 去访问,一来是容易命中缓存,即使没有 Redis 缓存, MySQL 对于同样的请求也会有加载上的优化,这样就会对测试数据与真实场景造成误差。因此这里我们还是选择提前将分类 id 获取,通过 CSV Data set Config 传入。

查看数据库,不同的分级有多种分类信息
在这里插入图片描述
去重后获取所有的 parent_id
在这里插入图片描述
将parentId保存文件中并设置CSV:

$ cat parentId_Data
0
1
12
2
3
4
5

在这里插入图片描述
在这里插入图片描述

tp=webp&wxfrom=5&wx_lazy=1&wx_co=1)

6)获取推荐商品设定和首页的访问量一致:

在这里插入图片描述

7)控制首页分类专题接口比例——if Controller

这里我们设定的场景为访问专题的用户量为主页的一半,那么利用 if Controller 写方法定义,使请求数量不能被2整数的时候再执行请求,这样就可以保证请求数减半,具体如下:

在这里插入图片描述

在这里插入图片描述

关于/home/subjectList利用 CSV Data set Config 做参数化的方式和上述分类信息接口一致,这里就不再赘述:

在这里插入图片描述

关于 if Controller 中函数的说明

上述的函数生成可以利用JMeter自带的函数助手( Tools->Function Helper Dialog )中的 __jexl3 函数或 __groovy 函数,对判断条件的表达式进行求值计算,生成对应的求值运算函数,然后将此运算函数复制到 If ControllerExpression 输入框中即可:

例如本例中我们需要先获取用户请求的数量,可以先在 Function Helper 中选中 __counter ,设置为true,点击 Generate & Copy to clipbord 生成函数式

在这里插入图片描述

复制函数式,再次选中 __jexl3 ,然后设置生成counter不能整数2时的函数式:

在这里插入图片描述

3. 实操演示

脚本的首页部分已经完成,各个接口的比例按照2:4:2:1的比例安排,然后实际运行检验一下效果
在这里插入图片描述

先起10个线程运行一次验证脚本的正确性:
从结果可以看到接口都请求成功并且按照了2:4:2:1的比例

在这里插入图片描述

如果持续压测,也可以在 Grafana 中看到测试数据的显示:

在这里插入图片描述

以上,后面将继续完成下单支付场景的测试。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
相关文章
|
1月前
|
人工智能 供应链 安全
AI辅助安全测试案例某电商-供应链平台平台安全漏洞
【11月更文挑战第13天】该案例介绍了一家电商供应链平台如何利用AI技术进行全面的安全测试,包括网络、应用和数据安全层面,发现了多个潜在漏洞,并采取了有效的修复措施,提升了平台的整体安全性。
|
20天前
|
监控 搜索推荐 测试技术
电商API的测试与用途:深度解析与实践
在电子商务蓬勃发展的今天,电商API成为连接电商平台、商家、消费者和第三方开发者的重要桥梁。本文深入探讨了电商API的核心功能,包括订单管理、商品管理、用户管理、支付管理和物流管理,并介绍了有效的测试技巧,如理解API文档、设计测试用例、搭建测试环境、自动化测试、压力测试、安全性测试等。文章还详细阐述了电商API的多样化用途,如商品信息获取、订单管理自动化、用户数据管理、库存同步、物流跟踪、支付处理、促销活动管理、评价管理、数据报告和分析、扩展平台功能及跨境电商等,旨在为开发者和电商平台提供有益的参考。
26 0
|
1月前
|
测试技术 持续交付 Apache
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
Python性能测试新风尚:JMeter遇上Locust,性能分析不再难🧐
77 3
|
1月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
58 1
|
2月前
|
测试技术 持续交付 Apache
性能怪兽来袭!Python+JMeter+Locust,让你的应用性能飙升🦖
【10月更文挑战第10天】随着互联网应用规模的不断扩大,性能测试变得至关重要。本文将探讨如何利用Python结合Apache JMeter和Locust,构建高效且可定制的性能测试框架。通过介绍JMeter和Locust的使用方法及Python的集成技巧,帮助应用在高负载下保持稳定运行。
76 2
|
2月前
|
测试技术 持续交付 Apache
性能怪兽来袭!Python+JMeter+Locust,让你的应用性能飙升🦖
【10月更文挑战第2天】随着互联网应用规模的不断膨胀,性能测试变得至关重要。本文将介绍如何利用Python结合Apache JMeter和Locust构建高效且可定制的性能测试框架。Apache JMeter是一款广泛使用的开源负载测试工具,适合测试静态和动态资源;Locust则基于Python,通过编写简单的脚本模拟HTTP请求,更适合复杂的测试场景。
74 3
|
2月前
|
缓存 测试技术 Apache
告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
【10月更文挑战第1天】告别卡顿!Python性能测试实战教程,JMeter&Locust带你秒懂性能优化💡
83 4
|
8天前
|
监控 JavaScript 测试技术
postman接口测试工具详解
Postman是一个功能强大且易于使用的API测试工具。通过详细的介绍和实际示例,本文展示了Postman在API测试中的各种应用。无论是简单的请求发送,还是复杂的自动化测试和持续集成,Postman都提供了丰富的功能来满足用户的需求。希望本文能帮助您更好地理解和使用Postman,提高API测试的效率和质量。
48 11
|
1月前
|
JSON Java 测试技术
SpringCloud2023实战之接口服务测试工具SpringBootTest
SpringBootTest同时集成了JUnit Jupiter、AssertJ、Hamcrest测试辅助库,使得更容易编写但愿测试代码。
65 3
|
2月前
|
JSON 算法 数据可视化
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)
这篇文章是关于如何通过算法接口返回的目标检测结果来计算性能指标的笔记。它涵盖了任务描述、指标分析(包括TP、FP、FN、TN、精准率和召回率),接口处理,数据集处理,以及如何使用实用工具进行文件操作和数据可视化。文章还提供了一些Python代码示例,用于处理图像文件、转换数据格式以及计算目标检测的性能指标。
80 0
测试专项笔记(一): 通过算法能力接口返回的检测结果完成相关指标的计算(目标检测)