QA Skill - Quality Assurance Test Generator
Overview
This skill analyzes SwiftUI iOS application code and generates comprehensive test cases, testing strategies, and quality assurance documentation. It ensures code quality, identifies potential issues, and provides testing coverage for the entire application.
Testing Strategy
1. Test Pyramid Approach
- - Unit Tests (70%): Test individual components and business logic
- Integration Tests (20%): Test component interactions and data flow
- UI Tests (10%): Test user interface and user flows
2. Test Categories
2.1 Functional Testing
- - Feature validation against PRD requirements
- User story acceptance criteria
- Edge cases and boundary conditions
2.2 Non-Functional Testing
- - Performance testing (load time, memory usage)
- Security testing (data protection, authentication)
- Accessibility testing (VoiceOver, Dynamic Type)
- Compatibility testing (iOS versions, device sizes)
2.3 Regression Testing
- - Ensure new changes don't break existing functionality
- Automated test suite for critical paths
- Smoke tests for release validation
Test Generation Workflow
1. Code Analysis
- - Parse SwiftUI project structure
- Identify ViewModels and business logic
- Map data flows and dependencies
- Analyze PRD requirements for test coverage
2. Test Case Generation
2.1 Unit Test Templates
CODEBLOCK0
2.2 UI Test Templates
CODEBLOCK1
2.3 Integration Test Templates
CODEBLOCK2
3. Test Documentation Generation
3.1 Test Plan Document
CODEBLOCK3
3.2 Test Report Template
CODEBLOCK4
Example: Todo App Testing
Code Input: SwiftUI todo app with categories and reminders
Generated Test Coverage:
Unit Tests (15 test cases)
- 1.
TaskViewModelTests: Add/delete/toggle tasks - INLINECODE1 : Filter by category
- INLINECODE2 : Schedule/cancel reminders
- INLINECODE3 : CRUD operations
UI Tests (8 test cases)
- 1.
testTaskCreationFlow: Complete user journey - INLINECODE5 : Add/edit/delete categories
- INLINECODE6 : Configure and test reminders
- INLINECODE7 : Share tasks via share sheet
Integration Tests (5 test cases)
- 1.
testDataPersistence: Verify data survives app restart - INLINECODE9 : Test reminder delivery
- INLINECODE10 : Verify cross-device synchronization
Auto-Trigger Completion
After generating test cases, this skill automatically:
- 1. Creates test files in
qa-output/ directory - Generates test execution report
- Provides quality metrics and recommendations
- Completes the auto-dev-pipeline with final summary
Quality Metrics
Code Coverage Targets
- - Minimum: 70% line coverage
- Good: 80% line coverage
- Excellent: 90% line coverage
Performance Benchmarks
- - App launch: < 2 seconds
- Screen transitions: < 0.5 seconds
- Memory usage: < 150MB peak
- Battery impact: < 5% per hour
Accessibility Compliance
- - VoiceOver: All interactive elements labeled
- Dynamic Type: Supports all text sizes
- Color contrast: WCAG AA compliant
- Reduced motion: Respects user preferences
Integration with Pipeline
Input Requirements
- - SwiftUI project from INLINECODE12
- PRD document for requirement validation
- Compilation verification
Output Delivery
- - Complete XCTest test suite
- Test plan and strategy document
- Quality assessment report
- Release readiness checklist
QA技能 - 质量保证测试生成器
概述
该技能分析SwiftUI iOS应用程序代码,生成全面的测试用例、测试策略和质量保证文档。它确保代码质量,识别潜在问题,并为整个应用程序提供测试覆盖。
测试策略
1. 测试金字塔方法
- - 单元测试(70%):测试独立组件和业务逻辑
- 集成测试(20%):测试组件交互和数据流
- UI测试(10%):测试用户界面和用户流程
2. 测试类别
2.1 功能测试
- - 针对PRD需求的功能验证
- 用户故事验收标准
- 边界情况和边界条件
2.2 非功能测试
- - 性能测试(加载时间、内存使用)
- 安全测试(数据保护、身份验证)
- 可访问性测试(VoiceOver、动态字体)
- 兼容性测试(iOS版本、设备尺寸)
2.3 回归测试
- - 确保新更改不破坏现有功能
- 关键路径的自动化测试套件
- 发布验证的冒烟测试
测试生成工作流
1. 代码分析
- - 解析SwiftUI项目结构
- 识别ViewModel和业务逻辑
- 映射数据流和依赖关系
- 分析PRD需求以确定测试覆盖范围
2. 测试用例生成
2.1 单元测试模板
swift
import XCTest
@testable import ProjectName
class TaskViewModelTests: XCTestCase {
var viewModel: TaskViewModel!
var mockDataService: MockDataService!
override func setUp() {
super.setUp()
mockDataService = MockDataService()
viewModel = TaskViewModel(dataService: mockDataService)
}
func testAddTask() {
// 给定
let initialCount = viewModel.tasks.count
let newTask = Task(title: Test Task)
// 当
viewModel.addTask(newTask)
// 那么
XCTAssertEqual(viewModel.tasks.count, initialCount + 1)
XCTAssertEqual(viewModel.tasks.last?.title, Test Task)
}
func testDeleteTask() { ... }
func testToggleCompletion() { ... }
func testFilterByCategory() { ... }
}
2.2 UI测试模板
swift
import XCTest
class ProjectNameUITests: XCTestCase {
var app: XCUIApplication!
override func setUp() {
super.setUp()
app = XCUIApplication()
app.launch()
}
func testTaskCreationFlow() {
// 给定:应用已启动
XCTAssertTrue(app.navigationBars[Tasks].exists)
// 当:点击添加按钮
app.buttons[Add].tap()
// 那么:添加任务界面出现
XCTAssertTrue(app.textFields[Task Title].exists)
// 当:输入任务详情并保存
app.textFields[Task Title].tap()
app.textFields[Task Title].typeText(Test UI Task)
app.buttons[Save].tap()
// 那么:任务出现在列表中
XCTAssertTrue(app.staticTexts[Test UI Task].exists)
}
func testTaskCompletion() { ... }
func testCategoryFiltering() { ... }
func testReminderSettings() { ... }
}
2.3 集成测试模板
swift
class DataServiceIntegrationTests: XCTestCase {
func testDataPersistence() {
// 给定:全新的数据服务
let dataService = DataService()
// 当:保存数据
let task = Task(title: Integration Test)
dataService.saveTask(task)
// 那么:数据应可检索
let retrieved = dataService.loadTasks()
XCTAssertEqual(retrieved.count, 1)
XCTAssertEqual(retrieved.first?.title, Integration Test)
}
}
3. 测试文档生成
3.1 测试计划文档
测试计划:[应用名称]
1. 测试范围
2. 测试策略
3. 测试用例
3.1 功能测试
- 前置条件:应用已启动,无任务
- 步骤:点击+ → 输入标题 → 点击保存
- 预期:任务出现在列表中
- 优先级:P0
3.2 非功能测试
- - [TC-101] 性能:应用启动 < 2秒
- [TC-102] 内存:峰值使用 < 100MB
- [TC-103] 可访问性:支持VoiceOver
3.2 测试报告模板
测试报告:[应用名称] v1.0
执行摘要
- - 总测试用例数:XX
- 通过:XX
- 失败:XX
- 阻塞:XX
- 测试覆盖率:XX%
详细结果
功能测试
- - 功能A:10/10 通过
- 功能B:8/10 通过(2个失败)
- 功能C:5/5 通过
发现的问题
- 1. 高优先级:删除最后一个任务时崩溃
- 中优先级:iPhone SE上UI错位
- 低优先级:设置界面拼写错误
建议
- - 发布前修复高优先级问题
- 下一个迭代处理中优先级问题
- 记录低优先级问题供将来处理
示例:待办事项应用测试
代码输入: 带分类和提醒功能的SwiftUI待办事项应用
生成的测试覆盖:
单元测试(15个测试用例)
- 1. TaskViewModelTests:添加/删除/切换任务
- CategoryViewModelTests:按分类筛选
- ReminderServiceTests:安排/取消提醒
- DataServiceTests:CRUD操作
UI测试(8个测试用例)
- 1. testTaskCreationFlow:完整用户旅程
- testCategoryManagement:添加/编辑/删除分类
- testReminderSetup:配置和测试提醒
- testSharingFunctionality:通过分享面板分享任务
集成测试(5个测试用例)
- 1. testDataPersistence:验证数据在应用重启后保持
- testNotificationIntegration:测试提醒送达
- testICloudSync:验证跨设备同步
自动触发完成
生成测试用例后,该技能自动:
- 1. 在qa-output/目录中创建测试文件
- 生成测试执行报告
- 提供质量指标和建议
- 以最终摘要完成自动开发流水线
质量指标
代码覆盖率目标
- - 最低:70%行覆盖率
- 良好:80%行覆盖率
- 优秀:90%行覆盖率
性能基准
- - 应用启动:< 2秒
- 界面切换:< 0.5秒
- 内存使用:峰值 < 150MB
- 电池影响:每小时 < 5%
可访问性合规
- - VoiceOver:所有交互元素已标记
- 动态字体:支持所有文本大小
- 颜色对比度:符合WCAG AA标准
- 减少动态效果:尊重用户偏好
与流水线集成
输入要求
- - 来自dev-skill的SwiftUI项目
- 用于需求验证的PRD文档
- 编译验证
输出交付
- - 完整的XCTest测试套件
- 测试计划和策略文档
- 质量评估报告
- 发布就绪检查清单