Qa Skill
by @tc1993
Generate comprehensive test cases and quality assurance documentation from SwiftUI iOS code. Use when iOS application code is available and needs testing str...
clawhub install qa-skillπ About This Skill
name: qa-skill description: Generate comprehensive test cases and quality assurance documentation from SwiftUI iOS code. Use when iOS application code is available and needs testing strategies, test cases, and quality validation. This skill receives input from dev-skill and completes the auto-dev-pipeline by providing testing coverage.
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
2. Test Categories
#### 2.1 Functional Testing
#### 2.2 Non-Functional Testing
#### 2.3 Regression Testing
Test Generation Workflow
1. Code Analysis
2. Test Case Generation
#### 2.1 Unit Test Templates
import XCTest
@testable import ProjectNameclass TaskViewModelTests: XCTestCase {
var viewModel: TaskViewModel!
var mockDataService: MockDataService!
override func setUp() {
super.setUp()
mockDataService = MockDataService()
viewModel = TaskViewModel(dataService: mockDataService)
}
func testAddTask() {
// Given
let initialCount = viewModel.tasks.count
let newTask = Task(title: "Test Task")
// When
viewModel.addTask(newTask)
// Then
XCTAssertEqual(viewModel.tasks.count, initialCount + 1)
XCTAssertEqual(viewModel.tasks.last?.title, "Test Task")
}
func testDeleteTask() { ... }
func testToggleCompletion() { ... }
func testFilterByCategory() { ... }
}
#### 2.2 UI Test Templates
import XCTestclass ProjectNameUITests: XCTestCase {
var app: XCUIApplication!
override func setUp() {
super.setUp()
app = XCUIApplication()
app.launch()
}
func testTaskCreationFlow() {
// Given: App is launched
XCTAssertTrue(app.navigationBars["Tasks"].exists)
// When: Tap add button
app.buttons["Add"].tap()
// Then: Add task screen appears
XCTAssertTrue(app.textFields["Task Title"].exists)
// When: Enter task details and save
app.textFields["Task Title"].tap()
app.textFields["Task Title"].typeText("Test UI Task")
app.buttons["Save"].tap()
// Then: Task appears in list
XCTAssertTrue(app.staticTexts["Test UI Task"].exists)
}
func testTaskCompletion() { ... }
func testCategoryFiltering() { ... }
func testReminderSettings() { ... }
}
#### 2.3 Integration Test Templates
class DataServiceIntegrationTests: XCTestCase {
func testDataPersistence() {
// Given: Fresh data service
let dataService = DataService()
// When: Save data
let task = Task(title: "Integration Test")
dataService.saveTask(task)
// Then: Data should be retrievable
let retrieved = dataService.loadTasks()
XCTAssertEqual(retrieved.count, 1)
XCTAssertEqual(retrieved.first?.title, "Integration Test")
}
}
3. Test Documentation Generation
#### 3.1 Test Plan Document
# Test Plan: [App Name]1. Testing Scope
Features to be tested
Features out of scope
Testing environments 2. Test Strategy
Testing types and approaches
Test data requirements
Entry/exit criteria 3. Test Cases
3.1 Functional Tests
[TC-001] Task Creation
- Preconditions: App launched, no tasks
- Steps: Tap + β Enter title β Tap Save
- Expected: Task appears in list
- Priority: P03.2 Non-Functional Tests
[TC-101] Performance: App launch < 2 seconds
[TC-102] Memory: < 100MB peak usage
[TC-103] Accessibility: VoiceOver compatible
#### 3.2 Test Report Template
# Test Report: [App Name] v1.0Executive Summary
Total test cases: XX
Passed: XX
Failed: XX
Blocked: XX
Test coverage: XX% Detailed Results
Functional Testing
Feature A: 10/10 passed
Feature B: 8/10 passed (2 failed)
Feature C: 5/5 passed Issues Found
1. High Priority: Crash when deleting last task
2. Medium Priority: UI misalignment on iPhone SE
3. Low Priority: Typo in settings screenRecommendations
Fix high priority issues before release
Address medium priority in next sprint
Document low priority for future
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
2. CategoryViewModelTests: Filter by category
3. ReminderServiceTests: Schedule/cancel reminders
4. DataServiceTests: CRUD operationsUI Tests (8 test cases)
1.testTaskCreationFlow: Complete user journey
2. testCategoryManagement: Add/edit/delete categories
3. testReminderSetup: Configure and test reminders
4. testSharingFunctionality: Share tasks via share sheetIntegration Tests (5 test cases)
1.testDataPersistence: Verify data survives app restart
2. testNotificationIntegration: Test reminder delivery
3. testICloudSync: Verify cross-device synchronizationAuto-Trigger Completion
After generating test cases, this skill automatically:
1. Creates test files in qa-output/ directory
2. Generates test execution report
3. Provides quality metrics and recommendations
4. Completes the auto-dev-pipeline with final summary
Quality Metrics
Code Coverage Targets
Performance Benchmarks
Accessibility Compliance
Integration with Pipeline
Input Requirements
dev-skill