ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

openBMC自动化测试说明

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 foundPython 环境Python 3.x、pip install -r requirements.txt是否执行ModuleNotFoundError: No module named redfishGUI 测试浏览器及 WebDriver 是否安装配置WebDriverException: Message: chromedriver executable needs to be in PATH权限ipmitool、dmidecode是否需要sudoPermission denied定位方法在output.xml中搜索失败用例的第一个失败关键字检查其消息是否指向环境层面。FFDC 收集的日志BMC_journalctl.txt、OS_dmesg.txt等也可以辅助判断是否是环境问题。 第二类外部依赖未配置核心判断环境构建正常但测试连接不到外部服务消息通常包含Connection refused、Timeout、unreachable。典型场景LDAP 测试BMC 需要能通过网络访问到真实的 LDAP 服务器。如果 LDAP 服务器地址不可达或配置错误所有 LDAP 登录测试都会失败。有一个真实案例OpenBMC 的 LDAP 测试用例因为传入了无效的 LDAP URIInvalid_LDAP_Server_URIBMC 在格式校验阶段就返回了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中查看断言失败的具体消息expectedvsactual结合 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命令行参数中的值是否正确传入。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进