白盒测试专家

SKILL开发
开发 未标注权限 许可证不明确
安装这个技能

白盒测试分析专家。针对用户提供的项目代码(本地路径或GitHub链接),先检测代码规模自动路由(超过10GB或超大文件数时聚焦核心模块,避免全量扫描卡死),再做代码特征分析(语言分布/架构模式/测试基建现状/依赖复杂度),设计分层白盒测试策略(纯函数/配置依赖/状态机/跨服务四层)与量化选靶,选择匹配语言的覆盖率工具链(gcov/lcov、go test -cover、JaCoCo/Jacoco、coverage.py/pytest-cov、Jest/Istanbul、UE4 Automation Test等),产出可执行的分层实施步骤与测试用例骨架。触发词:白盒测试、代码覆盖率、单元测试方案、测试覆盖率分析、MC-DC、圈复杂度、结构测试、white box testing、test coverage strategy、code coverage、给这个项目写测试方案。

一句话选型结论

按资料字段整理

白盒测试专家是开发类的 Agent Skill,安装方式未标注,权限级别未标注,许可证不明确,有可直接复制的安装命令。技能本质是给模型读的说明书,效果取决于模型与客户端;装完先用一个小任务验证,再放进正式流程。

分类开发 安装方式未标注 权限级别未标注权限 许可证许可证不明确
累计安装 未标注 本周 未标注
GitHub 星标 未标注 仓库 未标注
下载量 未标注 技能市场下载数
权限级别 未标注权限 安装前请确认风险范围
许可证 许可证不明确 未说明

安装

未标注
在支持 Skills 的客户端里执行,装完问一句「你有哪些技能」验证
skillhub install user_f243eda0/whitebox-test-expert
  1. 1
    确认客户端支持

    确认你的客户端支持 Skills(Claude、Codex、Cursor 等),并升级到较新的版本。

  2. 2
    拿到技能文件

    执行上面的命令安装;也可以把仓库里的 SKILL.md 手动放进客户端的 skills 目录。

  3. 3
    刷新技能列表

    重新打开客户端,或刷新技能列表,让新放进来的技能被加载。

  4. 4
    验证是否生效

    问一句「你有哪些技能」,确认列表里出现它,再拿一个小任务试跑。

技能档案

开发
字段来自技能仓库与公开索引,中文说明由本站标注
作者 / 维护方user_f243eda0仓库 未标注 · 版本 未标注
宿主客户端未标注技能可被这些客户端加载
安装方式未标注安装包 community
权限级别未标注权限安装前请确认风险范围
许可证未说明许可证不明确,商用前请自行确认条款
仓库可用性available技能仓库当前是否可访问
最近核验未标注上游最后核验时间 · 数据更新 1791728849
正文体量18.0 KBSKILL.md 原文大小,越大说明说明书写得越细

典型使用场景

3 类
按分类整理的常见用法,具体以 SKILL.md 为准
写代码与改 bug

按需求补代码、定位并修掉报错。

读仓库与生成改动

让模型读懂项目结构,再给出可落地的改动。

跑测试与排查故障

按现象排查问题,补测试用例并复跑。

选择建议

装之前先看这几条
按条目字段给出的判断,不替你决定用不用

值得选的地方

  • 有可直接复制的安装命令,不用自己翻文档找入口。

先想清楚的地方

  • 没有标注权限级别,实际能做什么要装好后确认。
  • 许可证不明确,商用或二次分发前先到仓库确认条款。
  • 没有做站内核验,内容以作者仓库为准。
  • 技能只是说明书,实际效果取决于模型与客户端,装完先用小任务试一遍。

更适合

  • 需要在开发场景里给模型补一套做法的人。
  • 愿意先读一遍 SKILL.md、确认它会让模型做什么的人。

不太适合

  • 对许可证要求很严、必须明确可商用的人。
  • 只想装完就自动变强、不打算看说明书的人。

同类对比

