众所周知,性能测试是测试体系中至关重要的一环。如何有效、高效的进行性能测试其实是所有测试工程师需要掌握的必备技能之一。
为什么需要Laser性能测试管理服务
性能测试的有效性更多的集中在测试场景的构造,数据的分析等方面,不再本文的讨论范围。而我们今天主要想讨论的就是如何提升性能测试的效率,即如何高效的进行性能测试。而Laser性能测试管理服务正式基于这一目的开发的。
我们都知道,目前市场上已经有了各种各样的性能测试工具,例如基于Java开发的开源发压工具Jmeter,基于Python开发的开源发压工具Locust,以及HP公司的LoadRunner等等,每种发压工具在各自方法各有其优劣。那么Laser呢?Laser并不是一种新的发压工具,而是基于上述经典发压工具的上层管理服务,其主要目的是能够将整个压测过程实现一键化。
具体来说,Laser设计之初的目的是可以通过Laser进行一键式的压测任务管理,包括:发压池资源的统一管理与智能分配;压测前的数据准备工作;集群模式发压时多发压节点管理;压测启动;压测定时/指定条件停止;压测指标收集,压测报告展示等功能。也就是说,通过Laser你可以通过一条命令就进行一轮性能测试并获取到最终的测试报告。尤其是对于大型的性能测试场景(需要数百个发压节点),它的便捷性不言而喻。
如何接入Laser性能测试管理服务
那么应该如何接入Laser性能测试管理服务呢?上面提到了这么多的优点,接入是不是会非常复杂呢?
No!
Laser性能测试管理服务的接入非常简单,甚至可以说成是无成本的。
Laser从设计之初,就是用于管理和使用Locust、Jmeter等社区开源的发压工具的。因此,我们在兼容上格外注意,保证了与原生发压工具的完整兼容。
下面,我们以Locust方式接入为例进行介绍:
第一步:下载Laser的命令行工具:laser-cli
第二步:准备一个压测包(Locust的发压包,解压该发压包后可以通过一条命令直接启动压测任务即可)并上传至某个http / ftp的文件中心。
第三步:准备一个压测任务的配置文件./conf/demo.json
,一个最简单的配置如下:
{
"type": "cluster",
"core_number": 20,
"package_address": "http://www.missshi.cn/static/locust-demo.tar.gz",
"workdir": "./press_script",
"start_script": "locust -f ./locustfile.py ${locust-param} --host=http://www.missshi.cn",
"baseenv_check_script": "python3 ./env_check.py",
"cluster_prepare_script": "python3 ./cluster_prepare_script.py",
"run_time": 120
"
}
下面,我们来简单讲解一下每个参数的函数:
- type:表示发压方式,有两个可选项,分别是single和cluster。其中,single表示单节点发压,cluster表示多节点的集群模式发压。
- core_number:表示发压节点的数量,当type选择为cluster时必填。发压节点的数量与发压端的发压能力息息相关,locust中每个发压节点最多使用1个CPU核进行工作。
- package_address:必填,用于指定压测脚本的包地址,要求包格式为.tar.gz格式。
- workdir:非必填,默认为压缩包解压后的当前目录,可以以当前目录为启动设置为解压包后内部的某个目录,如./xxx,不支持绝对路径。
- start_script:压测命令启动脚本,其中${locust-param}为服务的宏定义变量,用于在压测服务真实启动时替换相关端口,master节点地址等相关参数,必填。
- baseenv_check_script:选填,作用是再每个slave节点其中时,首先进行baseenv环境检查,判断是否满足必要依赖,例如可以用于检查压测脚本依赖的python第三方库,如果该命令返回码非0表示环境检查失败,不会该机器上启动slave节点。该参数不传或者为空时,表示不进行环境检查。
- cluster_prepare_script:选填,作用是用于压测脚本启动前的数据准备工作,正式启动流程中,如果该字段不为空,会首先执行该脚本,当脚本执行完成且退出码为0的前提下,才会启动对应的locust压测任务。
- run_time:选填,表示压测执行时长,单位为分钟,如果不填写,则压测需要人工触发停止,否则会始终运行。
第四步:执行如下命令启动发压任务即可:
./laser-cli job add missshi-demo1 --conf ./conf/demo.json
到此为止,我们就已经完成了Laser性能测试管理服务的接入的使用。
后续系列文章会一步步给大家剖析Laser性能测试管理服务的设计思想和实现原理,也欢迎大家一起交流~
网友评论