Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.
Continuous Delivery
in an Ancient World
of Physical Devices
Manuel Pais
London Continuous Delivery
20th
April 2016
Agenda
An Ancient World
Forget Physical Laws
Layered World
Parallel Worlds
Beyond Test Automation
An Ancient World
<insert latest Docker
orchestration diagram>
Not for everyone
Context
Do desktop applications still make
sense?
IF you have to integrate with
low-level SDKs
IF client app requires low
latency
IF your stress tests look like
this…
Forget Physical Laws
Test automation
with
physical devices ?!
Not a great fit for
Continuous Delivery…
byte[] start_scan()
char[] capture()
char[] scan_finger()
Plain Old Interfaces
Decoupled Development
Decoupled Development
x. Device Integration
Decoupled Development
x. Device Integration
y. Application
Biometric Logic
byte[] start_scan();
Test Data Management
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
Given a traveler leaving the country
When 1 finger is missing
Then border supervisor is called
Forget Physical Laws
Problem
Automate testing of applications using
physical devices
Solution
• Common interface for simil...
Layered World
Reusable core modules
Reusable core modules
but
Many customizations
Reusable core modules
but
Many customizations
and
Specific customer
requirements ?
Plain Old Layers
Low level UI
automation
across all
apps
Low level UI
automation
across all
apps
Low level UI
automation
across all
apps
Module
“object”
automation
Low level UI
automation
across all
apps
Module
“object”
automation
Low level UI
automation
across all
apps
Module
“object”
automation
Application
logic
automation
Low level UI
automation
across all
apps
Module
“object”
automation
Application
logic
automation
Low level UI
automation
across all
apps
Module
“object”
automation
Application
logic
automation
Layered World
Problem
Automate testing of reusable client modules
with project customizations and specific
requirements
So...
Parallel Worlds
Multiple
public-facing interfaces
GUI vs API
OR
Novice Users
vs
Power Users
Plain old
Dependency Injection
FingerprintsSho
rtcuts
IFingerprints
Given a complete Visa application
When I capture 4 valid fingerprints
Then applicatio...
FingerprintsSho
rtcuts
IFingerprints
Fingerprints
UI
Fingerprint.IFingerprints
=
Fingerprint.FingerprintsShortcuts
Given a...
Parallel Worlds
Problem
Automate testing of multiple
interfaces/executions for same scenario
Solution
A single test interf...
Beyond Test Automation
CI
SERVER
Vagrant-cloudstack
Commit
to Repo
Vagrant-
VirtualBox
Build
Success
Developer
Test Platform
VM
Destroy
VM
Create
New
VM
Destroy
VM
Test
run
Create
New
VM
Integration
Unit
tests
Integrati
on tests
Smok...
Integration
Unit
tests
Int &
Smoke Test
Integration
tests
Subset of
acceptance
tests
Acceptance
Tests
All other
accepta
nc...
Thank you!
Q & A
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Continuous Delivery in an Ancient World of Physical Devices
Upcoming SlideShare
Loading in …5
×

Continuous Delivery in an Ancient World of Physical Devices

585 views

Published on

Talk given at the London Continuous Delivery meetup:
http://www.meetup.com/London-Continuous-Delivery/events/228082366/

Abstract:

You've heard great talks about applying Continuous Delivery of web apps, mobile apps, maybe even desktop apps. But... desktop apps relying on physical devices? Are you serious? Yes, and it's not rocket science. And no, there are no droids involved (sorry Star Wars fans).

Come learn about test automation in the ancient world (or is it?) of desktop apps depending on cameras, fingerprint readers and other physical devices by applying Cucumber recipes in a .Net environment (note: BDD knowledge is highly appreciated but not mandatory!) You might think back to this talk next time you're in line waiting to have your passport controlled at some foreign border.

Published in: Technology
  • Be the first to comment