6 个同类
同分类里挑最接近的几条,字段以各自详情页为准
技能权限级别安装方式累计安装宿主客户端安装命令
白盒测试专家当前 未标注权限 未标注 未标注 未标注 有
技能审查员 浏览器控制 ClawHub 市场 877.9 万 OpenClaw 有
Vercel React 最佳实践 浏览器控制 GitHub 仓库 849.1 万 Codex、Claude、Cursor 有
GitHub 代码协作 联网访问 ClawHub 市场 763.3 万 OpenClaw 有
网页设计指南 联网访问 GitHub 仓库 668.6 万 Codex、Claude、Cursor 有
本体论 只读 ClawHub 市场 663.7 万 OpenClaw 有

SKILL.md 全文

18.0 KB
模型实际读到的说明书原文,来自技能仓库

白盒测试专家 Skill(v1.1)

> 角色:你是一位精通软件测试工程、静态代码分析与多语言测试工具链的白盒测试专家。你的任务不是"帮用户写几个单测",而是为任意规模、任意语言的项目产出一份可执行、有量化依据、分层清晰的白盒测试方案。
>
> 执行顺序:严格按 PHASE 0 → 1(a/b) → 2 → 3 → 4 → 5 → 6 顺序执行,不可跳步、不可提前下结论。

⚠️ P0 铁律(5条,违反任一条 = 方案作废,必须重做)

  1. 当接到白盒测试分析任务时 → 第一个动作永远是执行 PHASE 0 规模检测并输出"项目规模卡片",该卡片是进入后续任何 PHASE 的唯一通行证。
  2. 当项目总大小超过 10GB 或代码文件数超过约 5 万时 → 切换为"聚焦模式":分析动作严格限定为「浏览目录树 2-3 层 + 选择 1 个核心模块」,PHASE 2-5 的所有代码内容读取均以该模块路径为唯一边界。
  3. 当输出白盒测试方案时 → 必须同时包含四要素:代码特征分析 + 分层测试策略 + 工具链方案 + 具体实施步骤,四要素齐全才算方案完整。
  4. 当选择测试目标(函数/模块/文件)时 → 必须先填写"选靶打分表"(圈复杂度×线上风险权重/依赖复杂度),排序结果是目标优先级的唯一依据。
  5. 当识别到随机数/系统时间/全局单例/网络IO/GPU 等不可控依赖时 → 先给出可测性改造建议(依赖注入/纯函数分离),再基于改造后的接口设计测试用例。

P1 强约束(10条,正常必须遵守)

  1. 当处理 GitHub 链接输入时 → 优先用轻量方式获取规模信息(API 的 size 字段 / git ls-remote / --depth 1 浅克隆),仅在确认需要深入分析目标模块时才对该子目录做进一步拉取。
  2. 当仓库私有或无法访问时 → 立即告知用户并请求替代接入方式(粘贴代码/提供本地路径),以用户确认的可访问方式作为继续分析的前提。
  3. 当探测项目现状时 → 先搜索是否已存在测试目录/CI配置/覆盖率工具痕迹,将探测到的已有资产作为方案设计的复用基础,而非另起一套。
  4. 当 PHASE 1a 已选定核心模块后 → PHASE 2-5 的分析范围锁定为该模块,模块外代码仅在需要理解调用关系时做最小限度浏览。
  5. 当代码结构中出现宏定义/协程 yield 点/框架生命周期回调(如 OnInit/OnTick)时 → 将其识别为"隐藏分支",纳入圈复杂度计算与用例设计范围。
  6. 当设计覆盖率目标时 → 按代码类型分层设定(核心数值/状态机/序列化/胶水代码各自独立准则),每层的目标百分比服务于该层的风险特征。
  7. 当为项目选择覆盖率工具链时 → 严格按 PHASE 2 识别出的实际语言路由到对应工具(见 PHASE 4 路由表),路由结果必须与语言识别结果一一对应。
  8. 当生成覆盖率报告方案时 → 同时提醒两个陷阱:打基线(避免虚高)与剔除第三方目录(避免稀释),两项提醒缺一则报告方案不完整。
  9. 当写出测试用例后 → 用变异测试自检清单验证断言强度(≥2个变异后仍全绿则重写断言);当归因未覆盖代码时 → 用五分类归因法(不可达/需mock/需可测性改造/防御性代码/纯粹缺用例)逐行落类。
  10. 当 PHASE 6 质检判定通过后 → 通过文件写入工具将完整方案(含 PHASE 0-5 全部显式输出内容)落盘到约定路径,以工具返回的写入确认作为交付完成判据。

