openEuler Mugen 测试的小脚本分享

318 阅读4分钟

脚本介绍

制作脚本的原因

最近做 mugen 测试时,发觉测试中许多时间都花在一些重复性的工作上

比如确定测试套测试用例,等待测试结果,写测试文档

为什么,我不能把这些重复的工作交给计算机呢?

语言

使用 python 和 shell 编写了很简单的脚本来帮我完成这繁琐无趣的过程

功能

目前还只能做到 运行测试用例,自动执行,自动保存 log 信息,和生成md模板这种简单的功能

目前尝试过十个测试用例,测试的结果与预期相符,应该是没问题的。

安装

脚本地址:飞飞肥/mugen-logs - 码云 - 开源中国 (gitee.com)这是我原先存放log的地方,大家只需要

这四个文件(假设包含于 ugen-logs 文件夹下)

create_md.py

create_task_list.py

start.sh

2403_mugen失败测试用例.xlsx(防止信息的暴露,只保留了两列数据,第一列:测试套,第二列测试用例)

使用时应将 mugen 与 mugen-logs 置于同一级文件夹下,确保 mugen 的测试环境正常运行

如果缺少相关库直接 pip install 就行

使用

cd mugen-logs
​
chmod +x start.sh
​
start.sh "测试套"

例:start.sh argus

​
[root@localhost mugen-logs]# tree
.
├── 2403_mugen失败测试用例.xlsx
├── create_md.py
├── create_task_list.py
├── QAteam
│   └── mugen
│       └── argus
│           └── alltest.log
│           └── testlist.txt
├── README.en.md
├── README.md
├── start.sh
└── x86_64
└── riscv64

会自动生成 QAteam/mugen/argus/alltest.log 与 QAteam/mugen/argus/testlist.txt

其中 alltest.log 中储存的时 mugen 测试时的标准输出

Executing command: ./mugen.sh -f argus -r oe_test_argus_01 -x
Tue May 28 23:27:41 2024 - INFO  - start to run testcase:oe_test_argus_01.
Tue May 28 23:27:42 2024 - INFO  - pkgs:(lshw) is already installed
Tue May 28 23:29:59 2024 - INFO  - The case exit by code 0.
Tue May 28 23:29:59 2024 - INFO  - End to run testcase:oe_test_argus_01.
Tue May 28 23:29:59 2024 - INFO  - A total of 1 use cases were executed, with 1 successes 0 failures and 0 skips.
​
​
Executing command: ./mugen.sh -f argus -r oe_test_argus_02 -x
Tue May 28 23:29:59 2024 - INFO  - start to run testcase:oe_test_argus_02.
Tue May 28 23:30:00 2024 - INFO  - pkgs:(lshw) is already installed
Tue May 28 23:32:30 2024 - INFO  - The case exit by code 0.
Tue May 28 23:32:30 2024 - INFO  - End to run testcase:oe_test_argus_02.
Tue May 28 23:32:30 2024 - INFO  - A total of 1 use cases were executed, with 1 successes 0 failures and 0 skips.
​
​
Executing command: ./mugen.sh -f argus -r oe_test_argus_03 -x
Tue May 28 23:32:30 2024 - INFO  - start to run testcase:oe_test_argus_03.
Tue May 28 23:32:31 2024 - INFO  - pkgs:(lshw) is already installed
Tue May 28 23:34:45 2024 - INFO  - The case exit by code 0.
Tue May 28 23:34:45 2024 - INFO  - End to run testcase:oe_test_argus_03.
Tue May 28 23:34:45 2024 - INFO  - A total of 1 use cases were executed, with 1 successes 0 failures and 0 skips.
​

testlist.txt储存的则是测试语句

./mugen.sh -f argus -r oe_test_argus_01 -x
./mugen.sh -f argus -r oe_test_argus_02 -x
./mugen.sh -f argus -r oe_test_argus_03 -x

这里是为了让我直观的观察测试用例是否正确

当然也会自动化的将你测试的用例的log复制到相应架构的文件夹中 x86_64/riscv64

当然你也可以直接使用

create_task_list.py argus 来生成 testlist.txt

create_md.py会基于testlist.txt 的内容生成一个测试模板

模板如下

# argus
​
共 3个测例
​
## 测试结果速览
​
| 测试用例         | x86结果 | riscv结果 | pr/issue |
| ---------------- | ------- | --------- | -------- |
| oe_test_argus_01 |         |           |          |
| oe_test_argus_02 |         |           |          |
| oe_test_argus_03 |         |           |          |
​
### 环境#### x86
​
windows11下使用VMware -----> openEuler x86 24.03
x86镜像地址:http://121.36.84.172/dailybuild/EBS-openEuler-24.03-LTS/rc3_openeuler-2024-04-16-08-55-15/
​
#### riscv
​
Fedora Linux 40 -----> qemu  openEuler riscv 24.03
riscv镜像地址:https://repo.tarsier-infra.isrc.ac.cn/openEuler-RISC-V/testing/2403LTS-test/v1/
qemu版本:8.2.0  (qemu版本差异也可能导致问题)
​
------
​
## 测试细节### oe_test_argus_01
​
./mugen.sh -f argus -r oe_test_argus_01 -x
​
#### x86#### riscv
​
-----
​
### oe_test_argus_02
​
./mugen.sh -f argus -r oe_test_argus_02 -x
​
#### x86#### riscv
​
-----
​
### oe_test_argus_03
​
./mugen.sh -f argus -r oe_test_argus_03 -x
​
#### x86#### riscv
​
-----
​
​

方便手动填入测试结果

md 文件位于

[root@localhost mugen-logs]# tree
.
├── 2403_mugen失败测试用例.xlsx
├── create_md.py
├── create_task_list.py
├── QAteam
│   └── mugen
│       └── argus
│           └── argus调研报告.md
│           └── testlist.txt
├── README.en.md
├── README.md
├── start.sh
└── x86_64
└── riscv64

修改脚本使生成的 md 符合你的预期,我只填写了基本的信息

后续想增添的功能

1.直接将测试结果输出到 md 里,不过这里涉及到两个架构的系统如何将md合并的问题

2.目前 alltest.log 中的信息并不会被覆盖(其实我也不想让其覆盖),期望可以按测试时间进行分类。

3.复制log时,期望可以提取log中的ERROR信息,帮助测试者快速分析。