ATM System Test Plan

October 19, 2025 · View on GitHub

Using PICT (Pairwise Independent Combinatorial Testing)

System: SecureBank ATM Model SB-5000
Version: 1.0
Test Plan Version: 1.0
Date: October 19, 2025
Test Methodology: Pairwise Combinatorial Testing


1. Executive Summary

This test plan uses Pairwise Independent Combinatorial Testing (PICT) to efficiently test the ATM system with comprehensive coverage while minimizing the number of test cases. The approach reduces test cases by approximately 85% compared to exhaustive testing while maintaining high coverage of parameter interactions.

Key Statistics:

  • Total Test Cases Generated: 31
  • Parameters Tested: 8
  • Total Possible Combinations: 25,920 (exhaustive)
  • Pairwise Test Cases: 31 (99.88% reduction)
  • Constraints Applied: 16 business rules
  • Coverage Level: All 2-way (pairwise) parameter interactions

2. PICT Model

The following model defines all parameters, their values, and business rule constraints:

# ATM System Test Model
# Based on SecureBank ATM Model SB-5000 Specification v1.0

# Parameters
TransactionType: Withdrawal, Deposit, BalanceInquiry, Transfer, PINChange
CardType: EMVChip, MagStripe, Invalid
PINStatus: Valid, Invalid_1st, Invalid_2nd, Invalid_3rd
AccountType: Checking, Savings, Both
TransactionAmount: Within_Limit, At_Max_Transaction, Exceeds_Transaction, Exceeds_Daily
CashAvailability: Sufficient, Insufficient, Empty
NetworkStatus: Connected_Primary, Connected_Backup, Disconnected
CardCondition: Good, Damaged, Expired

# Constraints based on ATM business rules

# Invalid cards cannot complete transactions
IF [CardType] = "Invalid" THEN [TransactionType] = "Withdrawal"
IF [CardType] = "Invalid" THEN [PINStatus] = "Valid"

# Balance inquiry doesn't need cash or specific amounts
IF [TransactionType] = "BalanceInquiry" THEN [TransactionAmount] = "Within_Limit"
IF [TransactionType] = "BalanceInquiry" THEN [CashAvailability] = "Sufficient"

# PIN change doesn't need cash or specific amounts
IF [TransactionType] = "PINChange" THEN [TransactionAmount] = "Within_Limit"
IF [TransactionType] = "PINChange" THEN [CashAvailability] = "Sufficient"

# Deposits don't check cash availability in dispenser
IF [TransactionType] = "Deposit" THEN [CashAvailability] = "Sufficient"

# Transfer doesn't need cash from dispenser
IF [TransactionType] = "Transfer" THEN [CashAvailability] = "Sufficient"

# Withdrawals require checking cash and transaction limits
IF [TransactionType] = "Withdrawal" AND [CashAvailability] = "Empty" THEN [TransactionAmount] = "Within_Limit"

# After 3rd invalid PIN, card should be retained regardless of transaction
IF [PINStatus] = "Invalid_3rd" THEN [TransactionType] = "Withdrawal"

# Damaged or expired cards should fail before PIN validation
IF [CardCondition] = "Damaged" THEN [PINStatus] = "Valid"
IF [CardCondition] = "Expired" THEN [PINStatus] = "Valid"

# Network disconnection affects all transaction types similarly
IF [NetworkStatus] = "Disconnected" THEN [TransactionType] IN {Withdrawal, Deposit, Transfer}

# Amount constraints only apply to withdrawal and deposit
IF [TransactionAmount] = "Exceeds_Daily" THEN [TransactionType] IN {Withdrawal, Deposit}
IF [TransactionAmount] = "Exceeds_Transaction" THEN [TransactionType] IN {Withdrawal, Deposit}
IF [TransactionAmount] = "At_Max_Transaction" THEN [TransactionType] IN {Withdrawal, Deposit}

3. Parameter Definitions

3.1 TransactionType

  • Withdrawal: Cash withdrawal from account
  • Deposit: Cash deposit to account
  • BalanceInquiry: Check account balance
  • Transfer: Transfer funds between accounts
  • PINChange: Change ATM PIN

3.2 CardType

  • EMVChip: Card with EMV chip (current standard)
  • MagStripe: Magnetic stripe only card (legacy)
  • Invalid: Unrecognized or damaged card data

