UNPKG

dsh-qa-skills

Version:

DeepSeek Harness (dsh) plugin: 10 testing skills (requirement analysis, test strategy, case writing/review, E2E/API automation, exploratory, regression, bug analysis) + shared core knowledge base — a full QA pipeline as agent skills.

170 lines (128 loc) 17.1 kB
# 测试类型决策矩阵(test-type-matrix) > 类型域测试决策的**唯一真相源**:test-strategy 全轴扫描时**按组加载**本文件对应小节,产出 type_scope;test-case-writing 消费 type_scope 时按第 12 节映射产出。决策原则(全轴必答 / include 挂信号 / exclude 挂理由 / depth 与 execution 分离 / 单一真相 / 弱模型优先)与 Schema、V1–V5 校验规则见 test-strategy 的 SKILL.md。 **矩阵版本**:v1(2026-08-23)。轴集合增删必须升版本号;评测任务的标注须记录所用矩阵版本。 ## 0. 组索引(分轴组推进,按组加载) | 组 | 轴(本组只加载这些小节) | 组内交付核对 | |---|---|---| | A 资金与正确性 | 轴 1 性能效率 · 轴 2 业务安全 · 轴 4 并发一致性 | 三轴全部有决策 | | B 依赖与变更 | 轴 3 可靠性 · 轴 9 迁移与升级 · 轴 10 契约与集成 | 三轴全部有决策 | | C 前端体验 | 轴 5 兼容性 · 轴 6 无障碍 · 轴 7 视觉一致性 · 轴 8 国际化 | 四轴全部有决策 | ## 1. 使用规程(每组开扫前执行) 1. **G 级扫描**(有代码仓库时,一次运行三组共用):`python3 ../core/scripts/scan_signals.py <仓库路径>`(路径相对 test-strategy 的 SKILL.md 所在目录)→ 每轴 G 级信号(文件:行)+ 预填表。**预填仅基于 G 级;exclude 永不预填**(防橡皮图章) 2. **逐轴决策**(受限选择,不自由生成):需求信号(需求模型 / PRD)→ G 级信号核对 → **S 级信号照单复核**(本轴代码信号清单中标〔S〕的项,逐项读代码确认)→ decision(include / exclude / handoff)→ depth(full / standard / light) 3. **exclude 门槛**:需求 + G 级 + S 级三路全灭才可 exclude;scanned 必须落盘 **G 级脚本输出 + S 级复核结论双清单**(V3 校验)——S 级未复核不得 exclude,否则脚本盲区被制度化为漏测 4. **组内交付核对**:本组全轴有决策再进下一组;十轴完成 → 第 13 节深度校准 + 预算排序 5. **无代码仓库**:跳过 G / S 级,仅需求信号决策;exclude 理由注明"无代码仓库,需求信号未命中"(决策可信度降级,报告标注) **轴空间封闭**:类型域就是这十轴,不自行新增。可用性 / UX 主观体验、渗透测试、SAST / 依赖扫描、产品可维护性、功能安全(safety)**不设轴**——可用性与 UX 的判定主观性强,走探索测试与人工评审;渗透测试依赖专业人工与授权环境,右移到安全专项;SAST / 依赖扫描是开发侧 CI 工具,在本矩阵中只作轴 2 / 轴 10 的**信号来源**而非独立轴;产品可维护性与功能安全超出测试范畴。新增轴 = 矩阵升版本。 ## 2. 域间裁决(重叠必裁决) | 重叠 | 裁决 | |---|---| | 功能域 permission × 轴 2 业务安全 | permission 管授权功能正确性(有权限的人行为对不对,越权用例归它产);业务安全管未授权视角防御(不该拿的拿不拿得到、敏感数据漏不漏、注入面、认证会话)。permission 轴 depth ≥ standard 是轴 2 的**内部纳入信号**;同一批越权用例不得两轴双计数 | | 轴 4 并发一致性 × 轴 1 性能效率 | 正确性 bug(超卖 / 重复 / 丢更新)归轴 4;容量 / 延迟归轴 1。同一次并发执行可同时给两轴供 E3 证据(执行复用,决策分离) | | 功能域 exception/boundary × 轴 10 契约与集成 | 功能域为主:异常 / 边界场景下的业务行为正确性(系统自身处理逻辑对不对)归功能域用例产出;轴 10 为辅:只产契约差异项(对外接口的错误码 / 响应结构 / 超时语义与契约不符的部分)。同一接口的同一路径不得两处双计数 | ## 3. 轴 1 性能效率(performance) - **需求信号**:SLA / P95 响应时间承诺;大促、秒杀、抢购场景;预计并发用户数;性能验收指标 - **代码信号**:无分页全量查询;循环内远程调用(N+1)〔S〕;缓存依赖(Redis 命中率假设);锁竞争热点〔S〕;消息积压消费逻辑 - **默认档**:软默认——无信号 exclude(记录扫描结果);有 SLA 或容量信号 → include - **档位语义**:full = 压测模型设计(用户旅程 × 到达率阶梯)+ 执行 + 瓶颈归因报告;standard = 核心接口基准(单接口阶梯加压)+ 阈值判定;light = 代码级性能审查(分页 / 缓存 / N+1 / 锁,逐项出 E2 证据清单) - **执行归属**:include + executor=agent 时 light 可闭环;压测执行走外部工具(k6 / locust,带移交包) - **成本因子**:独立压测环境、可重置数据、基准噪音控制 - **消费方式**:脚本型——standard 及以上不产手动用例,产压测模型与执行物进执行策略裁决;light 产代码审查清单条目(Cx 通道) ## 4. 轴 2 业务安全(security-business) - **需求信号**:多角色 / 权限层级;隐私数据(手机号 / 身份证 / 地址);资金操作;合规要求(个保法 / GDPR);**内部信号**:功能域 permission 轴 depth ≥ standard - **代码信号**:鉴权中间件覆盖面缺口〔S〕;对象级授权缺失模式〔S〕(user_id 来自请求参数而非会话);可枚举 ID 直接引用;敏感字段明文返回或落日志;SQL 拼接 - **默认档****硬默认**——Web / API 系统一律 standard,无 R4 exclude 出口(成本极低 × 价值极高);其余九轴均为软默认 - **档位语义**:full = 未授权视角全矩阵(匿名 + 低权角色对全部高危资源的可达性探测)+ 敏感数据流追踪 + 注入面;standard = 高危资源越权抽样 + 注入面 / 敏感暴露扫描;light = 设计层审查(Cx 记录)。**越权功能正确性用例归功能域 permission 轴产出**(第 2 节裁决),本轴不重复产 - **执行归属**:agent(复用 API 测试基建与测试账号矩阵;方法基线 `methods/permission.md`) - **成本因子**:低——测试账号矩阵是唯一前置 - **消费方式**:用例型——standard 及以上产手动用例(type: security,标签 `[安全]`);light 产 Cx 审查条目 ## 5. 轴 3 可靠性(reliability) - **需求信号**:可用性承诺(9x%);降级预案;容灾要求;"不能丢消息"类硬约束 - **代码信号**:重试逻辑与重试上限;超时配置;消息队列消费与 ack;断路器;事务边界〔S〕;补偿 / 回滚逻辑 - **默认档**:软默认——有异步 / 第三方依赖信号 → standard;无 → light - **档位语义**:full = 故障注入矩阵(依赖宕机 / 超时 / 拒绝 / 脏数据)+ 恢复验证;standard = 超时 / 重试 / 幂等 / 降级专项用例("失败 → 重试 → 恢复"原则的类型化落地);light = 清单审查(超时有无 / 重试上限 / 幂等键 / 消息 ack 语义) - **执行归属**:standard 及以下 agent;故障注入 = agent 设计 + 可控环境执行 - **成本因子**:故障注入需可控环境;standard 无特殊成本 - **消费方式**:用例型——standard 及以上产 type: reliability 用例(标签 [可靠]);light 产清单条目 ## 6. 轴 4 并发一致性(concurrency) - **需求信号**:库存 / 名额 / 配额;抢购;"全局唯一"类约束;多人同时编辑 - **代码信号**:check-then-write 模式(先查后写无锁)〔S〕;共享可变状态〔S〕;扣减逻辑;依赖唯一约束兜底的写入路径 - **默认档**:软默认——有共享可变资源信号 → standard;无 → light - **档位语义**:full = 竞争窗口分析 + 并发用例矩阵(同一资源 × 全部竞争写入路径)+ 真实并发执行;standard = 关键竞争点并发用例(衔接 api-testing 并发能力);light = 竞态模式代码审查 - **执行归属**:agent - **成本因子**:可重置数据 - **消费方式**:用例型——standard 及以上产 type: concurrency 用例(标签 [并发]);light 产清单条目 ## 7. 轴 5 兼容性(compatibility) - **需求信号**:明确支持的浏览器 / 设备清单;企业客户旧环境(旧内核);跨端一致性要求 - **代码信号**:有前端(扫描器探测 package.json 前端依赖 / .vue / .svelte / 多 .html;移动端信号同计为有前端——pubspec.yaml(Flutter)、react-native/@tarojs/@dcloudio 跨端依赖、project.config.json 小程序配置);浏览器特性 API 使用(IntersectionObserver 等);UA 判断分支;响应式断点;多端平台分支(Platform.OS / kIsWeb / wx.getSystemInfo / `#ifdef MP-WEIXIN` 等);系统版本门槛(minSdkVersion / deployment_target 等) - **默认档**:软默认——有前端 → light;有明确支持清单 → standard - **档位语义**:full = 支持矩阵逐格(浏览器 × 设备 × 分辨率 × P0 路径);standard = 支持清单矩阵 × P0 路径;light = 最新 Chrome / Safari / Edge / Firefox 冒烟 - **执行归属**:agent + Playwright 项目矩阵 - **成本因子**:多浏览器 CI runner;真机(移动端超出 v1 范围) - **消费方式**:用例型——standard 及以上产 type: compatibility 用例(标签 [兼容]);light 产冒烟清单条目 ## 8. 轴 6 无障碍(accessibility) - **需求信号**:政企 / 教育政务客户;无障碍合规要求;投标条款 - **代码信号**:有前端即最低信号(语义化标签缺失、img 无 alt、键盘不可达、表单无 label——由 axe 扫描器核实) - **默认档**:软默认——有前端 → light - **档位语义**:full = WCAG 2.2 AA 逐页审计 + 键盘全路径 + 读屏抽样(读屏归人工);standard = axe 全页扫描 + 违规分级 + 关键流键盘走查;light = axe 扫描 P0 页面 - **执行归属**:agent + axe-core(Playwright 集成) - **成本因子**:极低 - **消费方式**:审查 / 脚本型——任意档位产 axe 扫描任务与违规清单(客观违规项分级呈现);full 的读屏抽样子项标注人工 - **边界**:主观判定类(对比度阈值争议、读屏体验)标人工复核,agent 只出客观违规清单 ## 9. 轴 7 视觉一致性(visual) - **需求信号**:品牌规范验收;设计稿交付(Figma);视觉回归要求 - **代码信号**:有前端即信号;已有截图测试(toHaveScreenshot 等) - **默认档**:软默认——有前端 → light - **档位语义**:full = 全页面截图基线 + 逐变更 diff;standard = 关键页基线 + diff;light = P0 页面截图存档供人比对(不自动判) - **执行归属**:agent + Playwright screenshot - **成本因子**:低;基线维护与动态内容遮罩规则(时间 / 头像 / 随机推荐位)是主要复杂度 - **消费方式**:脚本型——standard 及以上产截图基线执行物;light 产截图存档任务 - **防 flaky 硬约束**:自动 diff 必须先声明遮罩规则,未声明遮罩的 diff 失败不判 Bug ## 10. 轴 8 国际化(i18n) - **需求信号**:海外 / 多语言市场;RTL 语言;跨时区用户群;本地化交付 - **代码信号**:i18n bundle / locale 目录(扫描器探测);日期货币格式化库;硬编码文案(S 级复核);时区处理逻辑 - **默认档**:软默认——无信号 exclude(记录扫描结果);有信号 → standard - **档位语义**:full = 伪本地化全量 + RTL 布局走查 + 格式矩阵(日期 / 货币 / 电话 / 时区 / 复数规则);standard = 目标语言集核心流 + 格式抽样;light = 硬编码文案扫描 + 代表性页面伪本地化 - **执行归属**:agent - **成本因子**:翻译数据依赖(伪本地化不依赖) - **消费方式**:用例型——standard 及以上产 type: functional 用例加标签 [国际化];light 产扫描条目 ## 11. 轴 9 迁移与升级(migration) - **需求信号**:存量系统迭代;数据结构变更公告;灰度共存 / 版本升级 - **代码信号**:DB migration 文件(扫描器探测 migrations / alembic / flyway 目录);数据回填脚本;双写逻辑〔S〕;API 多版本共存 - **默认档**:软默认——有 migration 文件 → standard;无 → 存量系统 light / 绿地项目 exclude(记录判断依据) - **档位语义**:full = 升级路径矩阵(版本 × 数据形态)+ 回滚验证 + 新旧数据共存探测;standard = 代表性升级用例 + 回滚一例;light = migration 脚本审查(可回滚性 / 兼容性 / 回填幂等) - **灰度共存专项(需求信号命中灰度时并入对应档位一并交付)**:新版本自身功能之外覆盖三条链路——① 灰度路由正确性:命中小流量规则的请求进新版、未命中留在旧版(用例各自验证一侧);② **出界处置**:与用户确认哪些指标越界即触发暂停 / 回滚(错误率 / 资损告警阈值等),并对"越界 → 暂停 → 回滚 → 数据一致"至少演练一次;③ **出界留痕**:每轮灰度的范围、比例、指标快照与出界事件记录落盘,作为下一步扩大灰度的依据——禁止凭印象全量 - **执行归属**:agent - **成本因子**:可重置的存量数据快照 - **消费方式**:用例型——standard 及以上产 type: functional 用例加标签 [迁移];light 产脚本审查条目 ## 12. 轴 10 契约与集成(contract-integration)+ 消费方式映射 ### 轴 10 契约与集成 - **需求信号**:第三方依赖清单;对外 API 的消费方;微服务边界;webhook - **代码信号**:外部 HTTP / gRPC 调用;消息契约;OpenAPI 定义变更;回调处理 - **默认档**:软默认——有外部依赖 → standard;无 → exclude(记录扫描结果) - **档位语义**:full = 消费者驱动契约(Pact 式)+ 依赖故障矩阵(超时 / 错误码 / 格式变化 / 限流);standard = 关键依赖 mock 与真实双跑 + 异常分支用例;light = 调用面清单 + 错误处理审查 - **执行归属**:agent;契约测试框架执行为移交候选 - **成本因子**:mock / 沙箱可用性 - **消费方式**:用例型——standard 及以上产 type: functional 用例加标签 [集成];契约执行物进执行策略裁决 ### 消费方式映射总表(test-case-writing 消费 type_scope 时执行) | 消费方式 | 适用(standard 及以上;例外档位见格内标注) | 产出 | |---|---|---| | 用例型 | 轴 2(type: security,标签 `[安全]`)、轴 3(reliability)、轴 4(concurrency)、轴 5(compatibility);轴 8 / 9 / 10(type: functional + 标签) | 手动用例进 markmap,type / 标签见左 | | 脚本型 | 轴 1(压测模型 + 执行物)、轴 6(axe 扫描任务与违规清单,**任意档位**)、轴 7(截图基线) | 不产手动用例,产执行物进执行策略裁决 | | 审查型 | 各轴 light 档 | 扫描 / 审查清单条目(Cx 通道),不进用例正文 | > exclude 轴不产出;handoff 轴只产移交包。depth=light 的轴 2 / 3 / 4 / 5 也按审查型走 Cx 通道。 ## 13. 深度校准与停止准则 ### 升降档规则(R1–R6;唯一声明的冲突裁决:R6 > R1) > 编号区分:本表 R1–R6 是**升降档规则**编号;各文档中「2026-08-23 Rn 修复/收敛」的 Rn 是内部迭代轮次编号;Risk Map 中的 R1、R2… 是**风险条目**编号——三者同名不同义,以上下文为准。 | 规则 | 触发条件 | 动作 | |---|---|---| | R1 风险升档 | 该轴覆盖的场景挂 Critical 风险 → full;High → 至少 standard | 升档,rationale 挂风险编号 | | R2 双源信号 | 同轴命中 ≥2 类独立信号(需求级 + 代码级) | 升一档 | | R3 历史缺陷 | 该轴维度历史 Bug ≥3 或出过线上事故 | 升一档 | | R4 无信号降档 | 需求 + G 级 + S 级扫描全灭(硬默认轴无此出口) | 可降至 exclude;G + S 双清单落盘 | | R5 成本门 | 执行前提(环境 / 数据 / 工具)不可得 | **执行降级不决策降级**:depth 保持,execution_status 记 blocked + todo 向谁索取 | | R6 预算约束 | full 轴数 > 3(两域合并计) | 按风险排序裁剪至 ≤3,记录排序依据。被裁剪的 Critical 轴触发**预算裁决检查点**(用户可扩预算,扩预算时 depth_budget 记 budget_review) | ### 停止准则 每轴的**档位语义就是停止准则**(§3–§12 各轴写死的动作清单勾完即停);策略落盘时生成足够性声明:逐轴列档位动作清单与完成状态。禁止"再测测看"式开放式深挖——想加深必须升档并说明触发了哪条 R 规则。 ## 14. 引用方式 test-strategy 工作流第 4 步按组加载本文件对应小节(`../core/test-type-matrix.md`);test-case-writing 阶段一消费 type_scope 时加载第 12 节映射表。本文件不复制进任何 SKILL.md(单一真相红线)。