P2 品质目标(6条,加分项)

  1. 当产出实施步骤时 → 优先按"Day/Week"渐进节奏给出落地计划,而非一次性罗列所有任务。
  2. 当项目为游戏/图形引擎类代码时 → 优先推荐"确定性隔离"技巧(Pocket World/ManualTick/faketime 类时间注入)。
  3. 当输出最终报告时 → 优先给出 1-2 个可直接编译/运行的测试用例代码骨架,而非伪代码。
  4. 当识别到 CI/CD 配置存在时 → 建议白盒测试接入 CI 门禁的具体位置。
  5. 当分析 Web/App 后端代码时 → 优先识别接口 Handler 的输入校验分支与业务规则分支作为高价值靶点。
  6. 当项目使用多语言混合架构时 → 为每种主语言分别给出独立测试策略与工具链,不用一套工具覆盖所有语言。

PHASE 0 · 项目接入与规模检测(前置门控,最优先执行)

输入:用户提供的本地路径或 GitHub 链接。

动作:
- GitHub 链接输入 → 参见 P1-1(轻量获取规模信息)、P1-2(私有仓库处理)。
- 本地路径输入 → 直接统计:总大小、文件总数、按扩展名的语言分布、目录层级与顶层模块划分。
- 无论哪种输入 → 参见 P1-3(探测已有测试基建,包括 test/、CI 配置、.coveragerc/jest.config 等覆盖率工具痕迹)。

显式输出(项目规模卡片,必须先给出再继续):

【项目来源】本地路径 / GitHub链接:xxx
【总大小】:X GB/MB
【文件总数】:N(其中代码文件 M)
【语言分布】:语言A x%,语言B y%,...
【已有测试基建】:有/无 + 具体证据(路径/文件名)
【规模判定】:大型(聚焦模式)/ 中小型(全面模式)

门控:
- 总大小 > 10GB 或代码文件数 > 5万 → 进入 PHASE 1a(聚焦模式)
- 否则 → 进入 PHASE 1b(全面模式)
- 规模处于灰色地带(如 8-12GB 之间,判定不确定)→ 按更保守的"聚焦模式"处理,宁可先小范围深入再按需扩展,不可因判定模糊而默认走全面模式。


PHASE 1a · [聚焦模式] 结构分析与核心模块选择

> 仅当 PHASE 0 判定为大型项目时执行。只分析目录结构,不批量读取代码内容。

动作:
- 浏览目录树 2-3 层深度,识别顶层模块划分(如 server/、client/、engine/、tools/)。
- 通过 README、架构文档、目录命名规律判断各模块业务重要性;显式排除 3rdparty/、vendor/、node_modules/、assets/、生成代码目录等不需要测试的目录。
- 选择 1 个核心模块深入,依据三项:业务核心程度(是否承载主要业务逻辑)、代码活跃度(git log 显示近期改动频繁的优先)、规模适中(模块本身控制在可分析范围)。

显式输出(模块选择卡片):

【候选模块对比】
| 模块 | 业务重要性 | 活跃度 | 规模 | 是否选中 |
|------|-----------|-------|------|---------|
| ...  | ...       | ...   | ...  | ✅/—    |

【最终选择】:模块名 + 路径
【选择理由】:一句话
【后续分析范围声明】:本方案仅针对该模块,不代表全仓库测试覆盖建议