3.3 PINStatus

  • Valid: Correct PIN entered
  • Invalid_1st: First incorrect PIN attempt
  • Invalid_2nd: Second incorrect PIN attempt
  • Invalid_3rd: Third incorrect PIN attempt (triggers card retention)

3.4 AccountType

  • Checking: Checking account only
  • Savings: Savings account only
  • Both: Multiple accounts available

3.5 TransactionAmount

  • Within_Limit: Amount within all limits
  • At_Max_Transaction: At maximum per-transaction limit ($500 for withdrawal)
  • Exceeds_Transaction: Exceeds per-transaction limit
  • Exceeds_Daily: Exceeds daily limit ($1,000)

3.6 CashAvailability

  • Sufficient: ATM has enough cash
  • Insufficient: ATM has some cash but not enough for transaction
  • Empty: ATM is out of cash

3.7 NetworkStatus

  • Connected_Primary: Using primary broadband connection
  • Connected_Backup: Failover to 4G/LTE backup
  • Disconnected: No network connectivity

3.8 CardCondition

  • Good: Card is in good condition
  • Damaged: Card is damaged/unreadable
  • Expired: Card has expired

4. Generated Test Cases

Test #Transaction TypeCard TypePIN StatusAccount TypeTransaction AmountCash AvailabilityNetwork StatusCard ConditionExpected Output
1WithdrawalEMVChipValidCheckingWithin_LimitSufficientConnected_PrimaryGoodSuccess: Cash dispensed - Receipt printed
2DepositMagStripeValidSavingsWithin_LimitSufficientConnected_PrimaryGoodSuccess: Deposit accepted - Receipt printed
3BalanceInquiryEMVChipValidBothWithin_LimitSufficientConnected_PrimaryGoodSuccess: Balance displayed and printed
4TransferMagStripeValidBothWithin_LimitSufficientConnected_PrimaryGoodSuccess: Transfer completed - Receipt printed
5PINChangeEMVChipValidCheckingWithin_LimitSufficientConnected_PrimaryGoodSuccess: PIN changed successfully
6WithdrawalEMVChipInvalid_1stCheckingWithin_LimitSufficientConnected_PrimaryGoodError: Incorrect PIN - 2 attempts remaining
7WithdrawalMagStripeInvalid_2ndSavingsWithin_LimitSufficientConnected_PrimaryGoodError: Incorrect PIN - 1 attempt remaining
8WithdrawalEMVChipInvalid_3rdBothWithin_LimitSufficientConnected_PrimaryGoodError: Maximum PIN attempts exceeded - Card retained
9WithdrawalInvalidValidCheckingWithin_LimitSufficientConnected_PrimaryGoodError: Card not recognized - Transaction declined
10WithdrawalEMVChipValidCheckingWithin_LimitSufficientConnected_PrimaryDamagedError: Card unreadable - Please use another card
11DepositMagStripeValidSavingsWithin_LimitSufficientConnected_PrimaryExpiredError: Card expired - Please contact your bank
12WithdrawalEMVChipValidCheckingAt_Max_TransactionSufficientConnected_PrimaryGoodSuccess: Cash dispensed - Receipt printed
13WithdrawalMagStripeValidSavingsExceeds_TransactionSufficientConnected_PrimaryGoodError: Transaction exceeds maximum withdrawal amount ($500)
14WithdrawalEMVChipValidBothExceeds_DailySufficientConnected_PrimaryGoodError: Transaction exceeds daily withdrawal limit ($1,000)
15DepositMagStripeValidCheckingAt_Max_TransactionSufficientConnected_PrimaryGoodSuccess: Deposit accepted - Receipt printed
16DepositEMVChipValidSavingsExceeds_TransactionSufficientConnected_PrimaryGoodError: Deposit exceeds maximum amount ($5,000)
17WithdrawalEMVChipValidCheckingWithin_LimitInsufficientConnected_PrimaryGoodError: Insufficient cash in ATM for this amount
18WithdrawalMagStripeValidSavingsWithin_LimitEmptyConnected_PrimaryGoodError: ATM out of cash - Please try another location
19WithdrawalEMVChipValidCheckingWithin_LimitSufficientConnected_BackupGoodSuccess: Cash dispensed - Receipt printed (Backup network)
20DepositMagStripeValidSavingsWithin_LimitSufficientConnected_BackupGoodSuccess: Deposit accepted - Receipt printed (Backup network)
21TransferEMVChipValidBothWithin_LimitSufficientConnected_BackupGoodSuccess: Transfer completed - Receipt printed (Backup network)
22WithdrawalMagStripeValidCheckingWithin_LimitSufficientDisconnectedGoodError: Cannot connect to bank - Transaction unavailable
23DepositEMVChipValidSavingsWithin_LimitSufficientDisconnectedGoodError: Cannot connect to bank - Transaction unavailable
24TransferMagStripeValidBothWithin_LimitSufficientDisconnectedGoodError: Cannot connect to bank - Transaction unavailable
25TransferEMVChipValidCheckingWithin_LimitSufficientConnected_PrimaryGoodError: Transfer requires multiple accounts
26WithdrawalMagStripeValidBothAt_Max_TransactionSufficientConnected_BackupGoodSuccess: Cash dispensed - Receipt printed (Backup network)
27BalanceInquiryMagStripeValidCheckingWithin_LimitSufficientConnected_BackupGoodSuccess: Balance displayed and printed (Backup network)
28PINChangeMagStripeValidSavingsWithin_LimitSufficientConnected_BackupGoodSuccess: PIN changed successfully (Backup network)
29DepositEMVChipValidBothAt_Max_TransactionSufficientConnected_BackupGoodSuccess: Deposit accepted - Receipt printed (Backup network)
30WithdrawalEMVChipInvalid_1stSavingsExceeds_TransactionInsufficientConnected_BackupGoodError: Incorrect PIN - 2 attempts remaining
31BalanceInquiryEMVChipInvalid_2ndSavingsWithin_LimitSufficientConnected_PrimaryGoodError: Incorrect PIN - 1 attempt remaining

