Back to skills
SKILL.md
Devlab Test Expert
ASecurity测试专家知识库。包含测试最佳实践、故障排查指南、测试策略设计、性能优化建议等专家级知识,供其他测试技能引用。
- 21 stars
- 0 votes
- 0 copies
- 1 view
- Added September 1, 2026
Works with
Security analysis
100/100Pro scans all 9 files and shows the line behind each finding
npx -y skills add seed-forge/harness-ai-kit --skill devlab-test-expert --agent claude-codeAre you the author of Devlab Test Expert?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/seed-forge-devlab-test-expert)---
name: devlab-test-expert
description: 测试专家知识库。包含测试最佳实践、故障排查指南、测试策略设计、性能优化建议等专家级知识,供其他测试技能引用。
---
# AI 驱动测试 - 最佳实践专家知识库
**这是企业级测试团队的共享知识中枢。**
聚合最佳实践、反模式预警、故障排除手册等专家知识,供所有测试子技能调用。
---
## 触发条件
当用户提到以下关键词时触发此 Skill:
- "测试最佳实践" / "testing best practices"
- "常见陷阱" / "antipatterns"
- "验收标准怎么写" / "acceptance criteria examples"
- "性能测试怎么做" / "performance testing guide"
- "Flaky test 治理" / "flaky test tactics"
---
## 知识领域索引
### 📚 测试方法论
| Reference | 主题 | 适用场景 |
|-----------|------|---------|
| [testing-maturity-model](references/testing-maturity-model.md) | 测试能力成熟度模型 | 组织评估 |
| [shift-left-testing-strategies](references/shift-left-testing.md) | 左移测试策略 | 流程改进 |
| [test-data-management-best-practices](references/test-data-management.md) | 测试数据管理 | 数据准备 |
| [test-automation-pyramid](references/automation-pyramid.md) | 自动化测试金字塔 | 架构设计 |
| [property-based-testing](references/REFERENCE-PROPERTY-BASED-TESTING.md) | 属性测试模式(fast-check / Hypothesis / jqwik) | 随机数据、性质验证、最小反例 |
| [ai-service-test-tiering](references/REFERENCE-AI-SERVICE-TEST-TIERING.md) | AI 服务测试分级隔离 | marker 分级 + opt-in 开关 + 环境隔离 |
### 🎯 前端专项
| Reference | 主题 | 适用场景 |
|-----------|------|---------|
| [ui-selection-stability](references/ui-selection-stability.md) | 选择器稳定性指南 | Web E2E |
| [component-testing-patterns](references/component-testing-patterns.md) | 组件测试模式 | Vue/React |
| [visual-regression-guide](references/visual-regression-guide.md) | 视觉回归测试 | UI 变更 |
| [a11y-testing-checklist](references/a11y-testing-checklist.md) | 可访问性测试清单 | WCAG 合规 |
### 🔧 后端/API 专项
| Reference | 主题 | 适用场景 |
|-----------|------|---------|
| [api-testing-complete-guide](references/api-testing-complete-guide.md) | API 测试完整指南 | REST/GraphQL |
| [authn-authz-testing](references/authn-authz-testing.md) | 身份认证授权测试 | 安全测试 |
| [schema-validation-patterns](references/schema-validation.md) | Schema 验证模式 | OpenAPI |
| [rate-limiting-tests](references/rate-limiting-tests.md) | 限流降级测试 | 高可用 |
### 🛡️ 运维与质量
| Reference | 主题 | 适用场景 |
|-----------|------|---------|
| [flaky-test-detection](references/flaky-test-detection.md) | Flaky Test 检测与治理 | CI/CD |
| [test-performance-benchmarking](references/test-performance-benchmarking.md) | 测试性能基准 | 性能工程 |
| [code-coverage-deep-dive](references/code-coverage-analysis.md) | 代码覆盖率深度分析 | 质量门禁 |
| [security-testing-integration](references/security-testing-integration.md) | 安全测试集成 | AppSec |
### 🔄 持续集成
| Reference | 主题 | 适用场景 |
|-----------|------|---------|
| [ci-cd-integration-guide](references/ci-cd-integration.md) | CI/CD 集成指南 | Jenkins/GitHub Actions |
| [parallel-execution-strategies](references/parallel-execution.md) | 并行执行策略 | Speedup |
| [test-result-analytics](references/test-analytics.md) | 测试结果分析 | Metrics |
| [deployment-gates](references/deployment-gates.md) | 部署门禁配置 | Quality Gates |
---
## 核心知识卡片示例
### Card #1: 测试数据管理最佳实践
**来源**: Enterprise Test Data Research (调研自 Netflix, Spotify, Airbnb)
#### 核心决策树
```javascript
// Step 1: 评估项目复杂度
const complexity = assessProjectComplexity();
// Step 2: 选择测试数据策略
if (complexity === 'SIMPLE') {
return {
strategy: 'IN_MEMORY',
tools: ['Faker.js', 'Factory Girl'],
maintenance: 'Low',
isolation: 'Medium'
};
} else if (complexity === 'COMPLEX') {
return {
strategy: 'TEST_CONTAINERS',
tools: ['Testcontainers', 'LocalStack'],
maintenance: 'High',
isolation: 'High'
};
} else if (complexity === 'DISTRIBUTED') {
return {
strategy: 'DEDICATED_TEST_DB',
tools: ['Postgres with schemas', 'MySQL with databases'],
maintenance: 'Very High',
isolation: 'Maximum'
};
}
```
#### 三种主流方案对比
| 方案 | 优势 | 劣势 | 适用场景 | 复杂度 |
|------|------|------|---------|--------|
| **在内存生成** | 速度快、无外部依赖 | 无法验证真实约束 | 单元测试、简单业务 | ⭐⭐ |
| **Testcontainers** | 真实环境、自动清理 | 启动慢(~5s) | 集成测试、复杂查询 | ⭐⭐⭐⭐ |
| **专用数据库** | 完全隔离、支持大数据 | 运维成本高 | 分布式系统、并发测试 | ⭐⭐⭐⭐⭐ |
#### 实施建议
**推荐组合(渐进式升级)**:
```yaml
Phase 1: 单元测试
fixtures: faker + factory functions
scope: business logic validation
Phase 2: 集成测试
fixtures: @playwright/test + testcontainers
scope: database operations
Phase 3: E2E 测试
fixtures: seed data via API
scope: cross-service workflows
```
#### 反模式预警
❌ **不推荐做法**:
- 使用生产数据库副本(数据污染风险)
- 硬编码测试数据(维护成本爆炸)
- 依赖全局状态(Flaky Test 根源)
✅ **推荐做法**:
- 每个测试独立 Fixture
- 使用 Factory Pattern 生成数据
- 通过 API 创建而非直接 UI 操作
- 测试后自动清理(before/after hooks)
---
### Card #2: UI 选择器稳定性指南
**来源**: Google Testing Best Practices
#### 选择器优先级矩阵
| 优先级 | 选择器类型 | 稳定性 | 可读性 | 推荐使用 |
|-------|-----------|--------|--------|---------|
| **⭐ P0** | `getByRole('button', { name: 'Submit' })` | 极高 | 优秀 | ✅ 首选 |
| **⭐ P0** | `getByLabel('Email')` | 极高 | 优秀 | ✅ 首选 |
| **⭐ P1** | `getByText(/login/i)` | 高 | 良好 | ✅ 推荐 |
| **⭐ P1** | `getByPlaceholder('Enter email')` | 高 | 一般 | ⚠️ 慎用 |
| **⭐ P2** | `[data-testid="submit-btn"]` | 中 | 需约定 | ⚠️ 需规范 |
| **⭐ P3** | `.btn.primary.submit` | 低 | 差 | ❌ 禁用 |
| **⭐ P4** | `#app > div > button:nth-child(2)` | 极低 | 极差 | ❌ 绝对禁止 |
#### 实战示例
```typescript
// ❌ ANTI-PATTERN: Fragile CSS selector
await page.click('.card-container .item-list li:last-child button');
// ✅ RECOMMENDED: Semantic role-based selector
await page.getByRole('button', { name: 'Delete item' }).click();
// ✅ ACCEPTABLE: Test ID with clear convention
await page.getByTestId('delete-item-button').click();
```
#### ARIA Role 参考表
| 元素 | 正确 Role | 错误 Role |
|------|----------|----------|
| `<button>` | `role='button'` | `role='link'` |
| `<input type="email">` | `role='textbox', aria-label='Email'` | `role='input'` |
| `<nav>` | `role='navigation'` | `role='menu'` |
| Modal Dialog | `role='dialog'` | `role='popup'` |
---
### Card #3: Flaky Test 治理全攻略
**来源**: Netflix Chaos Engineering Principles
#### Flaky Test 分类矩阵
| 类型 | 特征 | 根本原因 | 修复策略 | 优先级 |
|------|------|---------|---------|--------|
| **Race Condition** | 随机失败 | 异步时序问题 | 显式等待 | P0 |
| **Resource Contention** | CI 环境频发 | 资源竞争 | 增加超时/隔离 | P1 |
| **External Dependency** | 第三方服务不稳定 | 网络延迟 | Mock Server | P0 |
| **Data Pollution** | 测试顺序相关 | 全局状态 | 测试隔离 | P1 |
| **Browser Rendering** | 特定浏览器 | DOM 渲染延迟 | 增加 waits | P2 |
#### 诊断流程图
```
测试失败 → 查看 Trace 文件
↓
是否有 Timeout?
├─ YES → Check network requests
│ ↓
│ Response status code?
│ ├─ 503 → Add retry/Mock
│ └─ Timeout → Increase wait time
│
└─ NO → Check assertion
↓
Mismatched values?
├─ YES → Review expected result
└─ NO → Element location issue
↓
Update selector
```
#### 自动化检测脚本
```bash
#!/bin/bash
# scripts/detect-flaky.sh
# Run tests multiple times
for i in {1..10}; do
npx playwright test --reporter=json > report_${i}.json
done
# Analyze results
python scripts/analyze_flakiness.py reports/*.json
# Output:
# flaky_tests.txt (测试列表)
# flaky_analysis.pdf (详细报告)
```
#### 修复模板
**Case 1: Async Operation Timeout**
```typescript
// ❌ WRONG
await page.click('#submit');
await expect(page.getByText('Success')).toBeVisible(); // Might fail
// ✅ FIXED
await page.click('#submit');
await page.waitForResponse(resp =>
resp.url().includes('/api/submit') && resp.status() === 200
);
await expect(page.getByText('Success')).toBeVisible();
```
**Case 2: Concurrency Issue**
```typescript
// ❌ WRONG (Order-dependent)
test('test A creates user', async () => { ... });
test('test B deletes same user', async () => { ... }); // Depends on A!
// ✅ FIXED (Independent)
test('test A creates unique user', async () => {
const user = generateUniqueUser(); // Unique each run
});
test('test B deletes its own user', async () => {
const user = generateUniqueUser(); // Independent from A
});
```
---
### Card #4: 前端性能测试基准
**来源**: Web Vitals + Lighthouse Standards
#### 核心指标阈值
| 指标 | Good (<1s) | Needs Improvement (<2.5s) | Poor (>2.5s) |
|------|------------|-------------------------|--------------|
| **FCP** (First Contentful Paint) | <1.8s | 1.8-3.0s | >3.0s |
| **LCP** (Largest Contentful Paint) | <2.5s | 2.5-4.0s | >4.0s |
| **CLS** (Cumulative Layout Shift) | <0.1 | 0.1-0.25 | >0.25 |
| **TBT** (Total Blocking Time) | <200ms | 200-600ms | >600ms |
| **TTI** (Time to Interactive) | <3.8s | 3.8-7.3s | >7.3s |
#### 自动化测试实现
```typescript
// tests/performance/lighthouse.spec.ts
import { lighthouse } from '@axe-core/playwright';
test.describe('Performance Benchmarks', () => {
test('homepage should meet Lighthouse performance score', async ({ page }) => {
await page.goto('/');
const { audits } = await page.evaluate(lighthouse, ['/']);
// Performance score threshold
expect(audits['performance'].numericValue).toBeGreaterThan(90);
// Individual metric checks
expect(audits['first-contentful-paint'].numericValue).toBeLessThan(1800);
expect(audits['largest-contentful-paint'].numericValue).toBeLessThan(2500);
expect(audits['cumulative-layout-shift'].numericValue).toBeLessThan(0.1);
});
test('dashboard should load within 3 seconds after authentication', async ({ page }) => {
const startTime = Date.now();
// Simulate login
await performLogin();
await page.waitForLoadState('networkidle');
const loadTime = Date.now() - startTime;
expect(loadTime).toBeLessThan(3000);
});
});
```
---
## 与子技能集成
### devlab-web-test-e2e 引用
```typescript
/**
* Source: devlab-test-expert/reference/ui-selection-stability.md
* See also: https://github.com/team/devlab-test-expert
*/
import { semanticSelectors } from '@playwright/test/utils';
```
### devlab-srv-test-api 引用
```typescript
/**
* Source: devlab-test-expert/reference/api-testing-complete-guide.md
*/
const testCases = require('@test/expert/api-test-cases');
```
---
## 贡献指南
### 添加新知识卡
1. **确定主题覆盖范围** — 确保不与现有卡重复
2. **遵循标准格式** — 使用表格、代码示例、决策树
3. **引用权威来源** — RFC、官方文档、行业白皮书
4. **提供代码示例** — 可执行的 TypeScript/Python 片段
5. **关联相关卡片** — Cross-reference 增强导航
### 审核流程
```
Draft PR → Team Review → Merge to main
↓
Update index table in SKILL.md
Update references in sub-skills
```
---
<!-- TRELLIS:START -->
Managed by Trellis. This skill follows the `harness-ai-kit` asset pattern for expert knowledge base.
Last updated: 2026-07-22
Author: AI-assisted knowledge curation based on enterprise best practices.
<!-- TRELLIS:END -->
参考文档:
- references/REFERENCE-README.md
- references/REFERENCE-TEST-DATA-MANAGEMENT.md
- references/REFERENCE-PROPERTY-BASED-TESTING.md
- references/REFERENCE-AI-SERVICE-TEST-TIERING.md
Files in this skill
- CHANGELOG.md
- README.md
- SKILL.md
- USAGE.md
- references/REFERENCE-AI-SERVICE-TEST-TIERING.md
- references/REFERENCE-PROPERTY-BASED-TESTING.md
- references/REFERENCE-README.md
- references/REFERENCE-TEST-DATA-MANAGEMENT.md
- skill.json
Attribution
Comments
Loading comments…
Newsletter
Get the weekly list of safe new skills, and the ones we pulled.