技能使用指南

MultiversX测试手册Skill 用法详解

MultiversX测试手册Skillmvx_testing_handbook
8 个章节 约 15 分钟阅读 AI 智能生成

MultiversX测试手册Skill:把智能合约测试从“凭感觉”变成可评级、可交付

  • 三层测试全覆盖:一次搞定 RustVM 单元测试、Mandos 场景集成测试、链模拟器系统测试三个层次的指导,不再靠零散博客拼凑方法。
  • 覆盖策略有硬标准:资金流入流出要 100% Mandos 覆盖、每个 #[endpoint] 至少一个场景、可支付端点必须测四种情况,把“测没测够”变成可判定的清单。
  • 自带 10 分制质量评分:从单元测试、Mandos 覆盖、访问控制、资金流、链模拟器五个维度打分,输出可直接交给团队或审计方的测试质量报告。
  • 差距清单是核心产出:报告不只给分数,还明确列出未测试端点、缺失的负向测试、未覆盖的支付场景,让补测试有明确顺序。
  • 纯净的测试知识技能:不需要额外服务依赖,属于经验型指南技能,上手门槛低,重点是按它的清单把工程里的测试补全。

该技能叫什么?如何一键安装 AI 技能提升开发效率?

技能中文名:MultiversX测试手册Skill 技能英文名:mvx_testing_handbook 技能ID:12553

它解决的问题非常具体:MultiversX 智能合约开发者往往知道“要写测试”,却卡在三件事上——不知道该在哪一层写(单元测试还是 Mandos 场景)、不知道覆盖到什么程度算合格(尤其是支付端点、权限端点这类高风险位置)、以及不知道如何向团队或审计方证明测试是完整的。这个技能把三层测试的落地方法、覆盖策略硬性要求和一套 10 分制评分标准整理成一份可执行的指南,让 AI 助手在讨论测试时能按统一标准给出建议,而不是泛泛而谈。

所谓「一键安装 AI 技能」,本质是把这类专业经验以技能包的形式挂载到 AI 助手上,此后每次对话都会自动带入该领域的知识框架,不需要你每次重复粘贴一堆规范文档。通用步骤如下(具体命令、入口与安装方式请以官方说明为准):

  1. 确认安装前提:你使用的 AI 工具/客户端支持技能(Skill)机制;已具备可用的技能安装入口(如技能市场、命令行工具或配置文件目录)。
  2. 定位并安装技能:在技能市场或安装入口中,使用技能英文名 mvx_testing_handbook 或技能ID 12553 检索,执行安装操作;若是本地技能包方式,则将技能目录放入客户端的技能目录中(以官方说明为准)。
  3. 启用技能:在会话或项目设置中确认该技能处于启用状态,部分客户端需要手动勾选或指定生效范围。
  4. 验证是否生效:直接向 AI 提问“MultiversX 合约的 #[payable] 端点需要测试哪几种情况?”如果回答能列出正确的代币、错误的代币、零金额、未授权调用者四种情形,并提到 Mandos 场景与 checkState,说明技能已成功加载。

