Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Test_architecture_for_Global_Platforms_-QA_Financial_Forum_Milano_2020.pdf

4c81b8603c08704d8f59467070ff6a75?s=47 milan
January 29, 2020

 Test_architecture_for_Global_Platforms_-QA_Financial_Forum_Milano_2020.pdf

4c81b8603c08704d8f59467070ff6a75?s=128

milan

January 29, 2020
Tweet

Transcript

  1. @milan_kuveljic Global Platforms Test Architecture for

  2. Markets N26 at a Glance +4M Customers 26 Markets +$500M

    Funding +$2Bn Monthly transaction volume 4 Locations +1500 Employees
  3. ⬒ 400+ engineers - Berlin/Barcelona/New York/Vienna ⬒ Deploying to production

    500+ times per week ⬒ Building crash-free mobile applications ⬒ Achieving regularly 5 stars in the App/Play Stores N26 is a tech company building modern banking worldwide @milan_kuveljic
  4. N26 Tech

  5. N26 Tech

  6. Milan Kuveljic Head of Quality Engineering @N26 milan_kuveljic testingin.space

  7. Our journey Test architectures Challenges Designing for Global Tools and

    frameworks Continuous testing
  8. None
  9. LOAD BALANCERS APPLICATION LAYER PRODUCT USER PAYMENT SHARED DATA LAYER

    EXTERNAL SERVICE Monoliths
  10. Simple to develop Simple to test Simple to deploy MonoBenefits

    Simple to scale
  11. PRODUCT USER PAYMENTS SHARED DATA LAYER API TESTS COMPONENT INTEGRATION

    TESTS UNIT UI E2E TESTS PERFORMANCE SECURITY TESTS EXTERNAL/STUB SERVICE Testing in Monoliths
  12. If it’s big, hard to maintain and coordinate If it’s

    down, everything is down Performance slows down with complexity BadMono Innovation is difficult
  13. Simple to develop Simple to test Simple to deploy MonoBenefits

    Simple to scale
  14. APPLICATION LAYER AUTH SERVICE 3RD PARTY SERVICE APPLICATION LAYER PAYMENT

    SERVICE APPLICATION LAYER PRODUCT SERVICE APPLICATION LAYER USER SERVICE
  15. For large and complex platforms CI/CD - easier deployment Better

    testability MicroBenefits Better reliability Technology independent
  16. 3RD PARTY/STUB SERVICE APPLICATION LAYER AUTH SERVICE APPLICATION LAYER USER

    SERVICE API COMPONENT INTEGRATION TESTS UNIT UI TESTS E2E CONTRACT TESTS PERFORMANCE TESTS SECURITY
  17. APPLICATION LAYER USER SERVICE BUILD & TEST SECURITY REPORT CONTRACT

    TEST VERIFICATION DOCKER BUILD & PUSH DEV ENV DEPLOY DEV ENV HEALTHCHECK DEV API TEST STAGING ENV DEPLOY STAGING ENV HEALTHCHECK STAGING API TEST PERFORMANCE TEST LIVE DEPLOY LIVE TEST
  18. BUILD SECURITY REPORT TEST DOCKER BUILD & PUSH DEV ENV

    DEPLOY TEST STAGING ENV DEPLOY INTEGRATION TEST UI TEST A11Y TEST E2E TEST LIVE DEPLOY
  19. BUILD SECURITY REPORT TEST DOCKER BUILD & PUSH UI TEST

    E2E TEST PUBLISH UPLOAD
  20. Complexity of distributed platform Difficult testing Inter-service communication BadMicro Conway’s

    law Deployment complexity
  21. CHALLENGE

  22. None
  23. None
  24. Global platform has multi-region, multi-currency, multi-regulations to satisfy

  25. Markets Global platform More Regions More Microservices More Tests More

    Regulations More Deployments More Failures
  26. Additional Slides

  27. Additional Slides

  28. Testing Challenges E2E tests are even more brittle Testing scope

    is constantly growing Region specific services are dependent on global services More regions require different deployment branches One app serves users in all regions Global services serve users in isolated regions
  29. Global distributed platform requires vigorous test architecture

  30. ARCHITECTURE

  31. Global Architecture Domain Test Data Infrastructure Cloud solutions Reporting Execution

  32. val defaultCurrencyForRegion = when (Region.getRegion()) { Region.REGION_US -> Currency.getInstance("USD") else

    -> Currency.getInstance("EUR") companion object { lateinit var preUser: User lateinit var postUser: User private val regionBasedTestConfig = mapOf( Region.REGION_EU to RegionBasedTestConfig(ExternalIdType.IBAN, false, UserEntity.EU), Region.REGION_US to RegionBasedTestConfig(ExternalIdType.USBAN, true, UserEntity.US) Architecture Domain Test structure Test suites
  33. Architecture Test Data Configurable static test data Dynamic test data

    - API helpers ! users_europe.yml ! users_us.yml ! users_add_whatever_region.yml
  34. Architecture Infrastructure Test Environments Stubs for 3rd parties Limited Production

    Environment
  35. Architecture Cloud solutions Virtual browsers In house mobile devices Devices

    on Cloud
  36. Architecture Execution testng-android-europe.xml testng-android-us.xml testng-ios-europe.xml testng-ios-us.xml

  37. Architecture Reporting

  38. Capabilities of a specific tool Tool meets specific needs. Tool

    doesn’t seem to provide full test coverage Tool costs exceed the team budget Tools
  39. Tools APPLICATION LAYER USER SERVICE

  40. CONTINUOUS TESTING

  41. Additional Slides

  42. Takeaways • Layered test architecture • Structured test suites and

    scope • Consistent test data - static + dynamic • Clean environments across regions • Investment in testability • Leverage infrastructure and tools • Testing out-of-band UNIT TESTS INTEGRATION/COMPONENT TESTS E2E TESTS EXPLORATORY TESTING PERFORMANCE TESTS CONTRACT TESTS UI/VISUAL TESTS
  43. @milan_kuveljic Thank you!

  44. Question time