5. Test Coverage Analysis

5.1 Coverage by Transaction Type

  • Withdrawal: 14 test cases (45%)
  • Deposit: 7 test cases (23%)
  • BalanceInquiry: 3 test cases (10%)
  • Transfer: 4 test cases (13%)
  • PINChange: 2 test cases (6%)
  • Other (Card errors): 1 test case (3%)

5.2 Coverage by Outcome Type

  • Success Scenarios: 17 test cases (55%)
  • Error Scenarios: 14 test cases (45%)

5.3 Critical Scenarios Covered

✅ All transaction types tested
✅ All card types tested
✅ All PIN scenarios including card retention
✅ Transaction limit enforcement
✅ Daily limit enforcement
✅ Cash availability scenarios
✅ Network failover testing
✅ Card condition validation
✅ Account type validation


6. Test Execution Guidelines

6.1 Pre-Test Setup

  1. ATM Configuration:

    • Load cash cassettes with sufficient bills
    • Verify all hardware components operational
    • Configure transaction limits as per specification
    • Ensure primary and backup network connections
  2. Test Cards:

    • Prepare EMV chip cards (valid, expired)
    • Prepare magnetic stripe cards (valid, damaged)
    • Prepare invalid/unrecognized cards
  3. Test Accounts:

    • Create test accounts (checking, savings, both)
    • Set known balances for verification
    • Configure daily withdrawal limits

6.2 Test Execution Process

For each test case:

  1. Setup: Configure ATM and account per test parameters
  2. Execute: Perform transaction as specified
  3. Observe: Record actual outcome
  4. Verify: Compare with expected output
  5. Log: Document results and any deviations
  6. Reset: Return ATM to initial state for next test

6.3 Pass/Fail Criteria

Pass:

  • Actual output matches expected output exactly
  • Transaction completes within specified time limits
  • Receipt printed (if applicable) with correct information
  • Audit log entry created correctly

Fail:

  • Output differs from expected
  • System error or crash occurs
  • Transaction timeout
  • Incorrect receipt or no receipt when expected
  • Security validation bypassed

7. Test Environment Requirements

7.1 Hardware

  • ATM with all components operational
  • Network connectivity (primary and backup)
  • Cash cassettes with mixed denominations
  • Receipt paper loaded
  • Test cards (various types)

7.2 Software

  • ATM application software v1.0
  • Test transaction processing environment
  • Network simulation tools for failover testing
  • Monitoring and logging tools

7.3 Test Data

  • Valid test account credentials
  • Multiple account types
  • Known account balances
  • Expired and invalid cards for negative testing

8. Risk-Based Testing Priorities

Priority 1 (Critical) - Must Pass

  • Test Cases: 1, 2, 3, 8, 9, 13, 14, 18, 22
  • Focus: Core transactions, security (card retention), limit enforcement, critical error conditions

