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

'Testing iOS app with external hardware' by Viacheslav Volodko

'Testing iOS app with external hardware' by Viacheslav Volodko

This talk was made for CocoaHeads Kyiv #13 which took place Dec 16 2017.

CocoaHeads Ukraine

December 16, 2017
Tweet

More Decks by CocoaHeads Ukraine

Other Decks in Programming

Transcript

  1. View Slide

  2. TESTING IOS APP WITH EXTERNAL
    HARDWARE
    VIACHESLAV VOLODKO
    IOS ENGINEER
    #cocoaheadsukraine

    View Slide

  3. TESTING IOS APP WITH EXTERNAL HARDWARE
    TL; DR
    WRITE F**KING
    TESTS

    View Slide

  4. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  5. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  6. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  7. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  8. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  9. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  10. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  11. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  12. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    JSON/XML

    View Slide

  13. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    JSON/XML HTTP

    View Slide

  14. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    JSON/XML HTTP TCP/IP

    View Slide

  15. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    JSON/XML HTTP TCP/IP Packetization
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  16. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  17. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  18. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Backend
    https

    View Slide

  19. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Backend
    https
    v.1.0.0
    v.1.1.0
    v.2.0.0
    v.2.1.0

    View Slide

  20. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Backend
    https
    v.1.0.0
    v.1.1.0
    v.2.0.0
    v.2.1.0
    RESPONSIBLE
    FOR
    VERSIONING

    View Slide

  21. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    v.1.0.0
    v.1.1.0
    v.2.0.0
    v.2.1.0

    View Slide

  22. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM

    View Slide

  23. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  24. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    v.1.0.0
    v.1.1.0
    v.2.0.0
    v.2.1.0
    Firmware

    View Slide

  25. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    v.1.0.0
    v.1.1.0
    v.2.0.0
    v.2.1.0
    Firmware
    RESPONSIBLE
    FOR
    VERSIONING

    View Slide

  26. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    RESPONSIBLE
    FOR
    VERSIONING

    View Slide

  27. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  28. TESTING IOS APP WITH EXTERNAL HARDWARE
    THE PROBLEM
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  29. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION

    View Slide

  30. View Slide

  31. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION: ARCHITECTURE

    View Slide

  32. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION: ARCHITECTURE

    View Slide

  33. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION: ARCHITECTURE
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic

    View Slide

  34. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION: ARCHITECTURE
    Connectivity Layer
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    • System layer, e.g. Core Bluetooth

    View Slide

  35. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION: ARCHITECTURE
    Connectivity Layer
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth

    View Slide

  36. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION: ARCHITECTURE
    Connectivity Layer
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components

    View Slide

  37. TESTING IOS APP WITH EXTERNAL HARDWARE
    RESOLUTION: ARCHITECTURE
    Connectivity Layer
    Bluetooth LE
    WiFi
    Cable Connection
    Bluetooth Classic
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components

    View Slide

  38. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components

    View Slide

  39. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components
    Mock Connectivity Layer

    View Slide

  40. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    Mock Connectivity Layer
    Unit Tests Cases

    View Slide

  41. Unit Tests Cases
    Mock Connectivity Layer
    TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components

    View Slide

  42. Unit Tests Cases
    Mock Connectivity Layer
    TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components

    View Slide

  43. Unit Tests Cases
    TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components
    Mock Transport Layer

    View Slide

  44. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING

    View Slide

  45. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    PROS CONS

    View Slide

  46. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    ▸ Easy to cover edge cases
    PROS CONS

    View Slide

  47. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    ▸ Easy to cover edge cases
    ▸ Increases code modularity
    PROS CONS

    View Slide

  48. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    ▸ Easy to cover edge cases
    ▸ Increases code modularity
    ▸ Decreases debugging time
    PROS CONS

    View Slide

  49. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    ▸ Easy to cover edge cases
    ▸ Increases code modularity
    ▸ Decreases debugging time
    ▸ Easily automated (CI)
    PROS CONS

    View Slide

  50. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    ▸ Easy to cover edge cases
    ▸ Increases code modularity
    ▸ Decreases debugging time
    ▸ Easily automated (CI)
    PROS
    ▸ Time consuming
    CONS

    View Slide

  51. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    ▸ Easy to cover edge cases
    ▸ Increases code modularity
    ▸ Decreases debugging time
    ▸ Easily automated (CI)
    PROS
    ▸ Time consuming
    ▸ Increases code complexity
    CONS

    View Slide

  52. TESTING IOS APP WITH EXTERNAL HARDWARE
    UNIT TESTING
    ▸ Easy to cover edge cases
    ▸ Increases code modularity
    ▸ Decreases debugging time
    ▸ Easily automated (CI)
    PROS
    ▸ Time consuming
    ▸ Increases code complexity
    ▸ No real device in chain
    CONS

    View Slide

  53. View Slide

  54. View Slide

  55. View Slide

  56. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components

    View Slide

  57. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Business Logic Layer
    • StateFULL layer
    • Device agnostic components
    Integration Tests

    View Slide

  58. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests

    View Slide

  59. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE

    View Slide

  60. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    PROS CONS

    View Slide

  61. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    ▸ Guarantee to work with Real device
    PROS CONS

    View Slide

  62. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    ▸ Guarantee to work with Real device
    ▸ Nothing to mock: 

    faster than Unit Tests
    PROS CONS

    View Slide

  63. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    ▸ Guarantee to work with Real device
    ▸ Nothing to mock: 

    faster than Unit Tests
    PROS
    ▸ Hard to cover corner cases
    CONS

    View Slide

  64. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    ▸ Guarantee to work with Real device
    ▸ Nothing to mock: 

    faster than Unit Tests
    PROS
    ▸ Hard to cover corner cases
    ▸ Not always stable
    CONS

    View Slide

  65. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    ▸ Guarantee to work with Real device
    ▸ Nothing to mock: 

    faster than Unit Tests
    PROS
    ▸ Hard to cover corner cases
    ▸ Not always stable
    ▸ Hard to automate (CI)
    CONS

    View Slide

  66. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH REAL DEVICE
    ▸ Guarantee to work with Real device
    ▸ Nothing to mock: 

    faster than Unit Tests
    PROS
    ▸ Hard to cover corner cases
    ▸ Not always stable
    ▸ Hard to automate (CI)
    ▸ Run takes more time
    CONS

    View Slide

  67. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests

    View Slide

  68. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests
    Simulator

    View Slide

  69. Raspberry Pi + Python app
    TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests
    Simulator
    OSX app - BLE Peripheral
    Raspberry Pi + NodeJS app
    Arduino

    View Slide

  70. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR

    View Slide

  71. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    PROS CONS

    View Slide

  72. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    ▸ Limited guarantee to work with Real
    device
    PROS CONS

    View Slide

  73. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    ▸ Limited guarantee to work with Real
    device
    ▸ No device prototype needed
    PROS CONS

    View Slide

  74. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    ▸ Limited guarantee to work with Real
    device
    ▸ No device prototype needed
    ▸ Easy to cover edge cases
    PROS CONS

    View Slide

  75. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    ▸ Limited guarantee to work with Real
    device
    ▸ No device prototype needed
    ▸ Easy to cover edge cases
    PROS
    ▸ Need to follow specs very carefully
    CONS

    View Slide

  76. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    ▸ Limited guarantee to work with Real
    device
    ▸ No device prototype needed
    ▸ Easy to cover edge cases
    PROS
    ▸ Need to follow specs very carefully
    ▸ An additional codebase to support
    CONS

    View Slide

  77. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITH DEVICE SIMULATOR
    ▸ Limited guarantee to work with Real
    device
    ▸ No device prototype needed
    ▸ Easy to cover edge cases
    PROS
    ▸ Need to follow specs very carefully
    ▸ An additional codebase to support
    ▸ Codebase grows with new Firmware/
    Devices
    CONS

    View Slide

  78. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests

    View Slide

  79. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests

    View Slide

  80. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests
    XCTest Bundle

    View Slide

  81. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    Connectivity Layer
    Connectivity Layer Abstraction
    Transport Layer
    • StateLESS layer
    • Request/Response
    • Device specific components
    • System layer, e.g. Core Bluetooth
    Integration Tests
    Test Harness
    iOS App

    View Slide

  82. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS

    View Slide

  83. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    PROS CONS

    View Slide

  84. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    ▸ Can share build with QA-, FW-
    Engineers
    PROS CONS

    View Slide

  85. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    ▸ Can share build with QA-, FW-
    Engineers
    ▸ Easier to test new firmware/hardware
    PROS CONS

    View Slide

  86. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    ▸ Can share build with QA-, FW-
    Engineers
    ▸ Easier to test new firmware/hardware
    ▸ Android: easy to test on exotic device
    PROS CONS

    View Slide

  87. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    ▸ Can share build with QA-, FW-
    Engineers
    ▸ Easier to test new firmware/hardware
    ▸ Android: easy to test on exotic device
    PROS
    ▸ Need to reimplement some XCTest
    tools
    CONS

    View Slide

  88. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    ▸ Can share build with QA-, FW-
    Engineers
    ▸ Easier to test new firmware/hardware
    ▸ Android: easy to test on exotic device
    PROS
    ▸ Need to reimplement some XCTest
    tools
    ▸ Need to keep transport layer in
    Framework
    CONS

    View Slide

  89. TESTING IOS APP WITH EXTERNAL HARDWARE
    INTEGRATION TESTING WITHIN TEST HARNESS
    ▸ Can share build with QA-, FW-
    Engineers
    ▸ Easier to test new firmware/hardware
    ▸ Android: easy to test on exotic device
    PROS
    ▸ Need to reimplement some XCTest
    tools
    ▸ Need to keep transport layer in
    Framework
    ▸ Need to support another codebase
    CONS

    View Slide

  90. TESTING IOS APP WITH EXTERNAL HARDWARE
    BEST PRACTICES

    View Slide

  91. TESTING IOS APP WITH EXTERNAL HARDWARE
    BEST PRACTICES
    ▸ Cover happy path + corner cases via Unit Tests

    CI - must-have

    View Slide

  92. TESTING IOS APP WITH EXTERNAL HARDWARE
    BEST PRACTICES
    ▸ Cover happy path + corner cases via Unit Tests

    CI - must-have
    ▸ Cover happy path ONLY via Integration Tests

    CI-optional

    View Slide

  93. TESTING IOS APP WITH EXTERNAL HARDWARE
    BEST PRACTICES
    ▸ Cover happy path + corner cases via Unit Tests

    CI - must-have
    ▸ Cover happy path ONLY via Integration Tests

    CI-optional
    ▸ No device - use Simulator

    View Slide

  94. TESTING IOS APP WITH EXTERNAL HARDWARE
    BEST PRACTICES

    View Slide

  95. TESTING IOS APP WITH EXTERNAL HARDWARE
    BEST PRACTICES
    ▸ Unstable connection - 

    MUST still cover with Integration Tests


    View Slide

  96. TESTING IOS APP WITH EXTERNAL HARDWARE
    BEST PRACTICES
    ▸ Unstable connection - 

    MUST still cover with Integration Tests


    ▸ When too many device/firmware versions - 

    use Integration Tests + Test Harness

    View Slide

  97. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASES

    View Slide

  98. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE

    View Slide

  99. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE

    View Slide

  100. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine

    View Slide

  101. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi

    View Slide

  102. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi

    View Slide

  103. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine

    View Slide

  104. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine

    View Slide

  105. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine

    View Slide

  106. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Hardware Unit
    Hardware Unit
    Hardware Unit
    Hardware Unit

    View Slide

  107. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Hardware Unit
    Hardware Unit
    Hardware Unit
    Hardware Unit
    USB

    View Slide

  108. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Hardware Unit
    Hardware Unit
    Hardware Unit
    Hardware Unit
    USB

    View Slide

  109. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    Hardware
    Hardware
    Hardware
    Hardware
    USB

    View Slide

  110. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    USB

    View Slide

  111. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    USB
    Simulator

    View Slide

  112. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    USB
    Simulator
    Arduino Uno

    View Slide

  113. Simulator
    TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    USB
    Arduino Uno

    View Slide

  114. Simulator
    TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    USB
    Arduino Uno
    Integration Tests

    View Slide

  115. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    USB
    Integration Tests

    View Slide

  116. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 1: COFFEE ROASTING MACHINE
    Coffee roasting machine
    Bluetooth LE
    WiFi
    USB
    Integration Tests
    1 day

    View Slide

  117. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE

    View Slide

  118. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE
    Bluetooth LE

    View Slide

  119. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE
    Data synchronization algorithm

    View Slide

  120. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE
    Data synchronization algorithm
    Mock Transport Layer
    Unit Tests Cases

    View Slide

  121. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE
    Data synchronization algorithm
    Transport Layer
    Integration Tests Cases
    Test Harness
    iOS App

    View Slide

  122. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE

    View Slide

  123. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE
    ▸ 3 weeks of work

    View Slide

  124. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE
    ▸ 3 weeks of work
    ▸ 2 developers: 1 iOS, 1 Android

    View Slide

  125. TESTING IOS APP WITH EXTERNAL HARDWARE
    SHOWCASE 2: MEDICAL WEARABLE
    ▸ 3 weeks of work
    ▸ 2 developers: 1 iOS, 1 Android
    ▸ Reliable data synchronization

    View Slide

  126. TESTING IOS APP WITH EXTERNAL HARDWARE
    INSTEAD OF CONCLUSIONS

    View Slide

  127. TESTING IOS APP WITH EXTERNAL HARDWARE
    INSTEAD OF CONCLUSIONS
    ▸ Don’t sell your customer auto tests - 

    Include those to estimates

    View Slide

  128. TESTING IOS APP WITH EXTERNAL HARDWARE
    INSTEAD OF CONCLUSIONS
    ▸ Don’t sell your customer auto tests - 

    Include those to estimates
    ▸ 100% code coverage is never needed - 

    Find level needed by your app

    View Slide

  129. TESTING IOS APP WITH EXTERNAL HARDWARE
    INSTEAD OF CONCLUSIONS
    ▸ Don’t sell your customer auto tests - 

    Include those to estimates
    ▸ 100% code coverage is never needed - 

    Find level needed by your app
    ▸ Try both sides of the force: 

    Both under-testing and over-testing

    View Slide

  130. TESTING IOS APP WITH EXTERNAL HARDWARE
    THANKS FOR ATTENTION
    Viacheslav Volodko
    skype: killobatt
    [email protected]
    [email protected]
    #cocoaheadsukraine

    View Slide

  131. View Slide