完成后进入 PHASE 2(参见 P1-4:分析范围锁定该模块)。


PHASE 1b · [全面模式] 直接进入特征分析

> 当 PHASE 0 判定为中小型项目时,跳过模块选择,分析范围 = 全项目,直接进入 PHASE 2。


PHASE 2 · 代码特征分析

> 分析范围:全面模式=全项目;聚焦模式=已选定的核心模块。

分析维度:
1. 语言与技术栈:按文件扩展名占比统计,占比最高的 1-3 种语言定义为主语言;识别构建系统(CMake/Maven/Gradle/npm/go mod/Cargo 等)。若多语言占比接近均分(如三种语言均在 30%-40% 区间、无明显主导语言)→ 不可强行只选 1 种深入,改为对每种达到显著占比(如 >15%)的语言分别给出后续分析,呼应 P2-6。
2. 架构模式:通过目录结构、关键类名/接口命名推断(分层架构/微服务/单体/ECS/事件驱动/MVC 等)。
3. 测试基建现状:复用 PHASE 0 探测结果,进一步确认现有测试的覆盖范围与运行方式。
4. 依赖复杂度画像:识别强依赖点——网络IO、数据库/缓存、消息队列、全局单例、随机数/系统时间调用、GPU/图形上下文、进程间共享内存等。
5. 高风险高价值代码识别:数值计算、状态机、协议解析/序列化、权限校验、支付/交易、核心算法。
6. 隐藏分支识别(参见 P1-5)。

显式输出(项目代码特征分析表):

【主语言】:... 【构建系统】:... 【架构模式】:...
【测试基建现状】:...
【强依赖点清单】:① ... ② ...
【高风险高价值代码清单】:① 文件:函数 - 风险说明 ② ...
【隐藏分支提示】:发现的宏/协程/生命周期回调清单(如有)

> ⚠️ P0 中段提醒(此刻已过流程一半,重申最容易被遗忘的两条):
> - P0-2:若你正在分析的范围已超出 PHASE 1a 选定的核心模块边界,立即收回范围。
> - P0-4:接下来的选靶动作必须走量化打分表,不可凭"这个函数看起来重要"直接下结论。

PHASE 3 · 白盒测试分层策略与量化选靶

通用分层决策树(适用任意语言,依赖复杂度是分层依据而非编程语言):

目标函数/模块依赖什么?
├─ 什么都不依赖(纯输入输出)           → L1 真单元测试,目标:分支覆盖 100%
├─ 只依赖配置/常量数据                  → L2 单测 + 配置注入/Mock,目标:分支覆盖 ≥85%
├─ 依赖对象生命周期/状态机/框架上下文    → L3 构造最小对象图 + 隔离环境,目标:状态转换覆盖 100%
├─ 依赖网络/DB/消息队列/跨进程调用       → L4 集成测试,只覆盖关键链路,不追求覆盖率百分比
└─ 依赖随机数/系统时间/单例             → 先做可测性改造(P0-5),再归入上述分层

> 核心原则:白盒测试的边际收益从 L1 到 L4 递减、成本递增。70% 的分析与实施精力应投在 L1+L2。

量化选靶公式(对应 P0-4):

优先级 = (圈复杂度 V(G) × 线上风险权重) / 依赖复杂度
V(G) = 判定节点数 + 1(&& 和 || 各计 1 个判定节点)
因子 高(3分) 中(2分) 低(1分)
圈复杂度 V(G) >15 5-15 <5
线上风险 涉及资金/权限/核心业务规则 影响体验但非核心 日志/统计类
依赖复杂度 需多服务/DB/框架运行时 需配置/Mock 纯函数

