Locust学习笔记1-性能工具的选择
引言
一谈到性能测试,很多人都会想到Loadrunner和Jmeter这两款工具,其实Python也有一套性能测试工具——Locust。
Locust是一款支持分布式开源的性能测试框架,基于Web界面实时监控性能数据。
那么这些性能测试工具到底有什么区别,如何选择呢?
性能测试相关技能
业务理解、性能诊断、调优技能、经验、测试基础、编程、系统架构、数据库、操作系统原理、网络、工具应用
核心原理
基于协议、多线程、模拟真实场景
性能测试分类
负载测试:(不同用户级关注系统的响应时间有效用户数) =>更高负载就是 压力测试(更多用户更大的负载)--喝酒
容量测试:不同数量级的数据
配置测试:不同的配置下的搭配
基准测试:先跑单个线程单个业务去得到一个参照的值 一个线程的最基本的值
稳定性测试:连续运行保持一定合理的负载连续不断运行12小时以上看有没有问题
并发测试:同一个时间点多个用户对同一个业务发起请求 同一个时间10个用户同时进行请求
团队支持
市场(场景)
DBA(数据库瓶颈需要调优)
运维(操作系统)
开发(系统程序需要调优)
测试、客户
性能测试的流程
分析:业务理解 需求分析 评估工作
设计:模型 方案 脚本
实现:脚本开发 环境 数据
执行:运行测试 分析调优 测试报告
工具对比
LoadRunner | Jmeter | Locust | Wrk | Hyload | |
分布式压力 | 支持 | 支持 | 支持 | 不支持 | 支持 |
单机并发能力 | 低 | 低 | 高 | 低 | 高 |
并发机制 | 进程/线程 | 线程 | 协程 | 线程 | 协程 |
开发语言 | C/JAVA | JAVA | Python | C | Python |
报告与分析 | 完善 | 简单图表 | 简单结果 | 简单图表 | 简单图表 |
授权方式 | 商业收费(10WRMB+) | 开源免费 | 开源免费 | 开源免费 | 开源免费 |
测试脚本形式 | C/JAVA | GUI | Python | C | Python |
资源监控 | 支持 | 不支持 | 不支持 | 不支持 | 支持 |
单机最大并发数 |
LR11超级license最高支持6.5w个并发 LR12支持50个 |
1000个 | 100W+ | 未知 | 未知 |
优点 |
1、支持分布式部署 2、支持复杂业务测试 3、七层协议全部支持 4、支持多种语言 |
1、支持分布式部署 2、支持复杂业务测试 3、支持二次开发
|
1、支持分布式压测 2、支持复杂业务测试 3、单机并发高 4、Python脚本,web界面展示 |
1、操作简单 | 未知 |
缺点 |
1、商业工具贵 2、学习成本高 3、C/S架构使用不方便 4、Load不适用后端接口 |
1、硬件利用率较低 2、C/S架构使用不方便 |
1、测试报告过于简陋 2、测试过程中的监控无法看到 |
1、不支持windows 2、只支持http协议 3、只支持单机并发 4、结果简单 |
未知 |
总结
我们在接到性能测试需求的时候,应该以实际需求为基准来选择测试工具,任何工具都是辅助的,没有好坏之分,只有适合不适合的。比如你需要测试单机并发高的场景,可以选择Locust,也可以选择Jmeter和Loadrunner,只不过Locust更加适合测这种场景下的并发数。
当然只要达到目的,在使用上也可以根据个人习惯来,比如有些人使用工具可以完成任务,有些人写脚本也可以完成任务。我们最终的目标是完成一次性能测试需求,而不是纠结工具的好坏与选择。