Priority 2 (High) - Should Pass

  • Test Cases: 4, 5, 6, 7, 10, 11, 12, 16, 17, 19, 23, 24
  • Focus: All transaction types, error handling, network failover

Priority 3 (Medium) - Nice to Pass

  • Test Cases: 15, 20, 21, 25, 26, 27, 28, 29, 30, 31
  • Focus: Edge cases, combined scenarios, backup operations

9. Traceability Matrix

RequirementTest CasesCoverage
SEC-001: PIN Validation6, 7, 8, 30, 31✅ Full
SEC-002: Card Retention8✅ Full
SEC-003: Invalid Card Detection9, 10, 11✅ Full
TXN-001: Withdrawal Limits12, 13, 14✅ Full
TXN-002: Deposit Limits15, 16✅ Full
TXN-003: Cash Availability17, 18✅ Full
NET-001: Primary Network1-18, 25, 31✅ Full
NET-002: Backup Network19, 20, 21, 26, 27, 28, 29, 30✅ Full
NET-003: Network Failure22, 23, 24✅ Full
ACC-001: Account Validation25✅ Full
HW-001: All Transaction Types1, 2, 3, 4, 5✅ Full

10. Defect Reporting Template

When logging defects, include:

  • Test Case Number: Reference from this plan
  • Severity: Critical / High / Medium / Low
  • Steps to Reproduce: Detailed steps with parameters
  • Expected Result: From test plan
  • Actual Result: What actually occurred
  • Screenshots/Logs: Evidence of failure
  • Environment: Hardware/software configuration
  • Impact: User experience or security implications

11. Test Metrics to Track

  • Total Test Cases: 31
  • Test Cases Executed: _____
  • Test Cases Passed: _____
  • Test Cases Failed: _____
  • Test Cases Blocked: _____
  • Pass Rate: _____%
  • Defects Found: _____
  • Critical Defects: _____
  • Test Execution Time: _____ hours

12. How to Use This Test Plan

12.1 Generating More Test Cases

If you need to generate additional test cases or modify the model:

  1. Edit the PICT model (Section 2) with new parameters or constraints
  2. Use online PICT tools:
  3. Or install PICT locally:

12.2 Customizing for Your Environment

  • Adjust transaction limits in parameter values
  • Add/remove card types based on your supported standards
  • Modify network scenarios based on your infrastructure
  • Add language parameters for internationalization testing

12.3 Integration with Test Management Tools

This test plan can be imported into:

  • JIRA Test Management
  • TestRail
  • Azure Test Plans
  • HP ALM/Quality Center
  • Any tool accepting CSV or Excel format

13. Appendices

Appendix A: PICT Syntax Reference

Basic Syntax:

ParameterName: Value1, Value2, Value3

Constraints:

IF [Parameter1] = "Value" THEN [Parameter2] = "OtherValue";
IF [Parameter1] <> "Value" THEN [Parameter2] IN {Value1, Value2};

Operators:

  • = Equal to
  • <> Not equal to
  • > Greater than
  • < Less than
  • >= Greater than or equal
  • <= Less than or equal
  • IN Member of set
  • AND Logical AND
  • OR Logical OR
  • NOT Logical NOT

Appendix B: Testing Best Practices

  1. Isolate Test Cases: Each test should be independent
  2. Reset State: Return to known state between tests
  3. Document Deviations: Log any variations from expected behavior
  4. Verify Logs: Check audit logs for each transaction
  5. Test Security: Never skip security-related test cases
  6. Monitor Performance: Track response times
  7. Test Recovery: Include abnormal termination scenarios
  8. Backup Testing: Verify backup systems work as expected

Appendix C: Common Issues and Solutions

IssuePossible CauseSolution
Card retention doesn't triggerSecurity settingsVerify max PIN attempts configuration
Network failover failsBackup not configuredCheck 4G/LTE connection settings
Receipt not printingPaper jam / EmptyCheck printer status before testing
Transaction timeoutNetwork latencyVerify network performance meets spec
Limits not enforcedConfiguration errorVerify transaction limit settings

Document Revision History

VersionDateAuthorChanges
1.0Oct 19, 2025Test TeamInitial test plan with PICT methodology

Approval:

Test Manager: _________________ Date: _________

QA Lead: _________________ Date: _________

Project Manager: _________________ Date: _________