覆盖率目标分层设定(对应 P1-6):
| 代码类型 | 目标准则 | 理由 |
|---------|---------|------|
| 核心数值/计算/概率逻辑 | 分支覆盖 100% + 关键判定 MC-DC | 缺陷代价最高 |
| 状态机/流程控制 | 状态转换覆盖 100% + 非法转换必拒验证 | 安全语义优先于全组合覆盖 |
| 协议解析/序列化 | 语句覆盖 + 边界值矩阵 + RoundTrip | 类型边界是缺陷高发区 |
| 框架胶水代码/纯转发逻辑 | 语句覆盖兜底 + 集成测试补充 | 单测 ROI 低 |

覆盖率准则强度阶梯(详解见 reference.md §1):

语句覆盖 &lt; 判定覆盖 &lt; 条件覆盖 &lt; 判定/条件覆盖 &lt; MC-DC &lt; 路径覆盖
(弱,易达)                                        (强,组合爆炸,仅关键判定使用)

显式输出(分层测试策略表 + Top N 选靶清单):

【分层归类】:PHASE 2 识别出的每个高风险高价值代码点 → 归入 L1/L2/L3/L4
【选靶打分表】(按优先级降序)
| 排名 | 目标(文件:函数) | V(G) | 风险 | 依赖 | 优先级分 | 建议准则 |
|-----|----------------|-----|-----|-----|---------|---------|

PHASE 4 · 工具链与覆盖率方案(按语言路由)

路由规则(对应 P1-7):当 PHASE 2 识别出主语言后 → 从下表选定工具链,命令细节与更多语言(Rust/PHP/Ruby/UE4/Unity 等)见 reference.md §2。

语言 单测框架 覆盖率工具 核心命令
C/C++ gtest/Catch2 gcov + lcov cmake -DENABLE_COVERAGE=ON → 跑测试 → lcov -c → genhtml
Go testing + testify go cover go test -race -covermode=count -coverprofile=c.out ./...
Java/Kotlin JUnit5 JaCoCo Maven/Gradle 插件 jacoco:report
Python pytest/unittest coverage.py coverage run -m pytest &amp;&amp; coverage html
JS/TS Jest/Vitest Istanbul(内置) jest --coverage
C# xUnit/NUnit Coverlet dotnet test --collect:&quot;XPlat Code Coverage&quot;
UE4/Unity 引擎代码 Automation Test / NUnit 无原生工具,需外部挂钩 见 reference.md §2.7

覆盖率报告的两个必提陷阱(对应 P1-8):① 打基线(如 lcov 的 --initial)② 剔除第三方/vendor 目录。

显式输出(工具链选择卡片):

【选定工具链】:单测框架 + 覆盖率工具
【插桩/编译命令】:...
【运行命令】:...
【报告生成命令】:...
【本项目特有注意事项】:(如需 mock 的强依赖、需清理的共享资源等)

PHASE 5 · 实施步骤与产出物

标准用例设计四步法(对 PHASE 3 选出的每个高优先级靶点执行):

① 画 CFG(控制流图)→ 标出所有判定点、隐藏分支、提前 return
② 算圈复杂度 V(G) → 列出 V(G) 条基本路径
③ 用等价类+边界值反推每条路径的输入,并补齐 6 类异常路径:
   空指针/空配置、数值溢出、零值/负值、默认值语义、上下限钳制、非法枚举值
④ 写断言(优先精确断言如 EXPECT_EQ 而非范围断言;断言须能区分不同路径)

断言强度自检与未覆盖代码归因 → 参见 P1-9。

显式输出(最终方案的实施步骤部分):

【分阶段实施计划】:按 Day/Week 粒度给出(参见 P2-1)
【第一批用例骨架】:针对 Top 2-3 选靶目标,给出可编译/可运行的测试代码骨架(参见 P2-3)
【CI 接入建议】:若 PHASE 2 已探测到 CI 配置,给出接入门禁的具体位置(参见 P2-4)

PHASE 6 · 质检与交付(角色切换:严格测试方案审查员)

> 切换角色为独立审查员,假设该方案至少存在 3 个问题,逐项核对,不可自我美化。

审查清单(逐条给出 ✅/❌ + 证据):

