性能测试进阶(二)
现在开始正式的来理解性能测试
一、性能测试基础
什么是性能,以及忽视性能回带来怎样的结果,那么什么是性能测试呢?
1)性能测试的概念
性能测试是系统测试的一种,作为一位系统测试工程师,需要通过“系统”的视角来分析被测试系统,分析包含如下几点
功能测试:某个功能点
性能测试:整个系统,包括软件和硬件
在软件质量模型中,性能测试属于效率这一类。先了解这句话涉及的两个概念。
质量模型:一组特性及特性之间的关系,它提供规定质量需求和评价质量的基础。
软件效率:在规定条件下,相对于所用资源的数量,软件产品可提供适当的性能的能力。其中资源可能包含其他软件的产品、系统的软件和硬件配置,以及物质材料(如打印纸、磁盘等)。
衡量一个软件的性能,需要从软件效率的以下3点考虑:
a.时间特性。在规定条件下,软件产品执行其功能时提供适当的响应和处理时间以及吞吐率的能力。
b.资源利用性。在规定条件下,软件产品执行其功能时,使用合适数量和类别的资源能力。
c.效率性。软件产品遵循与效率相关的标准或约定的能力。而性能测试的定义:在一定的负载情况下,系统的响应时间等特性是否满足特定的性能需求。从某些角度来讲,性能其实是功能的一种。
2)性能测试的分类
性能测试的方法很多,,从使用方便的角度来说,性能测试可分为6种;
a.负载测试(Load Testing)
负载测试是指一定的软件、硬件及网络环境下,运行一种或多种业务,在不同虚拟用户数量的情况下,测试服务器的性能指标是否在用户的要求范围内,以此确定系统所能承载的最大用户数、最大有效用户数,以及不同用户数下的系统响应时间及服务器的资源利用率。
负载强调的是在一定的环境下系统能够达到的峰值指标,大多数的性能测试都是负载测试。
b.压力测试(Stress Testing)
压力测试是指在一定的软件、硬件及网络环境下,模拟大量的虚拟用户向服务器产生负载,使服务器的资源处于极限状态下并长时间连续运行,以测试服务器在高负载情况下是否能稳定工作,与负载测试获得峰值性能数据不同,压力测试强调在极端情况下系统的稳定性,此时处理能力已经不重要了。
c.容量测试(Volume Testing)
容量测试是指在一定的软件、硬件及网络环境下,在数据库中构造不同数量级别的数据记录,在一定虚拟用户数量的情况西安运行一种或多种业务,获取不同数量级别的服务器性能指标,以确定数据库的最佳容量和最大容量,容量测试不仅可以对数据库进行,还可以对硬件处理能力,各种服务器的连接能力等进行,以此来测试系统在不同容量级别下是否能达到指定的性能。
d.配置测试(Configuration Testing)
配置测试是指在不同的软件、硬件及网络环境配置下,运行一种或多种业务,在一定的虚拟用户数量情况下,或者不同配置的性能指标,用于选择最佳的设备及参数配置。通过产生不同的配置来得到系统性能的变化状况。
e.基准测试(Benchmark Testing)
基准测试是指在一定的软件、硬件及网络环境下,模拟一定数量的虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或系统评测的过程中,通过运行相同的业务场景比较测试结果,确定调优的结果是否达到预期效果或者为系统的选择提供决策数据。
基准测试一般基于配置测试,通过配置测试得到数据,并将这个数据作为基准来比较每次调优后的性能是否有所改善。
f.并发测试(Concurrency Testing)
并发测试是通过mini多个用户并发访问同一个应用、存储过程或数据记录及其他并发操作,来测试是否存在死锁、数据错误等故障。为了避免数据库或函数方法在并发下的错误,需要专门针对每个模块进行并发测试。
3)性能测试进行的时间
性能测试的进行时间a.编码阶段(压力/并发)
在编码阶段,当每个函数、方法、存储过程被开发出来并通过单元测试后,都应该进行压力和并发测试,确认接口和被测对象能否健壮低处理极端情况,并且能否正确处理并发请求。
b.编码-测试(容量测试)
在系统编码完成时,应该及时进行容量测试,确认系统能否满足在指定容量下的性能需求,并具备足够的软/硬伸缩性。
c.测试阶段(负载/配置/基准)
在进入测试阶段之后,确保功能正确实现后需要进行负载测试,得到系统在当前硬件及软件环境下的性能指标(响应时间、 吞吐量、资源利用率),进一步形成性能数据基准,然后通过配置测试进行性能瓶颈的定位和优化。
在负载测试后可以得到系统的性能,如结果满足用户需求,则可以考虑结束性能测试,也可以考虑进一步进行配置和基准测试,定位系统中的性能瓶颈,并进一步的优化。