目录
1.什么是性能测试?
2.为什么要进行性能测试?
3.性能测试的常见术语
4.性能测试的分类
5.性能测试如何展开?
1.什么是性能测试?
性能测试是一种测试类型,旨在确定系统的性能以衡量性能,验证或验证系统的质量属性,例如在各种负载条件下的响应性,速度,可伸缩性,稳定性。在混合负载条件下对系统进行了测试,并检查了系统在各种工作负载下响应所需的时间。软件性能测试涉及对被测应用程序的测试,以确保应用程序在各种负载条件下都能按预期工作。性能测试的目标不仅是发现系统中的错误,而且还要消除系统中的性能瓶颈
总结来说的话:测试人员借助性能测试工具,模拟系统在不同情况下性能指标是否正常
2.为什么要进行性能测试?
主要是为了验证该软件系统是否达到预期的性能指标,以及在测试过程中,软件性能是否有瓶颈,有即进行优化。
1、评估系统的能力:软件系统能力主要是看系统能承载的负荷和对应的响应时间,并发用户等数据验证系统的各项指标是否达到用户需求和预期目标。
2、识别体系中的弱点:根据测试过程中的负荷或代码走差方式找出系统的极端或繁琐的代码逻辑,从而找到系统中的瓶颈或薄弱地方
3、系统调优:重复进行性能测试,验证系统活动是否达到预期结果,从而进行改进
4、检测软件中的问题:通过大量的重复测试验证来查找一些隐含的漏洞问题或者硬件引发的问题。
5、验证稳定性和可靠性:在验证时不仅要考虑系统的稳定性和可靠性,还要考虑人为因素这方面。
3.性能测试的常见术语
3.1并发用户数
并发用户数是指同一时刻与服务器进行数据交互的所有用户数量。概念中有两点需要注意。第一:同一时刻,因为并发强调的是用户同时对服务器进行施压。例如:一个人同时挑两件东西,这时表示两件东西同时被这个人挑起来,而如果是先挑一件,再挑另外一件,那么就无法表现出同时的概念,这两件东西也就没有同时施压在这个人身上。第二:强调要与服务器进行数据交互,如果未和服务器进行数据的交互,这样的用户是没给服务器带来压力的。同样是上面的例子,这个人虽然同时挑了两件东西,但其中有一件东西是没重量的,那就是说只有一件东西对这个人造成压力。
因此对于并发用户这个概念的理解经常会出现以下两种误区:一是认为系统所有的用户都叫并发用户;二是认为所有在线的用户都是并发用户。在线用户不一定是并发用户,原因是在线用户不一定就与系统进行了数据的交互,例如:如果一些在线用户只是查看系统上的一些消息,那么这些在线用户不能作为并发用户计算,因为这些用户并没有与系统进行数据交互,不会给服务器带来任何压力。
3.2并发请求数
在并发用户的基础上,这些用户请求系统,此时服务器接受的请求的数量
3.3用户数
系统用户数:就是系统数据库中维护的用户数据对应的数量
在线用户数:就是同时登陆系统在线的用户数量
并发用户数:是对系统同时发起请求的用户数量
3.4响应时间
响应时间一般是秒或者毫秒,如果响应时间过长,说明性能不够好,需要很长的等待时长。如果一个响应时间极短,那么可以采取一个请求操作重复执行一万次, 测试一万次执行需要的总响应时间之和,除以一万, 得到单次平均请求的响应时间。
3.5事务
为一个流程中某个或某些环节的称谓,一个流程可称为一个大的事务,在这个大的事务中可包含许多小的事务。
3.6事务响应时间
服务器处理一个事务所花费的时间
3.7TPS
TPS(Transaction Per Second)表示服务器每秒处理的事务数,它是衡量系统处理能力的重要指标。如果每个事务对应的为一笔业务,那么TPS即表示服务器处理每秒钟的业务笔数,处理业务数的值越大说明服务器的处理能力越强,如银行业务,一些银行业务在性能测试时使用的是Windows Sockets的协议,这样每个事务其对应的就为一笔业务。
3.8点击率
点击率(Hit Per Second)是指每秒钟用户向服务器提交的HTTP数量。用户每点击一次,服务器端就要对用户提交的请求进行一次处理,从事务的角度来说,如果把每次点击作为一次提交事务来对待,那么点击率与TPS的概念是等同的。对于Web系统来说,“点击率”是服务器处理的最小单位,点击率的值越大,说明服务器端所需要承受的压力越大(如果服务器正确的处理客户端的请求)。因此通常情况下,Web服务器都具有防刷新的机制,因为客户每刷新一次系统就要响应一次点击,如果不对服务器进行防刷新处理,当用户不停地点击刷新按钮,此时服务器将承受巨大的压力。
需要注意的是,点击一次并不代表客户端只向服务器端发送一个HTTP请求,客户每点击一次,都会向服务器端发出多个HTTP请求,并且点击率仅仅反应的是客户端提交的请求数,不能表现服务器端当前承受的压力,因为客户端提交的请求,服务器不一定会全部处理,有可能出现服务器拒绝客户端请求的情况,所以点击率不能直接反应服务器处理请求的能力。
3.9吞吐量
在性能测试过程中,吞吐量是指单位时间内服务器处理的字节数,吞吐量的单位为字节/秒,吞吐量的大小直接体现服务器的承载能力。
吞吐量作为性能测试过程中主要关注的指标之一,它与虚拟用户数之间存在一定的联系,当系统没有遇到性能瓶颈时,可以采用下面这个公式来计算。
其中,F表示吞吐量;Nvu表示VU(Virtual User,虚拟用户数)的个数;R表示在T时间内每个VU(虚拟用户数)发出的请求字节数;T表示性能测试所用的时间。但是如果系统遇到性能瓶颈,这个公式就不再适用。吞吐量与VU之间的关联图如图1-4所示。从图中可以看出,吞吐量在VU增长到一定数量时,软件系统出现性能瓶颈,此时,吞吐量的值并不会随着VU数量的增加而增大,而是趋于平衡。
但在实际测试过程中,测试前吞吐量是不知道的,必须通过不断添加虚拟用户来不断的测试,才能找到吞吐量的捌点,也即服务器吞吐量的最大值。
实例:假设向一个水池注水,每根小管注入的水量为0.1立方米每秒,而水池的出水量为1立方每秒(假设这个值在测试之前是不知道),如图
当只放一根注水管时,水池的流出的水量为0.1立方米每秒,也即当前水池的吞吐量为0.1立方米每秒,依此类推当放入10根注水管时,水池的流出的水量为1立方米每秒,当放入11(或大于10根)根注水管时,水池的流出的水量也为1立方米每秒,此时水池都会开始积水,因为每秒排出的水比注入的水少,这说明水池的吞吐量为1立方米每秒,不管注入的水量为多少,这个值都不再改变。服务器也是一样的,客户端不断的请求,当服务器能正确的处理时,测试出来服务器的吞吐量就会不断的增加的,但当服务器无法处理时,吞吐量的值就不再变化,此时即找到服务器最大吞吐量的值。
3.10吞吐率
吞吐率(Throughout)是指单位时间内从服务器返回的字节数,也可以指单位时间内服务器处理客户提交的请求数。它是衡量网络性能的一个重要指标。吞吐率=吞吐量/测试时间,通常情况下吞吐量的值越大,吞吐率的值也越大,吞吐率的值越大系统的负载能力越强。也意味着系统的性能降低。
3.11思考时间
思考时间(Think Time),也称为“休眠时间”,是指用户在进行操作时,每个请求之间的时间间隔。对于交互系统来说,用户不可能持续不断地发出请求,一般情况下,用户在向服务器端发送一个请求后,会等待一段时间再发送下一个请求,在性能测试过程中使用思考时间来描述这段时间。
3.12资源利用率
资源利用率是指服务器系统中不同硬件资源被使用的程度,资源使用率=资源实际使用量/总的可用资源量。主要包括CPU利用率、内存利用率、磁盘利用率、网络等。资源利用率是分析系统性能指标进而改善性能的主要依据,在配置调优测试的过程中,通过比较配置调优前后系统资源的利用率来判断调优的效果。
4.性能测试的分类
4.1基准测试:在给系统施加较低压力时,查看系统的运行状况并记录相关数做为基础参考
4.2负载测试:是通过逐渐增加系统的负载,测试系统性能的变化,并最终确定在满足系统性能指标的情况下,系统所能承受的最大负载量的测试。简而言之,负载测试是通过逐步加压的方式来确定系统的处理能力和能够承受的各项阈值。
4.3压力测试:是通过逐步增加系统的负载,测试系统性能的变化,并最终确定在什么负载条件下,系统性能处于失效状态,并获得系统能提供的最大服务级别的测试。压力测试是逐步增加负载,使系统某些资源达到饱和甚至失效。
4.4并发测试:测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他性能问题,几乎所有的性能测试都会涉及一些并发测试。
4.5容量测试:在一定的软、硬件条件下,在数据库中构造不同数量级的记录数量,通过运行一种或多种业务场景在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力,最大容量等。系统可处理同时在线的最大用户数,通常和数据库有关。
4.6可靠性测试(稳定性测试):通过给系统加载一定的业务压力(如CPU资源在70%~90%的使用率)的情况下,运行一段时间,检查系统是否稳定因为运行时间较长,通常可以测试出系统是否有内存泄漏等问题。
4.7配置测试:主要是通过对被测试软件的软硬件配置进行测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统提供重要依据。
4.8失败测试:对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响,如几台机器做均衡负载,一台或几台机器垮掉后系统能够承受的压力。
5.性能测试如何展开?
性能测试首先是基于功能测试的,必须了解其功能需求才能开展性能测试。
性能测试步骤大体如下:
- 确认测试目标;
- 分析被测系统业务需求;
- 分析被测系统的系统结构;
- 分析被测系统的性能测试点;
- 设计测试方案、检测方案和测试案例;
- 选择测试工具;
- 测试开发;
- 测试执行;
- 测试结果分析;
- 测试调优、测试验证、测试分析;
- 输出测试报告;