Code Monkey home page Code Monkey logo

testdeploy's Introduction

推荐用最新版本,因历史原因,旧版本运行不稳定

1.目标

快速提供测试标准化环境, 促进测试流程高效与稳定。

2.设计原则

  • 高效的自动化和标准化
  • 简单的技术栈,高可维护性
  • 拥抱开源,充分利用已有的优秀轮子

3.整体架构设计

效果

4.核心特性

  • 结合Docker容器技术,轻量高效
  • 开箱即用,简化测试的执行过程,提供测试用例版本控制机制
  • 集成Httprunner2.X/Locust1.4.X等工具特性
  • 提供了与CI/CD流水线的统一集成机制
  • 最大化测试执行机器的资源利用率
  • 支持通过参数输入切换不同环境

5.如何快速开始

  • main-cli.sh放置在项目根目录下,假设为PRJ_ROOT_DIR
  • 配置 $PRJ_ROOT_DIR/ini/hosts.ini
  • CLI进入$PRJ_ROOT_DIR,通过环境部署和任务构建统一入口执行初始化
bash $PRJ_ROOT_DIR/main-cli.sh #Bash

首次初始化时会搭建CI平台Jenkins

  • 配置Jenkins、创建节点
  • Jenkins创建任务、配置任务

自动化测试任务的重要配置

(1)选择“参数化构建过程”,git参数名称BRANCH,选项参数名称appointedHost (2)若用到master-slave模式,同时要勾选“限制项目并发构建” (3)“源码管理”,填写要拉取的代码仓库 (4)构建选择“执行Shell”,配置

bash $PRJ_ROOT_DIR/main-cli.sh $JOB_NAME $BRANCH 0 $appointedHost #Bash

(5)其他配置略

性能测试任务的重要配置

(1)选择“参数化构建过程”,git参数名称BRANCH (2)“源码管理”,填写要拉取的代码仓库 (3)构建选择“执行Shell”,配置

bash $PRJ_ROOT_DIR/main-cli.sh $JOB_NAME $BRANCH <正整数,如6> #Bash

(4)其他配置略

注意事项:镜像都是从Docker Hub等远程仓库下载的,最好用私库拉取镜像。

6.环境部署和任务构建统一入口

bash $PRJ_ROOT_DIR/main-cli.sh $JOB_NAME $BRANCH $workerNum $appointedHost $appointedCase

其中,任务构建时,必选参数:

  • $JOB_NAME :项目名,Jenkins环境变量,直接引用
  • $BRANCH : 代码分支,Jenkins的git参数,“参数化构建过程”中定义,这里引用
  • $workerNum : 启动worker数量,自定义参数,类型为Interger,需手动填写一个参数值
  • $appointedHost: Jenkins的选项参数,“参数化构建过程”中定义,这里引用。填写需要执行自动化测试的所有环境,与开发代码呼应。
# tips:
if [ $workerNum -ge 1 ];then
  "performance test"
else
  "interface automation test"
fi

可选参数:

  • $appointedCase:指定路径或用例,自定义参数,路径填写 $PRJ_ROOT_DIR 的相对路径,如 testcases/create_user.yml

7.重要配置文件说明

7.1.测试集群配置hosts.ini

配置**$PRJ_ROOT_DIR/ini/hosts.ini**,格式:$host,$account,$password,$constant,$MasterOrSlave

  • $host:slave节点的IP地址
  • $account:slave节点主机的账号
  • $password:slave节点主机的密码
  • $constant:参数值为“isnew”或者“notnew”,如果是新主机且需要做初始化,则必须是“isnew”,初始化后会变为“notnew”
  • $MasterOrSlave:参数值为“master”或者“slave”,指明是master还是slave节点。

hosts.ini为Jenkins Master-Slave以及Locust Master-Slave模式管理slave的文件,在首次初始化前配置,后续新增slave需要重新执行一次初始化

bash $PRJ_ROOT_DIR/main-cli.sh

若只有单台测试机器,该配置文件无需做任何配置。

7.2.config.ini部分参数说明

  • installedEnv:是否安装了基础环境。注:若因网络问题环境安装失败,需要手动重置为false并执行初始化。
  • installedCI:是否安装了CI平台Jenkins。不建议手动修改。
  • remaincores:执行性能测试时,每个从机预留的cores数量,避免打满,默认预留2个。支持修改。
  • hrun_path:接口自动化默认执行的指定路径,默认为testcases/,支持修改,也可在统一执行入口指定。
  • hrun_main:接口自动化执行入口,默认为main-hrun.py,支持修改,与代码入口对应。

8.代码文档组织结构

9.Jenkins建议插件

除了系统默认安装插件外,这里建议安装以下插件

  • Node and Label parameter
  • Extended Choice Parameter
  • Git Parameter
  • Git
  • Email Extension Plugin
  • Role-based Authorization Strategy

10.NGINX转发请求执行shell

Jenkins配置:curl -H "dirpath:$PWD" -H "shellpath:${shellpath}" ${host}:81/api/run?name=${JOB_NAME}%20${BRANCH}%200

  • PWD为shell系统变量,表示自动化项目代码包路径;参数host对应Nginx主机ip address,参数shellpath对应路径+TestDeploy,参数BRANCH对应自动化测试项目代码分支。
  • 该方式已支持,但不推荐使用,默认为关闭状态。若需要使用,则在views/buildEnvDepend.sh 取消注释,开启。

testdeploy's People

Contributors

qtracer avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.