本来想把这部分标题写成“数据库自动化测试平台构建”的,但想想还是算了,因为这次的构建目标比较简单,只是为了做数据库基本语法自动化测试、数据库基准测试(包含tpch,ssb,tpcds)。涉及到的开发内容可能不多,就只当一个自动化测试流程的构建吧,接下来数落数落这次的需求:
一、统一测试执行服务
简言之,统一测试执行服务(Test Execution Service, TES)就是用来发起测试执行的入口。TES 提供 GUI 界面和 RESTful API 两种形式,对外提供执行测试的服务,同时兼具测试版本管理、Jenkins 测试 Job 管理和测试执行结果的管理。其中 GUI 界面主要用于人工场景按需发起测试的执行,而 RESTful API 的主要用户时 CI/CD 的流水线服务,这些脚本将通过统一的 RESTful API 接口来发起测试的执行。
- 我需要编写一个简单的界面,支持选择测试环境、选择测试环境 jar 包、选择测试数据/测试用例、填写执行次数、查看执行结果,这个界面主要用于测试人员手动操作。
- 我需要实现几个简单的接口,支持选择测试环境、选择测试环境 jar 包、选择测试数据/测试用例、填写执行次数、查看执行结果,这些个接口主要用于CI/CD 作业,自动操作。
二、被测系统部署服务
被测系统部署服务(SUT Setup Service,SUTSS)是比较好理解的一种测试服务,该服务主要用于安装部署被测系统和软件。
其实现原理就是,调用 DevOps 团队的软件安装和部署脚本,对那些可以直接用命令行安装和部署的软件是比较简单的,一般只需要把人工安装步骤的命令行组织成脚本文件,然后加入必要的日志输出和出错处理即可。如果被测软件安装包本身不支持 Silent 安装模式,那么强烈建议,向发布工程师提出功能需求,要求加入 Silent 安装模式的支持。
- 我需要将数据库安装包自动化部署在指定的机器上,并支持替换跟版本相关的jar
- 我需要将部署好的数据库服务,按接收到的数据参数,导入指定的数据集,并执行测试sql;或者在某台机器上,自动化执行数据库连接地址是我所部署的机器的单元测试。
- 我需要将基准测试和基本语法测试的结果保存在测试结果统计数据库中。