当前位置:网站首页>第一次性能测试实践,有“亿”点点紧张
第一次性能测试实践,有“亿”点点紧张
2022-08-05 03:50:00 【入坑玩家】
最近有粉丝做性能测试,不停地来问我问题,感觉他连很基本的概念都不清楚,就开始轰轰烈烈的干起来了,出了问题,就指望我手把手来解决。
“磨刀不误砍柴工”,我们搞清楚了性能测试的技巧,测试起来就会顺畅很多。
确认需求
确定性能需求和性能测试方案、需要确定性能测试范围(覆盖哪些场景)、性能测试策略、并发用户数和加压方式。
时间、人员、任务的分配安排,一般在总体测试计划中会预留性能测试的时间。性能测试方案是开展性能测试前的核心内容,决定着性能测试如何开展的指标标准。
其主要包括性能需求调研、性能测试范围、性能测试策略、并发用户数和加压方式、性能测试计划、用例等。其中性能测试方案中最重要的部分是计算并发用户数。
在性能测试有个核心内容也是在谈性能测试时绕不过去的问题,就是并发用户数的计算。目前做性能测试采用的比较多的并发用户数的评估策略是80-20法则。
通过与项目团队(含客户、产品)评估出系统高峰期和高峰时段,得到该高峰时段的用户数量。
假设本电商系统高峰时段为双十一上午10点为高峰期(做秒杀/团购活动)的用户数量是10W用户量,高峰时段为15分钟。那么我们可以通过20-80法则来计算并发用户数,即80%的用户会在20%的时间内完成交易,计算结果为:(10W80%)/(15分钟60秒20%)=80000人/180秒=444.44人。
因为公司产品不只是为了满足当前的性能需求,还要能够满足未来3年的性能需求,而公司业务是增长的(不增长会被打死的),预计增长为20%(领导说了算,他开心就好),那么3年之后的并发用户数为:444.44人 * 1.2 * 1.2 * 1.2 = 768人 ,则得到每秒并发用户数768人。
由上可知,我们在线程组中设计的线程数为768,Ramp-up值为1,持续时间为10分钟(通用标准)。
脚本录制
录制性能测试脚本,增强脚本使性能测试脚本尽可能真实接近性能测试的实际情况(参数化、关联、定时器、集合点、断言)。
参数化
- csv数据文件设置
- 用户变量和用户参数
- 函数助手
关联
前面响应数据的提取:在JMeter通过在前面请求中添加后置处理器创建正则表达式提取器,正则表达式提取器中包含引用名称即参数的名称,可以任意填写。
正则表达式要根据响应来填写,响应在查看结果树中可以获取,在查看结果树中对响应使用RegExpTester模式查看,获取到要关联的数据及左右边界,将要关联的数据使用(.*?)来替代。模板一般为111,匹配数字一般为1后面。
请求数据的关联:把需要关联的请求数据使用${}正则表达式的引用名称即参数替代即可。
断言
响应断言的操作主要包括四种:
- 包含:预期结果应该包在实际结果当中
- 匹配:使用正则表达式进行匹配
- Equals:完全相等(很少用)
- Substring:与包含差不多,但不能使用正则表达式匹配
运行
运行性能场景,收集性能测试结果(聚合报告、每秒活跃线程数、每秒事务响应时间、每秒平均事务数、每秒点记录、吞吐率),分析性能瓶颈(通过图表分析)。
出具性能测试报告
过程描述、图表加文字说明、缺陷分析。
学习技术千万不要孤军奋战,最好是能抱团取暖,这里邀请你进入我们的软件测试学习交流群:【769146372】,备注“入群”, 大家可以一起探讨交流软件测试,共同学习软件测试技术、面试等软件测试方方面面,还会有免费直播课,收获更多测试技巧,我们一起进阶Python自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
好文推荐
边栏推荐
- UE4 通过重叠事件开启门
- 2022 Hangzhou Electric Multi-School 1st Game
- Static method to get configuration file data
- Summary of common methods of arrays
- 21 Days Learning Challenge (2) Use of Graphical Device Trees
- Never put off till tomorrow what you can put - house lease management system based on the SSM
- markdown如何换行——md文件
- 如何在WordPress中添加特定类别的小工具
- Use Unity to publish APP to Hololens2 without pit tutorial
- Swing有几种常用的事件处理方式?如何监听事件?
猜你喜欢

MRTK3开发Hololens应用-手势拖拽、旋转 、缩放物体实现

How to discover a valuable GameFi?
![[Qixi Festival] Romantic Tanabata, code teaser.Turn love into a gorgeous three-dimensional scene and surprise her (him)!(send code)](/img/10/dafea90158adf9d43c4f025414fef7.png)
[Qixi Festival] Romantic Tanabata, code teaser.Turn love into a gorgeous three-dimensional scene and surprise her (him)!(send code)

MRTK3 develops Hololens application - gesture drag, rotate, zoom object implementation

Web3.0 Dapps——通往未来金融世界的道路

Dive into how it works together by simulating Vite

BI业务分析思维:现金流量风控分析(二)信用、流动和投资风险

There are several common event handling methods in Swing?How to listen for events?

Solana NFT开发指南

presto启动成功后出现2022-08-04T17:50:58.296+0800 ERROR Announcer-3 io.airlift.discovery.client.Announcer
随机推荐
public static
List asList(T... a) What is the prototype? This year's Qixi Festival, "love vegetables" are more loving than gifts
DEJA_VU3D - Cesium功能集 之 058-高德地图纠偏
On governance and innovation, the 2022 OpenAtom Global Open Source Summit OpenAnolis sub-forum came to a successful conclusion
UE4 通过与其它Actor互动开门
UE4 opens door via interaction (keyboard key)
Spark Basics [Introduction, Getting Started with WordCount Cases]
Slapped in the face: there are so many testers in a certain department of byte
AI + Small Nucleic Acid Drugs | Eleven Completes $22 Million Seed Round Financing
MySql index learning and use; (I think it is detailed enough)
2022 High-level installation, maintenance, and removal of exam questions mock exam question bank and online mock exam
There are several common event handling methods in Swing?How to listen for events?
十五. 实战——mysql建库建表 字符集 和 排序规则
The sword refers to Offer--find the repeated numbers in the array (three solutions)
Index Mysql in order to optimize paper 02 】 【 10 kinds of circumstances and the principle of failure
.NET Application -- Helloworld (C#)
presto启动成功后出现2022-08-04T17:50:58.296+0800 ERROR Announcer-3 io.airlift.discovery.client.Announcer
Static method to get configuration file data
Queue Topic: Recent Requests
Android interview question - how to write with his hands a non-blocking thread safe queue ConcurrentLinkedQueue?