服务端性能测试 | 客户端性能测试 | 全链路性能测试mysql
这三种性能测试它的关注点及关注指标都是不同的,本系列以服务端性能测试展开,客户端性能测试及全链路性能测试不在此系列说明程序员
什么是服务端性能测试?
那么,什么是服务端性能测试呢?web
从你们熟悉的功能测试举例吧!好比测试一个简单登陆功能,在只考虑正常流程的状况下无非就是输入正确的帐户和密码点击登陆,而后跳转到系统首页。面试
注意,这里的登陆是只考虑正常流程的状况下,而在这里功能测试也不是重点。算法
那么,如何对该登陆功能进行性能测试呢?sql
就是在确保功能测试已经经过的状况下,模拟多个用户同时进行登陆,在这过程当中监控系统的各项性能指标及服务器硬件资源的使用状况。数据库
看到这里,相信许多人都以为比较简单。虽然简单,可是这例子已经包含的性能测试的三个基本特色。windows
-
功能测试已经过缓存
-
必定的并发用户服务器
-
监控各项性能指标与硬件资源使用状况
最后,在明确下什么是性能测试:性能测试是在有性能测试指标的前提下模拟多个用户对系统进行操做(请求),监控系统的各项性能测试指标与服务器资源是否达到咱们的一个预期值。
功能测试的测重点是测试功能是否与需求说明书一致,性能测试的测重点是测试系统是否符合咱们预期的一个性能指标。各位千万别搞错了哦!
性能测试类型?
根据不一样的测试目的,性能测试能够大体分为五种类型,类型以下:
-
基准测试
-
负载测试
-
压力测试
-
疲劳强度测试
-
稳定性测试
-
容量测试
性能测试类型概念?
基准测试:
基准测试是指模拟单个用户执行业务场景,监控系统的性能指标与服务器资源。严格来讲,基准测试不属于性能测试的范畴,它与功能测试其实没有太大的区别。具体的差别在于,基准测试的目的更多的是关注业务功能及验证脚本的一个准确性,而后,将基准测试时采集到的结果(各项性能指标及服务器硬件资源)做为后续并发测试性能分析的一个参考依据。
负载测试:
一般负载测试类型是最典型的性能测试类型。经过负载测试,获得系统的性能拐点(最佳性能点),当达到这个点时,系统的极限与表现能力又是多少!负载测试也常常用于线上流量评估。
压力测试:
压力测试是测试系统在多大并发压力下系统的性能会变得不可接受,或者出现性能拐点(崩溃)。在加压策略上,压力测试会对被测系统逐步加压,在加压的过程当中考察系统性能指标的走势状况,最终找出系统在出现性能拐点时的并发用户数,也就是系统支持的最大并发用户数。
压力测试主要用于测试系统或系统某些部分的极限能力。经过一直增长负载,直到应用的部分功能不能正常工做,压力测试的**目的是找到被测系统的容量天花板**。
-
目的不同。负载测试是验证系统是否知足预期的业务压力场景;而压力测试是找到测试系统的容量天花板。
-
负载测试是模拟多个用户不一样时间段内持续向系统发送请求的,而压力测试是模拟同一时间段内持续不断的向系统发送请求的。
若是各位还有不一样看法的话能够评论区下留言哦!
疲劳强度测试:
疲劳强度测试与负载测试testing以为挺接近的,都是对系统模拟出系统能承受的最大业务负载量。差别在于,疲劳强度测试的侧重点是系统在长时间运行状况下系统各项性能指标的变化状况。例如:系统在运行24 * 3后,是否会出现事务处理失败、响应时间增加、业务吞吐量下降、CPU/内存资源增加等性能问题。
稳定性测试是测试被测系统持续正确运行的周期长度。
看到这里,是否是以为疲劳强度测试和稳定性测试很像,感受是一个东西,其实不是的。
稳定性测试是指被测系统被用户正常的使用,能持续多长时间运行而不出现错误。而疲劳强度测试是指被测系统能够支持的最大并发数长时间模拟运行业务,经过资源和性能指标侧面分析系统的稳定性。
说到这,知道了稳定性测试须要花费的大量时间(如上月、上年)。因此大部分状况下,用疲劳强度测试来替代稳定性测试。
容量测试:
当系统业务愈来愈复杂的时候,好比双11、春节等大促。咱们应该怎么评估线上的性能?如何去作合理的扩容?这个时候就须要开展相应的容量测试了。
其实说到这里,经过对比能够发现,不一样的性能测试类型,其本质的差别仍是体如今了加压策略上,而采用哪一种加压策略,就取决于咱们性能测试的目的,即但愿经过性能测试发现什么问题。本节能够总结出性能测试不一样类型的重点在于加压的方式及策略。
性能测试指标:
-
**并发用户数**
-
**事务吞吐率(TPS/RPS)**
-
**事务平均响应时间**
-
**事务成功率**
系统资源性能指标主要是反映整个系统环境的硬件资源的一个使用状况,常见的指标项有:
- 服务器:
- 数据库:
- 网络:
- 缓存(Redis):
- 测试设备(压力发生器):
看到最后一项(测试设备)有些人可能会问了,监控被测系统环境的相关硬件资源使用状况时,为何还要关注测试设备自己呢?由于测试设备在模拟高并发请求的过程当中,测试设备自己也会存在较高的资源消耗,例如CPU、内存、网卡带宽吃满,磁盘IO读写频繁,处理器排队严重等;当出现这类状况后,测试设备自己就出现了瓶颈,没法产生预期的并发压力,从而在测试中获得的数据也就不具备可参考性了。
说到这里,性能测试指标之间一般都是有密切关联的。若是单纯地看某个指标每每很难定位出性能瓶颈,因此须要咱们对各项性能指标的含义了然于胸,而后才能在实际测试的过程当中对系统性能情况综合进行分析,找出系统真正的瓶颈。
性能测试开展:
前面说了那么多理论,那么实际工做又是怎么开展的呢?结合具体的一个实际状况,小编以为下面这流程是比较标准的。
-
了解&获取性能测试需求,肯定性能目标
-
设计及肯定测试方案|测试计划
-
提取测试的业务场景,设计测试用例
-
构建性能测试环境
-
编写性能测试脚本和基准测试
-
执行性能测试和分析
-
测试结果分析和报告
性能测试工具推荐:
性能测试的主要手段是经过模拟真实业务的压力对被测系统进行加压,同时监控被测系统的各项性能指标,分析被测系统在不一样压力状况下的表现,找出其潜在的性能瓶颈。
假设如今咱们要对前面提到的登陆功能进行负载测试,验证在10个并发用户下登陆功能的事务平均响应时间是否在3秒之内。
很天然地,咱们想到测试的前提条件有以下几点:
-
10个测试人员,产生业务压力
-
1个指挥人员,对10我的员的协调控制,实现并发操做
-
1个结果记录人员,对每个人员的操做耗时进行监控和记录
-
若干资源监控人员,实时查看被测系统的各项性能指标,对指标进行汇总、分析
-
1个结果统计人员,对10个用户各操做消耗的时长进行汇总,计算其平均值
能够看出,要经过人工来进行性能测试,操做极为繁琐,须要投入的资源很是多。想像一下,若是要测试1000、10000、1000000并发呢?
显然,这种状况下是彻底不可能经过投入人力就能解决的。这也就是性能测试工具存在的必要性和诞生的背景。
性能测试工具推荐:
在性能测试工具方面,市面上已经有不少的测试工具能够拿来使用,这里重点给你们推荐 Locust、LoadRunner、Jmeter三款工具,排名不分前后。
从功能特性角度来讲,LoadRunner做为一个老牌的性能测试工具,其功能是最全面的,用户群体也是最多的,相应的学习资料也是最丰富的。我的建议若是是刚刚接触性能测试,能够先熟悉LoadRunner,借此来熟悉一些理论上的东西。可是,缺点也是有的,LoadRunner不能跨平台,目前貌似只支持在windows下使用。
由于这工具也没怎么用过,只是了解过,因此在这里不做过多评价。
资源监控工具推荐:
既然有性能测试工具,也确定有资源监控工具啦!下面推荐二款用过的。一款是nmon,一款是grafana软件。
nmon是一款帮助收集服务器的各项硬件资源信息的工具。以为,这款工具在操做上仍是有些繁琐的。安装后须要命令行运行,而后在收集信息的同时不能实时监控服务器资源;收集信息完后还须要导出收集结果在去nmon官方的一个可视化工具里处理造成可视化报表。
是否是以为很麻烦,因此后面一直在找一个可替代的工具。后面就发现了Grafana。
Grafana是一款强大的监控工具,使用Grafana能够自定义本身的监控指标,可是Grafana官方提供了很是多的实用模板,使用官方的模板是一个快速开启监控的好办法哦。好比我监控Linux服务器资源,我可使用Grafana+Prometheus+Node Exporter进行监控,并且是实时的,也支持报表导出等。若是我想监控Mysql,我可使用Grafana+mysqld_exporter+Prometheus进行监控。这样监控都在Grafana。
最后:
欢迎关注公众号:程序员一凡。获取软件测试技术进阶、大厂面试资料、。