{{ theme.skipToContentLabel || 'Skip to content' }}

System Testing Document

Parent Document: TEST_PLAN.mdVersion: 1.2 | Date: January 5, 2026


1. Overview

1.1 Purpose

This document defines the system testing strategy for the Dustac Environmental Monitoring Dashboard. System tests validate the complete integrated system against functional and non-functional requirements.

1.2 Scope

  • Functional testing of complete features
  • Performance testing
  • Security testing
  • Usability testing
  • Accessibility testing
  • Compatibility testing

1.3 Environment


2. Functional Testing

2.1 User Authentication

TC-SYS-AUTH-001: User Registration

FieldValue
Test IDTC-SYS-AUTH-001
PriorityP0
RequirementREQ-001

Preconditions:

  • User not registered in system
  • Valid @dustac.com.au email

Test Steps:

StepActionExpected Result
1Navigate to /registerRegistration form displayed
2Enter valid email (test@dustac.com.au)Email field accepts input
3Enter password (min 8 chars, 1 number)Password strength indicator shows "Strong"
4Confirm passwordPasswords match indicator shown
5Click "Register"Loading indicator shown
6Check emailConfirmation email received
7Click confirmation linkAccount activated, redirected to login

Pass Criteria: User successfully registered and can login


TC-SYS-AUTH-002: User Login

FieldValue
Test IDTC-SYS-AUTH-002
PriorityP0
RequirementREQ-002

Test Steps:

StepActionExpected Result
1Navigate to /loginLogin form displayed
2Enter valid emailEmail accepted
3Enter valid passwordPassword masked
4Click "Login"JWT token set in storage
5Verify redirectDashboard displayed
6Check sessionUser info in header

Pass Criteria: User authenticated and dashboard accessible


2.2 CSV Upload

TC-SYS-UPLOAD-001: Upload Valid CSV

FieldValue
Test IDTC-SYS-UPLOAD-001
PriorityP0
RequirementREQ-012

Test Data: valid-multi-device-weekly.csv (5 devices, 10,080 records)

Test Steps:

StepActionExpected Result
1Navigate to /uploadUpload page displayed
2Click "Select Files"File browser opens
3Select test CSVFile appears in list
4Verify previewShows filename, row count, columns
5Click "Upload"Progress bar starts
6Wait for completionSuccess message: "10,080 records imported"
7Check upload historyNew upload session listed
8Verify dashboardNew data visible in charts

Pass Criteria: All records imported, data visible in dashboard


TC-SYS-UPLOAD-002: Upload Invalid CSV

FieldValue
Test IDTC-SYS-UPLOAD-002
PriorityP0
RequirementREQ-012

Test Data: missing-columns.csv (missing PM2.5 column)

Test Steps:

StepActionExpected Result
1Select invalid CSVFile appears in list
2Verify previewWarning indicator shown
3Click "Upload"Validation error displayed
4Check error message"Missing required column: numberconcentrations2p5"
5Verify databaseNo partial data inserted

Pass Criteria: Upload rejected with clear error, no data corruption


2.3 Report Generation

TC-SYS-REPORT-001: Generate PDF Report

FieldValue
Test IDTC-SYS-REPORT-001
PriorityP0
RequirementREQ-045

Preconditions: Upload session with data exists

Test Steps:

StepActionExpected Result
1Navigate to /reports/generateReport generator displayed
2Select upload sessionSession details shown
3Select date rangeCharts preview updates
4Enable all chart typesAll chart options checked
5Click "Generate PDF"Progress indicator starts
6Wait for completion (< 60s)Download button appears
7Download PDFPDF file downloaded
8Open PDFAll charts rendered, data correct

Pass Criteria: PDF generated within 60s, all charts visible


TC-SYS-REPORT-002: Device Timeline with Data Gaps

FieldValue
Test IDTC-SYS-REPORT-002
PriorityP1
RequirementREQ-045

Preconditions: Upload session with data gaps (>1 hour between records)

Test Steps:

StepActionExpected Result
1Generate report with timeline chartTimeline chart visible in preview
2Verify gap visualizationGaps shown as breaks in timeline bars
3Hover over segmentTooltip shows segment details
4Verify gap countGap count matches expected
5Generate PDFTimeline chart in PDF matches preview

Pass Criteria: Data gaps correctly visualized in both preview and PDF


2.4 Dashboard

TC-SYS-DASH-001: Dashboard Data Display

FieldValue
Test IDTC-SYS-DASH-001
PriorityP0
RequirementREQ-030

Test Steps:

StepActionExpected Result
1Login and navigate to dashboardDashboard loads
2Verify KPI cardsAll metrics displayed
3Verify time series chartData plotted correctly
4Apply date filterChart updates
5Select different deviceData filters to device
6Check responsivenessLayout adapts to screen size

Pass Criteria: Dashboard displays accurate data with working filters


3. Performance Testing

3.1 Performance Targets

MetricTargetCritical
Dashboard LCP< 2.5s< 4.0s
API Response (p95)< 500ms< 1000ms
PDF Generation< 60s< 120s
CSV Upload (10k rows)< 30s< 60s
Concurrent Users5025

3.2 Performance Test Cases

TC-SYS-PERF-001: Dashboard Load Time

FieldValue
Test IDTC-SYS-PERF-001
PriorityP0
TypePerformance

Test Steps:

  1. Clear browser cache
  2. Navigate to dashboard with Lighthouse CI
  3. Measure LCP, FID, CLS
  4. Repeat 5 times, calculate average

Pass Criteria:

  • LCP < 2.5s
  • FID < 100ms
  • CLS < 0.1

