测试工程¶
openEuler Embedded采用openEuler社区开放的测试框架 mugen 作为社区开发者进行测试代码的编写和执行的框架。
mugen框架介绍¶
mugen框架执行流程¶
openEuler Embedded使用mugen框架时,由于嵌入式镜像中缺少mugen框架运行的必要依赖软件,嵌入式测试采用QEMU远程执行测试用例的方式,对系统进行测试。
典型的测试执行流程¶
典型的测试执行包含了框架下载、依赖准备、启动qemu环境、编译测试用例、测试用例执行和qemu环境的清理。
# git下载mugen测试框架
git clone https://gitee.com/openeuler/mugen.git
cd mugen
# 安装依赖包,-e会检查和安装qemu依赖,如果不能通过yum安装则报错,需要自行安装qemu(版本5.0以上)
sh dep_install.sh -e
# 启动QEMU,默认使用qemu-system-aarch64拉起qemu,并完成测试套环境变量配置
# start 启动qemu
# --put_all 配置执行测试套时一次拷贝所有测试套用例至qemu
# --kernal_img_path openEuler Embedded kernel镜像zImage
# --initrd_path openEuler Embedded rootfs镜像openeuler-image-qemu-*.rootfs.cpio.gz
sh qemu_ctl.sh start --put_all --kernal_img_path <aarch64-std的zImage本地路径> --initrd_path <aarch64-std的rootfs本地路径>
# 如果在远端设备执行测试,则不需要执行QEMU启动,但需要进行测试套环境变量配置
# -c 配置测试套环境
# --ip 远端设备IP
# --port 远端设备SSH端口号
# --user 远端登录用户名
# --password 远端登录用户密码
# --put_all 执行测试套时一次拷贝所有测试套用例至远端
# --run_remote 配置该配置远端环境为执行用例环境
# bash mugen.sh -c --ip $ip --password $passwd --user $user --port $port --put_all --run_remote
# 如果测试套中包含需要编译的用例,则先编译测试用例,目前仅支持测试套整体编译
# 在执行测试用例编译前需要先执行sdk配置
bash mugen.sh -b <测试套名>
# 执行对应的测试套
# -f 执行测试套名称
# -s 远端执行测试套
bash mugen.sh -f <测试套名> -s
# 停止QEMU
sh qemu_ctl.sh stop
其他mugen框架的具体介绍和使用详见 mugen 项目的介绍
openEuler Embedded测试套介绍¶
openEuler Embedded测试套已包含安全配置测试、OS基础测试以及tiny镜像测试。 未来会持续扩展测试套测试能力,计划增加基础软件包功能测试、特性专项测试等测试能力, 同时也欢迎更多的开发者参与到openEuler Embedded的测试中来,贡献更多的测试用例和测试套。
openEuler Embedded测试用例源码在mugen框架的 testcases/embedded-test 目录,每个测试套一个文件夹。
tiny镜像测试套¶
tiny镜像测试套,仅执行镜像的启动和简单的busybox测试。 与其他测试套不同,执行tiny镜像测试套时,不需要提前启动qemu,但需要配置测试套执行环境。
执行脚本如下:
# git下载mugen测试框架
git clone https://gitee.com/openeuler/mugen.git
cd mugen
# 安装依赖包
sh dep_install.sh -e
# 如果在远端设备执行测试,则不需要执行QEMU启动,但需要进行测试套环境变量配置
bash mugen.sh -c --ip 127.0.0.1 --password <local_host登录密码> --user <local_host用户名> --port <local_host ssh端口号> --put_all --run_remote
# 执行对应的测试套
bash mugen.sh -f embedded_tiny_image_test -s
OS基础测试套¶
OS基础测试套需要标准镜像支持,主要对OS的基础能力进行测试,需要提前启动qemu。
执行脚本如下:
# git下载mugen测试框架
git clone https://gitee.com/openeuler/mugen.git
cd mugen
# 安装依赖包
sh dep_install.sh -e
# 启动QEMU,如果需要测试arm标准镜像,则需要增加 --qemu_type arm
sh qemu_ctl.sh start --put_all --kernal_img_path <aarch64-std的zImage本地路径> --initrd_path <aarch64-std的rootfs本地路径>
# 执行对应的测试套
bash mugen.sh -f embedded_os_basic_test -s
# 停止QEMU
sh qemu_ctl.sh stop
嵌入式安全配置测试套¶
嵌入式安全配置测试套基于 社区嵌入式安全加固说明 要求进行测试。
嵌入式安全配置测试套同样需要标准镜像支持,需要提前启动qemu。
执行脚本如下:
# git下载mugen测试框架
git clone https://gitee.com/openeuler/mugen.git
cd mugen
# 安装依赖包
sh dep_install.sh -e
# 启动QEMU,如果需要测试arm标准镜像,则需要增加 --qemu_type arm
sh qemu_ctl.sh start --put_all --kernal_img_path <aarch64-std的zImage本地路径> --initrd_path <aarch64-std的rootfs本地路径>
# 执行对应的测试套
bash mugen.sh -f embedded_security_config_test -s
# 停止QEMU
sh qemu_ctl.sh stop
嵌入式基础开发测试套¶
嵌入式基础开发测试套,主要对SDK编译出的C、C++用户态程序以及内核模块进行基础测试
嵌入式基础开发测试套同样需要标准镜像支持,需要提前启动qemu。
执行脚本如下:
# git下载mugen测试框架
git clone https://gitee.com/openeuler/mugen.git
cd mugen
# 安装依赖包
sh dep_install.sh -e
# 启动QEMU,如果需要测试arm标准镜像,则需要增加 --qemu_type arm
sh qemu_ctl.sh start --put_all --kernal_img_path <aarch64-std的zImage本地路径> --initrd_path <aarch64-std的rootfs本地路径>
# 执行编译测试套
bash mugen.sh -b embedded_application_develop_tests
# 执行对应的测试套
bash mugen.sh -f embedded_application_develop_tests -s
# 停止QEMU
sh qemu_ctl.sh stop
Attention
在 社区嵌入式安全加固说明 中有部分安全加固项为方便开发和使用并没有启用,以下用例失败为正常。
列表如下:
oe_test_check_file_sys_protect_005
oe_test_check_network_firewall_001
oe_test_check_network_firewall_002
oe_test_check_ssh_config_002
oe_test_check_file_sys_protect_004