当前位置: 首页 > news >正文

Redfish接口自动化入门:从零搭建你的Postman测试集合(附BMC用户、网络、电源管理完整用例)

Redfish接口自动化入门:从零搭建你的Postman测试集合

在服务器硬件管理领域,Redfish作为新一代的RESTful接口标准,正在逐步取代传统的IPMI协议。对于测试工程师而言,掌握Redfish接口测试不仅是一项必备技能,更是提升测试效率的关键。本文将带你从零开始,在Postman中构建一个完整的Redfish测试集合,覆盖BMC用户管理、网络配置、电源控制等核心功能。

1. 环境准备与基础配置

1.1 Postman基础设置

在开始Redfish接口测试前,我们需要对Postman进行必要的配置。首先关闭SSL证书验证,这可以避免在测试环境中因证书问题导致的连接失败:

  1. 点击File → Settings
  2. 在General标签页中,找到"SSL certificate verification"选项
  3. 关闭该选项

注意:在生产环境中应保持SSL验证开启,此处关闭仅适用于测试环境

1.2 环境变量初始化

Redfish测试中会频繁使用到服务器IP、认证令牌等变量。在Postman中设置环境变量可以极大提高测试效率:

// 在Pre-request Script中设置基础变量 pm.environment.set("deviceip", "192.168.1.100"); pm.environment.set("username", "admin"); pm.environment.set("password", "your_password");

2. 认证与会话管理

2.1 获取认证令牌

Redfish接口采用基于会话的认证机制。我们需要首先获取X-Auth-Token:

POST https://{{deviceip}}/redfish/v1/SessionService/Sessions Headers: Content-Type: application/json Body: { "UserName": "{{username}}", "Password": "{{password}}" }

在Tests脚本中保存返回的认证令牌:

var token = pm.response.headers.get("X-Auth-Token"); pm.environment.set("X-Auth-Token", token);

2.2 会话维护最佳实践

保持会话有效性是自动化测试的关键。建议:

  • 设置定期刷新令牌的机制
  • 在集合级别设置Pre-request Script检查令牌有效性
  • 实现自动重连逻辑处理会话超时

3. 服务器资产管理测试

3.1 获取系统信息

基础的系统信息查询是验证服务器状态的第一步:

GET https://{{deviceip}}/redfish/v1/Systems/1 Headers: X-Auth-Token: {{X-Auth-Token}}

典型响应中包含的关键信息:

字段描述测试要点
Manufacturer制造商验证与预期一致
Model型号检查是否正确
PowerState电源状态验证当前状态

3.2 电源管理操作

服务器电源控制是BMC的核心功能之一。Redfish提供了多种电源操作:

POST https://{{deviceip}}/redfish/v1/Systems/1/Actions/ComputerSystem.Reset Headers: X-Auth-Token: {{X-Auth-Token}} Content-Type: application/json Body: { "ResetType": "GracefulShutdown" }

可用操作类型对照表:

操作类型描述适用场景
On开机服务器关机状态下
ForceOff强制关机系统无响应时
GracefulShutdown优雅关机正常关机流程
ForceRestart强制重启系统卡死时

4. BMC用户管理测试套件

4.1 用户CRUD操作

完整的用户管理测试应包含创建、读取、更新和删除操作。以下是创建用户的示例:

POST https://{{deviceip}}/redfish/v1/AccountService/Accounts Headers: X-Auth-Token: {{X-Auth-Token}} Content-Type: application/json Body: { "Id": "3", "UserName": "testuser", "Password": "Complex@123", "RoleId": "Operator" }

用户角色权限对照:

  • Administrator:完全控制权限
  • Operator:操作权限,无配置更改权
  • ReadOnly:只读权限

4.2 用户信息修改流程

修改用户信息需要先获取ETag作为版本控制:

  1. 首先获取用户当前信息:
GET https://{{deviceip}}/redfish/v1/AccountService/Accounts/3
  1. 保存ETag头信息:
var etag = pm.response.headers.get("ETag"); pm.environment.set("user_etag", etag);
  1. 执行修改操作:
PATCH https://{{deviceip}}/redfish/v1/AccountService/Accounts/3 Headers: X-Auth-Token: {{X-Auth-Token}} Content-Type: application/json If-Match: {{user_etag}} Body: { "Password": "NewComplex@123", "RoleId": "Administrator" }

5. 网络配置测试模块

5.1 网络接口信息获取

获取BMC网络接口信息是网络配置的基础:

GET https://{{deviceip}}/redfish/v1/Managers/1/EthernetInterfaces/ Headers: X-Auth-Token: {{X-Auth-Token}}

关键网络参数验证点:

  • IPv4/IPv6地址配置
  • MAC地址唯一性
  • 网关和子网掩码正确性
  • 链路状态是否正常

5.2 IP地址修改流程

修改BMC管理地址需要特别注意:

  1. 获取当前接口ETag:
var iface_etag = pm.response.headers.get("ETag"); pm.environment.set("iface_etag", iface_etag);
  1. 执行修改操作:
PATCH https://{{deviceip}}/redfish/v1/Managers/1/EthernetInterfaces/1 Headers: X-Auth-Token: {{X-Auth-Token}} Content-Type: application/json If-Match: {{iface_etag}} Body: { "IPv4Addresses": [{ "Address": "192.168.2.100", "SubnetMask": "255.255.255.0", "Gateway": "192.168.2.1" }] }