TC-SYS-PERF-002: API Response Time

FieldValue
Test IDTC-SYS-PERF-002
PriorityP0
TypePerformance

Test Script (k6):

javascript
import http from 'k6/http';
import { check } from 'k6';

export const options = {
  vus: 10,
  duration: '1m',
  thresholds: {
    http_req_duration: ['p(95)<500']
  }
};

export default function() {
  const res = http.get('https://staging.dustac.app/api/measurements');
  check(res, {
    'status is 200': (r) => r.status === 200,
    'response time < 500ms': (r) => r.timings.duration < 500
  });
}

Pass Criteria: p95 response time < 500ms


TC-SYS-PERF-003: Concurrent User Load

FieldValue
Test IDTC-SYS-PERF-003
PriorityP1
TypeLoad Test

Test Script (k6):

javascript
export const options = {
  stages: [
    { duration: '2m', target: 10 },  // Ramp up
    { duration: '5m', target: 50 },  // Peak load
    { duration: '2m', target: 0 }    // Ramp down
  ],
  thresholds: {
    http_req_failed: ['rate<0.01'],      // <1% errors
    http_req_duration: ['p(95)<1000']    // <1s p95
  }
};

Pass Criteria: System handles 50 concurrent users with <1% error rate


4. Security Testing

4.1 OWASP Top 10 Coverage

VulnerabilityTest CaseMethod
SQL InjectionTC-SYS-SEC-001Automated scan
Broken AuthTC-SYS-SEC-002Manual + automated
Sensitive DataTC-SYS-SEC-003Manual review
XSSTC-SYS-SEC-004Automated scan
Broken AccessTC-SYS-SEC-005Manual testing

4.2 Security Test Cases

TC-SYS-SEC-001: SQL Injection Prevention

Test Steps:

  1. Input malicious SQL in search fields: '; DROP TABLE users; --
  2. Input SQL in URL parameters: /api/data?id=1 OR 1=1
  3. Verify parameterized queries in logs

Pass Criteria: All inputs sanitized, no SQL execution


TC-SYS-SEC-002: Authentication Security

Test Steps:

  1. Attempt login with invalid JWT
  2. Test expired token handling
  3. Verify session timeout (24 hours)
  4. Test password reset token expiry

Pass Criteria: All unauthorized requests rejected with 401


TC-SYS-SEC-005: RLS Enforcement

Test Steps:

  1. Login as User A
  2. Attempt API call to User B's data
  3. Verify response is empty or 403
  4. Check direct database access blocked

Pass Criteria: Users cannot access other users' data


5. Usability Testing

5.1 Usability Heuristics

HeuristicTest Focus
VisibilityStatus indicators, loading states
MatchMining terminology, familiar patterns
ControlUndo, cancel, back navigation
ConsistencyUI patterns, terminology
Error PreventionValidation, confirmations
RecognitionClear labels, tooltips
FlexibilityShortcuts, customization
AestheticsClean design, minimal clutter
Error RecoveryHelpful error messages
HelpDocumentation, tooltips

5.2 Usability Test Cases

TC-SYS-USE-001: First-Time User Onboarding

FieldValue
Test IDTC-SYS-USE-001
PriorityP1

Scenario: New user completes first upload and generates report

Observations:

  • [ ] User finds upload button easily
  • [ ] File selection is intuitive
  • [ ] Progress feedback is clear
  • [ ] Report generation is discoverable
  • [ ] PDF download is obvious

Pass Criteria: User completes flow without external help


6. Accessibility Testing

6.1 WCAG 2.1 AA Compliance

CriterionTest Method
Keyboard NavigationManual testing
Screen ReaderNVDA/VoiceOver
Color Contrastaxe-core
Focus IndicatorsVisual inspection
Alt TextAutomated scan

6.2 Accessibility Test Cases

TC-SYS-A11Y-001: Keyboard Navigation

Test Steps:

  1. Navigate entire app using Tab key
  2. Verify all interactive elements focusable
  3. Test Enter/Space activation
  4. Verify Escape closes modals

Pass Criteria: All functionality accessible via keyboard


TC-SYS-A11Y-002: Screen Reader Compatibility

Test Steps:

  1. Enable NVDA/VoiceOver
  2. Navigate through dashboard
  3. Verify chart descriptions read aloud
  4. Test form field labels
  5. Verify error messages announced

Pass Criteria: All content accessible to screen reader users


7. Compatibility Testing

7.1 Browser Matrix

BrowserVersionPriority
ChromeLatest, Latest-1P0
FirefoxLatest, Latest-1P0
SafariLatestP1
EdgeLatestP1

7.2 Device Matrix

DeviceResolutionPriority
Desktop1920x1080P0
Desktop1366x768P0
Tablet1024x768P1
Mobile375x667P2

7.3 Compatibility Test Cases

TC-SYS-COMPAT-001: Cross-Browser Testing

Test Steps:

  1. Execute core workflow in each browser
  2. Verify chart rendering consistency
  3. Check CSS layout accuracy
  4. Test file upload functionality
  5. Verify PDF generation

Pass Criteria: Consistent behavior across all browsers


8. Test Execution Summary

8.1 Test Case Count

CategoryTotalP0P1P2
Functional2512103
Performance8431
Security10631
Usability6231
Accessibility5221
Compatibility6321
Total6029238

8.2 Exit Criteria

  • All P0 test cases passed
  • ≥95% P1 test cases passed
  • No open S0/S1 defects
  • Performance targets met
  • Security scan passed

Related Documents: