当前位置:网站首页>第一次性能测试实践,有“亿”点点紧张
第一次性能测试实践,有“亿”点点紧张
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自动化测试/测试开发,走向高薪之路。
喜欢软件测试的小伙伴们,如果我的博客对你有帮助、如果你喜欢我的博客内容,请 “点赞” “评论” “收藏” 一 键三连哦!
好文推荐
边栏推荐
- iMedicalLIS监听程序(2)
- IJCAI2022 | DictBert: Pre-trained Language Models with Contrastive Learning for Dictionary Description Knowledge Augmentation
- High Item 02 Information System Project Management Fundamentals
- MySql index learning and use; (I think it is detailed enough)
- 十五. 实战——mysql建库建表 字符集 和 排序规则
- Web3.0 Dapps——通往未来金融世界的道路
- 数组常用方法总结
- ffmpeg pixel format basics
- AI + Small Nucleic Acid Drugs | Eleven Completes $22 Million Seed Round Financing
- DEJA_VU3D - Cesium功能集 之 059-腾讯地图纠偏
猜你喜欢
Android interview question - how to write with his hands a non-blocking thread safe queue ConcurrentLinkedQueue?
token、jwt、oauth2、session解析
The second council meeting of the Dragon Lizard Community was successfully held!Director general election, 4 special consultants joined
[TA-Frost Wolf_may-"Hundred Talents Project"] Graphics 4.3 Real-time Shadow Introduction
Walter talked little knowledge | "remote passthrough" that something
新人如何入门和学习软件测试?
[Qixi Festival] Romantic Tanabata, code teaser.Turn love into a gorgeous three-dimensional scene and surprise her (him)!(send code)
UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
数据库设计的酸(ACID)碱(BASE)原则
事件解析树Drain3使用方法和解释
随机推荐
UE4 后期处理体积 (角色受到伤害场景颜色变淡案例)
Acid (ACID) Base (BASE) Principles for Database Design
Redis key basic commands
阿里本地生活单季营收106亿,大文娱营收72亿,菜鸟营收121亿
静态方法获取配置文件数据
多御安全浏览器 V10.8.3.1 版正式发布,优化多项内容
AI + Small Nucleic Acid Drugs | Eleven Completes $22 Million Seed Round Financing
How to find all fields with empty data in sql
Dameng 8 database export and import
iMedicalLIS监听程序(2)
[Software testing] unittest framework for automated testing
Fifteen. Actual combat - MySQL database building table character set and collation
ffmpeg pixel format basics
Bubble Sort and Quick Sort
队列题目:最近的请求次数
public static <T> List<T> asList(T... a) 原型是怎么回事?
burp安装及代理设置
Swing有几种常用的事件处理方式?如何监听事件?
UE4 opens doors with overlapping events
36-Jenkins-Job Migration