DaLei@home:~$

使用locust进行性能测试



Locust是一款开源的负载测试工具,它使用python语言实现,支持单机测试和分布式部署联合测试。 使用python编写相关的测试脚本,简单易用功能强大。

  • 为什么使用负载测试工具呢?
  1. 对于测试人员,手动测试只能测试功能相关的问题,对于性能手动测试无能为力

  2. 对于开发人员,可以指导程序优化,提高程序运行效率。

  3. 对于程序而言,可以检验程序在高并发的稳定性,和数据库关键数据的ACID特性

  • Locust有什么优点?
  1. 安装,部署,使用简单,开包即用

  2. 脚本编写简单,套用模板,请求函数和python requests库的使用完全一致。

  3. 支持本地单机运行和主从结构多机运行,能够完成日常使用

  • Locust一个简单脚本和运行
    import random
    from locust import HttpLocust, TaskSet, task


    class UserBehavior(TaskSet):

        def on_start(self):
            self.login()

        def on_stop(self):
            self.logout()

        def login(self):
            pass

        def logout(self):
            pass

        #定义任务,可以定义多个任务,参数1表示执行的比例
        @task(1)
        def set_user_info(self):
            headers = {}
            data = {
                "schools": "BUPT",
                "user_birthday": "2000-01-01"
            }
            x = self.client.post("/api/setUserInfo", data=data, headers=headers)
            print(x.status_code)
            print(x.text)

    class WebsiteUser(HttpLocust):
        task_set = UserBehavior
        min_wait = 5000
        max_wait = 9000

  • 执行脚本
      # 单机运行方式,也支持多机分布式部署
      locust -f locust_test.py --host=https://api.test.com
      # 分布式部署-主机
      locust -f locust_test.py --master --host=https://api.test.com
      # 分布式部署-本地从机
      locust -f locust_test.py --slave --host=https://api.test.com
      # 远程分布式部署-远程从机
      locust -f locust_test.py --slave --master-host=192.168.0.100 --host=https://api.test.com
  • locust启动页(总人数和每秒增加的数量)