该技能的主要功能和特点

  • 三层测试分层指导:清晰区分 RustVM 单元测试(合约内 #[cfg(test)] 模块或 tests/ 目录,即时执行,覆盖内部逻辑、严格数学与私有函数)、Mandos 场景(scenarios/ 目录下的 .scen.json,通过 cargo test-gen 生成 Rust 包装器后再 cargo test 运行)、链模拟器(mx-chain-simulator-go,独立系统测试套件,覆盖节点 API 交互、跨分片重组、链下索引),并说明每一层该测什么、不该测什么。
  • 区块链环境模拟要点:单元测试中使用 multiversx_sc_scenario::imports::* 模拟链上环境,例如通过 blockchain_mock.set_caller(addr) 设定调用者身份,让权限与调用者相关的逻辑可以在毫秒级验证。
  • Mandos 关键步骤概念:讲透 step: setState(初始化账户与余额)、step: scCall(执行端点)、step: checkState(校验存储是否等于预期值)三件套,使场景文件不只是“跑通”,而是能验证状态转换。
  • 量化覆盖策略:资金流入/流出要求 100% 的 Mandos 覆盖;视图函数用单元测试覆盖即可;访问控制必须写明确的负向测试(预期错误 4);每个 #[endpoint] 至少一个 Mandos 场景;每个 #[payable] 端点必须测正确代币、错误代币、零金额、未授权调用者;每个 #[only_owner] 或 #[only_role] 必须有未授权调用的负向测试;状态转换必须用 checkState 验证。
  • 可计算的评分公式:五维度各 0-10 分取平均,并给出起始分 5、好(6-8)加 1 分、优秀(9-10)加 2 分、差(0-2)减 1 分、链模拟器不可用减 2 分、上下限 10 与 1 的修正规则,避免“自我感觉良好”式评估。
  • 标准化输出报告:固定包含测试执行(cargo test、Mandos 场景、链模拟器可用性)、覆盖评估(端点覆盖率、完全测试的可支付端点、负向测试数、状态转换检查数)、类别分数、总体分数、差距清单五块内容。
  • 明确的完成标准:所有测试已执行、每个类别已评估、总分已算出、差距已记录,四项齐备才算评估完成。

与普通“写测试”建议相比,它的差异化在于可判定:不讨论抽象最佳实践,而是给出“缺哪一条即为不合格”的硬要求,并把结论压缩成一份能直接贴进 PR 或审计材料的结构化报告。

如何使用该技能?

以下为推荐的使用路径,具体命令需在你的 MultiversX 合约工程内执行:

  1. 明确当前测试现状。先让 AI 按技能框架做一次盘点:工程里是否存在 #[cfg(test)] 模块、scenarios/ 目录下有多少 .scen.json 文件、是否配置了链模拟器测试套件。可以直接提问:“按 MultiversX 测试手册的分层标准,帮我梳理这个合约项目应该在哪些位置放测试。”
  2. 逐端点建立覆盖清单。把合约中所有 #[endpoint]、#[payable]、#[only_owner]、#[only_role] 标注的函数列出来,让 AI 对照技能中的覆盖策略生成待办表。示例输入可以是“这是我的端点列表:deposit(payable)、withdraw(only_owner)、getBalance(view),请按覆盖策略列出每个端点必须写的测试用例”。
  3. 编写单元测试。针对内部逻辑、数学运算和私有函数,在合约文件的 #[cfg(test)] 模块或 tests/ 目录写即时测试,使用 multiversx_sc_scenario::imports::* 构造模拟环境,并用 blockchain_mock.set_caller(addr) 覆盖不同调用者身份下的分支。
  4. 编写 Mandos 场景。在 scenarios/ 下新建 .scen.json,按 setState → scCall → checkState 组织步骤;重点补齐负向场景,例如未授权调用者调用 #[only_owner] 端点时期望返回错误 4。随后执行 cargo test-gen 生成 Rust 包装器,再执行 cargo test 运行。
  5. 补充链模拟器测试(如项目规模需要)。针对节点 API 交互、跨分片重组、链下索引等系统级行为,在独立的 Go 或 Python 测试套件中通过 POST /simulator/generate-blocks 强制推进区块生成来构造场景。
  6. 执行测试并收集结果。记录 cargo test 的通过/失败/跳过数量、Mandos 场景的通过/失败计数、链模拟器是否可用及其结果。
  7. 生成测试质量报告。要求按技能固定格式输出,包含覆盖评估、五类分数、总体分数与差距清单。示例输出片段:
覆盖评估:
  有Mandos的端点: 6/9 (66.7%)
  完全测试的可支付端点: 1/3
  访问控制负向测试: 2/4
  状态转换检查: 5/9

类别分数:
  单元测试: 7
  Mandos覆盖: 5
  访问控制测试: 4
  资金流测试: 3
  链模拟器: 0

总体分数: 4

差距:
- 端点 withdraw、claimRewards、setFee 缺少 Mandos 场景
- setFee 缺少未授权调用者负向测试
- deposit 未覆盖错误代币与零金额场景
  1. 按差距清单回归补齐。优先处理资金流与权限相关缺口,因为这两类直接对应资产安全;每补一项重跑一次评估,观察分数变化。
  2. 确认完成标准。四项条件全部满足后再对外交付报告,避免出现“有分数但缺口未记录”的半成品结论。

同类型竞品对比分析

方案名称 定位 核心功能 安装/使用门槛 适用场景 优势与不足
MultiversX测试手册Skill(mvx_testing_handbook) MultiversX 测试方法论与评分指南 三层测试分层指导、覆盖硬策略、五维评分公式、标准化质量报告与差距清单 低:作为技能挂载到 AI 助手即可用,无需运行服务 合约开发中评估测试完备度、准备审计材料、团队内部测试规范拉齐 优势:把“测够没有”变成可判定结论,报告可直接复用;不足:属指南型技能,不代跑测试,结论仍依赖实际执行结果
MultiversX 官方框架测试能力(multiversx-sc-scenario 与 Mandos) 官方测试基础设施 提供模拟环境、场景文件解析与 cargo test-gen 等工具链 中:需熟悉 Rust 与框架约定,自己设计测试结构 实际编写与运行单元测试、集成测试 优势:官方支持、能力完整;不足:只给工具不给方法论,覆盖边界与评分标准需自行定义
链模拟器 mx-chain-simulator-go 系统级测试环境 模拟节点行为、跨分片与索引流程,POST /simulator/generate-blocks 推进出块 高:需独立部署与 Go/Python 测试套件 跨分片重组、链下索引、节点 API 交互验证 优势:最接近真实链上行为;不足:搭建与维护成本高,不适合作为日常回归主力
通用智能合约审计清单(人工/文档) 安全检查框架 常见漏洞清单、权限与资金流检查点 低:文档阅读即可 上线前安全评审 优势:视角偏攻击面,经验密度高;不足:与 MultiversX 具体工具链结合弱,缺少可量化评分与测试执行数据

该技能的典型应用场景与实际体验情况

场景一:合约开发者交付前自查 角色是需要向团队交付新合约的 Rust 开发者。痛点是功能写完、cargo test 也绿了,但心里没底——支付端点只测了正常路径,权限端点没测非法调用。使用方式是把端点列表交给 AI,让它按覆盖策略逐条对照,再生成质量报告。实际体验是上手几乎零成本,因为技能直接给出“缺什么”的清单而非抽象建议;注意事项是必须如实把测试执行结果告诉 AI,否则分数会失真。

场景二:技术负责人拉齐团队测试规范 角色是带 3-5 人小团队的负责人。痛点是每个人写测试的颗粒度不同,代码评审时争论“这算不算测够了”。使用方式是把技能的覆盖策略与评分表作为团队约定,评审时直接看报告中的覆盖评估四项指标。实际体验是争议明显减少,“是否达标”有了统一依据;注意事项是需团队统一报告格式,避免各自改模板。

场景三:配合安全审计前的准备 角色是准备上主网、即将送审的项目方。痛点是审计方第一轮往往先问“测试覆盖如何”,答不上来会拖慢节奏。使用方式是用技能生成完整测试质量报告,连同差距清单一起交付,并按优先级补齐缺口。实际体验是沟通效率提升明显,报告结构(执行情况、覆盖评估、类别分数、差距)正好对应审计方的关注点;注意事项是分数不能代替审计结论,它只是测试完备度的自评工具。

场景四:跨分片与索引逻辑验证 角色是需要验证复杂系统行为的进阶团队。痛点是单元测试与 Mandos 覆盖不到跨分片重组、链下索引这类链级行为。使用方式是按技能指引搭建 mx-chain-simulator-go 套件,用 POST /simulator/generate-blocks 构造区块推进场景。实际体验是这类测试的搭建成本最高,但补上后评分中“链模拟器”一项从 0 分起跳,且能覆盖前两层完全看不到的问题;注意事项是若环境不可用会被扣 2 分,评估时需明确标注“不可用”而非直接忽略。

该技能能为用户带来的价值

  • 效率提升:把“测试该怎么分层、覆盖到哪”这类需要翻阅框架文档和踩坑积累的判断,压缩为一次对话输出;报告模板固定,省去每次手写评估文档的时间。
  • 门槛降低:即使是没有经历过完整合约审计流程的开发者,也能按 #[payable]、#[only_owner]、#[only_role] 的逐项要求补测试,不必先成为测试专家。
  • 风险收益可量化:资金流 100% Mandos 覆盖、负向测试数量、状态转换检查数量都是可数指标,10 分制分数让“测试质量”从主观感受变成可对比、可追踪的数字,便于在多轮迭代中观察改善曲线。
  • 交付物可复用:结构化测试质量报告可直接用于代码评审、团队规范、审计沟通与上线检查表,减少重复沟通成本。
  • 长期价值:随着团队把覆盖策略固化为流程,测试缺口在早期就被发现,避免在主网阶段因权限或支付逻辑缺陷付出更高修复代价。

常见问题 FAQ

Q1:这个技能怎么安装?需要付费吗? 在支持技能机制的 AI 客户端中,用技能英文名 mvx_testing_handbook 或技能ID 12553 检索并安装即可;本地技能包方式则放入客户端技能目录(具体入口、命令与是否收费以官方说明为准)。安装后在会话中提问验证是否生效。

Q2:它是自动帮我写测试、自动跑测试的工具吗? 不是。它是一个测试方法论与评估指南技能,提供分层测试的落点、覆盖硬策略、评分标准与报告格式;实际测试仍需在你的工程里用 cargo test、Mandos 场景与链模拟器执行。它的价值在于告诉你“该写什么、缺什么、多少分”。

Q3:我只写 Rust 单元测试,不用 Mandos 行不行? 按技能中的覆盖策略,不行。资金流入/流出要求 100% 的 Mandos 覆盖,每个 #[endpoint] 至少需要一个 Mandos 场景,状态转换必须通过 checkState 验证。视图函数用单元测试覆盖是足够的,但涉及资金与权限的端点不能只靠单元测试。

Q4:评分偏低怎么办?从哪里开始补? 优先看差距清单,按“资金流 → 访问控制 → 端点覆盖 → 单元测试 → 链模拟器”的顺序补:资金与权限直接对应资产安全,端点缺失影响面最广。每补一类重跑评估看分数变化,注意链模拟器不可用会额外扣 2 分。

Q5:它适合谁用?和直接用官方测试框架有什么区别? 适合 MultiversX 合约开发者、技术负责人、准备送审的项目方,以及需要统一测试规范的团队。官方框架提供的是工具与执行能力,本技能提供的是分层方法与可量化评估标准,两者是配合关系:用框架跑测试,用技能判断测试是否足够。