QR Code Scanning Testing Checklist (2026)
Qr Code Scanning Testing Checklist (2026) provides a concrete, item‑by‑item guide for verifying that a mobile or web application correctly reads, interprets, and acts on QR codes under normal, error,
Qr Code Scanning Testing Checklist (2026) provides a concrete, item‑by‑item guide for verifying that a mobile or web application correctly reads, interprets, and acts on QR codes under normal, error, edge, accessibility, security, performance, and release conditions.
---
Qr Code Scanning Testing Checklist (2026): Happy Path Scenarios
Core Scan Functionality
When a user points the camera at a valid QR code, the app must recognize the pattern, decode the payload, and trigger the intended action without user intervention beyond the scan.
- Test ID HP‑01: Scan a QR code encoding a plain URL (e.g.,
https://example.com). Expected result: the app opens the URL in the default browser or an embedded web view. Pass criteria: navigation occurs within 2 seconds, no error dialog appears. - Test ID HP‑02: Scan a QR code encoding a vCard (MECARD format). Expected result: the app parses name, phone, email, and offers to add the contact. Pass criteria: all fields populate correctly, “Add to contacts” button is enabled.
- Test ID HP‑03: Scan a QR code encoding a Wi‑Fi network (
WIFI:T:WPA;S:MySSID;P:secret;;). Expected result: the OS prompts to join the network. Pass criteria: prompt appears with correct SSID and security type, user can accept without manual entry. - Test ID HP‑04: Scan a QR code encoding a plain text string longer than 2000 characters (maximum allowed by QR‑Code Model 2). Expected result: the app displays the full text in a scrollable view. Pass criteria: no truncation, scroll works smoothly.
UI Feedback and Confirmation
The scan UI should give clear visual and haptic feedback that a code was detected and processed.
- Test ID HP‑05: Overlay a rectangular frame on the camera preview that turns green when a QR code is inside the frame and decodes successfully. Pass criteria: color change occurs within 300 ms of successful decode, reverts to idle state when code leaves frame.
- Test ID HP‑06: Emit a short vibration or beep on successful decode. Pass criteria: haptic event fires once per successful scan, no duplicate events for the same frame.
- Test ID HP‑07: Display a toast or snackbar with the decoded payload (or a preview) for 2 seconds. Pass criteria: message disappears after timeout, user can tap to open full detail.
Handling Different QR Versions and ECC Levels
QR codes come in versions 1‑40 and error correction levels L, M, Q, H. The scanner must tolerate all.
- Test ID HP‑08: Generate QR codes for each version (1‑40) with fixed payload: {ECCE Expected result: each version decodes correctly. Expected result: all versions decode. Pass criteria: success rate 100 % across versions.
- Test ID HP‑09: For a fixed payload, produce QR codes with ECC levels L, M, Q, H. Expected result: all decode. Pass criteria: no failures attributable to ECC level.
---
Qr Code Scanning Testing Checklist (2026): Error Handling and Edge Cases
Malformed or Damaged Codes
Real‑world QR codes may be partially obscured, or low‑contrast codes must be rejected gracefully.
- Test ID ER‑01: Print a QR code with 30 % of its modules covered by opaque tape. Expected result: scanner shows “Unable to read code” or similar message. Pass criteria: no crash, message appears within 1 second of scanning stops after three unsuccessful attempts.
- Test ID ER‑02: Present a QR code printed on glossy surface causing specular reflection that washes out modules. Expected result: scanner prompts user to adjust angle or lighting. Pass criteria: guidance appears, no false positive.
- Test ID ER‑03: Provide a QR code where the finder patterns are swapped (invalid structure). Expected result: scanner rejects and shows error. Pass criteria: error message, no attempt to decode payload.
Non‑QR Barcode Interference
Other 1D/2D barcodes (e.g., UPC, Data Matrix) should not be mistakenly processed as QR.
- Test ID ER‑04: Show a UPC‑A barcode alongside a QR code in the same frame. Expected result: scanner either ignores the UPC or reports “Only QR codes supported”. Pass criteria: no navigation triggered by UPC.
- Test ID ER‑05: Display a Data Matrix code that visually resembles a QR code (similar finder pattern size). Expected result: scanner ignores it. Pass criteria: no false decode.
Payload Validation and Sanitization
Decoded strings must be validated before use to avoid injection or unexpected behavior.
- Test ID ER‑06: Encode a JavaScript URL (
javascript:alert('xss')). Expected result: app does NOT execute script; either shows a warning or treats as plain text. Pass criteria: no script execution, safe handling. - Test ID ER‑07: Encode a URI with illegal characters (e.g.,
http://ex ample.comcontaining a space). Expected result: app either percent‑encodes or shows error. Pass criteria: no crash, user informed of invalid URI. - Test ID ER‑08: Encode a vCard with an excessively long phone number (>100 digits). Expected result: app truncates or rejects per platform limits. Pass criteria: graceful handling, no buffer overflow.
Boundary Conditions on Input Length
QR codes can encode up to 2953 bytes (binary) or 4296 alphanumeric characters.
- Test ID ER‑09: Generate a QR code at the maximum alphanumeric capacity (4296 chars). Expected result: scanner decodes and displays full string. Pass criteria: no truncation, scrollable view works.
- Test ID ER‑10: Generate a QR code with a null byte (
0x00) embedded in binary mode. Expected result: scanner either rejects or treats as terminator depending on spec. Pass criteria: defined behavior documented, no crash.
Concatenated QR Codes (Structured Append)
Some applications use multiple QR codes to transmit larger data sets.
- Test ID ER‑11: Provide a set of two QR codes with Structured Append header indicating total of 2 codes, parity correct. Expected result: scanner reassembles payload after second code. Pass criteria: data reconstructed correctly, no loss.
- Test ID ER‑12: Provide mismatched parity or out‑of‑order codes. Expected result: scanner reports Structured Append error. Pass criteria: clear error message, partial data discarded.
---
Qr Code Scanning Testing Checklist (2026): Accessibility and Usability
TalkBack / VoiceOver Support
Users relying on screen readers must receive audible cues for scan state and results.
- Test ID AC‑01: Enable TalkBack, start scanner. Expected result: announcements “Scanner ready”, “Code detected”, “Decoded URL: example.com”. Pass criteria: each state change announced, no overlapping speech.
- Test ID AC‑02: After successful scan, ensure the decoded content is accessible via touch exploration (e.g., each vCard field is a separate accessible element). Pass criteria: all fields navigable, labels descriptive.
Color Contrast and Custom Themes
The scanner overlay must remain visible under high‑contrast or dark mode settings.
- Test ID AC‑03: Switch device to high‑contrast black‑on‑white theme. Expected result: scanner frame changes to a thick white line with black interior. Pass criteria: frame contrast ratio ≥ 4.5:1 against preview.
- Test ID AC‑04: Enable dark mode. Expected result: scanner frame uses a light cyan color. Pass criteria: visible, no bleed‑through from preview.
Touch Target Size
Buttons that appear after a scan (e.g., “Open”, “Add contact”) must meet minimum size guidelines.
- Test ID AC‑05: Measure the “Open link” button dimensions. Expected result: width and height ≥ 48 dp. Pass criteria: compliant with Android Accessibility Guidelines / iOS Human Interface Guidelines.
Motion Reduction
Users with vestibular disorders may disable animations.
- Test ID AC‑06: Turn off animation scale in developer options. Expected result: scanner UI transitions instantly (no fade or slide). Pass criteria: no motion‑based animation, immediate state change.
Language and Locale
Decoded text containing non‑Latin characters must render correctly.
- Test ID AC‑07: Scan a QR code encoding a Japanese address in UTF‑8. Expected result: app displays Japanese characters correctly. Pass criteria: no garbled glyphs, proper line‑breaking.
- Test ID AC‑08: Scan a QR code that begins with a language identifier (
lang:ja-JP). Expected result: app optionally switches UI locale. Pass criteria: if supported, locale changes; otherwise, content still readable.
---
Qr Code Scanning Testing Checklist (2026): Security and Privacy Considerations
URL Scheme Whitelisting
Apps often restrict which URI schemes they will launch to prevent unintended actions.
- Test ID SE‑01: Encode a
tel:URL (tel:+1-555-123-4567). Expected result: if calling is not allowed, app shows a confirmation dialog or blocks. Pass criteria: user must explicitly approve before dialer launches. - Test ID SE‑02: Encode a
sms:URL with a premium‑rate number. Expected result: app either blocks or shows warning about potential charges. Pass criteria: no silent send. - Test ID SE‑03: Encode a
file:///URI pointing to local storage. Expected result: app rejects or opens in a sandboxed viewer with no ability to execute. Pass criteria: no path traversal.
Data Injection Prevention
Decoded content should never be interpreted as code or command line arguments without validation.
- Test ID SE‑04: Encode a string containing shell metacharacters (
; rm -rf /). Expected result: app treats as plain text, does not pass to a shell. Pass criteria: no command execution, safe display. - Test ID SE‑05: Encode an SQL injection payload (
' OR '1'='1). Expected result: if used in a database query, app uses parameterized statements or rejects. Pass criteria: query. Pass criteria: no unexpected database modification.
Privacy: No Unintended Logging or Transmission
Scanning a QR code should not trigger analytics or network calls without user consent.
- Test ID SE‑06: Scan a QR code that encodes a URL to an external analytics endpoint. Expected result: app does NOT automatically ping that endpoint unless the URL is explicitly opened and the user consents. Pass criteria: network monitor shows no outbound request to analytics domain on scan alone.
- Test ID SE‑07: Ensure that the scanned payload is not written to persistent logs (e.g., Logcat) in plain text. Pass criteria: grep of logs after scan shows no payload.
Code Signature Verification (for Signed QR Codes)
Some scenarios use QR codes to distribute signed packages or attestations.
- Test ID SE‑08: Provide a QR code containing a base64‑encoded APK signature block. Expected result: app verifies signature against embedded certificate; if invalid, shows error. Pass criteria: valid signature proceeds, invalid signature rejected.
---
Qr Code Scanning Testing Checklist (2026): Performance and Load Testing
Scan Latency Under Various Conditions
Measure time from code entering field of view to action initiation.
- Test ID PE‑01: In a well‑lit indoor setting, present a QR code at 15 cm distance. Expected result: latency ≤ 800 ms. Pass criteria: average of 10 runs meets threshold.
- Test ID PE‑02: Repeat test at 45 cm distance (lower resolution). Expected result: latency ≤ 1.2 s. Pass criteria: average meets threshold.
- Test ID PE‑03: Simulate motion blur by moving the device at 30 cm/s while keeping code centered. Expected result: latency ≤ 1.5 s. Pass criteria: average of 10 runs meets threshold.
Battery Impact
Continuous scanning should not excessively drain battery.
- Test ID PE‑04: Run scanner continuously for 10 minutes on a device with 80 % charge. Expected result: charge drop ≤ 2 %. Pass criteria: measured with battery historian or similar tool.
Memory Usage
Decoder libraries may allocate buffers proportional to image size.
- Test ID PE‑05: Capture a 1920×1080 preview frame, decode a QR code occupying 10 % of the frame. Expected result: peak native heap increase ≤ 15 MB. Pass criteria: measured via Android Studio Profiler or Instruments.
Throughput for Batch Scanning
Some workflows require scanning multiple codes in succession (e.g., inventory).
- Test ID PE‑06: Present a sheet of 20 QR codes spaced 2 cm apart. User sweeps camera across sheet. Expected result: average inter‑scan delay ≤ 600 ms. Pass criteria: measured with timestamps on each successful decode.
Effect of Concurrent CPU Load
Background processes should not degrade scanner responsiveness.
- Test ID PE‑07: Start a CPU‑stress thread (e.g.,
yes > /dev/null &) utilizing 80 % of CPU. Run scan test PE‑01. Expected result: latency increase ≤ 200 ms. Pass criteria: measured under load vs idle.
---
Qr Code Scanning Testing Checklist (2026): Release Readiness and Regression
Automated Regression Suite
Each checklist item should map to an automated test that can run on CI.
- Test ID RR‑01: Create a parameterized test that iterates over a set of QR code images (happy path, error, security) and asserts expected behavior. Pass criteria: all tests pass on every commit.
- Test ID RR‑02: Tag tests by area (e.g.,
@HappyPath,@Security) to allow selective runs. Pass criteria: test metadata present, CI pipeline respects tags.
Versioned Test Artifacts
Store reference QR code images and expected outputs in a version‑controlled directory.
- Test ID RR‑03: Keep a
testdata/qr_codes/folder with subfolders for each ECC level and version. Expected result: CI pulls latest commit, no drift. Pass criteria: hash of folder matches recorded baseline.
Baseline Performance Budgets
Define maximum acceptable latency and memory usage and enforce them in CI.
- Test ID RR‑04: Add a performance test that fails if average scan latency > 1 s on a reference device (e.g., Pixel 5). Pass criteria: CI blocks merge if budget exceeded.
- Test ID RR‑05: Add a memory leak test that scans 1000 codes in a loop and asserts heap growth < 5 MB after garbage collection. Pass criteria: no leak flagged.
Documentation and Release Notes
Update user‑facing documentation whenever scanning behavior changes.
- Test ID RR‑06: Whenever a new QR code feature (e.g., Structured Append) is added, update the help page with a short example. Pass criteria: documentation builds without errors, example verifies in QA.
- Test ID RR‑07: Include a changelog entry describing any change to error messages or UI flow after a scan. Pass criteria: changelog parsed by release automation.
---
How Autonomous Exploration with SUSA Covers the QR Code Scanning Testing Checklist (2026)
SUSA (SUSATest) is an autonomous QA platform that explores an app without predefined scripts. When pointed at an Android APK or a web URL, it generates a diverse set of user interactions—taps, scrolls, text entry, and crucially, camera‑based QR scans—using a library of QR code generators and image‑injection techniques.
Scan Trigger Generation
During exploration, SUSA treats the camera preview as an interactive element. It injects a bitmap of a QR code into the preview frame at random positions, sizes, and orientations. This simulates a user holding a physical code up to the lens.
- Happy Path Coverage: By injecting valid URL, vCard, Wi‑Fi, and plain‑text QR codes across all versions (1‑40) and ECC levels, SUSA automatically validates HP‑01 through HP‑09.
- Error & Edge Coverage: SUSA’s mutation engine creates partially obscured, low‑contrast, and malformed QR codes (taping, reflection, swapped finder patterns). These map directly to ER‑01 through ER‑12.
- Security & Privacy: The platform can inject payloads with dangerous URIs (
javascript:,file:///) and monitor for network calls or unintended intents, covering SE‑01 through SE‑08. - Accessibility: SUSA runs with TalkBack enabled by default for a portion of its sessions, verifying announcements and focus order (AC‑01, AC‑02).
- Performance: Timestamps are recorded for each injected scan, allowing SUSA to compute latency distributions and flag outliers that breach PE‑01 through PE‑07 thresholds.
- Release Readiness: Because SUSA remembers which screens and QR codes it has already seen, it avoids redundant work and builds a regression suite that can be exported as Appium (Android) or Playwright (Web) scripts, satisfying RR‑01 through RR‑07.
Command‑Line Invocation
A typical one‑line execution that exercises the QR scanning checklist looks like:
# Install the SUSA agent (once)
pip install susatest-agent
# Run exploration on an APK, requesting QR‑code injection
susatest explore \
--apk my-app.apk \
--camera-inject-qr \
--personas curious impatient novice \
--output-dir ./susa-run-01 \
--max-depth 10 \
--timeout 30m
The --camera-inject-qr flag tells SUSA to overlay generated QR codes on the camera preview at intervals determined by the explored UI state. The platform logs each scan attempt, its result, and any side effects (intents, network requests, UI changes). After the run, a JSON report contains entries such as:
{
"scan_id": "qr_001",
"payload_type": "url",
"payload": "https://example.com",
"version": 7,
"15,
"latency_ms: 642,
"verdict": "PASS",
"notes": "Opened URL in Chrome, no extra permissions requested"
}
Teams can feed this report data‑visualizer to assert that all required checklist‑green.
---
Putting It All Together: A Practical Test Matrix and Checklist for QR Code Scanning Testing Checklist (2026)
Master Test Matrix
| Area | Test ID | Description | Pass Criteria | Automation Level |
|---|---|---|---|---|
| Happy Path | HP‑01 | Scan URL QR code | Opens URL within 2 s, no error | Full (SUSA/Appium) |
| Happy Path | HP‑02 | Scan vCard QR code | Parses fields, enables “Add contact” | Full |
| Happy Path | HP‑03 | Scan Wi‑Fi QR code | OS prompts to join network with correct SSID | Full |
| Happy Path | HP‑04 | Scan max‑length plain text (4296 chars) | Displays full scrollable text | Full |
| Happy Path | HP‑05 | Green frame on successful decode | Frame changes ≤ 300 ms, reverts on loss | Semi‑manual (UI check) |
| Happy Path | HP‑06 | Haptic/beep on success | One event per decode | Full |
| Happy Path | HP‑07 | Toast with payload preview | Disappears after 2 s, tappable | Full |
| Happy Path | HP‑08 | Decode all QR versions 1‑40 | 100 % success | Full |
| Happy Path | HP‑09 | Decode all ECC levels (L,M,Q,H) | No failures | Full |
| Error Handling | ER‑01 | 30 % obscured code | Shows “Unable to read” within 1 s | Full |
| Error Handling | ER‑02 | Glossy reflection | Prompts to adjust angle/lighting | Full |
| Error Handling | ER‑03 | Invalid finder patterns | Error message, no decode | Full |
| Error Handling | ER‑04 | UPC‑A alongside QR | Ignores UPC, no false action | Full |
| Error Handling | ER‑05 | Data Matrix mimicking QR | Ignored | Full |
| Error Handling | ER‑06 | JavaScript URL | No script execution | Full |
| Error Handling | ER‑07 | URI with illegal space | Shows error or percent‑encodes | Full |
| Error Handling | ER‑08 | Overly long vCard phone | Truncates or rejects per limit | Full |
| Error Handling | ER‑09 | Max alphanumeric capacity (4296) | Full string displayed | Full |
| Error Handling | ER‑10 | Null byte in binary mode | Defined behavior, no crash | Full |
| Error Handling | ER‑11 | Structured Append (2‑code set) | Reassembles payload correctly | Full |
| Error Handling | ER‑12 | Mismatched Structured Append | Error reported | Full |
| Accessibility | AC‑01 | TalkBack announcements | States announced, no overlap | Full |
| Accessibility | AC‑02 | Accessible vCard fields | Navigable, labeled | Full |
| Accessibility | AC‑03 | High‑contrast theme | Frame contrast ≥ 4.5:1 | Full |
| Accessibility | AC‑04 | Dark mode frame | Visible, no bleed‑through | Full |
| Accessibility | AC‑05 | Touch target ≥ 48 dp | Measured size | Semi‑manual |
| Accessibility | AC‑06 | Animation scale off | Instant UI transition | Full |
| Accessibility | AC‑07 | Japanese UTF‑8 payload | Correct glyph rendering | Full |
| Accessibility | AC‑08 | Language‑tagged QR | Locale switch if supported | Full |
| Security | SE‑01 | tel: URL | Confirmation before dial | Full |
| Security | SE‑02 | sms: premium‑rate:` URL with premium number | Warning or block | Full |
| Security | SE‑03 | file:/// URI | Rejected or sandboxed view | Full |
| Security | SE‑04 | Shell metacharacters | Treated as plain text | Full |
| Security | SE‑05 | SQL injection payload | Parameterized or rejected | Full |
| Security | SE‑06 | Analytics URL in QR | No outbound call on scan | Full |
| Security | SE‑07 | No payload in logs | Logcat grep empty | Full |
| Security | SE‑08 | Signed APK block in QR | Signature verification | Full |
| Performance | PE‑01 | Scan latency @15 cm light | ≤ 800 ms avg | Full |
| Performance | PE‑02 | Scan latency @45 cm | ≤ 1.2 s avg | Full |
| Performance | PE‑03 | Motion blur 30 cm/s | ≤ 1.5 s avg | Full |
| Performance | PE‑04 | 10 min continuous scan battery drain | ≤ 2 % drop | Full |
| Performance | PE‑05 | Memory heap increase | ≤ 15 MB | Full |
| Performance | PE‑06 | Batch scan inter‑delay | ≤ 600 ms avg | Full |
| Performance | PE‑07 | CPU load 80 % | Latency increase ≤ 200 ms | Full |
| Release Readiness | RR‑01 | Parameterized regression suite | All tests pass on CI | Full |
| Release Readiness | RR‑02 | Test tagging | Metadata present | Full |
| Release Readiness | RR‑03 | Versioned QR assets | Hash matches baseline | Full |
| Release Readiness | RR‑04 | Latency budget | CI blocks if > 1 s avg | Full |
| Release Readiness | RR‑05 | Memory leak test | Heap growth < 5 MB after 1000 scans | Full |
| Release Readiness | RR‑06 | Doc update for new feature | Build passes, example verifies | Full |
| Release Readiness | RR‑07 | Changelog entry for UI/error change | Parsed by release automation | Full |
Quick‑Reference Checklist (Copy‑Paste for Test Runs)
[ ] HP‑01 URL scan opens correctly
[ ] HP‑02 vCard parsed and add‑contact offered
[ ] HP‑03 Wi‑Fi prompt shows proper SSID/security
[ ] HP‑04 Max‑length text displayed fully
[ ] HP‑05 Frame turns green on success (≤300ms)
[ ] HP‑06 One haptic/beep per success
[ ] HP‑07 Toast preview appears, tappable, auto‑dismiss
[ ] HP‑08 All versions 1‑40 decode
[ ] HP‑09 All ECC levels decode
[ ] ER‑01 Obscured code -> error within 1s
[ ] ER‑02 Reflection -> guidance to adjust
[ ] ER‑03 Invalid finder -> error
[ ] ER‑04 UPC + QR -> ignores UPC
[ ] ER‑05 Data Matrix mimicking QR -> ignored
[ ] ER‑06 JavaScript URL -> no script execution
[ ] ER‑07 Illegal space in URI -> error or encode
[ ] ER‑08 Overlong vCard phone -> truncates/rejects
[ ] ER‑09 Max alphanumeric -> full display
[ ] ER‑10 Null byte -> defined behavior, no crash
[ ] ER‑11 Structured Append 2-code -> reassembles
[ ] ER‑12 Bad Structured Append -> error reported
[ ] AC‑01 TalkBack states announced
[ ] AC‑02 vCard fields accessible
[ ] AC‑03 High‑contrast frame contrast ≥4.5:1
[ ] AC‑04 Dark mode frame visible
[ ] AC‑05 Touch target ≥48dp
[ ] AC‑06 No animation when scale off
[ ] AC‑07 Japanese UTF‑8 renders
[ ] AC‑08 Language tag handled if supported
[ ] SE‑01 tel: needs confirmation
[ ] SE‑02 premium sms: warned/blocked
[ ] SE‑03 file://: rejected/sandboxed
[ ] SE‑04 shell chars -> plain text
[ ] SE‑05 SQLi -> parameterized/reject
[ ] SE‑06 analytics URL -> no outbound on scan
[ ] SE‑07 no payload in logs
[ ] SE‑08 signed APK block verified
[ ] PE‑01 latency ≤800ms @15cm
[ ] PE‑02 latency ≤1.2s @45cm
[ ] PE‑03 latency ≤1.5s with motion blur
[ ] PE‑04 battery drain ≤2% in 10min
[ ] PE‑05 heap increase ≤15MB
[ ] PE‑06 batch inter‑scan ≤600ms
[ ] PE‑07 latency increase ≤200ms under CPU load
[ ] RR‑01 regression suite passes CI
[ ] RR‑02 tests tagged correctly
[ ] RR‑03 QR asset hashes match baseline
[ ] RR‑04 latency budget enforced
[ ] RR‑05 no memory leak >5MB
[ ] RR‑06 docs updated for new feature
[ ] RR‑07 changelog entry present
Run the checklist manually for exploratory sessions or trigger the full set via the SUSA agent as shown earlier.
---
Closing Takeaways
A robust QR code scanning feature must satisfy functional correctness, graceful error handling, inclusive accessibility, vigilant security, predictable performance, and reliable release automation. The matrix above translates those qualities into 40+ concrete, verifiable items, each with a clear pass criterion and a concrete example.
By injecting a wide spectrum of QR codes—valid, corrupted, malicious, and formatted for assistive technologies—autonomous exploration tools like SUSA can exercise the majority of this checklist in a single, unattended run. The generated Appium or Playwright scripts then become a regression safety net, ensuring that future changes to the camera pipeline, decoding library, or UI layer do not re‑introduce regressions that only surface in the wild.
Adopt this checklist as living documentation: update the test IDs whenever you add a new QR‑code‑based feature (e.g., payment token, AR anchor) and keep the associated test data version‑controlled. Teams that embed these checks into their CI pipelines will ship QR scanning experiences that are both delightfully smooth and resilient to the myriad ways real‑world users present codes to their lenses.
Test Your App Autonomously
Upload your APK or URL. SUSA explores like 10 real users — finds bugs, accessibility violations, and security issues. No scripts.
Try SUSA Free