性能测试简介
软件系统的性能包括很多方面,有执行效率,资源占用,系统稳定性,安全性,兼容性,可靠性,可扩展性等。这些都是可以衡量一个软件系统性能好坏的指标。而性能测试是指通过自动化测试工具去模拟多种正常,峰值及异常负载条件来对系统的各项性能指标进行测试。与功能测试相比,性能测试有更高的技术复杂性。
性能测试方法和目的
通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求。验证系统所具有的能力。
性能测试分类
1.负载测试(Load test)
通过在被测试系统上不断施加压力,直到系统性能指标达到极限。找到系统处理能力的极限。
2.压力测试
测试系统在一定饱和状态下,系统能够快速处理的会话能力,以及系统是否会出现错误。检查系统处于压力下系统应用的表现。
3.并发测试
通过模拟多用户并发访问,测试多用户并发访问同一个系统应用模块或者数据记录时是否存在死锁或者其他性能问题。可以发现系统中可能隐藏的的并发访问时会出现的问题,比如订单号重复,数据错误等等。
4.配置测试
通过对被测试系统的软硬件环境的调整,了解各种不同对系统的性能影响的程度,从而找到系统各项资源的最优配置。可以了解各种不同因素对系统性能影响的程度。
5.可靠性测试(稳定性测试)
给系统加载一定业务压力的情况下,是系统运行一段时间,以此来检测系统运行是否稳定。可以验证系统是否支持长期稳定的运行。
上面各种测试分类也是密切相关的,各种测试方法之间也有一定的包含。
性能指标
1. 平均响应时间(TTLB,Time to laster byte):平均每个请求从发送到接受响应的时间。
2. 合理的平均响应时间
2/5/10原则
解释:
在2秒内客户能得倒响应被用户认为是“非常有吸引力的”用户体验。在5秒只内响应客户被认为是“不错的”用户体验,在10秒之内响应给客户被认为是“糟糕”的用户体验。
如果超过10秒还没得倒响应那么被认为请求是失败的。
系统资源类的性能指标
1.CPU
CPU的占用率
2.内存
内存的占用率,交换换页数等。
3.I/O
读写请求数,读写量等。跟数据库相关。
4.带宽
进出站等带宽占用率。用户的访问量会增加带宽的使用,带宽合理的使用率会降低企业的成本。
5. PV:访问一个URL,产生一个PV(Page View,页面访问量),每日每个网站的总PV量是形容一个 网站规模的重要指标。
6. UV:作为一个独立的用户,访问站点的所有页面均算作一个UV(Unique Visitor,用户访问)。
7. TPS:Transactions Per Second,每秒事务数。
为什么要进行性能测试
1.能够有效评估系统的性能指标,用于系统的性能评估。
2.能够识别系统的性能瓶颈,协助性能调优。
3.能够指导突发流量承载方案的制定,指导资源的规划。
4.能够用于系统运维成本的预算,根据参照进行资源的配置。
常见性能测试工具
AB(Apache Bench), wrk ,http_load , Web Bench ,Siege,Apache JMeter,Loadrunner
性能测试工具对比
1. AB 和 JMeter同是Apache下的两款开源的压测工具,AB是在命令行下轻量级的测试工具,AB使用简单一行命令,不需要运行工具,而JMeter功能更强大,并且带有GUI界面,操作更复杂。
2. JMeter支持分布式压测,而AB不支持。
3. 使用方法上,AB是用ab这个命令以及ab命令后面所跟的参数,下面这种
ab -c 10 -n 100 http:
//localhost/test.php
JMeter在Window上运行有界面,在Linux环境中也可以用命令运行。
4. AB只支持HTTP协议,JMeter支持HTTP,JDBC,FTP等协议。
JMeter介绍及安装
Apache JMeter是一款纯java编写负载功能测试和性能测试开源工具软件,体积小,功能强大,使用方便,是一个比较轻量级的测试工具,上手比较简单。
官网地址: http://jmeter.apache.org/
JMeter安装环境要求:
1. 安装JDK并且配置环境变量JAVA_HOME。
2. JMeter2.11版本 需要JDK1.6以上的版本支持。
我的电脑是Mac系统,所以命令 brew install jmeter 直接安装,时间会有点长。
安装完毕后输入jmeter命令直接打开JMeter界面。
JMeter组成
1. 取样器:进行脚本逻辑控制。可以用取样器来控制业务流程,比如选择请求的协议,何时去请求等去模拟用户的操作行为。
2. 线程组:场景设置。包含用户访问的数量及并发。
3. 监视器:监控我们的脚本运行,获取性能指标数据(吞吐量,TPS等参数)。