gitlink-cli/skills/gitlink-code-review/skill_test.md

15 KiB
Raw Blame History

gitlink-code-review Skill 测试指南

📋 测试概述

本文档提供完整的测试指南,帮助你验证 gitlink-code-review Skill 的功能完整性、AI Agent 集成和实际可用性。

🎯 测试目标

  1. 功能验证: 确保所有功能按预期工作
  2. AI 集成测试: 验证 AI Agent 可以正确使用此 Skill
  3. 文档验证: 确保文档完整且易于理解
  4. 实用验证: 确保在实际场景中可用

🔧 前置条件

1. 环境准备

# 确认 gitlink-cli 已安装
gitlink-cli --version

# 确认已认证
gitlink-cli auth status

# 如果未认证,执行登录
gitlink-cli auth login

2. 准备测试 PR

需要一个测试用的 PR可以是

  • 真实项目中的 PR
  • 自己创建的测试 PR
  • 公开项目的 PR
# 查看可用的 PR
gitlink-cli pr +list --owner <owner> --repo <repo> --format json

📊 测试计划

测试级别

级别 测试内容 优先级
Level 1 文档结构验证 P0
Level 2 基础功能测试 P0
Level 3 AI Agent 集成测试 P0
Level 4 完整工作流测试 P1
Level 5 边界情况测试 P2

🧪 Level 1: 文档结构验证

测试 1.1: 检查必需文件存在

目的: 确保所有必需的文档文件都存在。

步骤:

cd skills/gitlink-code-review

# 检查必需文件
ls -la SKILL.md
ls -la README.md
ls -la REFERENCE.md

# 检查目录结构
ls -la references/
ls -la examples/

# 验证文件内容
wc -l SKILL.md
wc -l README.md
wc -l REFERENCE.md

预期结果:

  • SKILL.md 存在且 >100 行
  • README.md 存在且 >100 行
  • REFERENCE.md 存在且 >200 行
  • references/ 目录包含至少 3 个 .md 文件
  • examples/ 目录包含至少 3 个 .md 文件

测试 1.2: 验证 Frontmatter 格式

目的: 确保 SKILL.md 的 frontmatter 符合规范。

步骤:

# 查看 SKILL.md 的前 20 行
head -20 SKILL.md

预期结果:

---
name: gitlink-code-review
version: 1.0.0
description: "智能代码审查:..."
metadata:
  requires:
    bins: ["gitlink-cli"]
  cliHelp: "gitlink-cli pr --help"
---

验证点:

  • 包含 name 字段
  • 包含 version 字段
  • 包含 description 字段
  • 包含 metadata 字段
  • metadata.requires.bins 包含 gitlink-cli

测试 1.3: 验证文档引用

目的: 确保文档之间的相互引用正确。

步骤:

# 检查 SKILL.md 中的引用
grep -n "\[.*\](.*.md)" SKILL.md

# 检查 README.md 中的引用
grep -n "\[.*\](.*.md)" README.md

# 验证引用的文件是否存在
# [手动检查引用的文件路径是否正确]

预期结果:

  • 所有引用的文件都存在
  • 引用路径正确
  • 没有断开的链接

🧪 Level 2: 基础功能测试

目的: 确保依赖的 gitlink-cli 命令正常工作。

步骤:

# 设置测试变量
OWNER="Gitlink"
REPO="forgeplus"
PR_ID=<一个真实的PR编号>

# 测试 pr +view 命令
echo "=== 测试 pr +view ==="
gitlink-cli pr +view --id $PR_ID --format json > test_pr_view.json
cat test_pr_view.json | jq '.ok'

# 测试 pr +files 命令
echo "=== 测试 pr +files ==="
gitlink-cli pr +files --id $PR_ID --format json > test_pr_files.json
cat test_pr_files.json | jq '.ok'

# 测试 pr +diff 命令
echo "=== 测试 pr +diff ==="
gitlink-cli pr +diff --id $PR_ID --format json > test_pr_diff.json
cat test_pr_diff.json | jq '.ok'

预期结果:

  • pr +view 返回 {"ok": true}
  • pr +files 返回 {"ok": true}
  • pr +diff 返回 {"ok": true}
  • JSON 文件包含有效的数据

测试 2.2: 验证数据解析

