← All case studiesPayPal / Nov 2021 - Jan 2023

Making financial journeys reproducible

Expanded validation beyond unit tests, traced an incorrect balance to its business rule, and owned module integration across release trains.

Senior Android Engineer

Product context and challenge

I joined PayPal Savings while it was an MVP in production. Its customer journey covered compliance, activation, balance operations, and funding sources. I later moved to Credits UK, contributing across Android, iOS, and Java backend work.

Strong unit coverage did not establish that complete customer journeys worked across module, API, and UI boundaries. One business-rule defect displayed an incorrect balance until the customer refreshed.

My scope and ownership

  • Mapped the Savings journey and documented existing behavior before planning small refactors.
  • Introduced integration and end-to-end validation alongside existing unit tests.
  • Built a test library to inject and queue backend responses, including edge cases, with Page Objects for reusable customer journeys.
  • Restructured functional flows with MVVM and unidirectional data flow and worked with DevOps on Jenkins coverage reporting.
  • Owned module release integration and coordinated fixes for cross-module conflicts.

Decisions and trade-offs

  • Incremental refactoring preserved verified behavior in a live financial product while allowing delivery to continue.
  • Explicit event-to-state paths made asynchronous compliance, funding, and balance operations easier to trace. Reproducible backend responses connected a visible balance inconsistency to the underlying business rule.
  • End-to-end tests broadened confidence but cost more to maintain. Queued responses and Page Objects controlled environment variability and repetitive setup.

Quality, validation, and delivery

  • Measured coverage across unit, integration, and end-to-end layers in Jenkins.
  • Reproduced success and failure scenarios with controlled backend responses and verified corrected balance behavior.
  • Tested the assembled application in release trains. During a theme migration, traced a duplicate dependency to another module and coordinated the correction.

Outcomes

  • Exposed and reproduced an incorrect balance that previously required a manual refresh, protecting corrected behavior with automation.
  • Established reusable scenarios for full financial journeys.
  • Resolved a cross-module theme conflict before it delayed feature integration.

Supporting technologies

KotlinMVVMUDFPage ObjectsIntegration testingEnd-to-end testingJenkinsiOSJava