TestDeploy是一套符合DevOps实践的测试解决方案,涵盖接口自动化测试、性能测试、静态代码检查等测试类型,能够简单地管理测试集群,快速提供测试标准化环境,促进测试流程高效与稳定。
- 结合Docker容器技术,环境一键部署,用例一键执行
- 集成Httprunner2.X/Locust2.X/Sonarqube等工具特性
- 提供了Jenkins Pipeline机制,轻松实现CI/CD
- 能够简单地管理测试集群,性能测试最大化测试执行机器的资源利用率
- 通过参数输入切换不同环境和执行特定用例
- main-cli.sh放置在项目根目录下,假设为PRJ_ROOT_DIR
- 配置 $PRJ_ROOT_DIR/ini/hosts.ini(不配置默认单机)
- 通过环境部署和任务构建统一入口执行初始化
bash $PRJ_ROOT_DIR/main-cli.sh
bash $PRJ_ROOT_DIR/main-cli.sh $JOB_NAME $flag $WORKERNUM $arg1 $arg2
bash $PRJ_ROOT_DIR/main-cli.sh $JOB_NAME $flag 0 $HOST $APPOINTEDCASES
# JOB_NAME: 项目名,Jenkins环境变量,直接引用
# flag: 仅做标识用。推荐用Jenkins构建号,即$BUILD_NUMBER
# HOST: 用标识表示任务执行环境,如HOST=release, 表示任务执行时用的是生产环境的域名
# APPOINTEDCASES: 指定用例,非必选,默认testsuites/
bash $PRJ_ROOT_DIR/main-cli.sh $JOB_NAME $flag $WORKERNUM $HOST $APPOINTEDCASES
# WORKERNUM:Locust worker进程数,默认1 worker对应1 CPU core,依此动态计算需要多少主机节点的支持。另,1 worker约可支持1000虚拟用户
# HOST: 用标识表示任务执行环境,如HOST=release, 表示任务执行时用的是生产环境的域名
# APPOINTEDCASES: 非必选,对应Locust的@tag属性
# tips:
if [ $WORKERNUM -ge 1 ];then
"performance test"
else
"interface automation test"
fi
配置**$PRJ_ROOT_DIR/ini/hosts.ini**,格式:$host,$account,$password,$constant,$MasterOrSlave
- $host:节点的IP地址
- $account:节点主机的账号(支持root账号和sudo免密提权账号)
- $password:节点主机的密码
- $constant:参数值为“isnew”或者“notnew”,如果是新主机且需要做初始化,则必须是“isnew”,初始化后会变为“notnew”
- $MasterOrSlave:参数值为“master”或者“slave”,指明是master还是slave节点。
在首次初始化前配置(不配置默认单机),后续每新增节点均需要重新执行一次初始化
bash $PRJ_ROOT_DIR/main-cli.sh
#tips:Locust分布式性能测试按照hosts.ini的节点顺序分配资源,故自动化测试代理节点建议放最后。
- installedEnv:是否安装了基础环境。注:若因网络问题环境安装失败,需要手动重置为false并执行初始化
- installedRedis: 是否安装Redis,默认不安装。Redis用作压测前的数据准备,占用较大内存。
- installedSonarqube: 是否安装Sonarqube,默认不安装。运行占用较大内存,不在管理节点安装。
- remaincores:执行性能测试时,每个从机预留的cores数量,避免打满,默认预留1个
- hrun_main:接口自动化统一执行入口,默认main-hrun.py
- hrun_path: 接口自动化执行的指定路径,默认testsuites/
- locust_main: locust压测统一执行入口,默认locustfile.py
- locust_project_setEnv: locust执行前切换压测环境和数据源的文件(务必放置在压测项目根目录下),默认project_setEnv.py。若不存在,则按照默认执行
Jenkins Pipeline不走main-cli.sh统一入口,部署文件分三部分:
- build:views/pipelineBuild.sh
- runAPI:views/pipelineRunAPIAuto.sh
- getReport:views/pipelineHrunReport.sh
Jenkins配置:curl -H "dirpath:$PWD" -H "shellpath:${shellpath}" ${host}:81/api/run?name=${JOB_NAME}%20${WORKERNUM}%200
- PWD为shell系统变量,表示自动化项目代码包路径;参数host对应Nginx主机ip address,参数shellpath对应路径+TestDeploy,参数BRANCH对应自动化测试项目代码分支。
- 该方式已支持,但不推荐使用,默认为关闭状态。若需要使用,则在views/buildEnvDepend.sh 取消注释,开启。