如何防止iTestSmart执行危险测试用例

答案内容由AI生成,仅供参考:
:speech_balloon: 结论:建议立即停止使用主账号执行用户管理类测试,转而采用临时账号 + 标签分类的组合策略。长期应由 Security SIG 推动建立统一的“安全测试用例开发规范”,从根本上防止此类问题再次发生。

点击此处查看详细分析解答

防止 iTestSmart 执行危险测试用例的建议与解决方案

根据您提供的信息,当前在使用 iTestSmart 执行测试用例时,遇到了由于某些测试用例(如 Redfish 相关用例)具有“破坏性”行为(例如删除执行账号 cmj),导致后续所有依赖该账号的测试用例均失败,日志中出现大量 User cmj authentication failed 错误。这是一个典型的安全性和测试稳定性问题。

以下是基于现有 Context 和最佳实践提出的综合解决方案:


:magnifying_glass_tilted_left: 问题本质分析

  • 根本原因:部分测试用例(如用户管理类用例)在设计时执行了删除用户修改用户状态等操作。
  • 影响范围
    • 被删除的用户(如 cmj)无法继续登录系统;
    • 后续测试用例因认证失败而连锁失败;
    • 产生大量无意义日志,掩盖真实问题;
    • 测试结果可信度下降。

:white_check_mark: 推荐解决方案

一、使用专用测试账号隔离风险(立即可用)

核心思想:避免使用长期存在的主账号执行测试,尤其是涉及用户管理的用例。

:white_check_mark: 实践建议:

  • 创建专用临时测试账号用于执行用户管理类测试用例(例如 test_user_01, itest_user 等);
  • 测试结束后自动清理或重置这些账号;
  • 保留主账号(如 cmj)仅用于调度和监控,不参与具体功能测试。

:white_check_mark: 优点:无需修改测试框架,即可规避账户被删导致的问题。


二、为测试用例添加“危害等级”标签(中长期改进)

可通过 Tags 机制对测试用例进行分类标记,实现选择性执行或过滤。

:white_check_mark: 建议引入的标签类型:

标签 含义
@destructive 会删除用户、重置配置、清空数据等破坏性操作
@privileged 需要管理员权限才能运行
@state-changing 会改变系统状态且不可自动恢复
@safe 安全只读操作,可放心运行

:wrench: 如何实施?

  1. Test Cases 中为高风险用例添加相应标签(参考 KG 中的 Tags 实体);
  2. 使用 iTestSmart 的标签过滤功能跳过或隔离 @destructive 类用例;
  3. 支持用户按需选择执行策略(如“仅运行安全用例”)。

:pushpin: 示例(Robot Framework 风格):

*** Test Cases ***
Delete User Account
    [Tags]    destructive    user-management
    Run Keyword    Delete User Via Redfish    cmjuser5

:white_check_mark: 优点:增强测试可管理性,提升安全性与可维护性。


三、实施测试用例前/后环境检查与恢复机制

建议在测试流程中加入 环境预检 + 清理恢复 步骤。

:white_check_mark: 推荐做法:

  • 前置检查:检测当前用户是否为核心执行账户,若是则提示风险并阻止运行;
  • 后置恢复:测试完成后调用 Force Reset iBMC Successfully 或其他恢复命令重建关键用户;
  • 利用 Bingo Test Command 自动化部署测试环境。

:pushpin: 参考上下文数据:

  • Force Reset iBMC Successfully 是一种已验证的系统恢复手段;
  • Bingo Test Command 支持执行 单元、集成、压力测试,可用于构建环境初始化脚本。

四、推动建立“测试用例安全规范”(组织级建议)

借助 Security SIG 和社区力量制定统一标准。

:white_check_mark: 建议内容包括:

  1. 所有涉及用户增删改的测试用例必须:
    • 使用临时账户;
    • 具备清理回滚逻辑;
    • 明确标注为“状态变更类”;
  2. 引入 Password Complexity Check 等机制验证用户策略完整性;
  3. Test Case Development Specification 扩展至涵盖安全执行指南

:link: 关联实体:

  • Security SIG:负责提供安全测试指导;
  • Test Case Development Specification:可用于扩展定义测试安全规范;
  • Security Testing Guidance:应包含对危险操作的处理建议。

五、利用 Filter Options 过滤测试结果(辅助手段)

当前 iTestSmart 支持日志级别过滤,建议优化使用方式。

:white_check_mark: 当前支持的 Filter Options 包括:

  • PASS, FAIL, ERROR, CMD, CMD_RESPONSE, CONFIG_ERROR
  • 用户可通过 UI 过滤日志,聚焦关键信息

:warning: 当前不足:

  • 缺少对“测试行为类型”的过滤(如“用户删除”、“权限变更”);
  • 日志中 User cmj authentication failed 条目过多,干扰排查。

:hammer_and_wrench: 改进建议:

  • 增加 操作类型标签过滤,便于快速排查用户变更行为;
  • 对高频失败日志自动聚合提示,避免刷屏。

:pushpin: 总结建议

措施 类型 推荐程度 说明
使用专用测试账号 立即可行 :star::star::star::star::star: 最直接有效的方法
添加 @destructive 标签 中期改进 :star::star::star::star: 提升测试可管理性
引入环境恢复机制 工程化建设 :star::star::star::star: 结合 Force Reset 实现
推动制定安全测试规范 组织级 :star::star::star:☆☆ 由 Security SIG 主导
优化 Filter Options 显示 工具侧优化 :star::star:☆☆☆ 辅助定位问题

:envelope: 后续行动建议

  1. 向 Security SIG 提交请求

    “请求在 iTestSmart 测试用例中引入 @destructive 标签机制,并规范用户删除类用例的设计原则。”

  2. 在 iTestSmart 中启用 Tag 过滤功能

    利用现有 TagsTest Cases 的关系结构,实现按标签筛选执行。

  3. 建立“测试账户白名单”机制

    禁止对特定用户名(如 cmj)执行删除或禁用操作。


:speech_balloon: 结论:建议立即停止使用主账号执行用户管理类测试,转而采用临时账号 + 标签分类的组合策略。长期应由 Security SIG 推动建立统一的“安全测试用例开发规范”,从根本上防止此类问题再次发生。

相关链接:

  1. 社区测试活动反馈
  2. 【iTestSmart OpenUBMC问题反馈】自检类型PCA9545测试,测试结果Fail。
  3. 【用户管理】【登录】AC长稳测试,ssh登录BMC概率登录失败
  4. 【iTestSmart】支持显示固件CSR和MCU信息,且BMC复位不丢失测试,关键字有误。
  5. 测试用例设计指导 | 文档中心 | openUBMC