51Testing软件测试论坛

标题: Locust 登陆压力测试 [打印本页]

作者: 一纸荒年    时间: 2019-2-21 16:29
标题: Locust 登陆压力测试
debugtalk 大大很早就在国内给大家介绍过locust. 在他的博文里有讲解有例子。真正实用得自己在项目中还得靠自己灵活应用。

http://debugtalk.com/post/head-first-locust-advanced-script/

1. 按照locust.io官网推荐的项目结构。如下图

[attach]122199[/attach]

locust的子类httplocust底层用的是requests. 因此做API性能测试需要最好对rest API有些基础知识。

2. 登陆例子

  1. from locust import HttpLocust, TaskSet, task
  2. from random import randint
  3. from locust.clients import HttpSession
  4. import json

  5. # Web性能测试
  6. class UserBehavior(TaskSet):
  7.     @task
  8.     def login(self):
  9.         self.head = {'Content-Type': 'application/json;charset=utf-8',
  10.                      'token': 'planceholder',
  11.                      'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/65.0.3325.181 Safari/537.36',
  12.                      'userId': 'planceholder'
  13.                      }

  14.         self.form_data = {'account': 'admin',
  15.                           'password': 'zs123YL!'}

  16.         with self.client.post("/api/chameleon-user/user/login", headers = self.head, data = json.dumps(self.form_data)) as response:
  17.             print(response.status_code)
  18.             print(response.content)

  19. class User(HttpLocust):
  20.     task_set = UserBehavior
  21.     min_wait = 1000
  22.     max_wait = 3000
  23.     host = "http://172.16.78.73:3011"
复制代码

3. 脚本运行

  1. import os
  2. os.system('locust -f locustfiles\op_parameter.py')
复制代码

4. 指定压力用户数和用户产生的速度。

[attach]122200[/attach]

5. 开始加压后,就可以看到网页API的响应成功,响应时间,和请求速率等性能参数了。

[attach]122201[/attach]

6. locust 支持master 和slave集群,让locust支持百万级用户压力测试。

个在应用locust的时候踩过的坑,

1. 启动locust web interface 报告访问拒绝, 换成http://localhost:8089就OK了。

[attach]122202[/attach]

2. 运行locust脚本报套接字地址只允许使用一次。原因是同一个locust脚本多次启动了。

[attach]122203[/attach]




作者: qqq911    时间: 2019-4-16 11:05
感谢分享
作者: Miss_love    时间: 2020-12-25 16:12
感谢分享




欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2