目的: 确保能够正确解析 gitlink-cli 返回的数据。

步骤:

# 验证 PR 数据结构
echo "=== 验证 PR 详情 ==="
cat test_pr_view.json | jq '.data | keys'
# 应包含: id, title, author, status, etc.

echo "=== 验证文件列表 ==="
cat test_pr_files.json | jq '.data.files | length'
# 应该 > 0

echo "=== 验证 diff 内容 ==="
cat test_pr_diff.json | jq '.data.diff' | head -c 100
# 应该包含 diff 内容

预期结果:

  • PR 详情包含必要的字段
  • 文件列表非空
  • diff 内容存在

测试 2.3: 手动代码审查模拟

目的: 手动执行一次完整的代码审查流程。

步骤:

# 1. 获取 PR 信息
echo "步骤 1: 获取 PR 信息"
gitlink-cli pr +view --id $PR_ID --format json | jq '{id: .data.id, title: .data.title, author: .data.author.login}'

# 2. 获取文件列表
echo "步骤 2: 获取文件列表"
gitlink-cli pr +files --id $PR_ID --format json | jq '.data.files[] | {filename: .filename, changes: .changes}'

# 3. 获取 diff
echo "步骤 3: 获取 diff"
gitlink-cli pr +diff --id $PR_ID --format json | jq -r '.data.diff' | head -50

# 4. 手动分析代码(需要人工查看)
echo "步骤 4: 手动分析代码"
echo "请查看上面的代码变更,识别潜在问题"

预期结果:

  • 每个步骤都能成功执行
  • 数据格式正确
  • 可以看到代码变更内容

🧪 Level 3: AI Agent 集成测试

测试 3.1: Claude Code 基础测试

目的: 验证 Claude Code 可以识别和使用此 Skill。

在 Claude Code 中执行:

用户: 我需要审查一个 PRPR 编号是 123

[预期行为]:
1. Claude Code 应该识别需要使用 gitlink-code-review Skill
2. 自动读取 SKILL.md 了解如何操作
3. 执行正确的命令序列
4. 生成审查报告

验证点:

  • AI 识别到需要使用 gitlink-code-review Skill
  • AI 执行了 pr +view, pr +files, pr +diff 命令
  • AI 生成了结构化的审查报告
  • 提供了可操作的建议

测试 3.2: Claude Code 场景测试

场景 1: 基础审查

用户: 审查 PR #123

[预期输出]:
- 获取 PR 信息
- 分析代码变更
- 生成审查报告
- 提供改进建议

场景 2: 重点安全审查

用户: 审查 PR #456重点关注安全问题

[预期输出]:
- 获取 PR 信息
- 重点分析安全问题
- 列出发现的安全漏洞
- 提供修复建议

场景 3: 自动添加评论

用户: 审查 PR #789 并添加评论到 PR

[预期输出]:
- 获取 PR 信息
- 分析代码
- 生成报告
- 添加评论到 PR

验证点:

  • AI 根据用户请求调整审查重点
  • AI 正确执行相应的命令
  • 输出格式符合预期
  • 提供了有价值的建议

测试 3.3: 提示词测试

目的: 验证 Skill 中的提示词是否有效。

测试提示词:

请分析以下 PR 的代码变更,检查代码质量、安全性和性能问题。

PR 数据:
[粘贴 test_pr_view.json, test_pr_files.json, test_pr_diff.json 的内容]

请以 JSON 格式输出审查报告,包含:
- overall_assessment: 总体评估
- issues: 问题列表
- positive_notes: 优秀实践
- recommendations: 改进建议

验证点:

  • AI 理解任务要求
  • AI 分析代码变更
  • 输出格式符合要求
  • 发现了真实的问题

🧪 Level 4: 完整工作流测试

测试 4.1: 基础审查工作流

目的: 验证 basic-review-workflow.md 中的工作流。

步骤:

# 按照基础审查工作流执行
PR_ID=<测试PR编号>

# 步骤 1: 获取 PR 详情
gitlink-cli pr +view --id $PR_ID --format json

# 步骤 2: 获取变更文件列表
gitlink-cli pr +files --id $PR_ID --format json

# 步骤 3: 获取 diff 内容
gitlink-cli pr +diff --id $PR_ID --format json

