性能测试基础与locust

test develop · 03-28 · 24 人浏览

性能测试

之前大概了解了测试的概念与单元测试的方法,现在我已经能实现在写出一个系统后测试它的每一个单元和整体的功能是否完备可用了,就可以关注下一步性能测试

虽说结合多线程与unittest也能实现小规模的并发测试,但是想要实现更大强度的测试则需要使用到更专业的工具,这里我选择了基于python编写的locust

需要注意的是,要实现超大规模的并发测试等压测,还是需要分布式部署测试脚本来实现,locust的优势在于其摒弃了进程和线程,完全基于事件驱动,使用gevent提供的非阻塞IOcoroutine(协程)来实现网络层的并发请求

性能测试简介

类型

  • 压力测试:大数据、高并发的情况下测试系统的瓶颈
  • 并发测试: 高并发的情况下发现并发读写、线程控制、资源争抢等问题
  • 耐久度测试:高负载情况下长时间运行以发现内存泄漏、数据库连接池不释放、资源不回收等问题

如何计算压测指标

压测我们需要有目的性的压测,可以通过以下计算方法来进行计算:

  • 压测原则:每天80%的访问量集中在20%的时间里,这20%的时间就叫做峰值
  • 公式: ( 总PV数80% ) / ( 每天的秒数20% ) = 峰值时间每秒钟请求数(QPS)
  • 机器: 峰值时间每秒钟请求数(QPS) / 单台机器的QPS = 需要的机器的数量
  • 假设:网站每天的用户数(100W),每天的用户的访问量约为3000W PV,这台机器的需要多少QPS?
( 30000000*0.8 ) / (86400 * 0.2) ≈ 1389 (QPS)
  • 假设:单台机器的的QPS是69,需要需要多少台机器来支撑?
1389 / 69 ≈ 20

Locust

Locust Documentation — Locust 0.1.dev129 documentation

相当清晰,简洁的文档

写了半天发现不如直接看文档,这纯纯的工具没啥好说的

test develop
Theme Jasmine by Kent Liao