性能测试基础知识
1、软件性能概念
软件性能是软件的一种非功能特性,它关注的不是软件是否能够完成特定的功能,而是在完成该功能时展示出来的及时性。软件的性能是一个很大的概念,覆盖面非常广,对于一个软件系统而言包括了执行效率、资源占用、稳定性、完全性、兼容性、可扩展性、可靠性等等。
2、为什么要做性能测试?
验证软件系统是否能够达到用户提出的性能指标,同时发现软件系统中存在的性能瓶颈,优化软件,最后起到优化系统的目的。
(补充:进行性能测试时,要告诉开发在什么样的场景下发生什么现象,最好提供日志。)
3、性能指标
响应时间:指系统响应时间,是指客户发出请求到得到响应的整个过程的时间。
tps(事务处理能力) :每秒系统处理事务的能力
举例:tps=30:每秒处理事务30个,如果有100个用户,则要分批处理,需要3秒多才能处理完
吞吐量:一次性能测试过程中网络传输数据量的总和,反应带宽情况
请求数:每秒请求数、总请求数
并发数:同时发起请求的用户数量
资源利用率(CPU、内存、IO):cpu:指用户进程与系统进程消耗的CPU时间百分比,长时间情况下,一般可接受上限不超过85%
内存:内存泄漏,使用系统过程中内存会一直减少直到溢出,内存回收
内存利用率=(1-空闲内存/总内存大小)*100%,一般至少有10%可用内存,内存使用率可接受上限为85%
IO:磁盘读写,当磁盘读写过于频繁也会影响系统性能
参考博客: http://www.cnblogs.com/fnng/archive/2012/08/17/2644878.html
http://www.cnblogs.com/fnng/archive/2012/06/29/2570558.html
4、性能测试分类
基准测试
指在一定的软件、硬件及网络环境下,模拟一定数量的虚拟用户运行一种或多种业务,将测试结果作为基线数据,在系统调优或系统评测的选择时提供决策数据。
负载测试
指在一定的软件、硬件及网络环境下,运行一种或多种业务,在不同虚拟用户数量的情况下,测试服务器的性能指标是否在用户要求的范围内,以此确定系统所能承受的最大用户数、最大有效用户数、以及不用户数下的系统响应时间及服务器的资源利用率。
压力测试
指在一定的软件、硬件及网络环境下,模拟大量的虚拟用户向服务器产生负载,使服务器的资源处于极限状态下并长时间连续运行,以测试服务器在高负载情况下是否能稳定工作。
容量测试
指在一定的软件、硬件及网络环境下,在数据库中构造不同数级别的数据记录,运行一种或多种业务在一定虚拟用户数量的情况下,获取不同数量级别的服务器性能指标,以确定数据库的最佳容量和最大容量。
可靠性测试
通过给系统加载一定的业务压力的情况下,让应用持续运行一段时间,测试系统在这种条件下是否能够稳定运行。
5、如何做性能测试
一、测试准备:
1、项目性能调研:了解用户需求,产生调研文档
2、性能需求分析:分析要测试哪些功能(一般是使用频率高的或者是用户量大的功能)
3、性能测试计划:如何做性能测试
做哪些性能测试(基准、性能、压力、负载、容量)
人力安排
设备安排
进度安排
4、测试脚本设计开发
二、测试执行:
1、执行测试脚本
2、监控性能指标
3、调优
三、结果分析:
1、分析测试结果
2、输出测试报告
性能测试工具Loadrunner
主流版本:LR11(有破解)、LR12
安装LR11教程:详见我写的《安装虚拟机win7+LR11教程》
安装LR12教程:http://jingyan.baidu.com/article/3065b3b680a7b2becff8a4cc.html
Virtual User:用户行为模拟器
Controller:性能测试指挥中心
Analysis:分析器,寻找性能瓶颈助手
补充:
安装LR11的环境要求
1、不要安装任何杀毒软件,如果安装了杀毒软件,为了方式后期安装LR11出现很多莫名其妙的无力解决的问题,请卸载杀毒软件,最好重装系统,永无后顾之忧。
2、环境要求:winxp或者win7系统,win8以及以上的系统都不支持
最佳环境:winXP
3、一旦安装LR后,很难卸载干净,一般一些安装信息都会写入到注册表中,如果真的要删除,则可以考虑重装系统
注:(1)如果第二点环境要求不符合,也可以安装在win8或以上系统,但是使用过程中会出现很多问题
(2)如果解决第2点环境问题,可以在VM中安装虚拟机,在此虚拟机中安装win7系统,在此系统中安装LR11。
思考:
1)在测试环境做还是正式环境做?
应该都可以,要根据实际情况来。
如果在正式环境做性能测试,不会对真实数据产生影响,不会影响客户使用还是可以在生产环境进行性能测试的;
否则要在测试环境做性能测试,需要将测试环境配置的尽量和正式环境一致进行测试,这样可以尽可能的模拟真实环境进行测试。测试环境测试也不会影响正式环境。可以进行各种性能测试操作比如压力、负载等等,产生了数据或者性能下降也没有关系,不会影响到正式环境。
2)功能没有做全的时候做 还是功能全部做好了再做?
功能全部做完测完才能做性能测试,这样既不会影响功能测试,也不会在进行性能测试过程中出现bug从而影响测试。
3)正式环境和测试环境的区别在哪里?
正式环境:是指正式提供对外服务的,一般会关掉错误报告,打开错误日志。
测试环境:一般是克隆一份正式环境的配置,一个程序在测试环境工作不正常,那么肯
定不能把它发布到生产机上。