Skip to content

自动化测试后端程序。使用selenium测试框架,组合jenkins持续集成工具打造的自动化集成测试流水线

Notifications You must be signed in to change notification settings

jstang9527/opentest

Repository files navigation

OpenTest 自动化持续集成持续部署流水线 自动化测试后端程序。前端程序https://github.com/jstang9527/opentest_view

Description

集成众多的第三方工具,使其能够做到产品、项目的自动化拉取、部署、安装、测试、安全审计等。
采用Qemu快照方式,提供极速的启动和环境的还原。
采用Jenkins配置自动化作业
采用Aquaman进行软件的安全审计及渗透测试
采用Jmeter进行接口、性能的测试
采用es+kibana检索、聚合测试条目数据
API接口使用Go进行开发。

Function

(若图片无法显示, 可在resources/images中获得)
Dashboard
dashboard
Qemu控制台
qemu
Web测试-组件列表
web_test1
Web测试-组件详情
web_test2
Web测试-行为链
web_test3
Web测试-测试截图
web_test4
接口、性能测试
intf_test1
接口、性能测试
intf_test2
Jenkins自动化部署
jenkins1
jenkins2 Jenkins自动化测试
jenkins3
jenkins4
Jmeter的JMX脚本
jmeter1
Kibana检索、聚合测试数据
kibana
安全审计、渗透测试(代码仓库在本github的aquaman项目, 这里不做过多展示和描述)

Component

  • Selenium -- web测试
  • Aquaman(自研, 详看本github的aquaman仓库) -- 安全审计、渗透测试
  • Jmeter -- 性能、接口测试
  • ElasticSearch -- 存储测试数据
  • SonarQube(todo) -- 代码审计
  • Qemu -- 便于测试完后还原环境

Environment

  • Centos-7.5
  • Go-1.12.4
  • Chromedriver

Require

  • Selenium
  • Jenkins
  • Qemu
  • Jmeter
  • Mysql
  • Redis
  • Kibana
  • Elasticsearch

Install

1.运行容器:
1.1 mysql
docker run -itd -p 3306:3306 --name mysql mysql:5.7
1.2 redis
docker run -itd -p 6379:6379 --name redis redis
1.3 elasticsearch
docker run -d -p 9200:9200 -p 9300:9300 --name es -e "discovery.type=single-node" elasticsearch:7.2.0
创建索引:
curl -X PUT 127.0.0.1:9200/test 1.4 kibana
创建配置文件 kibana.yml

server.name: kibana
server.host: "0"
elasticsearch.hosts: [ "http://localhost:9200" ]
xpack.monitoring.ui.container.elasticsearch.enabled: true
i18n.locale: "zh-CN"

docker run -it -d -v /home/ops/kibana/kibana.yml:/opt/kibana/config/kibana.yml
-e ELASTICSEARCH_URL=http://172.31.50.254:9200 --name kibana -p 5601:5601 kibana:7.2.0 2.jenkins部署:
wget https://mirrors.tuna.tsinghua.edu.cn/jenkins/war/2.270/jenkins.war
yum install java
java -jar jenkins.war

3.Qemu RPC服务:
yum -y install gcc gcc-c++ automake libtool zlib-devel glib2-devel bzip2-devel libuuid-devel spice-protocol spice-server-devel usbredir-devel libaio-devel
wget https://download.qemu.org/qemu-4.2.0.tar.xz

tar xvJf qemu-4.2.0.tar.xz
cd qemu-4.2.0
./configure
make && make install
默认 安装在/usr/local/bin/
go run mico-srv/srv/vm-mgr/main.go

4.Selenium+chrome+chromedriver安装
https://blog.csdn.net/weixin_40074627/article/details/88933685

5.Jmeter安装
https://www.cnblogs.com/lystbc/p/11267314.html

6.sql文件

