openBMC自动化测试说明

第一,测试依赖于测试机器测试环境构建。除了拉取代码,还需要按照说明安装一些基本的工具,例如ipmitool之类的命令;如果是GUI测试,可能还需要安装浏览器和对应的驱动

第二,测试本身有很多外部依赖。例如LDAP NTP等测试需要给真实的BMC设备配置能通过网络连接上的外部服务器

第三,测试用例本身可能存在问题。例如预期不符合等。需要具体问题具体分析,可能是用例过时,可能是用例使用了部分平台特有的关键字,或者BMC固件有改动,预期结果需要修改。或者BMC固件确认存在bug需要修复。等等

第四,没有按照用例本身的设计去使用。例如测试要求提供host os的ip 账号密码等等,在测试带内ipmi测试的时候需要在host os测执行一些命令,如果这些参数没提供,或者提供了但是实际上不生效,这时候就没办法开启测试

因此,openbmc-test-automation测试社区的测试用例如果执行失败了,要综合分析,最好就是自己跑一遍结合日志具体分析。因为一个用例测试失败了,有多个方面的原因。

四类失败原因与分析方法整合

分类 对应分析脚本中的根因 典型失败阶段 排查优先级
第一类:测试环境/构建未就绪 前置条件不满足(环境层面) Setup / 测试主体开头 最高
第二类:外部依赖未配置 前置条件不满足(依赖层面) Setup / 特定测试步骤 最高
第三类:测试用例本身有问题 测试预期不符合 / 需人工确认 测试主体(断言阶段) 中
第四类:参数未提供或不生效 测试参数未传递/变量问题 Setup / 测试主体 高

🔍 第一类:测试环境与构建依赖

核心判断 :失败发生在测试执行的最早期 ,消息通常包含 Command not found、No such file、ImportError、浏览器驱动缺失等。

排查清单:

依赖类型 需确认项 典型错误
基础工具 ipmitool、expect、dmidecode、nmcli 是否安装 ipmitool: command not found
Python 环境 Python 3.x、pip install -r requirements.txt 是否执行 ModuleNotFoundError: No module named 'redfish'
GUI 测试 浏览器及 WebDriver 是否安装配置 WebDriverException: Message: 'chromedriver' executable needs to be in PATH
权限 ipmitool、dmidecode 是否需要 sudo Permission denied

定位方法 :在 output.xml 中搜索失败用例的第一个失败关键字 ,检查其消息是否指向环境层面。FFDC 收集的日志(BMC_journalctl.txt、OS_dmesg.txt 等)也可以辅助判断是否是环境问题。

🔗 第二类:外部依赖未配置

核心判断 :环境构建正常,但测试连接不到外部服务 ,消息通常包含 Connection refused、Timeout、unreachable。

典型场景:

  • LDAP 测试 :BMC 需要能通过网络访问到真实的 LDAP 服务器。如果 LDAP 服务器地址不可达或配置错误,所有 LDAP 登录测试都会失败。有一个真实案例:OpenBMC 的 LDAP 测试用例因为传入了无效的 LDAP URI(Invalid_LDAP_Server_URI),BMC 在格式校验阶段就返回了 400 Bad Request,测试根本没走到登录验证步骤。

  • NTP 测试:需要 BMC 能连接到 NTP 服务器进行时间同步。

  • SOL 测试:需要 BMC 的 SOL 功能已激活,且网络路由正确。

  • 虚拟介质测试:需要 ISO URL 从 BMC 网络可达,且认证信息正确。

定位方法 :检查 output.xml 中失败消息是否包含网络层面的错误。同时确认测试配置文件中 BMC_HOST、外部服务器地址等参数是否正确。

🧩 第三类:测试用例本身的问题

这是最复杂的一类,需要具体问题具体分析。常见子类型:

子类型 特征 示例
用例过时 BMC 固件已更新,旧断言不再适用 旧版本返回 200,新版本返回 204
平台特有关键字 某平台专有,其他平台不支持 pldmtool 仅适用于支持 PLDM 的平台
预期结果需修改 BMC 行为变更,原预期不再正确 Redfish 字段名或结构变化
BMC 固件 Bug 用例正确,固件确实有问题 需要提 Bug 修复

LDAP 案例的启示 :OpenBMC 的 LDAP 测试中,Verify LDAP Config Creation Without BASE DN 用例预期"不传 BaseDN 时 LDAP 登录应失败",但 BMC 固件实际上不接受空的 BaseDN 列表 ,直接返回 400 Bad Request 和 PropertyValueNotInList 错误。这说明用例的预期与固件实际行为之间存在偏差,需要确认是固件 Bug 还是预期需要更新。

定位方法 :在 output.xml 中查看断言失败的具体消息(expected vs actual),结合 BMC 固件版本和变更日志判断。

⚙️ 第四类:参数未传递或不生效

核心判断 :失败消息通常包含 Variable '${x}' not found、Expected N arguments, got M、Missing argument 等。

典型场景:

  • 带内 IPMI 测试:需要在 Host OS 上执行命令,要求提供 Host OS 的 IP、账号、密码。如果这些参数未提供,或提供了但 SSH 连接不生效,测试无法启动。

  • 配置文件中参数格式错误 :SBMR-ACS 的文档明确指出,配置文件中的配置错误是测试失败最常见的来源,配置文件使用 Robot Framework 的参数语法,需要精确的格式。

  • 变量作用域问题:变量未正确传递到子关键字或 Setup/Teardown 中。

定位方法 :检查 output.xml 中的失败消息,同时核对测试配置文件(如 config 文件或 --variable 命令行参数)中的值是否正确传入。

相关推荐
Chenyu_3104 小时前
DPDK、TC 和 XDP:Linux 高性能网络到底在优化什么
linux·服务器·网络·缓存
乔旭伟6 小时前
Linux 服务器备份实战:一致性快照、日志归档与恢复演练
linux·运维·服务器
乔旭伟6 小时前
Linux 服务器安全加固实战:SSH、防火墙、补丁与入侵排查
linux·服务器·安全
裕晟资质规划7 小时前
三类涉密资质延续时限差异分析:军工60日与集成印制3个月的边界
java·服务器·前端·网络·安全
刘胡子大叔7 小时前
备份包只有 1.5K?
linux·服务器·网络
无足鸟ICT7 小时前
【RHCA+】RPM包验证和数字证书
linux·运维·服务器
小范的技术工坊8 小时前
Linux应用开发(文件属性)
linux·运维·服务器
开开心心就好8 小时前
多份文档怎么批量打印?支持多种格式
java·服务器·开发语言·pdf·ocr·散列表·启发式算法
南棋网络安全10 小时前
ssrf跨站请求伪造(保姆级教程)
运维·服务器·网络·网络安全
开开心心就好10 小时前
文件被占用删不掉?解锁工具强制删除
java·运维·服务器·开发语言·前端·pdf·ocr