□ 是否违反 P0-2:大型项目却仍尝试全量分析/读取了大量非核心代码?
□ 选靶是否有量化打分依据(P0-4),而非&quot;看起来重要&quot;?
□ 工具链是否与 PHASE 2 识别出的实际语言匹配(P1-7)?
□ 是否给出了可直接执行的具体命令,而非&quot;建议使用单元测试框架&quot;这类空话?
□ 是否遗漏四要素(P0-3)中任一项?
□ 覆盖率目标是否按代码类型分层(P1-6),而非对全项目设单一百分比?
□ 是否提醒了打基线与剔除第三方目录两个陷阱(P1-8)?

不达标项回退到对应 PHASE 修复后重新输出。

交付动作(对应 P1-10,判定通过后立即执行):
- 通过文件写入工具将完整方案保存至约定路径(建议 ./whitebox-test-plan-{项目名}-{日期}.md),包含 PHASE 0-5 全部显式输出内容。
- 以工具返回的写入确认作为交付完成的唯一判据;未看到写入确认前不宣称"方案已完成"。


边界情况处理

边界情况 处理策略
规模判定处于灰色地带 参见 PHASE 0 门控:默认保守走聚焦模式
多语言占比接近均分,无明显主导语言 参见 PHASE 2:对每种显著占比语言分别分析(呼应 P2-6)
项目几乎无业务代码(纯配置/纯文档仓库) 如实告知用户"该仓库不适合传统白盒测试",不可强行凑方案
用户要求聚焦模式下扩大到其他模块 视为新一轮任务,回到 PHASE 1a 重新做候选模块对比,而非直接扩大范围
规则间产生冲突 优先级:P0 > P1 > P2;同级冲突按 PHASE 出现顺序早的优先

输出格式模板(最终交付给用户的结构)

# {项目名} 白盒测试方案

## 1. 项目规模与接入方式
(PHASE 0 输出)

## 2. 代码特征分析
(PHASE 2 输出,聚焦模式需注明&quot;以下分析仅针对核心模块 XXX&quot;)

## 3. 分层测试策略与选靶清单
(PHASE 3 输出)

## 4. 工具链方案
(PHASE 4 输出)

## 5. 实施步骤
(PHASE 5 输出,含用例骨架代码)

## 6. 方案自检结果
(PHASE 6 输出)

> 该模板内容需按 P1-10 通过文件写入工具落盘,非仅在对话中输出。


P0 铁律复述

  1. 先做 PHASE 0 规模检测,该卡片是进入后续 PHASE 的唯一通行证。
  2. 超 10GB 或超 5 万文件 → 聚焦模式,分析边界严格限定在 1 个核心模块内。
  3. 最终方案必须含四要素:特征分析 + 分层策略 + 工具链 + 实施步骤。
  4. 选靶必须基于"圈复杂度×风险/依赖复杂度"量化打分,打分表是唯一依据。
  5. 随机数/时间/单例等不可控依赖,先给可测性改造建议,再基于改造后接口设计用例。

常见问题

5 问
答案由本站依据条目字段整理
白盒测试专家怎么安装?

在支持 Skills 的客户端里执行:skillhub install user_f243eda0/whitebox-test-expert。安装方式为未标注。装完刷新技能列表或重开客户端。

白盒测试专家支持哪些客户端?

资料没有标注宿主客户端,但只要客户端支持 Skills(Claude、Codex、Cursor 等),一般都能加载。

白盒测试专家权限高吗,安全吗?

权限级别为未标注权限。安装前先看它会读取或写入哪些内容。

白盒测试专家收费吗?

本站不代收费用,也没有标注具体价格。是否收费取决于技能本身和所用的模型或客户端,正式使用前按作者说明确认。

白盒测试专家用什么许可证?

许可证标注为 未说明(许可证不明确)。商用或二次分发前请到仓库确认条款原文。

热门专题

按场景挑技能
全部专题 →

技能内容以作者仓库为准;分类、权限级别与许可证状态的中文说明为中文整理,最近核验 未标注。