For dApps & ServicesLedger WalletAccountsIntegration walkthroughsBlockchainManual tests

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:

  1. Navigate to “Add Account” section
  2. Select the target blockchain
  3. Follow the device prompts to verify addresses
  4. 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:

  1. Open test version of Ledger Wallet
  2. Import/sync existing account from production
  3. Verify account data integrity
  4. 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:

  1. Navigate to account details
  2. Click/tap “Sync” or pull-to-refresh
  3. Observe sync progress indicator
  4. 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:

  1. Add or sync large account
  2. Monitor sync progress
  3. 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:

  1. Navigate to “Receive” for the account
  2. Select account to receive funds
  3. Click “Verify on device”
  4. Compare address on screen with device display
  5. 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:

  1. Navigate to “Receive”
  2. Select account
  3. View address without device verification
  4. 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:

  1. Navigate to “Receive”
  2. Check available address format options
  3. Verify each format with device
  4. 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:

  1. Check balance in Ledger Wallet
  2. Verify same address on blockchain explorer
  3. Compare balances
  4. 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:

  1. Note current balance
  2. Send a transaction
  3. Check balance before confirmation
  4. Wait for confirmation
  5. 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:

  1. Navigate to “Send”
  2. Click “Send Max” or “Use max amount”
  3. Review calculated amount (should be balance - fees)
  4. Complete transaction on device
  5. 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:

  1. Navigate to “Send”
  2. Enter specific amount (e.g., 0.05 BTC)
  3. Enter valid recipient address
  4. Review transaction details
  5. Confirm on device
  6. 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:

  1. Navigate to “Send”
  2. Enter amount > (balance - minimum fee)
  3. 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:

  1. Navigate to “Send”
  2. Enter various invalid addresses:
    • Wrong length
    • Invalid characters
    • Wrong checksum
    • Different blockchain address
    • Empty address
  3. 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:

  1. Navigate to “Send”
  2. Enter recipient address requiring memo
  3. Check memo field presence
  4. Enter memo/destination tag
  5. 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:

  1. Navigate to “Send”
  2. Enter amount and recipient
  3. Access fee customization (Advanced/Custom)
  4. Test fee levels: Low, Medium, High, Custom
  5. 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:

  1. Send a transaction
  2. Check operations list immediately after broadcast
  3. Monitor status updates
  4. 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:

  1. Navigate to operation history
  2. Scroll through all operations
  3. Compare count with blockchain explorer
  4. Verify oldest and newest transactions present
  5. 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:

  1. Select an operation from history
  2. View detailed transaction information
  3. Compare with blockchain explorer
  4. 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)

Objective: Verify “View on explorer” links work correctly

Preconditions:

  • Account with confirmed transaction
  • Internet connection

Test Steps:

  1. Select a transaction
  2. Click “View on explorer” or similar button
  3. Verify browser opens
  4. 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:

  1. View operations for Account A
  2. Verify all operations belong to Account A addresses
  3. Switch to Account B
  4. Verify operations belong to Account B addresses
  5. 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:

  1. Check account balance in crypto
  2. Note displayed fiat equivalent
  3. Verify exchange rate source
  4. Calculate manually
  5. 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:

  1. Navigate to account list
  2. Mark an account as favorite (star icon)
  3. Verify favorite indication
  4. Check if favorites appear first in list
  5. 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:

  1. Navigate to account settings
  2. Edit account name
  3. Save new name
  4. Verify display across application
  5. 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:

  1. Navigate to account settings
  2. Hide an account
  3. Verify it’s removed from main list
  4. Access hidden accounts section
  5. 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
Ledger
Copyright © Ledger SAS. All rights reserved. Ledger, Ledger Stax, Ledger Flex, Ledger Nano, Ledger Nano S, Ledger OS, Ledger Wallet, [LEDGER] (logo), [L] (logo) are trademarks owned by Ledger SAS.