OpenEulerMugen
初步分析
优点
-
测试范围广
- 系统级别:覆盖操作系统,嵌入式系统测试;
- 功能级别:文件系统、网络、内存、系统内置库(glibc)等;
- 终端命令级别:curl、git、gdb、mkfs、tftp等;
- 编程语言:php、python、java等;
- 开源插件:fio、iperf、ltp(需要git)等;
- 其他:k3s、mysql、nginx、openssl等。
-
多维度用例执行策略
- 执行测试框架内所有用例
- 执行指定测试套件下所有用例
- 执行单条用例
-
用例编写灵活
-
模板化管理用例
-
集成系统多层次公共函数
- 日志打印
- 结果检查
- rpm包安装卸载
- 远程命令执行
- 目录文件传输
- 空闲端口状态查询
- 获取网卡,磁盘设备信息
- 睡眠等待
- 远端重启等待
-
-
组合测试
- 可以针对现有测试套件,通过增加(add)或删除(del)命令组合成一个新的测试套件,适配不同的测试情况
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
{
// 配置运行环境需要export的环境变量
"export": {
"FIND_TINY_DIR":"/home/openeuler/tmp_image/tiny"
},
// 运行环境配置,可选,支持host、qemu(嵌入式场景),必须为列表,即使只有一个
"env": [
{
// 类型 type 必须配置,qemu类型kernal_img_path、initrd_path、qemu_type必配,其他参数参考qemu_ctl.sh参数
"type": "qemu",
// 名称 name 必须配置
"name": "qemu_1",
// kernal_img_path、initrd_path可以为本机目录,也可以是网络地址,如果配置目录不存在则会使用wget下载
"kernal_img_path": "https://mirrors.nju.edu.cn/openeuler/openEuler-22.03-LTS-SP1/embedded_img/arm64/aarch64-std/zImage",
"initrd_path": "https://mirrors.nju.edu.cn/openeuler/openEuler-22.03-LTS-SP1/embedded_img/arm64/aarch64-std/openeuler-image-qemu-aarch64-20221228125551.rootfs.cpio.gz",
"option_wait_time": "180",
"login_wait_str": "openEuler Embedded(openEuler Embedded Reference Distro)",
"qemu_type": "aarch64",
// 嵌入式sdk路径配置,可以为本机目录,也可以是网络地址,如果配置目录不存在则会使用wget下载
"sdk_path":"https://mirrors.nju.edu.cn/openeuler/openEuler-22.03-LTS-SP1/embedded_img/arm64/aarch64-std/openeuler-glibc-x86_64-openeuler-image-aarch64-qemu-aarch64-toolchain-22.03.sh",
"put_all":true
},
{
// 类型 type 必须配置,host类型,ip、password比配,其他参数参考bash mugen.sh -c
"type": "host",
// 名称 name 必须配置
"name": "host_1",
"ip": "192.168.10.100",
"password": "openEuler@123",
"port": "22",
"user": "root",
"run_remote": true,
"copy_all": true
}
],
// 测试套组合配置,必配,必须为列表,可为多个组合
"combination": [
{
// 组合名称 name
"name": "normal_test",
// 测试用例组合, 必须为列表
"testcases": [
{
// 使用全部测试套
"testsuite": "embedded_os_basic_test"
},
{
// 使用testsuite指定测试套中add里包含的测试用例组成一个新的测试套
"testsuite": "embedded_os_basic_extra_test",
"add": ["oe_test_kmod_depmod", "oe_test_libcap_libcap"]
},
{
// 使用testsuite指定测试套中删除del里包含的测试用例组成一个新的测试套
"testsuite": "embedded_security_config_test",
"del": "oe_test_check_file_sys_protect_003"
}
]
},
{
"name": "easy_test",
"testcases": [
{
"testsuite": "embedded_os_basic_test"
}
]
}
],
// 执行关系,可选,必须为列表
"execute":[
{
// 执行环境,必须为列表,env中应为前面运行环境配置中的运行环境名称
"env":["qemu_1", "qemu_2"],
// 执行组合名称,仅支持配置一个
"combination":"normal_test"
},
{
"env":["qemu_2"],
"combination":"easy_test"
},
{
"env":["host_1"],
"combination":"easy_test"
}
]
}
缺点
- 测试前提,被测系统必须要支持SSH协议,需要用户名、密码、端口登陆,环境依赖必须联网安装;
- 现有测试套件需部署在OpenEuler的系统上,实际测试需要考虑移植或者将此操作系统结合到测试平台中;
- 部分测试套件如ltp执行依赖于网络,需要git从仓库下载到本地后才能执行
- 如果新增自有测试脚本到测试套件中,需要一定的时间学习
配置信息
主机名称 | IP |
---|---|
openeuler | 192.168.122.134 |
openeuler1 | 192.168.122.125 |
ubuntu2204 | 192.168.122.28 |
安装依赖软件
1 | bash dep_install.sh |
配置测试套环境变量
命令执行
1 | bash mugen.sh -c --ip $ip --password $passwd --user $user --port $port |
参数说明:
- ip:测试机的ip地址
- user:测试机的登录用户,默认为root
- password: 测试机的登录密码
- port:测试机ssh登陆端口,默认为22
环境变量文件:./conf/env.json
1 | { |
测试框架架构
mugen测试目录如下,suite2cases 目录定义了所有的测试套,testcases目录下则是所有的脚本,testcases中的每个sh文件即为一个测试脚本,而目录只是用来分类管理测试用例的,测试套的名字并不是从testcases中的文件夹名。
测试套件和脚本对应关系
用例执行
- 执行所有用例
bash mugen.sh -a
- 执行指定测试套
bash mugen.sh -f testsuite
- 执行单条用例
bash mugen.sh -f testsuite -r testcase
- 日志输出shell脚本的执行过程
1 | bash mugen.sh -a -x |
- -f:指定测试套
- -r:指定测试用例
- -a:执行所有用例
- -x:输出debug模式的信息,即控制套输出更加详细的内容
比如执行测试套embedded_application_develop_tests的的用例
1 | [root@openeuler mugen]# bash mugen.sh -f embedded_application_develop_tests -x |
1 | [root@openeuler mugen]# bash mugen.sh -f file -r file01 |
用例添加
根据模板编写用例脚本(推荐)
1 | source ${OET_PATH}/libs/locallibs/common_lib.sh |
单纯的shell脚本或python脚本,通过脚本执行的返回码判断用例是否成功。
- 可参考样例:testsuite测试套下用例oe_test_casename_02和oe_test_casename_03
1 | [root@openeuler mugen]# cat testcases/testsuite/oe_test_casename_02/oe_test_casename_02.py |
嵌入式相关测试套件
1 | [root@openeuler suite2cases]# find -name "emb*.json" |
具体信息
测试套件共11个,测试用例共141个
测试记录
1 | bash mugen.sh -f embedded_application_develop_tests.json -x |
- 标题: OpenEulerMugen
- 作者: Sunmy
- 创建于 : 2024-01-23 22:09:23
- 更新于 : 2025-06-29 21:05:24
- 链接: https://ldspdvsun.github.io/cmchvp8fo000bh0gbciy80sx4/
- 版权声明: 版权所有 © Sunmy,禁止转载。
推荐阅读
评论