测试标准和测试工具
- [商用软件](#商用软件)
- [硬件](#硬件)
- [操作系统](#操作系统)
商用软件
测试标准
经openEuler兼容性SIG组评定,针对商用软件技术测评的测试方案如下。
测试维度 | 检测项 | 评定标准 | 是否可选 |
---|---|---|---|
构建测试 | 软件构建测试 | 目标软件可以在指定架构、操作系统上构建成功。 | 可选 |
兼容性测试 | 软件包安装测试 | 目标软件可以在指定架构、操作系统上安装成功。 | 必选 |
兼容性测试 | 软件包卸载测试 | 目标软件可以在指定架构、操作系统上卸载成功。 | 必选 |
兼容性测试 | 软件服务启动测试 | 目标软件可以在指定架构、操作系统上启动成功。 | 必选 |
兼容性测试 | 软件服务停止测试 | 目标软件可以在指定架构、操作系统上停止成功。 | 必选 |
兼容性测试 | 强制杀死进程测试 | 目标软件可以在指定架构、操作系统上异常终止后可以启动成功。 | 必选 |
兼容性测试 | 软件命令调用测试 | 目标软件可以在指定架构、操作系统上运行基本的命令。 | 必选 |
兼容性测试 | 软件依赖库查询 | 目标软件可以在指定架构、操作系统上查询依赖库。 | 必选 |
兼容性测试 | 软件依赖库差异识别 | 目标软件可以在指定架构、操作系统上依赖库兼容。 | 必选 |
性能测试 | CPU波动测试 | 目标软件在稳定运行期间的系统资源CPU的波动正常。 | 可选 |
性能测试 | 内存波动测试 | 目标软件在稳定运行期间的系统资源内存的波动正常。 | 可选 |
性能测试 | 磁盘波动测试 | 目标软件在稳定运行期间的系统资源IO的波动正常。 | 可选 |
性能测试 | 网络波动测试 | 目标软件在稳定运行期间的系统资源网络的波动正常。 | 可选 |
性能测试 | 压力长稳测试 | 目标软件在压力测试下能够长时间稳定运行,且指标数据波动范围在预期范围内。 | 可选 |
安全测试 | 端口安全测试 | 目标软件在运行期间的监控端口是否与端口矩阵中的端口信息一致。 | 必选 |
安全测试 | 病毒扫描测试 | 目标软件无携带病毒文件。 | 必选 |
安全测试 | CVE漏洞扫描测试 | 目标软件不存在已知的CVE漏洞。 | 必选 |
测试步骤
工具简介
为了解决欧拉技术测评过程中涉及的ISV商用软件兼容性测试问题,特基于《欧拉技术测评兼容性测试用例(ISV商用软件)》 集成了lkp-tests和x2openEuler测试工具。
环境要求
项目 | 要求 |
---|---|
操作系统 | openEuler系操作系统。 |
依赖软件 | 请使用此命令安装依赖包:yum install -y wget git。 |
注意
- 请勿在生产环境安装和执行测试工具。
- 工具安装过程需从外网下载代码和依赖包,请确保网络连接正常(如无法连接外网,需要将gem相关依赖完全离线并进行安装)。
- 工具默认安装在当前目录,请确保目录剩余空间足够。
工具安装
Lkp-tests
安装依赖。
yum install -y wget git rubygems
安装Lkp-tests。
git clone https://gitee.com/wu_fengguang/lkp-tests cd lkp-tests sed -i "s/rubygems.org/gems.ruby-china.com/g" Gemfile gem sources --remove https://rubygems.org/ gem sources -a https://gems.ruby-china.com/ make install
写入环境变量。
将lkp-tests所在路径增加到/etc/profile末尾,便于后续测试。
vi /etc/profile export LKP_PATH="填写lkp-tests所在路径"。
vi 打开文件后,"shift"+"g"跳到文件末尾,然后按下"o" 编辑下一行。
输入完成后,"esc"退出编辑,然后输入":wq"+"enter"保存并退出文件。
source /etc/profile
下载测试套。
git clone https://gitee.com/whatamaze/compatibility-test cd compatibility-test sh install.sh
x2openEuler安装
安装依赖。
yum install -y bzip2 bzip2-devel
安装x2openEuler。
访问 https://repo.oepkgs.net/openEuler/rpm/openEuler-20.03-LTS-SP1/contrib/x2openEuler/ 获取x2openEuler软件包并上传至服务器。
yum install x2openEuler-xxx.rpm
设置x2openEuler密码。
passwd x2openEuler
说明:
用户登录的密码,建议满足如下复杂度要求:
- 密码长度为8~32个字符。
- 使用包含大写字母、小写字母、数字、特殊字符(~!@#$%^&*()-_=+|[{}];:'",<.>/?)中的两种及以上类型的组合。
- 密码中不包含空格。
- 密码中不使用用户名。
测试执行
Lkp-tests测试
安装通用依赖。
export arch=\`arch\` gem install git -v 1.9.1 lkp install
注意: 此处必须安装1.12以下版本的git,否则会导致接口传参出错。
安装兼容性测试依赖。
lkp split-job $LKP_PATH/jobs/compatibility-test.yaml lkp install -f compatibility-test-defaults.yaml
执行成功后会在执行命令目录中生成 compatibility-test-defaults.yaml 文件,用于后续任务调度,后续执行执行兼容性测试,也需切换到此目录。
执行兼容性测试。
将待测软件包放至当前目录下,执行以下命令,最终测试结果在compatibilityLog文件中。
lkp run ./compatibility-test-defaults.yaml -s 'package_name: xxxxxx' >compatibilityLog 2\>& 1
说明:
- package_name: 后必须有一个空格,否则导致报错无法进行测试。
- 此处package_name后需填写软件包文件全名,例如nginx-1.14.2-1.oe1.aarch
- 当前脚本适配rpm包,如无法直接使用rpm -ivh等rpm命令进行安装、卸载,请在脚本中修改安装卸载命令,详见附录的修改商业软件测试安装和卸载命令。
x2openEuler测试
切换到x2openEuler用户。
su - x2openEuler
须知:
使用前请务必切换用户为x2openEuler用户
执行扫描。
x2openEuler scan [-batch] [-arch ARCH] [-os_name OS_NAME] [-target_os_name TARGET_OS_NAME] {filename \| directoryname}
命令 参数选项 说明 -batch - 多应用场景,配合directoryname,扫描文件夹下多个软件包若无此参数,仅扫描单个软件包。 -arch ARCH 操作系统架构 可选参数。 可选x86_64或aarch64,默认为x86_64。 例如"-arch x86_64" 选择操作系统架构为x86_64。 -os_name OS_NAME 源操作系统 可选参数,默认参数为centos7.6。例如"-os_name centos8.2" 选择源操作系统为CentOS 8.2。说明:当前源操作系统支持CentOS 6.8/CentOS 7.6/CentOS 8.2。 - target_os_name TARGET_OS_NAME 目标操作系统 可选参数,默认参数为openEuler20.03-LTS-SP1。例如"-target_os_name openEuler20.03-LTS-SP1" 选择目标操作系统为openEuler20.03-LTS-SP1。 - filename| directoryname 需扫描的应用包或目录,例如"x2openEuler scan file_name_version.rpm" 选择扫描的应用包为file_name_version.rpm。说明:当前扫描支持rpm/tar/zip/gzip/jar/py/pyc/sh/bin文件。 此处以评估CUnit-2.1.3-21.oel.aarch64.rpm_应用包并输出软件评估报告为例,请根据实际情况选择所需参数并替换为需要扫描的软件包或软件包目录。
x2openEuler scan -arch x86_64 CUnit-2.1.3-21.oel.x86_64.rpm
结果查看。
报告为html格式,建议下载报告并在浏览器查看。
硬件
测试标准
整机测试标准
经openEuler兼容性SIG组评定,硬件技术测评分为整机和板卡,整机测试方案如下。
测试维度 | 检测项 | 评定标准 | 是否可选 |
---|---|---|---|
ACPI测试 | ACPI测试 | 提取ACPI表,查看电源配置是否合理。 | 必选 |
时钟测试 | 系统时间偏差测试 | 测试系统时间没有偏差。 | 必选 |
时钟测试 | RTC时钟稳定性测试 | 测试RTC硬件时钟稳定性。 | 必选 |
CPU测试 | CPU调频策略测试 | 测试 cpu 在不同调频策略下运行频率是否预期,测试 cpu 在不同频率下完全同规格计算量所需时间是否与频率值吻合。 | 必选 |
Kdump测试 | 预留内存测试 | 查看系统是否为捕获内核提供预留内存。 | 必选 |
Kdump测试 | Kdump可用性测试 | Kdump服务能否正常使用。 | 必选 |
Kdump测试 | vmcore分析测试 | 通过crash分析kdump生成的vmcore文件。 | 必选 |
系统测试 | 系统事件捕获测试 | 测试perf是否可以捕获系统事件信息。 | 必选 |
系统测试 | 基本信息检查 | 查询硬件型号信息,系统版本信息,系统内核模块信息。 | 必选 |
系统测试 | 内核检查 | 检查是否为debug kernel。检查os版本和kerner版本是否匹配。 检查内核是否被污染或者内核rpm包是否被修改。 查看内核启动参数。 | 必选 |
系统测试 | selinux检查 | 检测selinux是否可用,可设置为enforcing。 | 必选 |
IPMI测试 | IPMI测试 | 使用ipmitool查询ipmi信息。 | 必选 |
看门狗测试 | watchdog测试 | 触发watchdog,测试系统是否可以正常复位。 | 必选 |
内存测试 | 内存读写测试 | 测试内存读写是否成功。 | 必选 |
内存测试 | 内存占用测试 | 测试此内存是否成功。 | 必选 |
内存测试 | 内存大页测试 | 大页内存分配成功,大页内存测试成功。 | 必选 |
内存测试 | 内存热插拔测试 | 测试内存热插拔。 | 必选 |
磁盘测试 | 磁盘分区测试 | 成功获取空闲磁盘。 | 必选 |
磁盘测试 | 磁盘读写测试 | 裸盘顺序读写成功,裸盘随机读写成功,文件系统顺序读写成功,文件系统随机读写成功。 | 必选 |
网卡测试 | 获取IP地址 | 是否可以获取C/S的IP地址。 | 必选 |
网卡测试 | 网卡启停测试 | 网卡是否可以正常启动、关闭,获取网卡速率。 | 必选 |
网卡测试 | 网卡连通性测试 | 客户端是否可以ping通服务端,是否有丢包。 | 必选 |
网卡测试 | 延迟和带宽测试 | 测试C/S之间的网络延迟和Server的带宽。 | 必选 |
网卡测试 | 文件上传下载测试 | 客户端是否可以从服务端上传和下载文件。 | 必选 |
USB测试 | USB插拔测试 | 检测是否有新设备插入 检测是否有设备拔掉。 | 必选 |
RAID测试 | 分区测试 | 能成功获取空闲磁盘个数。 | 必选 |
RAID测试 | 读写测试 | 裸盘顺序读写成功,裸盘随机读写成功,文件系统顺序读写成功,文件系统随机读写成功。 | 必选 |
板卡测试标准
经openEuler兼容性SIG组评定,硬件技术测评分为整机和板卡,板卡测试方案如下:
NVMe测试标准
测试维度 | 检测项 | 评定标准 | 是否可选 |
---|---|---|---|
NVMe测试 | 格式化测试 | 测试硬盘格式化是否成功。 | 必选 |
NVMe测试 | 读测试 | 测试硬盘读是否成功。 | 必选 |
NVMe测试 | 写测试 | 测试硬盘写是否成功。 | 必选 |
NVMe测试 | smart测试 | 磁盘读取smart信息成功。 | 必选 |
NVMe测试 | log测试 | 分析smart信息成功。 | 必选 |
网卡测试标准
测试维度 | 检测项 | 评定标准 | 是否可选 |
---|---|---|---|
网卡测试 | 获取IP地址 | 是否可以获取C/S的IP地址。 | 必选 |
网卡测试 | 网卡启停测试 | 网卡是否可以正常启动、关闭,获取网卡速率。 | 必选 |
网卡测试 | 网卡连通性测试 | 客户端是够能ping通服务端,是否有丢包。 | 必选 |
网卡测试 | 延迟和带宽测试 | 测试C/S之间的网络延迟和Server的带宽。 | 必选 |
网卡测试 | 文件上传下载测试 | 客户端能否从服务端上传和下载文件。 | 必选 |
FC测试标准
测试维度 | 检测项 | 评定标准 | 是否可选 |
---|---|---|---|
FC卡测试 | lun测试 | 获取可测试的磁盘阵列成功。 | 必选 |
FC卡测试 | 读写测试 | 裸盘顺序读写成功,裸盘随机读写成功,文件系统顺序读写成功,文件系统随机读写成功。 | 必选 |
GPU测试标准
测试维度 | 检测项 | 评定标准 | 是否可选 |
---|---|---|---|
GPU测试 | GPU burn测试 | gpu-burn工具压力测试,nvidia-sim工具监测性能指标正常。 | 必选 |
GPU测试 | 样例测试 | 样例测试结果为PASS。 | 必选 |
测试步骤
工具简介
为了解决欧拉技术测评过程中涉及的整机和板卡兼容性测试问题,基于《欧拉技术测评兼容性测试用例(整机&板卡)》 集成了oec-hardware测试工具。 此工具将根据《欧拉技术测评兼容性测试用例(整机&板卡)》提取为58个自动化测试用例,分为整机测试用例集和板卡测试用例集。
环境要求
整机测试环境要求。
项目 | 要求 |
---|---|
整机数量 | 需要两台整机,业务网口互通。 |
硬件 | 至少有一张RAID卡和一张网卡(包括集成主板硬件)。 |
内存 | 建议满配。 |
操作系统 | openEuler系操作系统(支持dnf/yum/pip3)。 |
板卡测试环境要求。
项目 | 要求 |
---|---|
服务器型号 | Taishan200(Model 2280)、2288H V5或同等类型的服务器,对于x86_64服务器,icelake/cooperlake/cascade可任选一种,优选icelake。 |
RAID卡 | 需要组raid,至少组raid0。 |
NIC/IB卡 | 服务端和测试端需要分别插入一张同类型板卡,配置同网段IP,保证直连互通。 |
FC卡 | 需要连接磁阵,至少组两个lun。 |
操作系统 | openEuler系操作系统(支持dnf/yum/pip3)。 |
注意
- 部分测试用例会重启机器,请勿在生产环境安装和执行测试工具。
- 工具安装过程需要从外网下载代码和依赖包,请确保网络连接正常(如无法连接外网,需要下载相关依赖并进行安装)。
- 工具日志默认存放在/usr/share,请确保目录剩余空间足够。
工具安装
客户端:
配置 openEuler 官方 repo 中对应版本的 everything 和 update 源,使用 dnf 安装客户端 oec-hardware。
dnf install oec-hardware
输入
oech
命令,可正常运行,则表示安装成功。
服务端:
配置 openEuler 官方 repo 中对应版本的 everything 和 update 源,使用 dnf 安装服务端 oec-hardware-server。
dnf install oec-hardware-server
服务端 web 展示页面需要的部分组件系统本身不提供,需要使用 pip3 安装(请自行配置可用 pip 源)。
pip3 install Flask Flask-bootstrap uwsgi
启动服务:本服务默认使用 8080 端口,同时搭配 nginx(默认端口 80)提供 web 服务,请确认端口未被占用。
systemctl start oech-server.service systemctl start nginx.service
关闭防火墙和 SElinux。
systemctl stop firewalld iptables -F setenforce 0
测试执行
- /usr/share/oech/kernelrelease.json 文件中列出了当前支持的所有系统版本,使用
uname -a
命令确认当前系统内核版本是否属于框架支持的版本。 - 框架默认会扫描所有网卡,对网卡进行测试前,请自行筛选被测网卡,并为其配置能够 ping 通服务端的IP。如果客户端对 InfiniBand 网卡进行测试,服务端也需要有一个 InfiniBand 网卡并提前配 IP 。建议不使用业务网口进行网卡测试。
- 部分用例需要root权限,请使用root用户执行。
启动测试工具。
在完成安装oec-hardware软件包的客户端执行 oech,填写ID、URL、Server配置项,ID 建议填写 gitee 上的 issue ID(注意:ID中不能带特殊字符)、URL建议填写产品链接。Server 需填写客户端可直接访问的服务器域名或 ip,用于展示测试报告和作网络测试的服务端。
\# oech The openEuler Hardware Compatibility Test Suite Please provide your Compatibility Test ID: Please provide your Product URL: Please provide the Compatibility Test Server (Hostname or Ipaddr):
进入测试套选择界面。
在用例选择界面,框架将自动扫描硬件并选取当前环境可供测试的测试套,输入 edit 可以进入测试套选择界面。
- 板卡测试请选择对应的板卡测试项。
- 整机测试建议测试全部类型的测试项,至少需要测试一张RAID卡和网卡,网卡测试选择一个网口即可,注意不要使用业务网口进行测试。
These tests are recommended to complete the compatibility test: No. Run-Now? Status Class Device 1 yes NotRun acpi 2 yes NotRun clock 3 yes NotRun cpufreq 4 yes NotRun disk 5 yes NotRun ethernet enp3s0 6 yes NotRun ethernet enp4s0 7 yes NotRun ethernet enp5s0 8 yes NotRun kdump 9 yes NotRun memory 10 yes NotRun perf 11 yes NotRun system 12 yes NotRun usb 13 yes NotRun watchdog Ready to begin testing? (run\|edit\|quit)
选择测试套。
all|none 分别用于 全选|全取消(必测项 system 不可取消,多次执行成功后 system 的状态会变为Force),数字编号可选择测试套,每次只能选择一个数字,按 enter 之后 no 变为 yes,表示已选择该测试套。
开始测试。
选择完成后输入 run 开始测试。
上传测试结果。
测试完成后可以上传测试结果到安装oec-hardware-server软件包的服务端,便于展示结果和日志分析。如果上传失败,请检查网络配置,重新上传测试结果。
查看工具的测试日志。
客户端详细的测试日志路径为 /usr/share/oech/logs/oech-yyyymmddxxxx-xxxxxxx.tar 。
查看测试结果。
测试结果上传到服务端后,在浏览器打开服务端 IP 地址,点击导航栏 Results 界面,找到对应的测试 id 进入,可看到具体的测试结果展示,包括环境信息和执行结果等。
操作系统
测试标准
经openEuler兼容性SIG组评定,OSV商用发行版/企业自用版技术测评的测试方案如下。
测试维度 | 检测项 | 检测点描述 | 评定标准 | 是否可选 |
---|---|---|---|---|
工具检测 | 核心包 | 核心包一致性比例 | 名称、小版本完全一致,核心包包括核心包内容一致性,内核、gcc、glibc、qemu、docker、openJDK、systemd、openssh、lvm2、busybox、initscripts核心模块一致性,JDK如果没有,则不会纳入比较项。 | 必选 |
工具检测 | 软件包 | L1/L2 软件包一致性比例 | L1 100%兼容,L2 95%以上兼容,参考社区等级清单定义(附上链接)https://gitee.com/openeuler/oec-application/blob/master/doc/compatibility_level.md。 | 必选 |
工具检测 | 内核KABI接口 | OSV内核KABI接口白名单与openEuler内核KABI接口白名单一致性比例 | 内核-KABI白名单 90%以上兼容。 | 可选 |
工具检测 | 用户态ABI接口 | OSV软件包ABI接口与openEuler软件包ABI一致性比例 | L1 100%兼容,L2 95%以上兼容,参考社区等级清单定义。 | 必选 |
工具检测 | Service默认配置 | OSV软件包Service文件与openEuler软件包Service文件一致性比例 | 全量默认配置一致性90%以上。 | 可选 |
工具检测 | 软件包默认配置 | OSV软件包配置文件与openEuler软件包配置文件一致性比例 | 全量默认配置一致性90%以上,目前对于OSV厂商新增的配置,不会作为差异比较。 | 可选 |
工具检测 | 内核特性配置 | 内核特性配置 | 内核关键配置一致性,达90%以上。 | 必选 |
平台验证 | 仓库 | EPOL仓/软件所仓库在OSV版本上安装成功比例 | 仓库复用度90%以上。 | 必选 |
平台验证 | 基本功能 | 社区AT用例运行结果 | 社区AT用例运行结果100%通过。 | 必选 |
平台验证 | 基础性能 | 基础性能测试结果 | 性能浮动5%以内。 | 必选 |
平台验证 | 运行时默认配置 | 运行时默认配置 | 全量运行时默认配置一致性90%以上。 | 可选 |
测试步骤
工具简介
OECP工具比较2个ISO之间的静态差异,OECP工具需借助compass-ci才能比较2个ISO之间的动态差异。在测试完成后输出的OSV认证报告中,静态差异测试工具检测的检测项,动态差异才包括平台验证的检测项。
环境要求
项目 | 要求 |
---|---|
服务器 | 当前支持Kunpeng和X86等多个底座,有其他平台的适配需求欢迎提交issue。 |
操作系统 | openEuler系操作系统。 |
依赖软件 | python3-devel,sqlite,libabigail,japi-compliancechecker,安装方法见工具安装。 |
注意
- 请勿在生产环境安装和执行测试工具
- 工具安装过程需要从外网下载代码和依赖包,请确保网络连接正常(如无法连接外网,需要将gem相关依赖完全离线并进行安装)。
- 工具默认安装在当前目录,请确保目录剩余空间足够。
工具安装
安装依赖。
yum install -y python3-devel sqlite libabigail-devel python3-pip pip3 install pyyaml git clone https://github.com/lvc/japi-compliance-checker.git cd japi-compliance-checker make install prefix=/usr
安装结果检测。
japi-compliance-checker -test
工具安装。
git clone https://gitee.com/openeuler/oecp.git cd oecp pip3 install -r requirement
测试执行
执行测试。
python3 cli.py file1 file2
说明:
- file1: 基准ISO
- file2: 待测评的ISO
查看结果。
在结果文件osv_data_summary.xlsx中查看测试结果。