Files

80 lines
20 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
---
name: artemis-case-prep
description: 从多工作表原始 Android 测试用例中筛选适用于目标设备且可由 ARTEMIS 自动执行的用例,核实测试环境和用例信息后标记原表副本,并填写七列批量任务模板。也用于依据已有 ARTEMIS 运行证据修订任务提示词;不用于直接运行批次或改造导入器。
metadata:
version: "1.2.0"
---
# ARTEMIS 用例准备
把原始测试用例工作簿转成两份可追溯的文件:保留原有内容并新增“是否选中作为自动化执行”(`是`/`否`)列的原表副本,以及只包含选中用例的七列任务表。优先使用用户提供且符合下述七列表头的模板;未提供时使用 [七列模板](assets/artemis-tasks.xlsx)。不要覆盖输入文件。
首次转换按下述适用性与信息完整性要求准备正式文件;已有任务表复盘时,按 [依据已有运行修订提示词](#依据已有运行修订提示词) 处理。参考文件中的历史环境、批次、条数、路径和用户确认只在可对应的原项目内适用,不能代替当前用户的确认。仅要求更新 skill 时只修改技能文件。
## 先确认适用性,再判断自动化
1. 逐页识别真正的用例表、表头、续行、合并单元格及行级适用性;不要以固定列号、`max_row` 或单独的用例编号推断用例。行政清单、报告页和空白格式行不算用例。遇到本项目附件的异构页时,读 [字段与边界](references/workbook-contract.md)。其他原始文档仍须按其实际结构重新识别。
2. 适用性由用户在**原始用例**中完成:核对目标设备及每条用例的“是否适用”标记、标题限定或明确的适用说明;不强制另建设备能力清单。若有空白、缺少行级判定而无法由原文明确判定,或目标设备信息与原文范围无法对应,列出缺失的工作表与行号(可压缩连续行段),提醒用户补齐并**暂停正式转换**。不得把空白当作“不适用”,也不得从型号臆测设备能力。适用性明确为“否”的用例在自动化列标“否”。
3. 对适用用例逐条判断能否由 ARTEMIS 的 Android UI 操作及其可用 ADB/日志观察建立前置条件、完成动作并取得可核验结果。依赖人工观察、实物遮挡/断电、外部设备或 PC 操作、主观音画质量评价,或者前置条件无法建立的用例标“否”,不交给 ARTEMIS 试跑。不能因为有步骤文字就判“是”。“是”表示适合自动化执行,不表示测试已经通过。
原始步骤若有不清晰之处,尤其操作对象、顺序、入口、触发条件或结果判定不明确时,列出来源工作表、行号、原文及具体疑问,向使用者确认后再判定该条用例并定稿 Artemis 提示词。确认前不猜测步骤或界面路径,也不把“否”作为替代澄清的标记;可继续整理其他明确用例,但受影响条目保持待确认,正式任务表待澄清后再交付。
4. **编写任何 Artemis 提示词之前**,先取得用户提供或明确确认的四项信息:① Android 模拟器名称(不用模拟器时,由用户明确说明“使用真机、不使用模拟器”);②测试 App 名称;③测试 App 版本;④被测设备名称。模拟器是运行 App 的 Android 环境,被测设备是用例操作的设备,两者不可混用;设备型号、固件版本和用例文档日期不能替代 App 版本。已有对话或用户提供的原始资料中有明确值时直接沿用,不重复索取;仍缺任何一项时集中列出缺项并暂停提示词编写,不生成带占位符的草稿提示词。可先分析原表并整理待确认用例。
5. 逐条检查用例是否足以确定前置条件、操作对象与顺序、触发条件、可观察的预期结果。原文或用户资料不全时,列出来源工作表、行号、原文和具体缺项,请用户补齐后才编写该条提示词;不猜测步骤、界面路径或预期,也不以“否”代替澄清。涉及“一致/匹配/同步”时,还须取得比较字段、独立的预期值或可信参照及适用范围;不能从被测页面自身反推预期。若用户明确无法取得独立参照,才判为无法自动核验。其他信息完整的用例可继续整理,但正式任务表应待全部待确认项处理后交付。
6. **测试开始之前**,在目标 Android 环境中统一核验一次实际安装的 App 版本并记录结果;同一轮测试的各条用例沿用该结果,不逐条重新核验。若测试过程中安装版本变化,重新核验。另须确认需要使用的设备 SN、秘钥、设备型号等执行信息。用户已明确这些设备信息可在该工作流中正常流转;相关用例可直接使用已提供的值,不凭空编造。若某项信息本身是用例前置条件或断言所必需,应按第 5 条在编写该条提示词前取得。不要把 ARTEMIS 的模型 API Key 与设备秘钥混同。
## 生成与核验
- 在原表**副本**的用例表增加且只增加所要求的自动化标记列(若已有此列则更新,不重复新增);每条用例填 `是` 或 `否`。先核对目标位置不会覆盖既有数据,保留原工作表、原文、图片、合并、格式及非用例页。若所选表格工具不能保真,停止交付并说明损失,不输出貌似完整的副本。遵循可用的 spreadsheet 工作流进行编辑、渲染与导出检查。
- 任务表严格沿用 `任务` 页的七列顺序:`用例编号 / 检测项目 / 测试子项 / 测试用例 / 前置约束提取 / Artemis提示词 / 任务配置(JSON)`。只写入适用且自动化列为“是”、提示词所需信息已补齐的用例;其他工作表保持模板原样。`用例编号` 只填写原表显示的编号,不附 `(Sheet1!2)`、`〔来源页!行号〕` 等工作表/行号后缀;原表编号不改。重复编号保持原样,处理时另以来源工作表和行号定位用例。`Artemis提示词` 是唯一提交给 AI 的任务正文,其他文本列只作元数据,不自动拼入提示词。
- `任务配置(JSON)` 可留空,表示继承批次或全局配置;确需逐项覆盖时,只写当前 ARTEMIS 导入器支持的字段和值,使用合法 JSON 对象,不写密钥、占位值或未经确认的设备序列号。模拟器名称和被测设备名称不能当作 `device_serial`;填写前核对实际序列号。字段及导入边界见 [七列契约](references/workbook-contract.md#模板)。
- “前置约束提取”及每条正式“Artemis提示词”均须包含已确认的模拟器名称或真机环境、测试 App 名称与版本、被测设备名称,以及本条实际所需的账号、网络、状态等前置;一致性用例写明比较字段及独立预期值/来源。可在执行时只读取得的既有配置、实际名称和本次操作起止,不强制用户事先手填;独立预期、适用性、外部场景等仍须落实。尚缺资料只列单独待补清单,未补齐时不编写该条正式提示词,不把占位内容放进任务表。
- “Artemis提示词”必须以 `【原表显示的用例编号】` 紧接原“测试用例”文本(仅去首尾多余空白)开头,再另起完整说明。例如 `【1.1】【声波配网】手动长按重置恢复出厂后首次绑定完成配网流程`;连接是文本拼接,不写字面 `+`,不附来源页/行号。原编号或用例文本缺失时请用户补齐,不造编号或标题。执行说明写明沿用测试前统一核验的 App 版本、实际起点、操作意图与顺序、必要等待/状态转移、可观察预期及判定方式,不要求逐条再查版本。保留原量词、时长、观察端和判据,不发明界面路径、定位器、坐标或功能,不把相邻用例动作塞入共用段。
- 先按 [用例完成检查与收尾](references/workbook-contract.md#用例完成检查与收尾) 逐项核对本条必需操作和结果观察。某项失败、弹窗文案不同或缺少部分断言依据时,保留该项结果,继续可独立执行的操作与回读;仍能补做的漏项先补完。全部必要项完成,或剩余项有具体阻碍且有限恢复无效,或用户取消/实际预算终止时,再收尾。“失败或未验证也收尾”不表示首个偏差即可结束。
- **移动爱家用例保留强制停止收尾**:完成本条操作和观察、达到上述退出条件后,强制停止 `com.cmri.universalapp`;失败或未验证同样执行。执行端有实际可用的应用停止能力时可直接使用,支持 ADB 时可用 `am force-stop com.cmri.universalapp`。执行端不支持或停止失败,由 Codex 在本条结束、设备空闲且下一条尚未启动时通过宿主 ADB 补做;开始下一条前确认主进程及 `com.cmri.universalapp:` 前缀子进程均已停止,未确认则先处理收尾。下一条重新启动 App、等待加载并建立本条前置。用户当前明确另有收尾安排时按其要求;其他 App 按该任务约定,未约定时返回 App 内设备首页并确认,不误用移动爱家包名,也不把系统桌面当设备首页。
- 按本条场景读取下表,采用实际适用的操作,不把专项数值和历史入口推广为所有用例的默认值。
| 场景 | 需要读取及核对的规则 |
| --- | --- |
| 直播清晰度、全屏、声音等短时浮层 | [短时浮层与连续操作](references/transient-controls.md):首次用同动作早帧识别入口,核对当前布局;已定位入口在实际支持的短序列内完成唤出与点击。声音图标只证明 UI 状态,不能代替听音;旧早帧不是当前状态。 |
| 设置长列表、表单、云台、计划、图片操作 | [提示词与决策](references/workbook-contract.md#提示词与决策) 及 [设置页查找](references/workbook-contract.md#设置页查找与到底确认):移动爱家设置先等实际内容刷新;未见目标时按实际进展继续查看下方及相关子页,核实到底,不固定盲滑次数。仅对已对应项目采用16.1等用户专项例外。 |
| 云回看、卡回放与选时 | [回看选时](references/workbook-contract.md#提示词与决策):按实际存储类型、日期、时区与过去区间选时;颜色只作线索,灰色也可能有数据,以回读与实际播放核验。难定位时可点击实际可见“+”放大时间轴,再拖蓝色光标并回读,精确时间要求不放宽。仅移动爱家卡回放可在“云回看”后观察切换入口。本次生成型回看先完成规定档位及真实时长,再查对应新录像,不用旧片段替代。 |
| 分辨率截图与相册核验 | [设备截图分辨率与相册查看](references/workbook-contract.md#设备截图分辨率与相册查看):识别本次截图原图、读取宽×高,与已确认预期比较;核对本条有效应用锁定配置允许切换相册,核验后按本条约定收尾。 |
| 持续播放、等待、录像与预算 | [长时任务预算与实际计时](references/workbook-contract.md#长时任务预算与实际计时):用可靠起点、截止和剩余时长,保留原业务时长;单条有效预算须包含启动、定位、测量、有限恢复和收尾。30分钟业务不能仅给1800秒总时限,可按实际流程在受支持的单条配置覆盖如 `{"timeout_seconds":3600}`,保留其他配置,不改全局默认。 |
| 既有编码、AOV、云/卡回看专项 | [编码与回看补充](references/encoding-playback-feedback.md) 及 [既有项目反馈](references/project-feedback.md):按对应原文、版本和用户确认应用,区分 App 业务录像与操作录屏、各组合实际计时、设置回读和业务效果。 |
- 给 Codex 的通用截图、录屏、证据归档、结论和模型诊断要求不写入每条“Artemis提示词”。用户明确指定的画面截图、操作视频、日志地址/文件等本条交付物,可以写明动作、数量、时段及关联方式;操作录屏必须通过受支持的单条配置实际开启,不能只写提示词,也不以 App 内录像替代。采集完成与业务通过分别核验。
- 正式输出前确认所有真实用例的自动化标记均为 `是`/`否`、所有待确认项已处理,任务数据行数恰等于“是”的数量。逐行核对原编号、提示词原文前缀、四项环境、原动作/判据及约定收尾;移动爱家包名和进程检查准确。第七列为空或为仅含支持字段的可解析 JSON 对象。抽查独立比较参照、异构表头、重复编号、合并/续行和排除项;核实输入未改、非目标内容保真、模板七列及来源可追溯。提示词不得出现逐条查版本、通用归档或模型诊断口令。
本七列模板沿用已查看的 ARTEMIS `task_import.py` 契约,不能仅凭表头声称已导入。用户以后要求执行时,由执行方用当时服务的预览校验核实真实支持字段和逐行错误,再按执行授权启动。本 skill 不改导入器、不调用 `mobile_batch`、不启动设备;编写外部可执行测试代码前须用 ARTEMIS 探索实际应用。
## 依据已有运行修订提示词
用户要求复盘任务或重出既有任务表时,沿稳定 batch ID、session/trace ID 与原用例对应,读取 [已有任务表复盘修订](references/workbook-contract.md#已有任务表复盘修订)。分别保留原终态、业务判定、Checker、实际步骤和复核结论,按证据修正本条的范围、前置、定位、时序和断言;用户新确认路径不冒充旧 trace 已走通,历史 `completed` 不证明业务通过。发现提示词、执行器观测或模型链路问题时分别记录,技能文字修改不代表后端修复或设备复测完成。
默认以用户指定或最新已交付的七列 `.xlsx` 为底稿,只回填受影响行的完整提示词和必要单条配置,交付保留其他用例、原编号/顺序、环境、辅助页、样式及批注的新副本,不覆盖底稿。上次交付后已定稿且尚未回填的相关修订一并带入。用户明确仅要单条或其他格式时按其要求。只有用户明确要求全量重审才逐条改写全量,不因单条优化、更新 skill 或历史完成状态自动增删集合。
用户明确改为操作、指定截图/视频/日志采集及人工判断时,按新范围编写,保留原判据及人工待判,不用首次全自动筛选规则排除整条,也不把采集成功写成产品通过。暂不适用用例从可导入的“任务”页移出,不伪造 `enabled`/`skip` 字段。用户要求保留全量但条件未齐时,可另交明确标识的审阅稿和待补清单;不得混为正式可派发表或自动改原表标记。
仅在当前请求可明确对应来源项目时,读 [既有项目反馈与专项修订](references/project-feedback.md);其中68条集合、删除清单、固定环境、V6/V7、数值、特殊入口及桌面命名只用于该项目,具体规则与 [覆盖核验](references/workbook-contract.md#本轮68条重出与覆盖核验) 对照。新项目按实际资料重新识别;交付位置沿用当前请求或工作区输出约定。没有当前底稿而需回填时再核实来源,不因只修改 skill 自动生成任务表。
## Codex 执行与证据归档(不写入 Artemis 提示词)
后续正式执行前,执行方须实际确认登录状态、目标设备可见及本轮所需在线状态,不能只核验安装版本就视为执行环境已就绪。用户已授权自动登录且存在现有账号、已保存凭据或可用免密入口时,按实际界面尝试并观察反馈;密码框显示占位文字或看似为空,不足以断定缺少凭据。只有实际登录反馈或必要输入明确缺失时才记录对应阻碍,不猜造密码、验证码或登录路径。登录成功与本轮所需设备状态分别核验;用例或本轮要求核对固件时,另按已确认目标核验。共同的登录障碍应作为环境问题关联受影响用例。
以下是已有任务表的后续执行约定,不替代前文准备正式任务表的待补要求。用户已明确“全量处理、遇阻先跳过并继续”时,执行方在派发前核对人工、实物或外部工具条件;可独立执行的部分继续核验,核心动作或断言全部依赖未具备条件的条目直接记录跳过/阻塞、缺失条件与未执行分支,不交给 Flash 等待其解决外部条件。“全量处理”应保留每条用例记录,不表示条件已具备或断言已通过。沿用用户已选安排,不逐条重复索取同一条件,不将受阻项判为产品失败或通过。
后续执行测试时,Codex 在关键操作前后截图并保留本任务录屏;记录证据路径,以便归档到工作区“测试佐证”目录。若工具只能保存到 ARTEMIS trace,报告 trace 和证据路径。前置条件不成立、控件未找到或证据不能证明预期时,如实报告阻塞或未验证,不写通过。这些要求由 Codex 处理,不拼入任务表每条“Artemis提示词”。
短时控件“点击后未见”时,执行方按 [瞬态取证与诊断](references/transient-controls.md#执行方的取证与诊断) 对齐真实落点、首次有效画面或已有录像及后续观测时序,区分点错位置、曾显示后隐藏和未取得短时证据。保留即时截图、调整观测策略及诊断 helper/UIAutomator2 属于执行方职责;本 skill 只编写相关操作意图与交接要求,不启动设备、修改后端或改变全局默认。
执行方先区分已声明的业务等待与模型停滞,不能只因 UI 步骤不增长就中断合法计时。模型请求反复超时、仅间歇恢复少量动作时,也按 [异常超时复盘](references/workbook-contract.md#已有任务表复盘修订) 核查跨回合累计耗时、实际目标进度、预算及收尾,不能用一次成功点击或短等待清除异常审计,不把等待模型当作业务观察;长时业务则核对实际等待参数、截止时间及剩余总预算。异常工具参数、重试和停滞监控由执行方处理,不向每条业务提示词追加自我催促、重试口令或固定模型等待;本 skill 的文字修订不能代替执行层的参数校验与超时修复。
## 执行状态显示取消但之后完成
ARTEMIS 执行期间,网页或列表可能显示“取消”/“正在取消”,而之后的持久批次或任务记录又显示已完成。不要依据单次界面快照判最终状态,也不要把“已完成”直接等同于测试通过。执行方应按稳定的批次 ID、session/trace ID 重新读取 ARTEMIS 持久状态,确认取消是否只是请求/过渡状态、任务最终状态,以及报告是否已就绪;检查应遵从工具建议并保持低频,避免连续轮询。
- 最终持久记录为 `completed` 且报告已就绪时,核对 trace/报告中的实际步骤、证据和业务判定,再分别记录通过、失败或未验证。
- 最终持久记录为 `cancelled` 时,它是终态;保留取消记录及已产生的部分证据,不得改写成完成,也不要因界面状态不一致而自动重提同一用例。确认终态后,按同一运行 ID 核对最新保存步骤及对应画面;若检查或取消期间又完成了动作,更新已执行范围,不沿用取消前快照的未执行结论。重跑须有明确授权,并作为新的执行记录。
- 若批次、session 与网页显示互相矛盾,或报告尚未就绪,记录各自 ID、状态和检查时间,做必要的低频只读核验;矛盾未消除前标记“状态待核实”,不得统计为通过或已完成。
此规则只用于解释执行记录,不改变本 skill 的职责范围:本 skill 负责准备与核验用例文档,不负责启动、取消、恢复或重跑 ARTEMIS 任务。