diff --git a/README.md b/README.md index 32b2b0cb1c8c14ddbdaced1f1af1499440c0df33..7604c8969dee4a0f25878c293de50bf12824f0d9 100644 --- a/README.md +++ b/README.md @@ -1 +1,72 @@ -# 自研测试套 \ No newline at end of file +# tsuite-demo + +tsuite测试套样例 + +### 测试套目录结构 +```shell +tsuite-demo/ +├── cmd/ -- 测试套公共命令工具目录 +├── common/ -- git子模块,指向tsuite项目,包含测试套框架代码和公共库函数等 +├── kmod/ -- 测试套使用的内核模块 +├── lib/ -- 测试套公共 +│   ├── ts_common.c -- 测试套公共C函数及对应头文件 +│   ├── ts_common.h +│   ├── ts_common.py -- 测试套公共Python模块 +│   ├── ts_common.sh -- 测试套公共shell函数 +│   ├── ts_setup -- 测试套setup脚本 +│   └── ts_teardown -- 测试套teardown脚本 +├── logs +│   ├── report.result -- 测试结果记录,allure格式 +│   ├── run.list -- 本次测试执行的用例列表 +│   ├── run.result -- 测试结果记录 +│   ├── testcase/ -- 用例日志,每个用例对应一个日志文件 +│   ├── ts_setup.log -- 测试套setup日志 +│   └── ts_teardown.log -- 测试套teardown日志 +├── testcase/ -- 测试用例目录,所有用例文件必须放在该目录下 +└── tsuite -- tsuite测试套管理入口脚本 +``` + + +### 用例属性字段 + +用例属性字段使用`@关键字:`格式,当前使用的`关键字`包括: + +* **用例ID**,必选,tsuite创建用例时自动生成,唯一标识用例,不可修改,例如:`@用例ID: 20220418-230037-838974137` +* **用例名称**,必选,可以修改,例如:`@用例名称: test-useradd-01` +* **用例级别**,可选,取值范围为0-4,默认为3,例如:`@用例级别: 3` +* **用例标签**,可选,用户自定义,可用于匹配用例和其他资源的关联关系,例如:`@用例标签: arch=x86_64` +* **扩展属性**,可选,可有多项,用于存储自定义的用例熟悉,使用键值对的方式,例如:`@扩展属性: 用例目录=A/B/C` +* **用例类型**,可选,取值范围为 + 功能测试、性能测试、安全测试、可靠性测试、稳定性测试、兼容性测试、界面体验测试、其他,默认为功能,例如:`@用例类型: 功能测试` +* **自动化**,可选,取值0表示手动用例,1表示自动化用例,默认为1,例如:`@自动化: 0` +* **超时时间**,可选,取值0表示不限制执行时间,正整数表示超时秒数,默认为0,例如:`@超时时间: 0` +* **用例描述**,可选,描述用例测试内容,例如:`@用例描述: 测试系统添加用户功能` +* **预置条件**,可选,可有多项,描述用例测试的必要条件,例如:`@预置条件: 系统有useradd命令` +* **测试步骤**,必选,可有多项,例如:`@测试步骤: 执行命令添加tester用户:useradd tester` +* **预期结果**,必选,可有多项,预期结果要在测试步骤之后,例如:`@预期结果: 用例添加成功` + +### 测试套执行流程 + +使用tsuite执行测试套中的用例时,用例的执行流程如图所示 + +![测试套执行流程](common/lib/tsuite-execution-flow.png "测试套执行流程") + +测试套执行中定义了多个执行时机,分别说明如下: + +* **ts_setup**,文件:lib/setup,测试套执行前会先执行该文件,只在第一个用例被执行前执行一次 +* **tc_setup_common**,函数:定义在lib/common.[sh|c|py]文件中,所有用例执行前均会先调用此函数 +* **tc_setup**,函数:定义在用例文件中,用例的tc_setup_common之后,do_test之前调用此函数 +* **do_test**,函数:定义在用例文件中,用例的tc_setup之后调用此函数,用例测试逻辑在此函数中实现 +* **tc_teardown**,函数:定义在用例文件中,用例的do_test之后,tc_teardown_common之前调用此函数 +* **tc_teardown_common**,函数:定义在lib/common.[sh|c|py]文件中,所有用例执行结束后均会先调用此函数 +* **ts_teardown**,文件:lib/teardown,测试套执行前会先执行该文件,只在所有用例执行完成后执行一次 + +### 新建测试项目 + +新建测试项目步骤如下: + +1. 新建一个git仓库,例如:https://gitee.com/opencloudos-testing/example-repo.git +2. clone仓库:`git clone https://gitee.com/opencloudos-testing/example-repo.git ./example-repo` +3. 添加tsuite公共模块:`cd ./example-repo && git submodule add https://gitee.com/opencloudos-testing/tsuite.git ./common` +4. 执行初始化脚本:`./common/lib/tsuite-init.sh` +5. 提交tsuite模板文件:`git add * .gitignore && git commit -asm 'init tsuite project'` diff --git a/common b/common index c2646a140397823ee6630b9d1745e203083a3bd2..bdae12032f6c28061e0da6adfd9b5b1361dda221 160000 --- a/common +++ b/common @@ -1 +1 @@ -Subproject commit c2646a140397823ee6630b9d1745e203083a3bd2 +Subproject commit bdae12032f6c28061e0da6adfd9b5b1361dda221