当前位置: 首页 > 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.cnnetsun.cn/news/2670182.html

相关文章:

  • Windows下用Anaconda搞定Labelme 5.3.1 + AI-Polygon(含onnxruntime版本冲突避坑指南)
  • 别再手动调参了!用Python实现自适应Kalman滤波,让传感器数据自己变‘干净’
  • AI当代,项目经理面临的挑战有哪些方面?
  • 从手机芯片到IoT传感器:CMOS反相器的动态特性(tr/tf/tp)如何影响你的设备续航与性能?
  • 别再死磕RRT*了!手把手教你用ROS实现RRT*-Smart路径规划(附避坑指南)
  • 向量数据库选型实战:Milvus vs Pinecone vs Qdrant,谁才是RAG的最佳搭档?
  • XUnity.AutoTranslator:Unity游戏自动翻译插件完整指南
  • 避坑指南:单细胞分析中AUCell参数aucMaxRank怎么设?看完这篇别再猜了
  • Win10系统下Amesim 2020.1保姆级安装与破解全流程(含环境变量配置与插件添加)
  • 从电子管到全固态:聊聊中波广播发射机这几十年的技术变迁(以PDM和DAM为例)
  • 路径规划算法选型指南:RRT、RRT*和RRT*-Smart到底该怎么选?(附场景测试数据)
  • 手把手图解xv6三级页表:用递归函数vmprint把内存映射‘画’出来
  • 告别手动刷!用Auto.js脚本自动跳转抖音直播间和主页(附完整Scheme清单)
  • 英飞凌TC264单片机入门:用龙邱开发板和ADS免费IDE,5分钟搞定LED流水灯
  • 终极指南:如何用SMUDebugTool彻底释放AMD Ryzen处理器的隐藏性能
  • 目标检测框‘跑偏’了怎么办?深入聊聊IOU Loss家族如何一步步解决定位难题
  • 如何为Unity游戏实现自动翻译:XUnity.AutoTranslator完整指南
  • 2017年Web开发趋势回顾:框架、工程化与性能优化的关键转折
  • 情绪分析工具选型指南:从技术原理到五大服务商实战解析
  • 别再硬算最优路径了!用Python模拟退火算法求解TSP,附att48标准数据集测试对比
  • 别再只会用cp和mv了!Linux软链接的5个高效用法,让你文件管理效率翻倍
  • 告别安装烦恼:用一条命令在Docker中快速拉起MySQL 5.7.44测试环境
  • 鸿蒙开发-想让绘制更好看?渐变、阴影和混合模式
  • HEIF Utility:Windows用户处理苹果HEIF图片的终极解决方案
  • 告别传统求解器:用PyTorch实现傅立叶神经算子(FNO),让PDE求解快1000倍
  • 别再让GC卡顿毁掉你的游戏!Unity垃圾回收优化实战(附Profiler排查技巧)
  • 从传感器融合到机器人定位:手把手拆解卡尔曼滤波中的‘信息加权平均’是怎么算出来的
  • 基于DOM解析与样式提取的HTML到Figma转换技术深度解析
  • 终极指南:免费解密网易云音乐NCM文件,ncmdumpGUI完整使用教程
  • 如何让智能电视变身全能上网终端:TV Bro电视浏览器实战指南