前言
性能测试是测试人必备的能力之一,只会功能测试(点点点)的测试注定在社会的竞争中处于劣势。在这里把我五年的测试经验中自学和在项目中运用到的性能测试经验总结一下。下面让我们在性能测试从0开始学习,首先本文讲述的是性能测试基础知识。其中有错误的地方大家多多给予批评,不完善的地方大家多多指导。
一、性能测试基础
1.什么是性能测试
性能测试是一种评估系统、应用程序或组件在特定工作负载和条件下的性能和稳定性的测试方法。
2.性能测试的目的
其目的是确保系统在不同负载和使用情境下都能提供良好的性能,并能够满足用户和业务的需求。性能测试主要通过自动化的测试工具来模拟多种正常、峰值以及异常负载条件,对系统的各项性能指标进行测试。这些指标包括时间特性、负载量、吞吐量、资源利用率和事务通过率等,以确保它们符合预期的性能指标要求。这些测试有助于识别软件应用程序中的性能瓶颈和资源限制,从而保证系统的快速稳定运行。
3.性能测试分类
1.负载测试:在一定的软硬件环境下,通过不断加大负载来确定在满足性能指标情况下能够承受的最大用户数。
2.压力测试:在一定的软硬件环境下,通过高负载的手段来使服务器资源(强调服务器资源、硬件资源)处于极限状态,测试系统在极限状态下长时间运行是否稳定,确定是否稳定的指示包括TPS、RT、CPU Using、Mem Using等。
3.稳定性测试:在一定的软硬件环境下,长时间运行一定负载,确定系统在满足性能指标的前提下是否运行稳定。
4.并发测试:很多用户(请求)按照预定场景并发(同一时间点)某个业务是否出现并发问题。
实际场景中,假如双11淘宝性能要求是100并发,最大的负载是200并发,那么压力测试需要负载为200并发(双11当天淘宝的用户在线浏览数量),稳定性测试负载为150。并发测试需要利用Jmeter中的同步定时器来模拟,这个后续会详细讲解。
4.性能测试中的常见名词
1.并发数
①狭义上的并发:所有用户在同一时间点进行同样的操作,比如1000个用户同时登录系统;(可用同步定时器)
②广义上的并发:多个用户与系统发生了交互,这些业务场景可以是相同的也可以是不同的,交叉请求和处理较多
2.TPS/QPS
TPS(Transaction Per Second):每秒事务数,一个事务是指事务内第一个请求发送到接收到最后一个请求的响应的过程,以此来计算使用的时间和完成的事务个数。可以指一个接口、多个接口、一个业务流程等等;(在Jmeter中常用事务控制器)
QPS(Query Per Second):每秒查询率,是一台服务器每秒能够响应的查询次数。
TPS和QPS的区别:如果对一个接口进行压测,那么TPS=QPS
如果对一个事务(里面包含很多接口)进行压测,那么TPS≠QPS(TPS取所有接口中最小的QPS,因为一个事务是整个接口的集合,只要一个接口没有通过那么这个事务就不算完成,所以取最小的QPS)
3.思考时间(Thinking Time)
操作时的时间间隔,它可以模拟真实的用户操作,减少服务器压力,满足实际的业务规则,一般情况下加思考时间,但针对于目的只关注于系统性能而不考虑用户场景的可以去掉思考时间。
4.资源利用率
资源利用率分为应用服务器的资源利用率和数据库服务器的资源利用率,一般监测的指标:CPU、内存、队列、IO、网络等。
5.PV
Page View页面浏览量或点击量,用户对同一页面的多次访问,访问量累计,用以衡量网站用户访问的网页数量。
6.RT
Response Time响应时间,指应用执行一个操作所需的时间,包括从发出请求开始到最后收到响应所需要的时间,一般对系统来说在1s以内得到响应,用户会觉得系统响应很快,体验非常好;1-3秒得到响应,用户可以接收,体验还不错;3-5秒才响应,用户就感觉慢了,体验有点糟糕;一旦响应超过5秒,用户就会认为是个失败的体验,选择离开或重新发起请求。
7.负载
对被测系统不断施加压力,直到性能指标超过预期或某项资源使用达到饱和,以验证系统的处理极限,为系统性能调优提供依据。
8.吞吐量
吞吐量指系统在单位时间内处理请求的数量,依据公式“QPS(TPS)=总请求数/总时间”可知,系统吞吐量的重要指标就是QPS(TPS)、并发数、响应时间。
5.性能测试通用标准
这个标准是引用的《JMeter全栈性能测试修炼宝典实战》中的web项目性能测试通过标准。
6.性能测试流程
1.性能测试需求分析——需求分析评审,确定需要压测哪些接口及场景
比如说事业编报名系统,这个在报名开发期间(比如3月1号00:00:00到3月10号24:59:59)的注册、登录、查询、提交接口会存在非常大的压力,此时需要我们对这些接口进行性能测试。
针对于登录接口,我们需要进行负载测试、压力测试(3月1号当天会有非常多的人进行登录)、稳定性测试(在3月1号到3月10号需要保证系统的稳定性)、并发测试(3月1号00:00:00会有人卡着点进行登录)。
2.性能测试计划及方案——编写性能测试计划及方案
根据实际场景和调研来编写性能测试计划和如何实施性能测试。
3.性能测试用例——编写性能测试用例并评审
编写包含用例名称、测试场景描述、预期结果、所需测试数据和具体测试步骤的测试用例。
4.测试脚本编写与录制——编写性能测试脚本
5.建立测试环境——配置测试环境与正式环境一样
这一点在实际测试中往往达不到这点要求,我们可以按照合适的比例来配置测试环境。
6.执行测试脚本——执行
7.性能测试监控——查看性能测试工具中监听器
8.性能分析和调优——对测试结果进行分析和调优
性能调优并不是测试单独完成的,这一环节需要测试、开发、运维等来共同配合来进行对测试结果分析和调优。
9.性能测试报告总结——编写测试报告