本系列学习目标:掌握用jmter做性能测试的方法。
性能测试导论
-
什么是性能测试
性能:事务、物品的某些特征的评价值。关注维度:时间角度,处理能力。
软件性能测试:用一定的技术或工具,找出或验证某个性能指标值的测试。
负载测试:通过工具虚拟出大量用户向用户发起请求,造成服务器压力,通过逐步增加压力,从而找出服务器的性能瓶颈。
压力测试:比较大的压力,比较长的时间,对系统进行测试。
企业一般讲的压测:并不是压力测试的概念,首先是得只知道性能瓶颈在哪里,所以是先做负载测试找出性能拐点的范围,然后再做性能测试找出性能精确指标值。如果服务器不稳定的情况下做压测,则还包括压力测试。即,负载测试->性能测试->压力测试
性能测试不再是找bug,如果带着找bug的思路去做性能测试,目的是不正确的。
我们讲的性能测试是对服务器性能的测试,不是针对某个端的(WEB, APP, H5等),也有专门针对APP的性能测试,但不是我们这次学习的内容。
本次学习的接口协议:http,soap,JDBC -
企业什么时候开展性能测试
对于付费购买的第三方接口(如支付,天气,地图等),一般接口功能已经成熟,但是它是否满足公司调用的用户量要求呢?这种第三方接口一般是商务谈判谈还没有结束或者已经结束的时候,企业就应该提出我司性能要求(如用户并发数量等),并对其进行性能测试,确保满足我司的要求。
对于企业自研接口,应该在功能测试之后,快上线的时候或者上线之后,做性能测试。为什么要在快上线或者上线之后做?是因为性能测试的周期很长,在功能已经给用户用了以后,功能基本稳定,用户数量越来越多,大量用户使用时可能会存在性能问题,原因可能是服务器资源不足,代码不稳定,或者其他原因导致。 -
性能测试前提
- 性能测试的必要性研究——关键项评估
主管部门、监管部门审查;
涉及生命财产安全;
大型新系统;
核心系统;
架构调整;
业务剧增;
重大缺陷修复。 - 可测性——量化为性能指标值。
性能测试的主要指标
- 响应时间 t1+t2+t3+t4
响应时间:从发起请求到收到请求的时间
网络传输时间t1,t4,性能测试一般使用独占网络,局域网,不要使用wifi网络,使用有线网络,并且是带宽越大越好的网络。
服务器处理时间t2,t3 - 并发数:
并发的概念
狭义:同一时间做相同事情
广义:同一之间做不同事情,混合场景
并发性能测试,先简单的狭义并发,然后再广义的并发。即:先做单接口性能测试,再单业务的性能测试,最后做混合多业务场景性能测试。
并发数:单位时间内向服务器发起请求的虚拟用户数。
并发用户数:用于模拟真实用户向服务器发起请求的性能测试虚拟用户数量。
系统用户数:只要访问过系统的用户,含一次性访问的用户。
在线用户数:当前正访问系统的用户,不一定有压力。 - 吞吐量/吞吐率:(事务/s, KB/s)衡量网络的重要指标
吞吐量:事务数。
吞吐率:数据量
TPS(Transaction per second) 最主要的服务器性能指标
服务器每秒通过事务个数。服务器处理事务数。 - 资源使用率
资源:CPU,内存,磁盘,I/O
性能测试工具
做性能测试,一定要使用性能测试工具(包括代码)。用手工点点点是没有办法做性能测试的。
- 自研工具
- LoadRunner:性能测试标杆工具,付费商业版,学习难度稍大,执行效率高(脚本为C语言执行)。
- Jmeter:目前最主流。为什么选择Jmeter?Jmeter是JAVA开发的跨平台的轻量级开源工具,版本更新非常快,能够支持最新最流行的协议。
薪资水平
性能测试人员需求量少,但是薪资水平处于测试岗位的上游。
功能测试 < 自动化测试 < 性能测试