Test Plan
Test PlanPlan: Drop — Fintech Payment App
Project:
{{PROJECT_NAME}}Drop — Remittance + QR Payments Version:{{VERSION}}1.0 Date:{{DATE}}2026-02-23 Author:{{AUTHOR}}John (AI Director) Status:Draft | In Review |Approved Reviewers:{{REVIEWERS}}Alem Bašić (CEO)
Document History
| Version | Date | Author | Changes |
|---|---|---|---|
| 0.1 | Initial |
1. Test Objectives
This test plan covers testing for {{RELEASE_NAME}}Drop MVP + Phase 0.5 Security Hardening ({{VERSION}}) of {{PROJECT_NAME}}v0.5.0).
Primary objectives:
- Verify that
{{OBJECTIVE_1}}all authentication and onboarding flows (registration, OTP, PIN, login) work correctly for Norwegian residents (age ≥ 18, phone +47) - Verify that
{{OBJECTIVE_2}}remittance transactions apply correct 0.5% fee across all 6 NOK corridors with mock BaaS - Verify that QR payments apply correct 1% merchant fee with mock BaaS
- Confirm
notheregressionpass-throughinmodel{{REGRESSION_AREA}}invariant: Drop NEVER stores user balances or full card data - Confirm Phase 0.5 security hardening: bcrypt 12 rounds, persistent rate limiting, CSRF, security headers, audit logging
- Validate performance under expected
productionloadload(40+ concurrent users; target 200 for Phase 1)
Out of scope for this plan: SeeBankID Section 3SCA (Scope)Phase 2), real BaaS payments (Phase 2), real Sumsub KYC (Phase 2), Cards feature (Phase 3), mobile native app (Phase 2).
2. Features Under Test
| Feature / Story | Priority | Test Types | Owner |
|---|---|---|---|
| Critical | Unit, Integration, E2E | ||
| Critical | Unit, Integration, E2E | Builder + Validator | |
| Remittance Transaction (FR-020) | Critical | Unit, Integration, E2E | Builder + Validator |
| Exchange Rates API (FR-021) | High | Integration | Builder + Validator |
| QR Payment — Consumer (FR-030) | Critical | Unit, Integration, E2E | Builder + Validator |
| Merchant Registration + QR (FR-031) | High | Unit, Integration | |
| Critical | Integration | Builder + Validator | |
| Input Validation / Security (NFR-SEC06) | Critical | Unit, E2E (input-chaos) | Builder + Validator |
| DB Compliance — No Balance/CVV (NF-AC-020/021) | Critical | Integration (db.test.ts) | Builder + Validator |
| bcrypt Hashing (NFR-SEC02) | Critical | Unit (auth.test.ts) | Builder + Validator |
| Performance Benchmarks (NFR-P01..P06) | High | Performance (api-benchmarks) | Builder + Validator |
| Feature Flags (FR-090) | Medium | Unit (feature-flags.test.ts) | |
3. Scope
In Scope
{{IN_SCOPE_1}}Authentication module: registration, OTP verification, PIN setup, login, logout,/api/auth/me{{IN_SCOPE_2}}Remittance module:POST /api/transactions/remittance,GET /api/transactions, exchange rates- QR payments module:
POST /api/transactions/qr-payment,POST /api/merchants,GET /api/merchants/me - Security middleware: rate limiting, CSRF, JWT validation, security headers
- Database compliance: schema assertions (no balance, no card_number, no cvv), FK constraints, transaction type enum
- Performance benchmarks: bcrypt timing, DB query latency, concurrent rate limit check throughput
- Regression testing of
{{REGRESSION_MODULES}}all 26 API routes PerformanceInputtestingvalidation:ofXSS,{{PERF_SCOPE}}SQLendpointsinjection, Securityboundarytestingages,ofUnicodenewnames,authenticationlongchangespasswords
Out of Scope
| Item | Justification |
|---|---|
| Cards |
Phase |
| Mobile native app | Phase 2 — web only in MVP |
| Load testing > 200 concurrent users | Phase 1 migration to PostgreSQL required first |
4. Test Schedule & Milestones
| Milestone | Date | Responsible |
|---|---|---|
| Test plan approved | ||
| Test environment ready (staging) | ||
| Test data seeded | ||
| Unit + integration tests complete | ||
| Playwright E2E |
||
| Regression testing complete (all 26 routes) | ||
| Performance benchmarks run | Before Phase 0.5 release | Builder agent |
| UAT start (CEO walkthrough) | ||
| UAT sign-off | ||
| Go/no-go decision | ||
| Production release |
5. Resource Allocation
| Resource | Role | Testing Activities | Availability |
|---|---|---|---|
| Developer / QA | Unit + integration + E2E authoring | Per task | |
| Validator Agent (Claude Sonnet, read-only) | QA Lead | ||
| Product Owner / UAT | CEO UAT |
6. Entry Criteria
Testing may begin when:
- Feature development is code-complete (all tickets in "Ready for QA")
- Unit tests passing (≥
{{UNIT_PASS_RATE}}%100% passrate)rate - on
Integrationunittests+passingintegration suite) - Build artifact deployed to
teststagingenvironment(https://drop-staging.fly.dev/) -
TestStaging environment is stable (health checks passing) - Test data is seeded
and(npmverifiedrun Test cases for new features reviewed and approveddb:seed)- Previous known blocking bugs resolved (
seeMissionbugControltracker)backlog reviewed)
7. Exit Criteria
Testing is complete when:
- All 14 test
casesfilesexecutedexecute cleanly - ≥
{{PASS_RATE}}%100% oftestunitcases+ integration tests pass - All Critical and High
defectstestresolved or accepted with justification Medium defects reviewed — plancases inplaceAC-001–AC-092for outstanding itemspass- Code coverage ≥
{{COVERAGE_GATE}}%80% overall; 100% for auth + transaction paths - All Playwright E2E tests passing on staging (user-flows, full-flows, input-chaos)
- Performance
testsbenchmarks meetingSLANFR-P01..P06 targets (api-benchmarks.test.ts green) - DB compliance tests passing (db.test.ts: no balance, no card_number/cvv columns)
- UAT sign-off obtained from
ProductAlemOwnerBašić (CEO) — or conditional approval documented -
Go/no-goSecuritychecklistauditcompletescore ≥ 80/100 (seepostSectionPhase14)0.5 Release notes updated with test summaryhardening)
Exceptional circumstances: If exit criteria cannot be met, a documented risk acceptance from {{ACCEPTANCE_AUTHORITY}}Alem Bašić (CEO) is required.
8. Test Strategy Summary Per Type
| Type | Approach | Tool | Owner | Gate |
|---|---|---|---|---|
| Unit | White- |
Blocks merge | ||
| Integration | Real |
Blocks merge | ||
| E2E | Critical |
Blocks release | ||
| Regression | Blocks |
|||
| Performance | ||||
| Security | npm audit + |
Blocks merge | ||
| DB compliance | db.test.ts — schema assertions | Vitest | Builder | Blocks merge |
| UAT | Manual | Blocks | Phase ||
9. Test Environment Requirements
| Environment | Purpose | URL | Access Needed |
|---|---|---|---|
| Unit/integration | |
||
| Staging (Fly.io, Stockholm) | E2E, regression, UAT | https://drop-staging. |
Team + |
| Performance |
Environment requirements:
- Staging must have
production-equivalentNEXT_PUBLIC_SERVICE_MODE=mockconfiguration(no real BaaS) TestStagingdatabaseSQLite DB seeded with{{DATA_VOLUME}}syntheticrecordsThird-party integrations in sandbox/testmodedata (no real PII)- Monitoring enabled (
sameFly.ioas production)metrics)
10. Test Data Requirements
| Data Category | Volume | Creation Method | Responsible |
|---|---|---|---|
| Test |
|
||
npm |
|||
npm |
|||
| Edge case data ( |
Defined per test |
Data cleanup: All test data removed after test run via Vitest teardown. Staging DB reset between major test runs.scripts/cleanup.shafterEach
11. Risk-Based Test Prioritization
| Risk Area | Likelihood | Impact | Priority | Mitigation |
|---|---|---|---|---|
| Critical | P1 | |||
| Authentication |
Low | Critical | P1 | Full |
| Fee calculation error (wrong percentage) | Medium | Critical | P1 | Unit tests for 0.5% and 1% fee calculations |
| Double-spend race condition | Low | Critical | P1 | Transaction lock integration test |
| Rate limiter reset on server restart | Medium (was a bug) | High | P2 | middleware.test.ts with persistent limiter |
| BaaS mock mode leaking to production config | Low | High | P2 | CI check for NEXT_PUBLIC_SERVICE_MODE env var |
| SQLite concurrent write limit reached | High (at ~200 users) | Medium | P3 | Phase 1: PostgreSQL migration |
12. Dependencies & Assumptions
Dependencies:
PlatformStagingteamenvironmentprovisionsprovisioned and accessible at https://drop-staging.fly.dev/- Mock BaaS and Mock Sumsub configured in staging environment
by {{DATE}}variables {{THIRD_PARTY}}PlaywrightsandboxinstalledenvironmentinavailableCI Security(npx)teamplaywrightapproves SAST configuration by {{DATE}}install
Assumptions:
- Feature requirements will not change during the testing phase without John (AI Director) review
- All
developersBuilderwillagentrespondPRstoincludebugstestswithinalongside{{BUG_RESPONSE_SLA}} hourscode UATValidatorparticipantsagentarereviewsavailabletestperfilesthebeforeschedulemerge- BaaS
Sectionpartnership4not confirmed — mock mode accepted for MVP/staging
13. Defect Management Process
Bug tracker: {{BUG_TRACKER}}Mission Control tasks + Slack #drop-bugs on alai-talk.slack.com
Severity levels:
| Severity | Definition | Resolution SLA |
|---|---|---|
| Critical | Fix before release — no exceptions | |
| High | Major feature |
Fix before release |
| Medium | Feature |
Fix in next sprint |
| Low | Minor issue, cosmetic | Backlog |
Bug lifecycle: Open → Assigned (Mission Control) → In Progress → Fixed → Verified by Validator → Closed
Triage cadence: DailyOn duringeach PR/commit (CI-driven); daily for active testingtest phase
14. Test Deliverables
| Deliverable | Format | Due Date | Owner |
|---|---|---|---|
| Test plan (this document) | Markdown | ||
| Test strategy | test-strategy.md | 2026-02-23 | John |
| Test cases (automated) | |||
| Test execution results | |||
| Performance test report | |||
| UAT sign-off | |||
| Test summary report | Markdown (per release) |
Related Documents
- Test Strategy
- Test Case Template
- E2E Test Plan
- Performance Test Plan
- Definition of Done
- UAT Sign-off
- Testing Guide
- Test Inventory
Approval
| Role | Name | Date | Signature |
|---|---|---|---|
| Author | John (AI Director) | 2026-02-23 | Approved (AI) |
| Validator Agent | 2026-02-23 | Approved (AI) | |
| John | 2026-02-23 | Approved | |
| CEO (Alem) | Alem Bašić | TBD |