Skip to content

开源代码的自动化测试探秘

kunlundb edited this page Oct 9, 2021 · 1 revision

公司内部使用Jenkins系统来对产品进行自动化测试,该系统可以被外网访问,外网用户可以通过访问 ​http://zettatech.tpddns.cn:18080 来获取产品测试的最新情况。

公司代码已经开源,我们针对开源代码在Jenkins中部署了一些列自动化测试,并每天检查测试结果,及时修复问题,来保证产品质量。

后续,我们还将针对开源代码部署更多的测试,更全面的保证产品代码质量。

编译测试

当前,在Jenkins系统中,我们主要部署了如下开源代码的编译测试任务:

  • open_source_build_centos : 该任务在CentOS 8.3上,进行开源代码拉取,并使用默认的C/C++编译器(当前是gcc/g++)来编译代码。
  • open_source_build_centos_clang: 该任务在CentOS 8.3上,进行开源代码拉取,并使用clang/clang++来编译代码。
  • open_source_build_suse: 该任务在OpenSuse 15.2, 进行开源代码拉取,并使用默认的C/C++编译器(当前是gcc/g++)来编译代码。

综合测试

除了编译代码测试任务外,我们在Ubuntu 20.04上,部署了一个综合性的测试(open_source_build_ubuntu),主要包含如下内容:

  • 编译: 代码拉取,并使用默认的C/C++编译器(当前是gcc/g++)来编译代码,并安装代码到指定位置。
  • 打包: 将编译好的代码进行打包, 产生二进制代码包。
  • 制作docker镜像: 利用二进制代码包,生成docker多合一镜像,存储节点镜像,计算节点镜像和集群管理镜像。
  • 冒烟测试: 用docker多合一镜像,创建出一个集群,并对该集群执行冒烟测试, 下面详细说明。
  • 集群安装测试:利用二进制包和docker镜像来创建集群,并对集群进行测试, 下面详细说明。

冒烟测试

冒烟测试使用docker多合一镜像,创建一个container, 该container内包含一个完整的集群,该集群具有如下配置:

  • 一个元数据集群
  • 两个存储集群
  • 一个集群管理节点

当前冒烟测试针对该集群进行,主要测试如下操作:

  • 连接:使用各种Driver来连接集群
  • 数据操作,包含:
  1. 创建表
  2. 插入若干条数据
  3. 更新某些数据
  4. 查询表内容
  5. 删除某些行 我们将各种Driver的连接测试放在了冒烟测试中,主要包含如下的Driver:
  • psql,使用Psql执行sql脚本
  • JDBC Driver
  • PHP Driver
  • C Driver(libpq)
  • Python Driver(psycopg2)
  • Go Driver
  • Javascript Driver
  • C# Driver

近期还将增加如下Driver的冒烟测试:

  • C++ Driver
  • Rust Driver

集群安装测试

在该测试中,我们利用二进制包和各种节点镜像来创建集群。不仅测试产品代码,也测试集群的一键脚本(已开源)。

该测试主要包含以下两部分

  • 创建集群:在若干台虚拟机上分别使用二进制包和docker节点镜像各部署一个数据库集群,并运行psql冒烟测试。该集群主要包含:
  1. 一个元数据集群
  2. 两个存储集群
  3. 一个集群管理节点
  • 一键脚本操作,分别测试针对二进制包的一键脚本和针对docker节点镜像的一键脚本,主要包含的操作有:
  1. install: 安装集群
  2. stop: 停止整个集群
  3. start: 启动整个集群
  4. clean: 清理集群,包含停止集群,并删除集群的各种数据