智能测试从哪学起:一条斜杠链路的课程表
功能测试想自己把自动化跑起来脚本会一点、页面一改就全红覆盖率数字有了却说不清有没有拦住问题——三件事常常同时存在。再往下用例在禅道里脚本在另一套仓库里任务又在第三个平台上。改一处另外两处不知道。这个专栏不教第二套框架也不把「再招两个人把回归加满」当成答案。它讲一条可以跟着做完的链路先有工作区再写本地用例按用例决定写接口脚本还是写 Web、App、PC、小程序里的哪一种界面脚本。该有的脚本齐了才允许挂测试任务任务只负责把已经生成的脚本编成一组跑完收成一份报告。跑完之后如果要看「拦得住、稳不稳、跑多久、场景齐不齐」再单独看四项度量。度量不回头改「能不能挂任务」。命令在 Cursor、Claw 或 VS Code 里敲。点名了哪条命令就只做那一件事。没点名就按你仓库里缺的那一层送去下一跳不会一次把用例、脚本、任务全写出来。文件放在哪个目录、斜杠从哪里出来第 21 篇单独讲。先记住这条顺序没有 autotest/ → /autotest-init 路径旧了 → /autotest-update ↓ 本地用例 → /autotest-testcase--sync 才交到禅道、Jira 或其它系统 ↓ AUTO_SCOPE api → /autotest-api 生成 → 执行 → 自愈最多 3 轮 ui / apiui → 先看 ui_client再写这一种界面 web /autotest-ui-web app /autotest-ui-app pc /autotest-ui-pc miniprogram /autotest-ui-miniprogram 小程序 四种都是先确认计划再生成 → 执行 已有脚本红了按同一种端自愈 web /autotest-ui-web-heal app /autotest-ui-app-heal pc /autotest-ui-pc-heal miniprogram /autotest-ui-miniprogram-heal none → 结束不挂任务 ↓ 覆盖率 100% 范围内该有脚本的都有了并且已经同步出去 ↓ 本地任务 → 查询 / 新建 / 追加 ↓ 批量执行 → /autotest-task-execute 一份组合报告 ↓ 四项度量可选→ /autotest-metrics 不改变上面的门禁apiui要接口脚本和ui_client指明的那一种界面脚本都齐这条用例才算覆盖完成。一条用例只对应一种界面Web、App、PC 或小程序不默认四种一起补。none表示这次不需要自动化写完用例就停不往任务上挂。查任务随时可以。/autotest-task-query只读本地列表不建、不跑、不改脚本。五个词后面每篇都会用词在这条链路里指什么工作区仓库里的autotest/。用例、脚本、任务都落在这里不散落在聊天记录里AUTO_SCOPE一条用例要不要自动化、自动化沉在哪一面api/ui/apiui/none。带界面时再看ui_clientweb/app/pc/miniprogram覆盖率 100%分母是需要自动化的用例。该有的脚本都在才允许挂任务。不是「全部跑绿」也不是代码行覆盖率自愈只改已经生成的测试脚本。接口在autotest/api/。Web 在autotest/ui-web/tests/App 在autotest/app/tests/PC 在autotest/pc/tests/小程序在autotest/miniprogram/tests/。被测工程不动测试任务本地列表autotest/tasks/里的一条。它点名若干已经生成的脚本建完不自动开跑再补三条边界避免后面学串同步是交出去。--sync把本地用例推到禅道、Jira 或你点名的系统。不是从线上把用例拉回来当真源。产品错了就记下来。断言和契约一致、实现不对记到用例的 bug 上停止把这条愈绿。不放宽断言换一个绿勾。执行任务的时候不修脚本。自愈发生在生成阶段接口最多 3 轮界面在生成执行时就地修。已经红着的界面脚本走和那一端对应的专项自愈。批量执行只跑、只记、只出报告。课程表算上你正在看的这一篇一共 22 篇。第 1 到第 20 篇顺着流程图走每个 Skill 单独一节。菱形判定没有自己的命令写进它所属的那一节不另开一篇去讲第二套流程。第 21 篇不新增命令只讲这些 Skill 在 Claw 和 VS Code 里怎么放、怎么叫。篇层命令这一篇你带走什么0—本篇顺序、五个词、从哪一篇进入1开篇无为什么按项目加人的测试跟不上现在的变更节奏2L0 入口autotest没点名命令时只被送到下一跳3L1 工作区/autotest-init建出autotest/和registry.yaml4L1 工作区/autotest-update只刷新前后端路径5L2 用例/autotest-testcase本地用例、AUTO_SCOPE、--sync6L3 脚本/autotest-api接口脚本的生成、执行、分类、最多 3 轮自愈7L3 脚本/autotest-ui-webWeb先确认计划再生成界面脚本8L3 脚本/autotest-ui-appApp先确认计划再生成界面脚本9L3 脚本/autotest-ui-pcPC先确认计划再生成界面脚本10L3 脚本/autotest-ui-miniprogram小程序先确认计划再生成界面脚本11L3 自愈/autotest-ui-web-heal已经红了的 Web 脚本先分类再改12L3 自愈/autotest-ui-app-heal已经红了的 App 脚本先分类再改13L3 自愈/autotest-ui-pc-heal已经红了的 PC 脚本先分类再改14L3 自愈/autotest-ui-miniprogram-heal已经红了的小程序脚本先分类再改15L4 门禁无单独命令什么叫覆盖率 100%为什么通过率不挡挂任务16L5 任务/autotest-task-query只看本地任务列表17L5 任务/autotest-task-create把多个已生成脚本收成一条任务18L5 任务/autotest-task-attach往已有任务追加脚本不删已经列入的19L6 执行/autotest-task-execute按任务批量跑写一份组合报告20度量/autotest-metrics四项指标以及它们为什么不能代替门禁21宿主无新命令同一份 Skill 在 Claw 里怎么用在 VS Code 里怎么加Web 的 Playwright 写法放在第 7 篇里讲。App、PC、小程序各占一篇生成前同样先确认计划。小程序的英文名是miniprogram。每种界面再配一条同名的 heal只修那一端已经生成的脚本。四种界面不是四条链路入口仍按ui_client只送去其中一条。第 1 篇 · 为什么要先把测试收成一条链路没有命令。先把立场说清楚后面才不会把每个 Skill 学成孤立的脚本生成器。你会看到三笔账时间账回归越跑越长、信任账绿了仍不放心、记忆账缺陷关了用例和脚本没有一起补上。AI 把开发吞吐抬高之后按项目加人、靠专人跟着改脚本这三笔账会一起变贵。学完能回答研发可以自己把交付所需的测试执行跑完测开要做的是把方法收成命令、门禁和边界。功能测试没有因此消失。这一篇不宣布测试失业也不开始建目录。第 2 篇 · 入口路由autotest对话里只说「给这个仓库补上自动测试」没有点名/autotest-init或别的命令时走这一篇。它做的唯一事情是分流没有工作区就去 init路径已经对不上就去 update还没有用例就去 testcase看AUTO_SCOPE决定去接口还是界面界面再按ui_client去 Web、App、PC 或小程序里的一条脚本已经红了并且人要修就去这一端对应的 heal不重新生成一遍要看任务就只查询明确说要跑才去执行要看四项数字才去度量。你已经把命令打全的时候不经过这篇。点名了哪条就做哪条。第 3 篇 ·/autotest-init仓库里还没有autotest/registry.yaml。这一篇只创建落点cases/、api/、ui-web/、tasks/、sync/再加上一份 registry记下能找到的前端目录和后端目录。找不到就留空并在对话里说明不编造路径。目录已经在命令会停。它不刷新路径不写用例不建任务。已有资产被覆盖是这一篇要防的事。第 4 篇 ·/autotest-update前后端目录挪了registry 里的路径在仓库中已经不存在。这一篇重新扫描只改 registry 的前端和后端字段并列出删掉的、新写入的、没变的路径。用例、接口脚本、界面脚本、任务列表保持原样。没有 registry 时它会停改走第 3 篇。第 5 篇 ·/autotest-testcase工作区就绪这次变更还没有本地用例。用例写在autotest/cases/每条带上auto_scope和scenario。auto_scope四选一api、ui、apiui、none。auto_scope含ui时再写ui_client四选一web、app、pc、miniprogram小程序。scenario四选一normal正常、boundary边界、concurrency并发、consistency一致。脚本和任务都等这一步有了结果再分流。none写完即结束。一条用例只标一种界面。加上--sync才把本地用例交到禅道、Jira 或其它系统并留下autotest/sync/manifest.yaml。不加这个参数用例只留在本地。这一篇不生成脚本不建任务也不去扫线上已有用例。第 6 篇 ·/autotest-api用例的auto_scope是api或apiui。按用例在autotest/api/生成脚本执行失败先分类。分类只有四种contract路径、字段和契约不符、assertion断言写错、data缺数据、product断言与契约一致实现不对。前两种才改脚本再跑最多 3 轮。data只提示补数据。product记 bug 并停止。同一类失败、没有新证据剩下的轮次也不再改。不改前端工程不改后端工程。通过率可以汇报不作为能不能往下走的条件。apiui还要等ui_client对应的那一种界面脚本齐了这条用例才算覆盖完成。第 7 篇 ·/autotest-ui-webui_client是web并且auto_scope是ui或apiui。顺序和接口不同先用页面快照写出计划并写下判断下一步动作、控件、主路径有没有盖住、定位风险。计划没确认停在计划上不生成脚本。确认之后才按 Playwright 把脚本写到autotest/ui-web/tests/。登录、进页、准备数据分开写断言对业务结果。失败同样先分类再决定能不能就地改这次生成的脚本。分类是locator、wait、assertion、data、auth、product。产品行为不对就记 bug。同一分类、没有新证据就停。环境里有判断服务的密钥、仓库里也已经有对应客户端时判断来源记为jev否则由这条命令按同一组字段填写来源记为agent。不编造一套不存在的接口。ui_client不是web时这一篇停改走第 8、第 9 或第 10 篇。第 8 篇 ·/autotest-ui-appui_client是app。测的是手机应用不是浏览器页面。先看当前界面写出计划并确认确认之后才把脚本写到autotest/app/tests/。计划没确认停在计划上。失败先分类分类与第 7 篇相同。技术类失败只改autotest/app/tests/里这次生成的脚本。product记 bug 并停止。不改 App 工程本身。第 9 篇 ·/autotest-ui-pcui_client是pc。测的是桌面客户端。同样先确认计划再把脚本写到autotest/pc/tests/。计划没确认不生成。失败先分类。技术类只改autotest/pc/tests/里这次生成的脚本。product记 bug 并停止。不改桌面工程本身。第 10 篇 ·/autotest-ui-miniprogramui_client是miniprogram也就是小程序。命令用这个英文名避免和 Web、App 混在一个 Skill 里。先确认计划再把脚本写到autotest/miniprogram/tests/。计划没确认不生成。失败先分类。技术类只改autotest/miniprogram/tests/里这次生成的脚本。product记 bug 并停止。不改小程序工程本身。四种界面共用同一套次序先计划后生成失败先分类。差别只在被测端和脚本目录。一条用例标了哪种ui_client就只走对应的那一篇。生成当时的技术类失败可以在第 7 到第 10 篇里就地改这次生成的脚本。脚本早已生成、后来又红了走下面四条里对得上的那一条不在生成命令里重来一遍。第 11 篇 ·/autotest-ui-web-healWeb 脚本已经在autotest/ui-web/tests/里而且跑红了。这一篇不新造用例也不从零再生成。找不到 Web 脚本就停缺的是脚本本身时回到第 7 篇。先写分类分类集合与第 7 篇相同。允许改的只有autotest/ui-web/tests/里已经生成的脚本。product不改断言。App、PC、小程序的红脚本不在这一篇里改。第 12 篇 ·/autotest-ui-app-healApp 脚本已经在autotest/app/tests/里而且跑红了。找不到 App 脚本就停缺的是脚本本身时回到第 8 篇。先分类再决定改不改。允许改的只有autotest/app/tests/里已经生成的脚本。product不改断言也不改 App 工程。第 13 篇 ·/autotest-ui-pc-healPC 脚本已经在autotest/pc/tests/里而且跑红了。找不到 PC 脚本就停缺的是脚本本身时回到第 9 篇。先分类。允许改的只有autotest/pc/tests/里已经生成的脚本。product不改断言也不改桌面工程。第 14 篇 ·/autotest-ui-miniprogram-heal小程序脚本已经在autotest/miniprogram/tests/里而且跑红了。找不到小程序脚本就停缺的是脚本本身时回到第 10 篇。先分类。允许改的只有autotest/miniprogram/tests/里已经生成的脚本。product不改断言也不改小程序工程。四条 heal 的边界相同只修这一端已经生成的脚本不新造用例不借自愈去挂任务。同一分类、没有新证据就停。第 15 篇 · 覆盖率 100%没有单独命令。账本是autotest/coverage.yaml。分母auto_scope不是none的用例。api要有接口脚本。ui要有ui_client那一种界面脚本不是四种都要有。apiui两边都要有接口加上这一种界面。分子齐了比例才是 1。none不进分母也不挂任务。挂任务还要多一个条件用例已经同步到禅道、Jira 或其它系统。两个条件都在才进入第 17、18 篇。缺脚本就回去补对应的那一种缺同步就回去--sync。通过率不挡这一步。发版可以另要求通过率生成和自愈过程里会碰到真实 bug那些红是结果不是没做完。代码行覆盖率、第 20 篇的四项数字都不参与这道门。第 16 篇 ·/autotest-task-query看autotest/tasks/里已经有哪些任务、每条列入了哪些脚本、有没有组合报告。给了任务编号就只看那一条。没有任务文件时汇报「当前没有任务」不会因此去建工作区或新建任务。这一篇不写文件不跑脚本。建任务之前、开跑之前都先用它看一眼避免同名再建一条。第 17 篇 ·/autotest-task-create把若干已经生成的脚本收成一条本地任务写入autotest/tasks/id.yaml。脚本路径必须已经在autotest/api/、autotest/ui-web/tests/、autotest/app/tests/、autotest/pc/tests/或autotest/miniprogram/tests/至少一条。没有现成脚本就停先走第 6 篇或第 7 到第 10 篇里对得上的那一条。同名任务已经在列表里就停改走第 18 篇追加。建完不执行。任务是一份名单不是开跑按钮。第 18 篇 ·/autotest-task-attach任务已经在列表里还有新的已生成脚本要放进去。新路径追加到名单末尾。已经在名单上的路径留着不重复写也不删除。列表里没有这条任务就停改走第 17 篇。同样不跑脚本不改脚本内容不改被测工程。第 19 篇 ·/autotest-task-execute点名一条任务按名单逐个跑把每条的通过或失败收进autotest/tasks/reports/id.md任务状态写成已完成。脚本文件缺失记为失败继续下一条。失败只记录不改脚本不进入接口自愈也不进入四条界面专项自愈不改被测工程不在这一步新生成脚本。要修回到第 6 篇或第 11 到第 14 篇里对得上的那一条修完再决定要不要重新跑。第 20 篇 ·/autotest-metrics任务跑完之后可选。写入autotest/metrics.yaml四项都要有当前值没有数据就明确留空并带上目标指标在看什么缺陷发现率自动化拦住的、线上能感知的缺陷占同期全部线上缺陷的比例稳定性近 30 天通过率以及是否连续失败。低于 95% 或连续 3 次失败这条用例在发版时暂停95%98% 仍可跑只是盯着执行效率全量要跑多久、等待多久、环境多久能就绪场景覆盖密度normal/boundary/concurrency/consistency各自齐到什么程度脚本齐套的覆盖率单独报一行标明它才是挂任务的门禁。这四项不否决已经挂上的任务也不用来填「覆盖率是不是 100%」。没有缺陷账本就不编数字。不在这一篇里自愈也不改脚本。第 21 篇 · 在 Claw 里用 Skill在 VS Code 里加入 Skill前面的命令要先被宿主看见敲出来才会进对应的SKILL.md。这一篇不改链路顺序不生成用例也不跑脚本。操作步骤仍以仓库里的.cursor/skills/autotest-*/SKILL.md为准。换宿主时复制目录不改里面的步骤。三处落点宿主项目里放哪怎么调用Cursor.cursor/skills/name/SKILL.md。要做成斜杠命令时再放一份.cursor/commands/name.md聊天里输入/加技能名或用把该技能附进这次对话ClawOpenClaw工作区skills/name/SKILL.md。这台机器上的智能体都要用放~/.openclaw/skills/name//skill name或该技能注册成自己的斜杠命令。改完文件后开一轮新会话VS CodeGitHub Copilot.github/skills/name/SKILL.md。也认.agents/skills/、.claude/skills/。只给自己用、不进仓库放~/.copilot/skills/name/聊天输入框打/选中技能。配置入口是 Chat 里的 Configure Chat再打开 Skillsname用小写字母、数字和连字符并且必须和上一级目录名一致。对不上时VS Code 会静默不加载。在 Claw 上工作区的skills/优先于~/.openclaw/skills。本专栏这些命令要显式点名不让模型看对话自己套用就在 frontmatter 里写disable-model-invocation: true同时保持user-invocable: true这样/skill autotest-init仍然可用。本地目录可以直接装进去openclaw skillsinstall./.cursor/skills/autotest-init--asautotest-init装到当前工作区的skills/。要给这台机器上的智能体共用加上--global落到~/.openclaw/skills。一条命令一个目录不要把整条链路塞进同一个SKILL.md。在 VS Code 里打开聊天输入/skills进入配置也可以在 Configure Chat 的 Skills 页选 New Skill (Workspace)位置选.github/skills/。已经有 Cursor 那份时把.cursor/skills/autotest-init整目录复制到.github/skills/autotest-init确认里面的name: autotest-init和文件夹名相同。聊天里输入/autotest-init能看见它才算加成功。个人技能放~/.copilot/skills/不提交进仓库。斜杠列表里没有这些命令时先做完这一篇再回到第 3 篇。Skill 放进去之后判定和产物仍按第 2 到第 20 篇不因为换了宿主就多做一步。你从哪一篇进入不必每次都从第 1 篇读到第 21 篇。先对一下自己卡在哪一层。你现在的情况从这里读先不要跳到还没想清楚为什么要这么拆第 1 篇直接生成脚本仓库里没有autotest/第 3 篇用例和任务前后端目录已经挪了第 4 篇把用例和脚本全部重写这次变更还没有用例第 5 篇任务和度量用例写了要接口脚本第 6 篇用界面命令去包接口用例写了界面是 Web第 7 篇计划没确认就生成用例写了界面是 App第 8 篇用 Web 命令去包手机应用用例写了界面是 PC第 9 篇用 Web 命令去包桌面客户端用例写了界面是小程序第 10 篇用 Web 命令去包小程序Web 脚本早先是绿的现在红了第 11 篇删掉重生成或改到 App 的脚本上App 脚本早先是绿的现在红了第 12 篇用 Web 的 heal 去改PC 脚本早先是绿的现在红了第 13 篇用 Web 的 heal 去改小程序脚本早先是绿的现在红了第 14 篇用 Web 的 heal 去改脚本齐不齐、能不能挂任务第 15 篇用通过率或四项度量代替只想看有哪些任务第 16 篇查询时顺手建一条要把多个脚本编成一组第 17 篇已有同名则第 18 篇建完就当已经跑过要一份把这些脚本合在一起的报告第 19 篇边跑边改脚本对话里没点名命令第 2 篇指望一次对话写完全部资产跑完了想看拦得住不、稳不稳第 20 篇用这四项去决定能不能挂任务斜杠里没有这些命令或要换到 Claw、VS Code第 21 篇还没放进宿主就从第 3 篇开始生成零基础从第 3 篇和第 5 篇开始先有目录和一条本地用例。已经会写 Selenium、Playwright、App、桌面或小程序脚本的从你卡住的那一端接不必把前面的命令重做一遍。用例和脚本没齐不进入任务和度量。这个专栏不讲什么不把通过率当成挂任务的条件。不在写用例、写脚本、建任务时去扫线上用例再把线上的当成本地真源。不在批量执行时自愈也不用自愈去改前端或后端工程。不把AUTO_SCOPEnone的用例挂进任务。不并行再讲一套「审查打分、五端矩阵、漂移阈值」当作第二条主链。那些不是这条斜杠链路的步骤。跟做时仓库里会长出什么走完主链而不是只读完标题仓库里应能指认这些文件autotest/ registry.yaml 第 3 篇创建第 4 篇只改路径 cases/ 第 5 篇 sync/manifest.yaml 第 5 篇且带了 --sync api/ 第 6 篇 ui-web/plans/ 第 7 篇Web 的计划与判断 ui-web/tests/ 第 7 篇生成 app/tests/ 第 8 篇 pc/tests/ 第 9 篇 miniprogram/tests/ 第 10 篇小程序 coverage.yaml 第 6 到第 10 篇写入第 15 篇解释门禁 tasks/TASK-*.yaml 第 17、18 篇 tasks/reports/ 第 19 篇 metrics.yaml 第 20 篇可选