CUBRID自动化测试框架
本文主要介绍对CUBRID数据库实现自动化测试的方法。自动化测试支持Console和GUI两种方式。同时测试框架可以在Linux(Unix)及Windows系统上运行。如下图所示CUBRID的自动化测试主要包括以下几步:
(1) Check out files, 从SVN更新test cases。
(2) Get test build, 获取每天新版本的待测试的CUBRID。
(3) Install CUBRID, 自动化安装CUBRID到指定Server。
(4) Setup environments, 设置自动化测试环境。
(5) Test, Generate report, 执行测试,并生成测试报告。
(6) Deploy test report, 发布测试报告到Web Server.
(7) View Test Report, 通过浏览器查看测试报告。
根据测试目的的不同可以将对数据库的测试分为两类,Query测试和Script测试。
1. Query测试
所谓“Query测试”,就是编写包含SQL语句的测试实例(CASE)和针对每条SQL语句的期望结果(Answer),执行测试,生成测试结果(Result), 比较测试结果和期望结果生成测试报告(Report)。
(1) 测试Scenario
Query测试中的Scenario指测试方案,Scenario的结构如下。
A. Scenario的特征
l 树形结构,深度可以是无限级。
l Case1.sql, case1.answer等代表测试实例(CASE)。
l Case1.answer, case2.answer等代表期望的测试结果(Answer)。
l 测试用例和测试结果要成对保存
l 测试用例和测试结果不止可以保存在叶子节点也可以保存在中间节点。
B. 文件的结构
l 路径名/_readme.txt” 文件中,记述该路径中包含的测试用例的内容
l 一个测试实例如 “case1.sql”,行用注释开始,简单记述对该实例的说明。每条SQL语句结尾用“;”区分
l 期望结果记录在 “case1.answer”名字的文件中. 每条SQL语句的执行结果使用-------------来区分。各列用 “ || “ 进行区分。 insert, update, delete语句执行的结果就是受该语句影响的行数.
l CASE还可以使用支持 Preparestatement 的Dynamic SQL。测试示例如下
(1) 测试结果
保存测试结果的目录结构如下
A. 创建报告ID,报告ID的格式 如下
l 测试日期-测试时间-测试种类-测试OS-DB版本-序列号
B. 文件的结构
l 在各节点的 summary_info 文件中,保存了关于测试的综合信息,该信息如下
ü 各路径中包含的全部测试个数与成功/失败件数,全部执行时间
ü 各测试用例的执行时间
ü 测试数据库与CASE的版本信息
ü 报告ID 中包含的信息
l 测试结果文件中保存各测试用例的结果文件。但只保存失败的测试结果
(1) 执行测试
A. 测试
l 输入一个以上的测试用例,执行测试。
l 输入一个以上的路径(中间节点),执行测试。
l 同时输入一个以上的文件和路径的名称,进行测试。
B. 查看测试用例
l 根据Scenario的树形结构,显示各测试CASE的内容。
C. 测试结果管理
l 通过测试报告树形结构,显示所有测试报告列表
l 打开某个测试报告之后,显示测试结果。在测试结果中输出如下信息
ü 关于整个测试的概要信息和各Sub路径中包含的全部测试个数以及成功/失败件数,全部执行时间
ü 各测试用例的执行时间
ü 测试执行日期与时间
ü 测试数据库与CASE的版本信息
1. Script测试
所谓“Script测试” 主要处理SQL的测试中无法处理的部分,对这些部分进行测试。比如说CUBRID中对于启动/停止数据库、检测进程等只有运行相应的命令才可以测试的部分。测试执行的方式与Query测试类似
(1) 测试Scenario
结构几乎与Query测试保存结构类似。只有一点不同,Query测试保存结构中在末路径中保存多个CASE,基于Script测试工具中末路径每个中保存一个CASE.
A. Scenario特征
l 树形结构,深度可以无限级。
l case1.sh 代表具体的测试CASE,包含具体的测试逻辑。
l case1.answer 代表测试过程中期望的测试结果,在case1.sh中将生成的测试结果与该文件进行比较,之后输出OK/NOK 到 case1.result 文件中。
l case1.gz等代表附加文件,非必须,辅助case1.sh。
B. 文件的结构
l 文件的名称规则
ü 测试执行Shell Script: case_name.sh(ex: case1.sh)
ü 测试正确答案文件: case_name-serial_no.answer(ex: case1-1.answer, case1-2.answer, case1-3.answer)
ü 测试结果文件: case_name-serial_no.result(ex: case1-1.result, case1-2.result, case1-3.result)
ü 测试综合结果: case_name.result (ex: case1.result)
ü 测试所需其他文件: case_name.tar (ex: case1.tar)
l 各测试CASE在名如 “case1.sh” 这样的文件中,使用Bourne Shell Script制作测试内容。下面的例子是使用Shell Script的测试程序
l 下面测试Script是包含一个检查通过creatdb创建的Generic卷的大小是否正确的Case 和 检查通过loaddb创建的数据的件数和数据是否正确输入的测试用例各一个的Script的示例
l 本测试Scenario,在sample.sh中保存了测试Script,在sample.tar中压缩保存执行sample.sh的时候所需的相关文件。(虽然不一定非要使用tar xvfz命令压缩,一般来说数据文件非常大,推荐进行压缩)
相关文章