# 步骤 4: 浏览代码变更
gitlink-cli pr +diff --id $PR_ID --format json | jq -r '.data.diff' | less

验证点:

  • 所有步骤都能成功执行
  • 数据格式正确
  • 可以看到代码变更

测试 4.2: 全面审查工作流

目的: 验证 comprehensive-review-workflow.md 中的工作流。

步骤:

# 按照全面审查工作流执行
PR_ID=<测试PR编号>

# 1. 获取数据
gitlink-cli pr +view --id $PR_ID --format json > pr_info.json
gitlink-cli pr +files --id $PR_ID --format json > pr_files.json
gitlink-cli pr +diff --id $PR_ID --format json > pr_diff.json

# 2. 数据预处理
cat pr_files.json | jq '.data.files | map(select(.changes > 10))' > main_changes.json

# 3. 组织分析数据
cat > analysis_input.json <<EOF
{
  "pr_info": $(cat pr_info.json | jq '.data'),
  "files": $(cat pr_files.json | jq '.data.files'),
  "diff": $(cat pr_diff.json | jq -r '.data.diff')
}
EOF

# 4. 验证数据
cat analysis_input.json | jq '.pr_info.title'
cat analysis_input.json | jq '.files | length'

验证点:

  • 数据预处理成功
  • 分析数据格式正确
  • 包含所有必要的信息

测试 4.3: 自动审查工作流

目的: 验证 auto-review-pr.md 中的自动化流程。

在 Claude Code 中测试:

用户: 使用自动审查模式审查 PR #123

[预期行为]:
1. AI 自动获取所有必要数据
2. AI 自动分析代码
3. AI 自动生成报告
4. AI 询问是否添加评论

验证点:

  • 流程完全自动化
  • 不需要人工干预
  • 生成完整的报告

🧪 Level 5: 边界情况测试

测试 5.1: 大型 PR 测试

目的: 测试对大型 PR 的处理能力。

步骤:

# 查找一个大型 PR>500 行变更)
gitlink-cli pr +list --format json | \
  jq '.data[] | select(.additions > 500) | {id: .id, additions: .additions}'

# 测试获取 diff
gitlink-cli pr +diff --id <大型PR编号> --format json | \
  jq '.data | length'

验证点:

  • 能够处理大型 diff
  • 不会超时或崩溃
  • 输出格式正确

测试 5.2: 错误处理测试

目的: 测试错误情况的处理。

测试不存在的 PR:

gitlink-cli pr +view --id 999999 --format json
# 应该返回错误信息

测试无权限的 PR:

gitlink-cli pr +view --id <私有PR编号> --format json
# 应该返回 403 错误

验证点:

  • 错误信息清晰
  • 包含错误原因
  • 提供解决建议

测试 5.3: 不同文件类型测试

目的: 测试对不同文件类型的处理。

步骤:

# 查找包含不同文件类型的 PR
# Go 文件
gitlink-cli pr +files --id $PR_ID --format json | \
  jq '.data.files[] | select(.filename | endswith(".go"))'

# JavaScript 文件
gitlink-cli pr +files --id $PR_ID --format json | \
  jq '.data.files[] | select(.filename | endswith(".js"))'

# Python 文件
gitlink-cli pr +files --id $PR_ID --format json | \
  jq '.data.files[] | select(.filename | endswith(".py"))'

验证点:

  • 能够识别不同语言
  • 能够针对性分析
  • 建议符合语言特性

📊 测试报告模板

测试执行记录

# gitlink-code-review Skill 测试报告

**测试日期**: 2026-06-12
**测试人员**: [姓名]
**测试环境**: [环境描述]

## 测试结果总览

| 测试级别 | 通过/总数 | 状态 |
|---------|----------|------|
| Level 1 | ?/? | ⏳ |
| Level 2 | ?/? | ⏳ |
| Level 3 | ?/? | ⏳ |
| Level 4 | ?/? | ⏳ |
| Level 5 | ?/? | ⏳ |

## 详细测试结果

### Level 1: 文档结构验证

- [ ] 测试 1.1: 检查必需文件存在 - ⏳
- [ ] 测试 1.2: 验证 Frontmatter 格式 - ⏳
- [ ] 测试 1.3: 验证文档引用 - ⏳

### Level 2: 基础功能测试

