SuperAPI AI 工具集

atf-testing

测试与质量

查看项目

更新于 10-16 02:13

技能介绍

用途

ATF(Automated Test Framework)为 ServiceNow 应用提供自动化测试能力,支持回归测试与持续集成。本技能用于构建 ServiceNow 的 ATF 测试与测试套件,覆盖模拟用户、表单步骤、断言、服务端脚本步骤、测试参数以及执行等环节。

测试层级与关键表

ATF 采用层级结构:测试套件(Test Suite)包含多个测试(Test),每个测试由按顺序排列的步骤(Step)组成。资料给出的示例层级为:测试套件“Incident Management Tests”下包含“Create Incident”“Assign Incident”“Resolve Incident”等测试,其中“Create Incident”由模拟用户、打开新记录、设置字段值、提交表单、断言值等步骤构成。

关键数据表包括:

  • sys_atf_test:测试定义
  • sys_atf_step:单个测试步骤
  • sys_atf_test_suite:测试套件分组
  • sys_atf_test_suite_test:套件与测试的关系
  • sys_atf_test_result:测试执行结果

常见步骤类型

资料列出的常见步骤类型及用途:

  • Impersonate:以特定用户身份运行,例如以 ITIL 用户测试
  • Open a New Form:创建新记录,例如新建 incident 表单
  • Open an Existing Form:编辑记录,例如打开 INC0010001
  • Set Field Values:填充字段,例如设置 priority、description
  • Click a UI Action:触发按钮,例如点击“Save”
  • Assert Field Values:校验值,例如 Priority = 1
  • Run Server Side Script:执行脚本,例如自定义校验
  • Wait:暂停执行,例如等待异步操作

创建测试与步骤

资料提供了基于 ES5 的示例代码。创建测试时使用 GlideRecord 操作 sys_atf_test,设置 name、description、active、application 等字段并插入。添加步骤时操作 sys_atf_step,设置 test、order、step_config 以及步骤专属配置。示例中 order 使用 100、200、300 等间隔值,便于后续插入。

各步骤示例包括:

  • 模拟用户步骤:step_config 为 sys_atf_step_config_impersonate,inputs 中指定 user(如 itil 或 sys_id)
  • 打开新表单步骤:step_config 为 sys_atf_step_config_open_new_form,inputs 中指定 table(如 incident)
  • 设置字段值步骤:step_config 为 sys_atf_step_config_set_field_values,inputs 中指定 table 与 values 数组(field、value)
  • 提交表单步骤:step_config 为 sys_atf_step_config_click_ui_action,inputs 中指定 ui_action(如 sysverb_insert)
  • 断言字段值步骤:step_config 为 sys_atf_step_config_assert_field_values,inputs 中指定 table 与 assertions 数组(field、operator、value)

服务端脚本步骤

服务端脚本步骤使用 ES5 编写,函数签名为 (outputs, steps, params, stepResult)。资料给出三类示例:

  • 自定义校验脚本:通过 steps["step_sys_id"].record_id 获取上一步记录 ID,使用 GlideRecord 查询 incident,检查业务规则是否触发(如 assignment_group 是否为空)、是否附加 SLA(查询 task_sla),并通过 stepResult.setOutputMessage 与 stepResult.setFailed 反馈结果,同时可向 outputs 写入值。
  • 数据准备脚本:查询或创建测试用户(sys_user),将用户 sys_id 写入 outputs。
  • 清理脚本:根据步骤记录 ID 删除测试数据,资料说明清理步骤应始终运行。

测试套件与参数化测试

创建测试套件使用 sys_atf_test_suite,设置 name、description、active 并插入。通过 sys_atf_test_suite_test 将测试加入套件,设置 test_suite、test、order。

参数化测试在 sys_atf_test 的 parameters 字段中以 JSON 形式定义参数(如 priority、category),在步骤配置中通过 ${priority}、${category} 引用。

MCP 工具集成

资料列出可用的 ATF 工具:snow_create_atf_test(创建测试)、snow_create_atf_test_step(添加步骤)、snow_create_atf_test_suite(创建套件)、snow_execute_atf_test(运行测试)、snow_get_atf_results(获取结果)、snow_discover_atf_tests(查找已有测试)。示例工作流为:创建测试、添加步骤(impersonate、server_script)、执行测试、获取结果。

最佳实践与常见断言

资料给出的最佳实践包括:隔离测试数据(每个测试创建并清理数据)、使用模拟用户(以真实用户角色测试)、原子测试(每个测试验证一个场景)、描述性命名、按 100/200/300 排序步骤、处理异步(添加等待步骤)、始终清理(使用 finally 步骤)、参数化(使用参数实现可复用测试)。

常见断言包括:equals(精确匹配)、not equals(排除值)、is empty(字段应为空)、is not empty(字段必须有值)、contains(子串匹配)、starts with(前缀匹配)、greater than(数值比较)、less than(数值比较)。

限制

资料未提供关于收费、价格、平台版本要求、性能指标或具体使用步骤之外的额外限制信息,这些内容暂未提供。