以下内容比较枯燥,但是作为基础无法绕开,就像修房子你的知道砖头是什么东西,尽管你无法用语言描述清楚,但是没关系,你知道它是什么东西。概念只是一种概念,真正的理解才是我们所需要的。
性能测试的定义
性能测试指的是在一定的负载情况下,系统响应时间、资源利用率等特性是否满足特定的性能需求,从某些角度来说性能是其实是功能的一种。
衡量软件的性能需要考虑的三点内容
-
时间特性: 在规定条件下,软件产品执行其功能时,提供适当的响应和处理时间以及吞吐率的能力;
-
资源利用率: 在规定条件下,软件产品执行其功能时,使用合适的数量和类别的资源的能力;
-
效率依从性: 软件产品遵循和效率相关的标准或约定的能力;
性能测试的分类
压力测试
在一定的软件、硬件以及网络环境下,通过模拟大量的虚拟用户向服务器产生负载,是服务器的资源处于极限状态下长时间连续运行,易策师服务器在高负载情况下是否能够稳定工作。
压力测试强大系统的稳定性,处理能力在这个时候已经不重要了。
负载测试
在一定的软件、硬件以及网络环境下,通过运行一种或多种业务在不同虚拟用户数量情况下,测试服务器的性能指标是否在用户的要求范围之内,用于确定系统所能承载的最大用户数、最大有效用户数以及不同用户数下的系统响应时间以及服务器的资源利用率。
大多数的性能测试都是负载测试。基本上性能测试是通过加压来实现的,一般认为【最佳用户数】之前是负载测试,之后的重负载区域为压力测试。
容量测试
在一定的软件、硬件以及网络环境下,向数据库中构造不同数量级别的数据记录,通过运行一种或多种业务在一定的虚拟用户数量情况下,获取不同数据级别的服务器性能指标,以确定数据库的最佳容量。
容量测试不光可以对数据库进行测试,还可以对硬件处理能力,各种服务器的连接能力进行性能测试,来测试系统在不同容量级别是否达到指定的性能。
强度测试
强度测试主要是为了检查程序对异常情况的抵抗能力,强度测试总是迫使系统在异常的资源配置下运行。
比如:正常用户点击率为100次/秒时,执行点击率为200次/秒的测试的用例,执行需要最大存储空间的测试用例,执行可能导致系统崩溃或磁盘数据剧烈抖动的测试用例等等。
疲劳测试是一种特殊的强度测试,主要测试系统长时间运行后的性能表现,例如7x24小时的压力测试。
配置测试
在不同的软件、硬件以及网络环境配置下,通过执行一种或多种业务在一定的虚拟用户数量情况下,获得不同配置的性能指标,用于选择最佳的设备及参数配置。
通过产生不同的配置,来得到系统性能的变化状况,通过配置吃可以将性能缺陷放大,方便定位性能瓶颈。
基准测试
在一定的软件、硬件及网络环境下,模拟一定数量虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或者系统评测过程中,通过运行相同的业务场景并比较测试结果,确定调优是否达到效果或者为系统的选择提供决策数据。
基准测试一般基于配置测试,通过配置测试得到数据,并将这个数据作为基准,来比较每次调优后的性能是否有所改善。
并发测试
通过模拟多个用户并发访问同一应用、同一存储过程或数据记录以及其他并发操作,测试是否存在锁死、数据错误等故障。
为了避免数据库和开发的并发错误,需要对每一个模块进行并发测试。
性能指标
响应时间
反映在完成某个业务所需要的时间,例如从点击登录到登录成功页面耗时1秒,那么我们就说这个操作的响应时间就是1秒。
LR是通过事务来完成对响应时间的统计,事务是指某件事情的操作,而函数会记录开始做这件事到做完之间的时间差,我们使用response time来说明,也称之为事务响应时间。
吞吐量
反映单位时间内能够处理的事务数目。
例如:对于一个系统来说,我们一个用户登录需要1秒,如果系统支持10个用户同时登录,且响应时间是1秒,那么我们的吞吐量就是10/秒。
在LR中,吞吐量也称之为TPS(transaction per sescound)每秒事务数,也就是说在单位时间内,能完成的事务数目。
服务器资源占用
资源并不是简单值运行系统的硬件,而是支持你运行程序的一切。
在LR中,通过了很多的计数器监控接口来帮助我们监控系统中的硬件或者软件上各种资源占用情况,例如CPU的使用量,内存,查询cache命中率等。
对于一个用户来说,最关心的只有响应时间,如果响应时间长了,用户会觉得系统使用缓慢,用户不关心系统有多少人使用,系统的资源是否足够,所以从某个角度来说我们必须保证在任意情况下终端用户使用的操作响应时间不能大于5秒。
有调查统计对于一个用户来说,系统响应时间在2秒以内,用户会感觉系统很快,比较满意。如果响应时间在2-5秒以内,用户可以接受,但是对速度不满意。如果响应时间超过10秒,用户将无法接受。