Blockchain Integration - Send/Receive Test Plan
Synchronization
Add an Account
Objective: Verify users can successfully add a new blockchain account
Preconditions:
- Ledger device connected and unlocked
- Blockchain app installed on device
Test Steps:
- Navigate to “Add Account” section
- Select the target blockchain
- Follow the device prompts to verify addresses
- Wait for account creation and initial sync
Pass Criteria:
- Account is created within 30 seconds
- Account appears in account list with correct blockchain name
- Account displays “0” balance initially or correct balance after sync
- No error messages displayed
- Account address format is valid for the blockchain
Fail Criteria:
- Error message appears
- Account creation takes >60 seconds
- Account appears with incorrect blockchain type
- Sync indicator shows failure
Migrate an Account (Cross-Version Compatibility)
Objective: Ensure accounts created in production work in test versions
Preconditions:
- Account created in production version
- Test/development version installed
- Same device and seed phrase used
Test Steps:
- Open test version of Ledger Wallet
- Import/sync existing account from production
- Verify account data integrity
- Perform a transaction
Pass Criteria:
- Account imports without errors
- All transaction history is preserved (100% of operations visible)
- Account balance matches production version (within 0.01% due to timing)
- Account settings/preferences are maintained
- Application does not crash during or after import
- Sync completes within 2 minutes for accounts with <1000 operations
Fail Criteria:
- Application crashes
- Transaction history incomplete (missing operations)
- Balance discrepancy >0.01%
- Import process hangs >5 minutes
Manual Synchronization Success
Objective: Verify manual sync completes successfully without errors
Preconditions:
- Account already added
- Blockchain node accessible
Test Steps:
- Navigate to account details
- Click/tap “Sync” or pull-to-refresh
- Observe sync progress indicator
- Wait for completion
Pass Criteria:
- Sync indicator shows progress (0-100%)
- Green checkmark appears upon completion within 30 seconds
- No error toast/notification displayed
- “Last synced” timestamp updates to current time
- Account balance updates if there were pending transactions
- Operation list updates with new transactions (if any)
Fail Criteria:
- Red error indicator appears
- Sync hangs indefinitely (>2 minutes)
- “Last synced” timestamp does not update
- Network errors displayed
Synchronization of Large Account (Pagination)
Objective: Verify sync handles accounts with extensive transaction history
Preconditions:
- Account with >500 transactions
- Internet connection stable
- API supports pagination
Test Steps:
- Add or sync large account
- Monitor sync progress
- Verify all operations loaded
Pass Criteria:
- Sync completes successfully within 5 minutes
- All operations displayed in chronological order
- No duplicate operations in history
- Application remains responsive during sync
- Pagination indicators work correctly (if applicable)
- Operation count matches blockchain explorer ±2 operations
Fail Criteria:
- Sync fails or times out
- Missing operations (>5 operations discrepancy with explorer)
- Duplicate operations appear
- Application becomes unresponsive
- Crash occurs during sync
Receive / Address Verification
Address Verification with Device
Objective: Verify users can securely verify receive address on Ledger device
Preconditions:
- Account added
- Ledger device connected and unlocked
- Blockchain app open on device
Test Steps:
- Navigate to “Receive” for the account
- Select account to receive funds
- Click “Verify on device”
- Compare address on screen with device display
- Confirm on device
Pass Criteria:
- Address displayed on computer/phone screen
- Same address shown on device screen (100% match)
- Address format is valid (checksum passes if applicable)
- QR code generated correctly and scannable
- Device shows “Approve” option
- Confirmation completes within 10 seconds
- Success message displayed after device confirmation
Fail Criteria:
- Addresses don’t match between screen and device
- Invalid address format
- QR code not generated or unscannable
- Device verification times out (>60 seconds)
- Error during device communication
Address Display without Device
Objective: Allow address viewing without device for convenience (with warning)
Preconditions:
- Account added
- Device may or may not be connected
Test Steps:
- Navigate to “Receive”
- Select account
- View address without device verification
- Check for security warning
Pass Criteria:
- Address displays within 2 seconds
- Security warning shown: “Verify address on device for maximum security” or similar
- QR code generated and scannable
- Copy address button works correctly
- Address format is valid
- Warning is prominently displayed (yellow/orange banner recommended)
Fail Criteria:
- No security warning displayed
- Address format invalid
- Copy function doesn’t work
- QR code malformed
Multiple Address Formats (e.g., Bitcoin Legacy/SegWit)
Objective: Verify support for different address formats where applicable
Preconditions:
- Blockchain supports multiple address formats
- Account configured for specific format
Test Steps:
- Navigate to “Receive”
- Check available address format options
- Verify each format with device
- Test receiving funds to each format
Pass Criteria:
- All supported formats displayed correctly (Legacy, SegWit, Native SegWit)
- Address format matches account configuration
- Device verification works for all formats
- Each format is clearly labeled
- Received funds appear correctly for each format type
Fail Criteria:
- Wrong address format generated
- Device verification fails for any format
- Unclear labeling of formats
- Funds sent to one format don’t appear
Balance
Available Balance Accuracy
Objective: Verify displayed balance matches actual blockchain balance
Preconditions:
- Account with known balance
- Recent sync completed
- Blockchain explorer available for verification
Test Steps:
- Check balance in Ledger Wallet
- Verify same address on blockchain explorer
- Compare balances
- Test with different units (BTC vs satoshi, ETH vs wei)
Pass Criteria:
- Balance matches explorer exactly (0% discrepancy)
- Balance updates within 60 seconds of new transaction
- Correct decimal places displayed (8 for Bitcoin, 18 for Ethereum, etc.)
- Fiat equivalent calculation accurate (±0.5% due to exchange rate timing)
- Pending transactions clearly separated from available balance
- Balance formatting uses correct thousands separators
Fail Criteria:
- Balance discrepancy >0.00000001 native units
- Balance doesn’t update after 5 minutes post-transaction
- Wrong decimal precision
- Fiat calculation off by >1%
Balance with Pending Transactions
Objective: Ensure pending transactions are clearly distinguished
Preconditions:
- Account with balance
- Ability to create pending transaction
Test Steps:
- Note current balance
- Send a transaction
- Check balance before confirmation
- Wait for confirmation
- Verify final balance
Pass Criteria:
- Available balance decreases immediately
- Pending transaction shown separately with indicator (clock icon, “pending” label)
- Balance indicates “X pending” if applicable
- After confirmation (1+ blocks), balance updates to final amount
- Pending status clears within 2 minutes of confirmation
- Total balance calculation: Available + Pending = Correct total
Fail Criteria:
- No distinction between available and pending
- Balance shows incorrect amount
- Pending indicator doesn’t clear after confirmation
- Confusing display of pending status
Broadcast / Send Transaction
Send Max Operation (Empty Account)
Objective: Verify “Send Max” completely empties the account
Preconditions:
- Account with balance ≥ minimum + fees
- Network fees estimable
- Device connected
Test Steps:
- Navigate to “Send”
- Click “Send Max” or “Use max amount”
- Review calculated amount (should be balance - fees)
- Complete transaction on device
- Verify final balance after confirmation
Pass Criteria:
- “Send Max” button clearly visible
- Calculated amount = Total Balance - Network Fees
- Fee calculation accurate (±1% of actual network fee)
- Transaction completes successfully
- Final balance = 0 (or dust amount if applicable: <0.00000546 BTC)
- No residual balance >1% of fee amount remains
- Fees deducted appropriately
Fail Criteria:
- Residual balance >dust threshold remains
- Transaction fails due to insufficient funds
- Fee calculation error >2%
- Amount sent + fees > available balance
Send Specific Amount
Objective: Verify sending exact specified amount
Preconditions:
- Account with sufficient balance
- Valid recipient address
- Device connected
Test Steps:
- Navigate to “Send”
- Enter specific amount (e.g., 0.05 BTC)
- Enter valid recipient address
- Review transaction details
- Confirm on device
- Monitor broadcast status
Pass Criteria:
- Amount field accepts valid input with correct decimal precision
- Fee estimation displays before confirmation
- Total deduction = Amount + Fee
- Device shows exact amount for confirmation
- Transaction broadcasts successfully within 30 seconds
- Transaction appears in pending operations
- Recipient receives exact amount specified (not less)
- Transaction ID/hash displayed after broadcast
Fail Criteria:
- Wrong amount shown on device
- Broadcast fails
- Amount + fee > available balance error
- Recipient receives incorrect amount
- No transaction ID provided
Insufficient Balance Handling
Objective: Verify appropriate error when balance is insufficient
Preconditions:
- Account with known balance
- Attempt to send amount > available balance
Test Steps:
- Navigate to “Send”
- Enter amount > (balance - minimum fee)
- Attempt to proceed
Pass Criteria:
- Clear error message: “Insufficient balance” or “Amount exceeds available balance”
- Error appears immediately when amount entered (real-time validation)
- “Continue” or “Send” button is disabled
- Suggested action provided: “Reduce amount” or “Add funds”
- Error persists until amount reduced to valid range
- No device interaction initiated
Fail Criteria:
- No error message
- Button remains enabled allowing invalid submission
- Confusing error message
- Application allows proceeding to device confirmation
- Application crashes when invalid amount entered
Invalid Address Handling
Objective: Verify rejection of invalid recipient addresses
Preconditions:
- Account ready to send
Test Steps:
- Navigate to “Send”
- Enter various invalid addresses:
- Wrong length
- Invalid characters
- Wrong checksum
- Different blockchain address
- Empty address
- Attempt to proceed with each
Pass Criteria:
- Error message for each invalid format: “Invalid address format”
- Specific error for wrong blockchain: “This is a [blockchain] address, not [expected blockchain]”
- Real-time validation as user types
- “Send” button disabled until valid address entered
- Checksum validation works correctly
- QR code scanner rejects invalid addresses
- Paste functionality validates before accepting
Fail Criteria:
- Invalid addresses accepted
- No error message shown
- Wrong error message for specific issue
- Application crashes on invalid input
- Allows proceeding with invalid address
Transaction with Memo/Destination Tag
Objective: Verify correct handling of memo fields (XRP, XLM, Cosmos, etc.)
Preconditions:
- Blockchain requiring memo/destination tag
- Account with balance
Test Steps:
- Navigate to “Send”
- Enter recipient address requiring memo
- Check memo field presence
- Enter memo/destination tag
- Complete transaction
Pass Criteria:
- Memo field clearly visible and labeled
- Warning if memo required but not entered: “This address requires a memo”
- Memo/tag included in transaction data
- Device shows memo during confirmation
- Transaction includes correct memo on blockchain
- Both numeric and text memos accepted (where applicable)
Fail Criteria:
- Memo field not present
- No warning for missing required memo
- Memo not included in broadcast transaction
- Wrong memo type accepted
- Device doesn’t show memo
Custom Fee Selection
Objective: Verify users can adjust transaction fees
Preconditions:
- Blockchain supporting custom fees
- Account with balance
Test Steps:
- Navigate to “Send”
- Enter amount and recipient
- Access fee customization (Advanced/Custom)
- Test fee levels: Low, Medium, High, Custom
- Verify each selection
Pass Criteria:
- Fee options clearly displayed (Slow/Standard/Fast or similar)
- Estimated confirmation time shown for each level
- Custom fee option available (if supported by blockchain)
- Fee calculation updates in real-time
- Device shows selected fee during confirmation
- Warning for very low fees: “May take longer to confirm”
- Warning for very high fees: “Fee unusually high”
- Total = Amount + Selected Fee
Fail Criteria:
- Fee options not available
- No time estimates provided
- Fee doesn’t update when changed
- Extreme fees (0 or excessive) accepted without warning
- Device shows different fee than selected
Operations / Transaction History
Optimistic Operation Display
Objective: Verify pending transactions appear immediately
Preconditions:
- Account with balance
- Ability to send transaction
Test Steps:
- Send a transaction
- Check operations list immediately after broadcast
- Monitor status updates
- Verify final confirmed state
Pass Criteria:
- Transaction appears in operations list within 5 seconds of broadcast
- Status: “Pending” or “Unconfirmed” clearly indicated
- Correct amount displayed with ”-” prefix for sends
- Correct recipient address shown
- Transaction ID/hash displayed
- Estimated confirmation time shown (if available)
- Status updates automatically (Pending → 1 confirmation → 2 confirmations → Confirmed)
- Final status reached when blockchain confirms (1-6 confirmations depending on chain)
Fail Criteria:
- Transaction not shown until confirmed
- Wrong amount displayed
- Missing transaction details
- Status never updates from pending
- No visual indicator of pending state
Complete Operation History
Objective: Verify all historical transactions are displayed
Preconditions:
- Account with known transaction history
- Blockchain explorer available for verification
Test Steps:
- Navigate to operation history
- Scroll through all operations
- Compare count with blockchain explorer
- Verify oldest and newest transactions present
- Check pagination/lazy loading
Pass Criteria:
- All transactions present (100% match with explorer)
- Operations in reverse chronological order (newest first)
- Correct pagination with “Load more” or infinite scroll
- Each operation shows: Date, Time, Amount, Type (Send/Receive), Status, Address
- Operation count matches explorer ±1 operation
- No duplicate operations
- Failed/cancelled transactions shown (if applicable)
Fail Criteria:
- Missing operations (>1 discrepancy with explorer)
- Duplicate entries
- Wrong chronological order
- Pagination fails to load more
- Operations missing key details
Transaction Details Accuracy
Objective: Verify operation details are complete and correct
Preconditions:
- Account with at least one transaction
- Transaction ID known
Test Steps:
- Select an operation from history
- View detailed transaction information
- Compare with blockchain explorer
- Verify all fields present
Pass Criteria:
- Transaction ID/hash matches explorer (100% match)
- Correct date and time (±1 minute due to blockchain timestamp)
- Correct amount (exact match to 8 decimals)
- Network fee displayed accurately
- Sender/recipient addresses correct
- Confirmation count accurate
- Block number displayed (if confirmed)
- Transaction type correct (Send/Receive/Self)
- Memo/tag displayed (if applicable)
Fail Criteria:
- Transaction ID mismatch
- Wrong amount (any discrepancy)
- Missing critical fields
- Incorrect confirmation count
- Wrong date/time (>5 minutes off)
Explorer Link Functionality
Objective: Verify “View on explorer” links work correctly
Preconditions:
- Account with confirmed transaction
- Internet connection
Test Steps:
- Select a transaction
- Click “View on explorer” or similar button
- Verify browser opens
- Check correct transaction displayed
Pass Criteria:
- “View on explorer” button clearly visible
- Link opens in external browser (mobile) or new tab (desktop)
- Correct blockchain explorer used (preferred: official or reputable)
- Exact transaction displayed by transaction ID
- Link opens within 3 seconds
- Works for both confirmed and pending transactions
Fail Criteria:
- Link doesn’t work
- Wrong transaction displayed
- Wrong blockchain explorer
- Link opens wrong page
- Button not present
Operation Account Attribution
Objective: Verify operations are attributed to correct accounts
Preconditions:
- Multiple accounts of same blockchain type
- Transactions in multiple accounts
Test Steps:
- View operations for Account A
- Verify all operations belong to Account A addresses
- Switch to Account B
- Verify operations belong to Account B addresses
- Check that cross-account operations aren’t duplicated
Pass Criteria:
- Each account shows only its own operations
- No operations from other accounts appear
- Self-transactions (account to account) appear in both accounts correctly
- Operation count accurate for each account independently
- Filters/sorting work per account
Fail Criteria:
- Operations appear in wrong account
- Missing operations in correct account
- Duplicate operations across accounts (except valid self-transfers)
- Cross-account operations incorrectly displayed
Account Details
Fiat Value Calculation
Objective: Verify fiat conversion accuracy
Preconditions:
- Account with balance
- Internet connection for rate data
- Known exchange rate source
Test Steps:
- Check account balance in crypto
- Note displayed fiat equivalent
- Verify exchange rate source
- Calculate manually
- Compare values
Pass Criteria:
- Fiat value displayed prominently alongside crypto balance
- Exchange rate updates every 30-60 seconds (or cached with timestamp)
- Calculation accurate: Crypto Balance × Exchange Rate = Fiat Value (±0.5%)
- Currency symbol correct for selected fiat (USD: $, EUR: €, etc.)
- Last updated timestamp shown
- Multiple fiat currencies selectable in settings
- Fiat value updates when balance changes
Fail Criteria:
- Fiat calculation off by >1%
- No currency symbol or wrong symbol
- Stale exchange rate (>10 minutes old without indication)
- Fiat value doesn’t update with balance
- Wrong fiat currency displayed
Account Favoriting
Objective: Verify users can mark accounts as favorites
Preconditions:
- Multiple accounts added
Test Steps:
- Navigate to account list
- Mark an account as favorite (star icon)
- Verify favorite indication
- Check if favorites appear first in list
- Unfavorite and verify removal
Pass Criteria:
- Clear favorite toggle (star icon or similar)
- Visual indication of favorite status (filled star)
- Favorites appear at top of account list
- Favorite status persists after app restart
- Can favorite/unfavorite with one tap/click
- Multiple accounts can be favorited
- Favorite status syncs across devices (if applicable)
Fail Criteria:
- Favorite status doesn’t persist
- No visual indication
- Favorites don’t sort to top
- Toggle requires multiple interactions
- Favorites don’t sync
Account Naming/Renaming
Objective: Verify users can customize account names
Preconditions:
- At least one account added
Test Steps:
- Navigate to account settings
- Edit account name
- Save new name
- Verify display across application
- Test special characters and length limits
Pass Criteria:
- Edit option clearly available
- Custom name displays everywhere account appears
- Supports alphanumeric and common special characters
- Maximum length: 50 characters (recommended)
- Name persists after app restart
- Name syncs across devices (if applicable)
- Cannot leave name empty (defaults to “Bitcoin Account 1” or similar)
Fail Criteria:
- Cannot edit name
- Name doesn’t persist
- Special characters cause errors
- Name truncated without indication
- Name doesn’t display consistently
Account Hiding
Objective: Verify users can hide zero-balance or unused accounts
Preconditions:
- Multiple accounts including zero-balance accounts
Test Steps:
- Navigate to account settings
- Hide an account
- Verify it’s removed from main list
- Access hidden accounts section
- Unhide and verify reappearance
Pass Criteria:
- Hide option available in account settings
- Hidden accounts removed from main list
- “Show hidden accounts” option accessible
- Hidden accounts list shows all hidden accounts
- Can unhide accounts easily
- Hidden status persists after app restart
- Balance changes don’t automatically unhide
Fail Criteria:
- No hide functionality
- Hidden accounts still appear in main list
- Cannot access hidden accounts
- Cannot unhide accounts
- Hidden status doesn’t persist