什么是性能测试(二)
《零成本web性能测试》第一章性能测试基础总结和自己的理解
一、性能测试概念
百度词条定义:性能测试是通过自动化的测试工具模拟多种正常峰值及异常负载条件来对系统的各项性能指标进行测试。负载测试和压力测试都属于性能测试。通过负载测试,确定在各种工作负载下系统的性能,目标是当负载逐渐增加时,测试系统各项性能指标的变化情况。压力测试是通过确定一个系统的瓶颈或者不能接受的性能点,来获得系统提供的最大服务级别的测试。
维基百科定义:在计算机领域,软件性能测试被用来判断计算机、网络、软件程序或者驱动的速度和效率。这一过程会在同一实验环境下进行大量测试,以便于衡量系统功能的相应时长或者MIPS(每秒执行指令数目)等指标,其他系统特性,如可靠性、可量测试、互用性等,也可以用性能测试来衡量,性能测试通常与压力测试一起进行。
笔者理解:1、性能测试不仅是通过模拟器对系统进行负载和压力测试,而且还包含异常测试,比如集群中某一模块停止运行,测试系统还能正常满足一定用户的使用。这是系统的性能测试。
2、性能测试还包括对维护人员对系统维护的测试。笔者公司之前由于没有预估峰值,运营人员搞了一个活动导致集群最顶部模块崩溃,到服务器可以正常使用花费了48小时,严重影响了公司运作。
二、性能测试的目的
性能测试目的验证软件系统是否能够达到用户提供的性能指标,同时发现存在的性能瓶颈,最好起到优化的目的。
1、评估系统的能力:主要从测试结果中的负荷和响应时间,并发用户等数据验证系统的各项指标达到用户需求
2、识别体系中的弱点:根据测试过程中的负荷或代码走差方式找出系统的极端或繁琐的代码逻辑,从而找到体系中的瓶颈或薄弱地方
3、系统调优:重复进行性能测试,验证系统活动是否达到预期结果,从而进行改进
4、检测软件中的问题:主要查找一些隐含的问题或者硬件引发的问题。主要方法大量的重复测试验证
5、验证稳定性和可靠性:不但要验证系统的稳定性和可靠性,还要验证人为因素的稳定性。
三、性能测试分类
1、负载测试::闲时负载量。通过测试系统在资源超负荷情况下的表现来发现设计上的错误或验证系统的负载能力。目标是确定并确保系统在超出最大预期工作量的情况下仍能正常运行。还用来评估性能特征,如响应时长、事务处理速度等
2、压力测试:极限负载量。对系统不断施加压力的测试,判断系统能提供的最大服务级别。例如测试一个web站点,经过不断加压判断出达到多少用户并发的时候服务响应失效。
3、容量测试:支持的最大数量
四、性能测试指标
系统指标:
1、并发用户数:某一物理时刻同时向系统提交请求的用户数
2、平均响应时间:系统处理事务的响应时间的平均值。事务的响应时间是从客户端提交访问请求到客户端接收到服务器响应所消耗的时间。对于系统快速响应类页面,一般响应时间小于2秒
3、事务成功率:性能测试中,定义事务用于度量一个或者多个业务流程的性能指标,如用户登录、保存订单、提交订单操作均可定义为事务
4、平均响应时间:对于客户端用户来说,最直观的体验就是访问该页面快或者慢,即响应时间的长短。比如在持续并发性能测试过程中,客户感知访问应用很慢,监控到的平均响应时间也逐渐变长,这时就需要先借助于监控到的资源指标
资源指标:
1、CPU使用率:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%
2、内存利用率:内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%
3、磁盘I/O: 磁盘主要用于存取数据,因此当说到IO操作的时候,就会存在两种相对应的操作,存数据的时候对应的是写IO操作,取数据的时候对应的是读IO操作,一般使用% Disk Time(磁盘用于读写操作所占用的时间百分比)度量磁盘读写性能
4、网络带宽:一般使用计数器Bytes Total/sec来度量,Bytes Total/sec表示为发送和接收字节的速率,包括帧字符在内。判断网络连接速度是否是瓶颈,可以用该计数器的值和目前网络的带宽比较
五、性能测试基本流程
1、确性能测试需求
2、制定性能测试方案
重点描述如何进行性能测试,和功能测试方案基本一致,但是必须明确关键功能的相应时长和用户数,例如查询功能平均使用次数xx,平均用户数xx,高峰段用户数xx,平均相应小于xx秒,可接受最长响应时长小于xx秒,使用时间段8点到12点
3、编写性能测试案例
和功能测试用例基本一致
4、执行性能测试案例
5、分析结果
6、生成性能测试报告
测试报告尽量写的非专业人士也可以读懂。主要的部分要有测试基本信息、测试环境、执行情况、结果分析、总结说明。还可以给出一些建议方案
六、使用开源web性能测试的优势
1、更少的IT投入,因为开源工具的获取成本为零
2、更灵活的定制工具,根据需要设置个性化定制,添加个性化的测试方法
3、更快、更便捷的服务支持,可以方便从各种渠道得到技术支持和一些技巧,因为用的人多,研究的的人也就多