重要:修改IP地址可能导致连接中断,建议在测试环境中先验证

6. BIOS配置测试方案

6.1 获取BIOS设置

读取当前BIOS配置是修改的前提:

GET https://{{deviceip}}/redfish/v1/Systems/1/Bios/Settings Headers: X-Auth-Token: {{X-Auth-Token}}

6.2 修改启动顺序

调整启动顺序是常见的BIOS配置需求:

PATCH https://{{deviceip}}/redfish/v1/Systems/1/Bios/Settings Headers: X-Auth-Token: {{X-Auth-Token}} Content-Type: application/json If-Match: {{bios_etag}} Body: { "Attributes": { "BootMode": "Uefi", "BootOrder": ["HardDisk", "PXE", "USB"], "SecureBoot": "Enabled" } }

BIOS常见配置项验证:

  • 启动模式(UEFI/Legacy)
  • 安全启动状态
  • CPU电源管理设置
  • 内存频率配置

7. 测试集合优化与维护

7.1 测试断言编写

有效的断言是自动化测试的核心。在Postman的Tests标签页中添加:

// 验证状态码 pm.test("Status code is 200", function() { pm.response.to.have.status(200); }); // 验证响应时间 pm.test("Response time is less than 500ms", function() { pm.expect(pm.response.responseTime).to.be.below(500); }); // 验证JSON结构 pm.test("Response has required fields", function() { var jsonData = pm.response.json(); pm.expect(jsonData).to.have.property('Id'); pm.expect(jsonData).to.have.property('Name'); });

7.2 集合导出与共享

完整的测试集合可以导出为JSON文件供团队共享:

  1. 在集合上右键选择"Export"
  2. 选择最新的Collection v2.1格式
  3. 保存文件并分享给团队成员

对于持续集成环境,可以将集合导入到:

  • Newman命令行工具
  • Jenkins等CI/CD平台
  • Postman的Team Workspace
http://www.jsqmd.com/news/921459/

相关文章:

  • 空洞骑士模组管理器Scarab:如何轻松管理你的模组世界
  • 移民机构推荐:如何选择可靠的服务提供商 - 品牌排行榜
  • 别再为信号忽大忽小烦恼了!用这个三极管+运放的AGC电路,稳定你的音频信号(带宽100Hz-5kHz)
  • 别再手动点鼠标了!用TCL脚本5分钟搞定ModelSim自动化仿真(附状态机波形美化技巧)
  • 项目经理的“仪表盘”:如何用Jira+简单脚本,实时监控你的EV(挣值)和CPI,预警项目超支风险
  • Prompt Engineering进阶:从基础技巧到系统方法论,掌握大模型交互的核心密码
  • 认知带宽的本质的庖丁解牛
  • 2025-2026年西奥别墅电梯潍坊城市旗舰店电话查询:选购前请核实授权资质与安装条款 - 品牌推荐
  • 电路分析别死记!用Multisim Live仿真5分钟搞懂诺顿定理(附实操步骤)
  • 极限之美WebApp实验室:从无限逼近到连续世界的动态认知
  • 避坑指南:交叉编译ZLMediaKit启用WebRTC时,OpenSSL和libsrtp的配置要点
  • 高效网盘直链解析工具:解锁九大云盘下载速度的终极方案
  • NI-DAQmx进阶玩法:在单个任务里混搭电压、电流甚至热电偶信号采集(LabVIEW实例解析)
  • 2025-2026年悟空易职电话查询:求职辅导前请核实服务资质与合同条款 - 品牌推荐
  • Cadence Virtuoso新手避坑指南:cds.lib和display.drf文件到底该怎么配?(附IC617/618配置实例)
  • DownKyi终极教程:3步掌握B站视频批量下载与高清解析的完整方案
  • Arm DS远程调试配置与ULINK探头应用指南
  • ChatGPT与Bard深度对比:从核心原理到场景化选型指南
  • Linux服务器运维:如何用Crontab和Systemd Timer双保险,搞定更可靠的定时备份与监控?
  • 用89S52单片机驱动TPμP-40A微型打印机:一个嵌入式老项目的硬件连接与代码调试全记录
  • 量子计算中的轨迹存储优化与熵压缩技术
  • Windows下用Anaconda搞定Labelme 5.3.1 + AI-Polygon(含onnxruntime版本冲突避坑指南)
  • Perseus如何解决游戏脚本修改难题:无偏移地址技术的深度解析
  • 成本警报:运行一个高并发 Multi-Agent 系统到底要花多少钱?
  • 2025-2026年桐柏县广和矿业有限公司电话查询:选购萤石粉前务必核实资质与合同条款 - 品牌推荐
  • 从纸笔到芯片:手把手拆解CPU除法器的前世今生(附RISC-V实例)
  • XUnity.AutoTranslator:Unity游戏自动翻译插件完整指南
  • 别再手动调时间了!用Python给Win10装个“网络校时器”,完美解决与macOS双系统冲突
  • Harness层消息重试:可靠通信保障
  • 2025-2026年企业AI操作系统推荐:五款产品评测全链路协同价格市场份额 - 品牌推荐