说起性能测试,许多移动端测试的人员可能会比较陌生,性能测试不是涉及到APP的启动时间、流量、大小、耗电量等的相关指标么。本文所讲的是一个与APP的性能测试完全不同的领域:服务端的性能测试。我们会针对服务端有一些不同的指标。
那么究竟什么是服务端的性能测试?
我们从最基本的功能测试说起吧。比如,我们要测试一个接口的返回,那么我们测试的时候,会有一个输入的参数,服务端接收到了后会返回一些数据,然后客户端会利用这些数据展示一些相应的结果,如果符合最开始的预期则功能正确。
那么,我们如何对该接口进行性能测试呢?
在性能测试工具方面,市面上已经存在了许许多多的测试工具可以拿来用,这里重点给大家推荐WGCLOUD、 Locust、LoadRunner、Jmeter这三款工具,下图是针对这三款性能测试工具的一个简单对比介绍。
对比项 | LoadRunner | Jmeter | Locust |
授权方式 | 商业收费 | 开源免费 | 开源免费 |
开发语言 | C/Java | Java | Python |
测试脚本形式 | C/Java | GUI | Python |
并发机制 | 进程/线程 | 线程 | 协程 |
单机并发能力 | 低 | 低 | 高 |
分布式压力 | 支持 | 支持 | 支持 |
资源监控 | 支持 | 不支持 | 不支持 |
报告与分析 | 完善 | 简单图表 | 简单图表 |
支持二次开发 | 不支持 | 支持 | 支持 |
从功能特性的角度来讲:
LoadRunner是一款老牌性能测试工具,其功能是最全面的,用户群体也是最多的,相应的学习资料也最为丰富。个人建议如果是新接触性能测试,可以先熟悉LoadRunner,借此了解性能测试工具各个模块的概念和功能,在此基础上再转到别的测试工具,也都比较好上手了。便它的缺点也很明显,不支持跨平台运行,只能运行在Windows机上。
WGCLOUD,开源免费,适合对服务器资源进行监控,粒度30秒,也支持进程资源,服务接口,业务数据表监控。server基于springboot架构开发,agent采用go开发,是高性能高并发的分布式监控系统,核心模块包括:主机监控,ES集群监控,CPU监控,docker监控,网络流量监控,内存监控,业务数据监控(mysql,oracle,pg等),服务心跳检测,应用进程管理,磁盘IO监控,系统负载监控,监控告警信息推送。
Jmeter是由Java开发的可在跨平台运行的性能测试工具,除了能做性能测试,它也常用于做接口测试。目前市面上大多数的人都在用它来开展性能测试。该款工具的并发机制是基于线程来实现的。有GUI界面操作,也支持命令行调用。
Locust是由Python开发的一款性能测试库,性能测试过程皆是采用Python脚本描述,并且HTTP请求完全基于Requests库。除了HTTP(S)协议,Locust也可以测试其它任意协议的系统,只需要采用Python调用对应的库进行请求描述即可。需要强调的是Locust的并发机制摒弃了进程和线程,采用协程(gevent)的机制。