lsekfe 发表于 2020-11-16 10:05:05

使用Locust进行APP服务端并发测试

一、摘要

  APP的性能测试,对于服务端的压力其实和Web差别不大,通过JMeter/Loadrunner进行服务器的并发请求即可完成。

  基于Python协程的Locust是一款优秀的性能测试工具,单机并发量远超于JMeter和Loadrunner。本文通过实例介绍Locust的使用,通过解决产品开发中的实际问题作为Locust实战的说明,最后结合该实例总结Locust的使用方法,为其他需要使用Locust的工程师提供思路。

  二、Locust简介

  Locust是一款开源的Web性能测试框架。该单词的原意是蝗虫,原作者之所以选择这个名字,估计也是听过这么一句俗语,“蝗虫过境,寸草不生”。

  Locust工具生成的并发请求就跟一大群蝗虫一样,对我们的被测系统发起攻击,以此检测系统在高并发压力下是否能正常运转。在Locust测试框架中,测试场景是采用纯Python脚本进行描述的。对于最常见的HTTP(S)协议的系统,Locust采用Python的requests库作为客户端,使得脚本编写大大简化,富有表现力的同时且极具美感。而对于其它协议类型的系统,Locust也提供了接口,只要我们能采用Python编写对应的请求客户端,就能方便地采用Locust实现压力测试。从这个角度来说,Locust可以用于压测任意类型的系统。

  主要特点如下:

  1、使用纯粹的Python编写脚本。

  用Locust就是写Python代码,这点比其他性能测试工具要先进。事实上界面点击代替编程,本身就是伪命题。不会编程的用不好JMeter,会编程的更喜欢写纯粹的代码。

  2、单机可支持千级并发压力,且支持分布式。

  Locust采用协程并发,单机比LoadRunner、JMeter的并发都会高很多。JMeter一个并发用户一个线程,当用户变多时,本身的性能会急剧下降。

  3、Web管理界面。

  内嵌的Web服务,并且支持扩展。

  4、可以测试任何系统。

  基于协议,通过协议模拟,可尝试任何系统。

  5、简单耐玩。

  Locust核心代码只有几百行,简单。扩展性强,有很强的二次开发属性,耐玩性很高。

  关于Locust下载、安装和运行Demo测试的方法,可以参考官网的示例,以及网络上其他的信息。下面以一个实际的例子说明如何使用Locust进行并发测试。

  三、并发测试需求说明

  需求说明:测试的App是面向C端客户的理财类软件,目前上线一个类似红包的空投优惠卷拉新活动,通过红包的发放宣传App。现在需要测试并发抢该优惠卷红包,是否存在问题。

  需求分析:并发抢红包,在不考虑服务器并发性能的基础上,需求很简单,就是确认在并发的过程中,一个用户只能抢一次,红包不能被多抢。

页: [1]
查看完整版本: 使用Locust进行APP服务端并发测试