上一章节我们大概了解了下LoadRunner,这一章,我们来认识一下性能测试。
说到性能测试,很多同学会有自己不同的感想。
web前端的测试同学说:页面怎么半天打不开啊,没办法测啊,必须改善。
一线运维的同学说:靠,系统上线这才多久啊,怎么就嘎嘣的宕机了?这可以不行啊,客户跳起来了,必须赶紧处理。。。。
终端用户也出来了:什么系统嘛?怎么一直登陆不上去呢?我刚刚抢的火车票还没支付,又没有了,哎,还能不能回家啊。。。
客户方的BOSS看不下去了:老方啊,你们这个产品不给力啊,必须给我马上解决,否则,。。。。(省略了N的M次方字数)
。。。。
所谓客户就是上帝啊,交付BOSS出来了,版本BOSS出来了,SE出来了,PM/PL等等都出来了。
一轮头脑风暴,性能测试必须放上日程。
一、首先,性能测试究竟是一个什么东西?
性能测试是通过自动化的测试工具模拟多种正常、峰值以及异常负载条件来对系统的各项性能指标进行测试。
二、常见的性能测试类型有哪些?
性能测试类型
- 负载测试(可置性测试)(Load Testing)
定义:在被测系统上不断增加压力,直到性能指标(如响应时间)超过预期指标或者某种资源使用已经达到饱和状态。可以找到系统的处理极限,为系统调优提供数据
特点:
1):该方法主要目的是找到系统处理能力的极限
2):该方法在给定的测试环境下进行,通常需要考虑被测系统的业务压力量和典型场景
3):该方法一般用来了解系统的性能容量,或者是配合性能调优来使用
性能容量:系统在保证一定响应时间的情况下能够允许多少并发用户的访问
- 压力测试(强度测试)(Stress Test)
定义:系统在一定饱和状态下,例如CPU、内存等饱和情况下,系统能够处理的会话能力,以及系统是否会出现错误
特点:
1)该方法的主要目的是检查系统处于压力情况下是应用的性能表现
该方法通过增加访问压力,是系统资源使用保持在一定水平,检验此时应用的表现,重点在于有误出错信息产生,系统对应用的响应时间等
2)该方法一般通过模拟负载等方法,使得系统的资源使用达到较高的水平
- 验收性能测试
定义:特定条件下验证系统的能力状况
特点:
1)该方法主要目的是验证系统是否具有系统宣称的能力。
方法包括:确定用户场景,给出需要关注的性能指标,测试执行,测试分析几个步骤
2)该方法需要事先了解被测系统的典型场景,并具有确定的性能目标
3)这种方法要求在已确定的环境下进行
- 配置测试
定义:通过对被测系统软硬件环境的调整,了解各种不同环境对系统性能影响的程度,从而找到系统各项资源的最优分配原则
特点:
1)该方法主要目的是了解各种不同因素对系统系能影响的程度,从而判断出最值得进行的调优操作
2)该方法一般在对系统性能状况有初步了解后进行
需要在确定的环境、操作步骤和压力条件下进行
3)该方法一般用于性能调优和规划能力
- 并发测试
定义:模拟多用户并发访问同一个应用、模块或者数据记录时是否存在死锁或者其他性能问题
特点:
1)该方法主要目的是发现系统中可能存在的并发访问时的问题
2)该方法主要关注系统中可能存在的并发问题。比如:内存泄漏、线程锁和资源争用等问题
3)该方法可以在开发的各个阶段使用,需要相关的测试工具的配合和支持
常用工具:商业软件loadrunner:功能完整强大,内存占用大,需要收费
开源工具jmeter:开源免费,自由,操作较简单,能辅助完成日常的一些测试工作
- 可靠性测试
定义:给系统施加一定的业务压力,让其持续运行一段时间,测试在这种条件下能否稳定运行
特点:
1)该方法的主要目的是验证系统是否支持长期稳定的运行
2)该方法需要在压力下持续一段时间的运行
3)测试过程中需要关注系统的运行情况
比如:内存使用或者其他资源的使用以及响应时间有无明显变化
- 失效恢复测试
针对有多余备份和负载均衡的系统设计
定义:检测如果系统局部发生故障,系统能否继续使用
特点:
1)该方法主要目的是验证局部故障下系统能否继续使用
2)该方法需要指出:问题发生时“能支持多少用户访问”和“采取何种应急措施”
一般只有对系统持续运行能力有明确指标的系统才需要该类型测试
- 容量测试(Volume Testing)
通过性能测试,如果找到了系统的极限或苛刻的环境中系统的性能表现,在一定的程度上,就完成了负载测试和容量测试。容量还可以看作系统性能指标中一个特定环境下的一个特定性能指标,即设定的界限或极限值。
- 基准测试
通过设计科学的测试方法、测试工具和测试系统,实现对一类测试对象的某项性能指标进行定量的和可对比的测试。
- 大数据量测试
针对某些系统存储、传输、统计查询等业务进行大数据量的测试。
- 疲劳强度测试
主要特点是长时间对目标测试系统加压,目的是测试系统的稳定性,持续时间一般在1小时以上;感觉等同于可靠性测试。
三、性能测试流程
- 需求分析
需求分析是软件测试关键步骤之一,通过需求分析,我们能够了解到软件要提供的能力,方便后续开展测试工作。性能测试是软件测试其中的一部分,那么需求分析也必不可少的,而且是重要的一步。因为,性能测试的测试策略、工具选型、性能指标等都需要通过分析才能得出来。
- 测试准备
通过了需求分析,我们明确了测试的方向。那么,我们就要做好工具、环境部署、用例脚本等一些前提准备。
- 测试执行
一切准备好了,性能测试理所当然走到了测试执行的环节。测试的执行我们可以人工干预方式执行,也可以无人值守方式执行(自动化性能测试)。
- 结果分析
测试执行完成后,就到了我们性能测试的目的关键步骤了 - 性能结果分析。我们性能测试目的是改善系统的性能,达到客户规定的指标。性能结果分析能有效的找出系统性能的瓶颈问题所在。
- 总结与报告
结果分析完了,同学们说,这是不是完了?当然不是了。报告还是要给出来的,客户要,我们产品宣传页要。还有总结也要保留的,方便后续参考和问题处理,这也是我们的心血嘛。
四、常见的性能测试工具有哪些呢?
网上有一篇文章总结的很好,我这里转载了一下,大家可以看下面链接