如何开展性能测试

本文涉及的产品
性能测试 PTS,5000VUM额度
简介: 本文详细介绍了作者在性能测试中的一次实战经历。文章首先概述了一个理想的性能测试流程,并以公司微信会员系统的性能测试为例,具体说明了从获取需求到最终报告的全过程。内容涵盖了测试计划制定、环境搭建、测试脚本开发、执行测试及监控调试等多个方面,并强调了理解和熟悉系统业务的重要性。通过实际案例展示了如何发现性能瓶颈并提出优化建议。

来源:火龙果软件测试工程

   之前有在自己建的测试群直播分享了一些性能测试的基础内容,当时有人说希望有个实战的分享,想了想某些东西属于公司机密不方便直接直播分享,

这里就拿最近我做的一个性能测试实例来举例子说说,理解为主。。。

先看看一个完美的性能测试流程是怎样的,如下图:

   当然,实际工作中能实现这种完美的流程很难,下面挑重点的介绍。。。

一、获取测试需求

   大概上周三接到这样一个性能测试需求,大概的业务逻辑如下图:

   简单概括下业务逻辑,就是:发起一个拼团,其他人点击活动进去,领券,然后领券时要验证拼团的有效性,在买单用券时,先验证是否是会员,如果不是,先注册会员,再将券和会员绑定!

具体的性能指标是:验证上图4个场景中的接口,在响应时间为3S和5S时,服务器的TPS值(这属于系统性能能力验证的应用领域)。

   测试的系统,是公司的微信会员系统,系统架构相对熟悉,这里不过多介绍。

二、测试计划和方案

   所谓的测试计划,无非就是某人用多久时间用什么资源什么方法完成什么事情。

   由于这次性能测试需求工作量不大,且时间足够,所以就我一个人完成测试的大部分工作,当然,一部分需要开发协助。

测试方案,就是测试计划的补充和扩展。

   比如这次性能测试,我预计用一周时间完成这些测试工作,设计用例、场景建模、准备测试数据、测试脚本开发、环境搭建等各需要多久时间,在哪一天甚至是上午还是下午完成这些工作。

三、执行前的准备工作

   环境搭建:测试环境由于之前会员系统也进行过性能测试,测试环境搭建这一步工作量不大,开发很快就配置完成,所以这里不赘述。

   场景建模:个人理解,就是考虑哪些场景下可能存在性能瓶颈,相应的设置对应的测试脚本和测试逻辑,以尽可能模拟生产环境(由于对业务蛮熟悉,这里也不赘述,需要提及的一点是:

一定要理解、熟悉系统业务,因为需求的产生,就是用户+场景)。

   测试数据准备:测试数据准备常用的有这两种方式:将生产数据复制一份过来、开发脚本预埋造数据(但无论哪种,一定要注意数据隔离,防止数据污染)。

测试脚本开发:首先,需要从开发那里获取开发接口文档和数据库表设计文档。

   然后,通过工具或者写测试脚本调试接口,先保证接口可以成功调用(我用的工具是jmeter+MySQL)。

四、执行测试脚本

   在保证接口可以成功调用之后,先进行单接口基准测试,即:对一个接口进行压力测试,不断加压,直到响应时间达到或超过指标,观察当前其并发数和TPS。

   个人经验是同样的并发数,多执行几次,得到一个平均值或稳定值(即TPS和TRT曲线相对稳定的值),并记录下来。

如下图:

   记录的目的,可以通过直观的数据变化,得到单个接口的最大TPS和不同并发情况下的响应时间变化。

   PS:记得前几天从一本书上看到这样一句话:80%的性能瓶颈可以通过分析TPS和TRT的数值变化得到(虽然有点片面,但也不失为一种方法)。

   比如按照上图记录的数值变化来看,很明显领券接口性能极差,这时候就可以告知开发,通过查看log、检查代码、SQL语句等方法来查询原因(当然个人能力足够的话,这些可以自己来做)。

五、监控调试

   jmeter这个性能测试工具本身就用监听器这个元件提供了一定的监听数值报告元件,但毕竟开源工具,其本身的组件功能不够强大,可以通过下载支持jmeter的增强型功能插件来进行监控。

   jmeter插件下载地址:https://jmeter-plugins.org/

   下载后可以解压缩,将plugins-manager.jar放入jmeter安装目录lib/exe,然后重启jmeter即可。

   可以通过点击下图圈出来的按钮检验是否成功安装:

   无论是对服务器资源使用率还是测试数据报表生成,甚至TPS、TRT等的监听,该插件都提供了组件支持,具体的使用方法请自行寻找。。。

   所谓的监控调试,就是一个不断调整重复的过程,这个需要根据性能测试的目的,应用领域去判断具体如何执行。。。

六、最终报告

   根据上面的几个步骤,得到测试结果,分析系统存在的瓶颈,然后采用各种方法提出解决方案或优化建议,最后对本次性能测试进行一个完整的总结,这样,一次性能测试就完成了。

   在整个过程中,费时较长一般是在测试数据准备和测试执行、监控调优阶段。

相关实践学习
通过性能测试PTS对云服务器ECS进行规格选择与性能压测
本文为您介绍如何利用性能测试PTS对云服务器ECS进行规格选择与性能压测。
目录
相关文章
|
4月前
|
监控 测试技术 Apache
性能测试工作如何开展?
性能测试工作如何开展?
|
4月前
|
SQL 安全 测试技术
『渗透测试基础』| 什么是渗透测试?有哪些常用方法?如何开展?测试工具有哪些?优势在哪里?
『渗透测试基础』| 什么是渗透测试?有哪些常用方法?如何开展?测试工具有哪些?优势在哪里?
316 0
|
4月前
|
开发框架 测试技术 定位技术
如何开展移动应用程序性能测试?
如何开展移动应用程序性能测试?
|
12月前
|
算法 测试技术 数据安全/隐私保护
没有接口需求文档,如何开展接口测试?建议收藏
没有接口需求文档,如何开展接口测试?建议收藏
108 1
|
Arthas JSON 前端开发
在接口自动化测试过程中,如何开展接口自动化测试?单个模块和多个模块关联又怎么去做测试?
在接口自动化测试过程中,如何开展接口自动化测试?单个模块和多个模块关联又怎么去做测试?
256 2
|
运维 测试技术
嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?
嵌入式软件测试笔记12 | 什么是状态转换测试?如何开展?
144 0
|
测试技术
嵌入式软件测试笔记8 | 嵌入式软件测试中可测性审查如何开展?
嵌入式软件测试笔记8 | 嵌入式软件测试中可测性审查如何开展?
79 0
|
测试技术 程序员 开发工具
嵌入式软件测试笔记7 | 嵌入式软件测试中基于风险的测试策略如何开展?
嵌入式软件测试笔记7 | 嵌入式软件测试中基于风险的测试策略如何开展?
115 0
|
数据可视化 测试技术
测试用例评审如何开展
测试用例评审如何开展
150 0
测试用例评审如何开展
|
JSON 数据可视化 测试技术
自动化测试开展困难?快来试试Apipost
自动化测试开展困难?快来试试Apipost
156 0
自动化测试开展困难?快来试试Apipost