skills/qc-test-design/SKILL.md
Use when designing test cases — applying boundary value analysis, equivalence partitioning, decision tables, pairwise testing, and exploratory testing techniques to maximize defect detection with minimal test cases.
npx skillsauth add kienbui1995/magic-powers qc-test-designInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
Group inputs into classes where the system behaves the same — test one value per class.
Example: Age field for insurance (must be 18-65)
Valid partitions: [18-65] → test with 35
Invalid partitions: [<18] → test with 10
[>65] → test with 70
[non-numeric] → test with "abc"
[empty] → test with ""
Result: 5 test cases instead of testing every possible age
Test at and around boundaries where defects cluster.
Example: Same age field [18-65]
Boundaries to test:
Lower boundary: 17 (invalid), 18 (valid), 19 (valid)
Upper boundary: 64 (valid), 65 (valid), 66 (invalid)
Zero/null: 0, negative (-1), empty
Result: 8 focused tests covering the most defect-prone values
# BVA test pattern
@pytest.mark.parametrize("age,expected", [
(17, False), # below lower boundary
(18, True), # at lower boundary
(19, True), # above lower boundary
(64, True), # below upper boundary
(65, True), # at upper boundary
(66, False), # above upper boundary
(0, False), # zero
(-1, False), # negative
])
def test_age_validation(age, expected):
assert validate_age(age) == expected
For business logic with multiple conditions and combinations.
Feature: Loan approval
Conditions:
C1: Credit score >= 700?
C2: Income >= $50K?
C3: Debt ratio <= 40%?
Decision table:
C1 | C2 | C3 | Action
Y | Y | Y | APPROVE
Y | Y | N | REVIEW (high debt)
Y | N | Y | REVIEW (low income)
Y | N | N | DENY
N | Y | Y | REVIEW (low credit)
N | Y | N | DENY
N | N | Y | DENY
N | N | N | DENY
Result: 8 test cases covering all condition combinations
When too many combinations exist — test every pair of inputs at least once.
Example: 3 parameters, 3 values each = 27 combinations
Pairwise reduces to ~9 tests while catching most pair-interaction defects
Tools: allpairs (Python), PictMaster, ACTS
from allpairspy import AllPairs
parameters = [
["Windows", "Mac", "Linux"], # OS
["Chrome", "Firefox", "Edge"], # Browser
["English", "French", "Spanish"], # Language
]
for i, pairs in enumerate(AllPairs(parameters)):
print(i, pairs) # 9 pairs instead of 27
Structured unscripted testing to discover unexpected defects.
Session-Based Test Management (SBTM):
Charter: "Explore the checkout flow focusing on payment edge cases"
Time box: 90 minutes
Area: Payment processing
Session notes structure:
- What I tested: [actions taken]
- Issues found: [bugs/observations]
- Questions: [things to investigate further]
- Coverage: [what I covered vs didn't]
Common heuristics (SFDIPOT):
Structure: test the thing itself
Function: what it does
Data: what it processes
Interface: interactions with other components
Platform: environment, browser, OS
Operations: how users actually use it
Time: timing, concurrency, sequences
For workflows and state machines.
Example: Order status workflow
States: Pending → Confirmed → Shipped → Delivered | Cancelled
Test matrix:
From\To | Pending | Confirmed | Shipped | Delivered | Cancelled
Pending | - | ✓ test | ✗ | ✗ | ✓ test
Confirmed | ✗ | - | ✓ test | ✗ | ✓ test
Shipped | ✗ | ✗ | - | ✓ test | ✗
✓ = valid transition to test (happy + unhappy path)
✗ = invalid transition to test (should be rejected)
test-driven-development — TDD drives test design; use these techniques to define the testsqc-automation — automate test cases designed here using the framework patternstest-strategy — these techniques feed into the overall test strategycontent-media
Use when designing for XR (AR/VR/MR), choosing interaction modes, or adapting 2D UI patterns for spatial computing
testing
Use when creating new skills, editing existing skills, or verifying skills work before deployment
development
Use when you have a spec or requirements for a multi-step task, before touching code
development
Use when executing a structured workflow — select and run a feature, bugfix, refactor, research, or incident template with correct agent and model assignments per phase.