性能测试的概念和分类
性能测试:是为描述测试对象与性能相关的特征并对其进行评价而实施和执行的一类测试。是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试,两者可以结合进行; 通过负载测试,确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统能提供的最大服务级别的测试。
性能测试概括为三个方面:(1)应用在客户端性能的测试(2)应用在网络上性能的测试(3)应用在服务器端性能的测试。通常情况下,三方面有效、合理的结合,可以达到对系统性能全面的分析和瓶颈的预测。
并发性能测试的过程是一个负载测试和压力测试的过程,即逐渐增加负载,直到系统的瓶颈或者不能接收的性能点,通过综合分析交易执行指标和资源监控指标来确定系统并发性能的过程。负载测试(Load Testing)是确定在各种工作负载下系统的性能,目标是测试当负载逐渐增加时,系统组成部分的相应输出项,例如通过量、响应时间、CPU负载、内存使用等来决定系统的性能。负载测试是一个分析软件应用程序和支撑架构、模拟真实环境的使用,从而来确定能够接收的性能过程。压力测试(Stress Testing)是通过确定一个系统的瓶颈或者不能接收的性能点,来获得系统能提供的最大服务级别的测试。
并发性能测试的目的主要体现在三个方面:以真实的业务为依据,选择有代表性的、关键的业务操作设计测试案例,以评价系统的当前性能;当扩展应用程序的功能或者新的应用程序将要被部署时,负载测试会帮助确定系统是否还能够处理期望的用户负载,以预测系统的未来性能;通过模拟成百上千个用户,重复执行和运行测试,可以确认性能瓶颈并优化和调整应用,目的在于寻找到瓶颈问题。
测试的基本策略是自动负载测试,通过在一台或几台PC机上模拟成百或上千的虚拟用户同时执行业务的情景,对应用程序进行测试,同时记录下每一事务处理的时间、中间件服务器峰值数据、数据库状态等。通过可重复的、真实的测试能够彻底地度量应用的可扩展性和性能,确定问题所在以及优化系统性能。预先知道了系统的承受力,就为最终用户规划整个运行环境的配置提供了有力的依据。
(1)负载测试:是通过逐步增加系统负载,测试系统性能的变化,并最终确定在满足系统性能指标的前提下,系统所能承受的最大负载量的测试。
也就是说,这种方法是对一个系统持续不段的加压,看你在什么时候已经超出“我的要求”或系统崩溃。
通过在被测系统上不断加压,直到性能指标达到极限,来确定系统的处理能力和能够承受的各项阈值。例如“响应时间不超过5秒 ”。
特点:
1、这种性能测试方法的主要目的是找到系统处理能力的极限。
2、这种性能测试方法需要在给定的测试环境下进行,通常也需要考虑被测试系统的业务压力量和典型场景、使得测试结果具有业务上的意义。
3、这种性能测试方法一般用来了解系统的性能容量,或是配合性能调优来使用。
(2)压力测试(强度测试):压力测试是通过逐步增加系统负载,测试系统性能的变化,并最终确定在什么负载条件下系统性能处于失效状态来获得系统能提供的最大服务级别的测试。
也就是说,这种测试是让系统处在很大强度的压力之下,看系统是否稳定,哪里会出问题。
压力测试方法测试系统在一定饱和状态下,例如cpu、内存在饱和使用情况下,系统能够处理的会话能力,以及系统是否会出现错误
特点:
1、这种性能测试方法的主要目的是检查系统处于压力性能下时,应用的表现。
2、这种性能测试一般通过模拟负载等方法,使得系统的资源使用达到较高的水平。
3、这种性能测试方法一般用于测试系统的稳定性。
(3)并发测试:是测试多个用户同时访问同一个应用、同一个模块或者数据记录时是否存在死锁或者其他问题,所以几乎所有的性能测试都会涉及一些并发测试。
因为并发测试对时间的间隔要求比较严格,通常并发测试都要借助于工具(比如jmeter和loadrunner),采用多线程或者多进程的方式来模拟多个虚拟用户的并发性操作。也就是说,这种测试关注点是多个用户同时(并发)对一个模块或操作进行加压。
特点:
1、这种性能测试方法的主要目的是发现系统中可能隐藏的并发访问时的问题。
2、这种性能测试方法主要关注系统可能存在的并发问题,例如系统中的内存泄漏、线程锁和资源争用方面的问题。
3、这种性能测试方法可以在开发的各个阶段使用需要相关的测试工具的配合和支持。
(4)配置测试:主要是通过被测试软件的软硬件配置的测试,找到系统各项资源的最优分配原则。配置测试能充分利用有限的软硬件资源,发挥系统的最佳处理能力,同时可以将其与其他性能测试类型联合应用,从而为系统调优提供重要依据。
也就是说,这种测试关注点是“微调”,通过对软硬件的不段调整,找出这他们的最佳状态,使系统达到一个最强的状态。
特点:
1、这种性能测试方法的主要目的是了解各种不同因素对系统性能影响的程度,从而判断出最值得进行的调优操作。
2、这种性能测试方法一般在对系统性能状况有初步了解后进行。
3、这种性能测试方法一般用于性能调优和规划能力。
(5)可靠性测试:在给系统加载一定业务压力的情况下,使系统运行一段时间,以此检测系统是否稳定。
也就是说,这种测试的关注点是“稳定”,不需要给系统太大的压力,只要系统能够长期处于一个稳定的状态。
特点:
1、这种性能测试方法的主要目的是验证是否支持长期稳定的运行。
2、这种性能测试方法需要在压力下持续一段时间的运行,通常可以测出内存泄漏的问题。(2~3天)
3、测试过程中需要关注系统的运行状况。
4、平均故障间隔时间是衡量可靠性的一项重要指标。
(6)容量测试:容量测试是在一定的软硬件条件下,在数据库中构造不同数量级的记录数量 ,通过运行一种或者多种业务场景,在一定虚拟用户数量的情况下,获取不同数量级别的性能指标,从而得到数据库能够处理的最大会话能力、最大容量等。
(7)失败测试:对于有冗余备份和负载均衡的系统,通过失败测试来检验如果系统局部发生故障,用户能否继续使用系统,用户受到多大的影响。
生活除了眼前的苟且,还有远方的诗与天野!