Continuous Delivery in an Ancient World of Physical Devices

  1. 1. Continuous Delivery in an Ancient World of Physical Devices Manuel Pais London Continuous Delivery 20th April 2016
  2. 2. Agenda An Ancient World Forget Physical Laws Layered World Parallel Worlds Beyond Test Automation
  3. 3. An Ancient World
  4. 4. <insert latest Docker orchestration diagram>
  5. 5. Not for everyone
  6. 6. Context
  7. 7. Do desktop applications still make sense?
  8. 8. IF you have to integrate with low-level SDKs
  9. 9. IF client app requires low latency
  10. 10. IF your stress tests look like this…
  11. 11. Forget Physical Laws
  12. 12. Test automation with physical devices ?!
  13. 13. Not a great fit for Continuous Delivery…
  14. 14. byte[] start_scan() char[] capture() char[] scan_finger()
  15. 15. Plain Old Interfaces
  16. 16. Decoupled Development
  17. 17. Decoupled Development x. Device Integration
  18. 18. Decoupled Development x. Device Integration y. Application Biometric Logic
  19. 19. byte[] start_scan();
  20. 20. Test Data Management
  21. 21. Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval
  22. 22. Given a traveler leaving the country When 1 finger is missing Then border supervisor is called
  23. 23. Forget Physical Laws Problem Automate testing of applications using physical devices Solution • Common interface for similar devices • Virtual device implementation for that interface • Test data management
  24. 24. Layered World
  25. 25. Reusable core modules
  26. 26. Reusable core modules but Many customizations
  27. 27. Reusable core modules but Many customizations and Specific customer requirements ?
  28. 28. Plain Old Layers
  29. 29. Low level UI automation across all apps
  30. 30. Low level UI automation across all apps
  31. 31. Low level UI automation across all apps Module “object” automation
  32. 32. Low level UI automation across all apps Module “object” automation
  33. 33. Low level UI automation across all apps Module “object” automation Application logic automation
  34. 34. Low level UI automation across all apps Module “object” automation Application logic automation
  35. 35. Low level UI automation across all apps Module “object” automation Application logic automation
  36. 36. Layered World Problem Automate testing of reusable client modules with project customizations and specific requirements Solution Layered test code: pure UI + module logic + application logic
  37. 37. Parallel Worlds
  38. 38. Multiple public-facing interfaces
  39. 39. GUI vs API
  40. 40. OR
  41. 41. Novice Users vs Power Users
  42. 42. Plain old Dependency Injection
  43. 43. FingerprintsSho rtcuts IFingerprints Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval Fingerprints UI Fingerprint.IFingerprints = Fingerprint.FingerprintsUI
  44. 44. FingerprintsSho rtcuts IFingerprints Fingerprints UI Fingerprint.IFingerprints = Fingerprint.FingerprintsShortcuts Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval
  45. 45. Parallel Worlds Problem Automate testing of multiple interfaces/executions for same scenario Solution A single test interface for the exposed functionality Two or more implementations of that interface (Basic) dependency injection mechanism
  46. 46. Beyond Test Automation
  47. 47. CI SERVER Vagrant-cloudstack Commit to Repo Vagrant- VirtualBox Build Success Developer
  48. 48. Test Platform VM Destroy VM Create New VM Destroy VM Test run Create New VM Integration Unit tests Integrati on tests Smoke Test Subset of accepta nce tests Acceptance Tests All other accepta nce tests Manual Tests Manual scenario s Explorat ory tests From CI SERVER Test run Test Workstation or Static VM Test run Test run Accept or Reject 72
  49. 49. Integration Unit tests Int & Smoke Test Integration tests Subset of acceptance tests Acceptance Tests All other accepta nce tests Manual Tests Manual scenarios Exploratory tests CI SERVER Test run Vagrant-cloudstack Create New VM Test run Test run Destroy VM Vagrant- cloudstack Create New VM Destroy VM Test run Accept or Reject 73 To
  50. 50. Thank you!
  51. 51. Q & A

×