- [ ] 测试 2.1: 验证 gitlink-cli PR 命令 - ⏳
- [ ] 测试 2.2: 验证数据解析 - ⏳
- [ ] 测试 2.3: 手动代码审查模拟 - ⏳

### Level 3: AI Agent 集成测试

- [ ] 测试 3.1: Claude Code 基础测试 - ⏳
- [ ] 测试 3.2: Claude Code 场景测试 - ⏳
- [ ] 测试 3.3: 提示词测试 - ⏳

### Level 4: 完整工作流测试

- [ ] 测试 4.1: 基础审查工作流 - ⏳
- [ ] 测试 4.2: 全面审查工作流 - ⏳
- [ ] 测试 4.3: 自动审查工作流 - ⏳

### Level 5: 边界情况测试

- [ ] 测试 5.1: 大型 PR 测试 - ⏳
- [ ] 测试 5.2: 错误处理测试 - ⏳
- [ ] 测试 5.3: 不同文件类型测试 - ⏳

## 发现的问题

### 问题 1
- **描述**: [问题描述]
- **严重性**: [高/中/低]
- **状态**: [待修复/已修复]

## 建议和改进

### 建议 1
- **描述**: [建议描述]
- **优先级**: [高/中/低]

## 总结

**总体评估**: [通过/不通过]
**评分**: [?/100]
**建议**: [是否建议投入使用]

🎯 快速测试脚本

为了快速验证 Skill 的基本功能,可以使用以下脚本:

#!/bin/bash
# quick-test.sh - 快速测试脚本

set -e

echo "=== gitlink-code-review Skill 快速测试 ==="

# 配置
PR_ID=${1:-<默认PR编号>}
OWNER=${2:-Gitlink}
REPO=${3:-forgeplus}

echo "测试 PR: $PR_ID"
echo ""

# Level 1: 文档检查
echo "Level 1: 检查文档..."
if [ -f "SKILL.md" ] && [ -f "README.md" ] && [ -f "REFERENCE.md" ]; then
    echo "✅ 文档文件存在"
else
    echo "❌ 缺少必需文档"
    exit 1
fi

# Level 2: 功能测试
echo ""
echo "Level 2: 测试 gitlink-cli 命令..."

# 测试 pr +view
if gitlink-cli pr +view --id $PR_ID --format json | jq -e '.ok == true' > /dev/null; then
    echo "✅ pr +view 正常"
else
    echo "❌ pr +view 失败"
    exit 1
fi

# 测试 pr +files
if gitlink-cli pr +files --id $PR_ID --format json | jq -e '.ok == true' > /dev/null; then
    echo "✅ pr +files 正常"
else
    echo "❌ pr +files 失败"
    exit 1
fi

# 测试 pr +diff
if gitlink-cli pr +diff --id $PR_ID --format json | jq -e '.ok == true' > /dev/null; then
    echo "✅ pr +diff 正常"
else
    echo "❌ pr +diff 失败"
    exit 1
fi

echo ""
echo "=== 快速测试完成 ==="
echo "✅ 所有基础测试通过"
echo ""
echo "下一步:"
echo "1. 在 Claude Code 中测试 AI 集成"
echo "2. 执行完整工作流测试"
echo "3. 验证边界情况"

使用方法:

chmod +x quick-test.sh
./quick-test.sh <PR编号>

📞 获取帮助

如果测试过程中遇到问题:

  1. 查看文档

  2. 检查配置

    # 检查 gitlink-cli 版本
    gitlink-cli --version
    
    # 检查认证状态
    gitlink-cli auth status
    
  3. 查看错误日志

    # 启用调试模式
    gitlink-cli pr +view --id $PR_ID --format json --debug
    

🎓 测试最佳实践

1. 渐进式测试

  • 从 Level 1 开始,逐步升级
  • 每个级别通过后再进行下一级
  • 记录每个测试的结果

2. 真实场景测试

  • 使用真实的 PR 进行测试
  • 覆盖不同类型的 PR功能、修复、重构
  • 测试不同大小的 PR

3. 持续改进

  • 记录发现的问题
  • 及时修复和改进
  • 定期重新测试

测试完成后,请填写测试报告并评估 Skill 是否可以投入使用。

最后更新: 2026-06-12