先自我介绍一下,小编浙江大学毕业,去过华为、字节跳动等大厂,目前阿里P7
深知大多数程序员,想要提升技能,往往是自己摸索成长,但自己不成体系的自学效果低效又漫长,而且极易碰到天花板技术停滞不前!
因此收集整理了一份《2024年最新软件测试全套学习资料》,初衷也很简单,就是希望能够帮助到想自学提升又不知道该从何学起的朋友。
既有适合小白学习的零基础资料,也有适合3年以上经验的小伙伴深入学习提升的进阶课程,涵盖了95%以上软件测试知识点,真正体系化!
由于文件比较多,这里只是将部分目录截图出来,全套包含大厂面经、学习笔记、源码讲义、实战项目、大纲路线、讲解视频,并且后续会持续更新
如果你需要这些资料,可以添加V获取:vip1024b (备注软件测试)
正文
[2018-07-24 15:39:22,917] LAPTOP-8B5JADC8/INFO/locust.main: Starting Locust 0.8.1
在浏览器打开localhost:8089
可以看到如下页面:
- Number of users to simulate:设置模拟用户数。
- Hatch rate(users spawned/second):每秒产生(启动)的虚拟用户数。
- 单击“Start swarming”按钮,开始运行性能测试
运行之后可以看到主界面如下:
性能测试参数如下。
- Type:请求的类型,例如GET/POST。
- Name:请求的路径。
- request:当前请求的数量。
- fails:当前请求失败的数量。
- Median:中间值,单位毫秒,一半的服务器响应时间低于该值,而另一半高于该值。
- Average:平均值,单位毫秒,所有请求的平均响应时间。
- Min:请求的最小服务器响应时间,单位毫秒。
- Max:请求的最大服务器响应时间,单位毫秒。
- Content Size:单个请求的大小,单位字节。
- reqs/sec:每秒钟请求的个数。
点击 Charts
菜单可以查看性能图表
图表含义如下:
- Total Request per Second :每秒的请求数
- Average Response Time: 平均响应时间
- Number of Users: 用户数
参数化
测试场景
如果想对如下接口进行并发测试,则可以将id
进行参数化设置
http://127.0.0.1:8000/groups/1/
http://127.0.0.1:8000/groups/2/
http://127.0.0.1:8000/users/1/
http://127.0.0.1:8000/users/2/
代码实现
locust_users_groups.py
from locust import HttpLocust,TaskSet,task
class UserBehavior(TaskSet):
def on_start(self):
#设置user和group参数下标初始值
self.users_index=0
self.groups_index=0
@task
def test_users(self):
#读取参数
users_id=self.locust.id[self.users_index]
url=“/users/”+str(users_id)+‘/’
self.client.get(url,auth=(‘51zxw’,‘zxw20182018’))
#取余运算循环遍历参数
self.users_index=(self.users_index+1)%len(self.locust.id)
@task
def test_groups(self):
#参数化
groups_id=self.locust.id[self.groups_index]
url=“/groups/”+str(groups_id)+“/”
self.client.get(url,auth=(‘51zxw’,‘zxw20182018’))
self.groups_index=(self.groups_index+1)%len(self.locust.id)
class WebsiteUser(HttpLocust):
task_set = UserBehavior
#参数配置
id=[1,2]
min_wait = 3000
max_wait = 6000
#host配置
host = ‘http://127.0.0.1:8000’
运行结果
执行如下命令即可运行测试
C:\Users\Shuqing>locust -f D:\api_test\locust\locust_users_groups.py
运行模式
no-web运行
前面是通过登录web来运行测试的,其实也可以非web状态来运行,如cmd命令来运行。如果需要非Web形式运行,则需使用--no-web
参数,并会用到如下几个参数。
-c, --clients
:指定并发用户数;-r, --hatch-rate
:指定并发加压速率,默认值位1。-t, --run-time
:设置运行时间。如(300s,20m, 3h, 1h30m等);
运行命令如下:
locust -f D:\api_test\locust\locust_users_groups.py --no-web -c 10 -r 2 -t 15s
运行结果如下:
C:\Users\Shuqing>locust -f D:\api_test\locust\locust_users_groups.py --no-web -c 10 -r 2 -t 15s
[2018-08-21 10:12:59,017] LAPTOP-8B5JADC8/INFO/locust.main: Run time limit set to 15 seconds
[2018-08-21 10:12:59,017] LAPTOP-8B5JADC8/INFO/locust.main: Starting Locust 0.8
[2018-08-21 10:12:59,018] LAPTOP-8B5JADC8/INFO/locust.runners: Hatching and swarming 10 clients at the rate 2 clients/s…
Name # reqs # fails Avg Min Max | Median req/s
Total 0 0(0.00%) 0.00
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 2 0(0.00%) 134 122 146 | 120 0.00
GET /users/1/ 2 0(0.00%) 118 100 136 | 100 0.00
Total 4 0(0.00%) 0.00
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 4 0(0.00%) 135 122 146 | 130 1.00
GET /users/1/ 4 0(0.00%) 115 100 136 | 100 1.00
Total 8 0(0.00%) 2.00
[2018-08-21 10:13:04,034] LAPTOP-8B5JADC8/INFO/locust.runners: All locusts hatched: WebsiteUser: 10
[2018-08-21 10:13:04,034] LAPTOP-8B5JADC8/INFO/locust.runners: Resetting stats
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 1 0(0.00%) 147 147 147 | 150 0.00
GET /users/1/ 2 0(0.00%) 110 92 128 | 92 0.00
GET /users/2/ 1 0(0.00%) 102 102 102 | 100 0.00
Total 4 0(0.00%) 0.00
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 3 0(0.00%) 129 101 147 | 140 0.00
GET /users/1/ 3 0(0.00%) 108 92 128 | 100 0.00
GET /users/2/ 1 0(0.00%) 102 102 102 | 100 0.00
Total 7 0(0.00%) 0.00
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 4 0(0.00%) 125 101 147 | 110 1.00
GET /groups/2/ 2 0(0.00%) 136 116 156 | 120 0.00
GET /users/1/ 3 0(0.00%) 108 92 128 | 100 1.00
GET /users/2/ 2 0(0.00%) 102 102 102 | 100 0.33
Total 11 0(0.00%) 2.33
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 5 0(0.00%) 123 101 147 | 120 0.75
GET /groups/2/ 3 0(0.00%) 124 100 156 | 120 0.50
GET /users/1/ 3 0(0.00%) 108 92 128 | 100 0.75
GET /users/2/ 4 0(0.00%) 114 102 153 | 100 0.25
Total 15 0(0.00%) 2.25
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 6 0(0.00%) 128 101 157 | 120 0.67
GET /groups/2/ 5 0(0.00%) 127 100 156 | 120 0.33
GET /users/1/ 4 0(0.00%) 108 92 128 | 100 0.50
GET /users/2/ 5 0(0.00%) 121 102 153 | 100 0.50
Total 20 0(0.00%) 2.00
[2018-08-21 10:13:13,691] LAPTOP-8B5JADC8/INFO/locust.main: Time limit reached. Stopping Locust.
[2018-08-21 10:13:13,693] LAPTOP-8B5JADC8/INFO/locust.main: Shutting down (exit code 0), bye.
Name # reqs # fails Avg Min Max | Median req/s
GET /groups/1/ 6 0(0.00%) 128 101 157 | 120 0.67
GET /groups/2/ 5 0(0.00%) 127 100 156 | 120 0.33
GET /users/1/ 4 0(0.00%) 108 92 128 | 100 0.50
GET /users/2/ 5 0(0.00%) 121 102 153 | 100 0.50
Total 20 0(0.00%) 2.00
Percentage of the requests completed within given times
Name # reqs 50% 66% 75% 80% 90% 95% 98% 99% 100%
GET /groups/1/ 6 140 140 150 150 160 160 160 160 157
GET /groups/2/ 5 120 150 150 160 160 160 160 160 156
GET /users/1/ 4 110 110 130 130 130 130 130 130 128
GET /users/2/ 5 100 150 150 150 150 150 150 150 153
Total 20 120 140 150 150 160 160 160 160 157
分布式运行
上面我们都是单台机器来执行性能测试,但是当单台机器不够模拟足够多的用户时,Locust支持运行在多台机器中进行压力测试。分布式运行一般是一台master
多台slave
如下图所示:
首先定义一台 master
C:\Users\Shuqing>locust -f D:\api_test\locust\locust_users_groups.py --master
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!
st\locust\locust_users_groups.py --master
网上学习资料一大堆,但如果学到的知识不成体系,遇到问题时只是浅尝辄止,不再深入研究,那么很难做到真正的技术提升。
需要这份系统化的资料的朋友,可以添加V获取:vip1024b (备注软件测试)
[外链图片转存中…(img-aHNdrS9T-1713334407513)]
一个人可以走的很快,但一群人才能走的更远!不论你是正从事IT行业的老鸟或是对IT行业感兴趣的新人,都欢迎加入我们的的圈子(技术交流、学习资源、职场吐槽、大厂内推、面试辅导),让我们一起学习成长!