CREATE TABLE `chain_block` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `block_name` varchar(255) NOT NULL DEFAULT '' COMMENT '组件名',
  `priority` tinyint(4) NOT NULL DEFAULT '1' COMMENT '重要性',
  `expect` varchar(255) NOT NULL DEFAULT '' COMMENT '期望',
  `create_at` datetime NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '新增时间',
  `update_at` datetime NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '更新时间',
  `is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
  primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='组件表';


CREATE TABLE `chain_action` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `block_id` bigint(20) NOT NULL COMMENT '组件ID',
  `action_name` varchar(50) NOT NULL DEFAULT '' COMMENT '动作名',
  `allow_err` tinyint(4) NOT NULL DEFAULT '0' COMMENT '错误为真',
  `element_id` varchar(50) NOT NULL DEFAULT '' COMMENT '元素ID',
  `element_value` varchar(100) NOT NULL DEFAULT '' COMMENT '元素值',
  `event_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '事件类型',
  `search_type` tinyint(4) NOT NULL DEFAULT '0' COMMENT '检索方式',
  `timeout` int(11) NOT NULL DEFAULT '0' COMMENT '超时时间',
  `timestamp` varchar(100) NOT NULL DEFAULT '' COMMENT '中文时间',
  `url` varchar(100) NOT NULL DEFAULT '' COMMENT '资源定位符',
  `xpath` varchar(255) NOT NULL DEFAULT '' COMMENT 'XPath',
  primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='动作表';

CREATE TABLE `chain_stream` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `stream_name` varchar(255) NOT NULL DEFAULT '' COMMENT '流水线名',
  `stream_desc` varchar(255) NOT NULL DEFAULT '' COMMENT '线描述',
  `create_at` datetime NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '新增时间',
  `update_at` datetime NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '更新时间',
  `is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
  primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='流水线表';

CREATE TABLE `chain_multi_block_stream` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `block_id` bigint(20) NOT NULL COMMENT '组件ID',
  `stream_id` bigint(20) NOT NULL COMMENT '流水线ID',
  primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='组件和流水线多对多表';

CREATE TABLE `sec_task` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `task_name` varchar(50) NOT NULL DEFAULT '' COMMENT '任务名',
  `task_md5` varchar(100) NOT NULL DEFAULT '' COMMENT '任务Md5',
  `task_targets` varchar(255) NOT NULL DEFAULT '' COMMENT '任务目标',
  `open_web` tinyint(4) NOT NULL DEFAULT '0' COMMENT '开启web扫描',
  `open_poc` tinyint(4) NOT NULL DEFAULT '0' COMMENT '开启Poc检测',
  `protocol` varchar(255) NOT NULL DEFAULT '' COMMENT '协议',
  `open_exp` tinyint(4) NOT NULL DEFAULT '0' COMMENT '开启漏洞利用',
  `scan_type` tinyint(4) NOT NULL DEFAULT '1' COMMENT '扫描类型(默认全扫)',
  `task_status` tinyint(4) NOT NULL DEFAULT '0' COMMENT '任务状态',
  `task_result` tinyint(4) NOT NULL DEFAULT '0' COMMENT '检测结果',
  `create_at` datetime NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '新增时间',
  `update_at` datetime NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '更新时间',
  `is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
  primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='安全审计任务表';

CREATE TABLE `nmap_report` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
  `task_id` varchar(50) NOT NULL DEFAULT '' COMMENT '任务id',
  `pid` bigint(20) NOT NULL DEFAULT '0' COMMENT '父id',
  `json_str` text COMMENT '结果数据',
  `create_at` datetime NOT NULL DEFAULT '1971-01-01 00:00:00' COMMENT '新增时间',
  `is_delete` tinyint(4) NOT NULL DEFAULT '0' COMMENT '是否删除',
  primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='nmap扫描报告';

CREATE TABLE `sectask_scanreport` (
   `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '自增id',
   `sectask_id` bigint(20) NOT NULL COMMENT 'SEC任务ID',
   `task_status` varchar(50) NOT NULL DEFAULT '' COMMENT '动作名',
   primary key(id)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COMMENT='SEC扫描报告';
insert into priority(id,name) values(1,"Low"),(2,"Nomal"),(3,"High");
insert into status(id,name) values(0,"Unknown"),(1,"Pass"),(2,"Info"),(3,"Warning"),(4,"Error"),(5,"Fatal");
insert into function(pid,name,message,screenshot,priority_id,status_id,duration) values("123456","login","success","/resources/xxx.png", 1,3,6000);

API Server

http://localhost:8880

API 文档

http://localhost:8880/swagger

More Help

go-selenium 驱动库 https://github.com/tebeka/selenium
解析 html文件 https://github.com/PuerkitoBio/goquery

Attention

许多技术已经陈旧, 例如go-selenium改用Python-selenium、Qemu改用docker、grpc更换go-micro、robot-framework替代部分工具及功能。

About

自动化测试后端程序。使用selenium测试框架,组合jenkins持续集成工具打造的自动化集成测试流水线

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages