continuous delivery in an ancient world of physical devices
TRANSCRIPT
Continuous Delivery in an Ancient World of Physical Devices
Manuel Pais
London Continuous Delivery20th April 2016
Agenda
An Ancient WorldForget Physical Laws
Layered WorldParallel 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 automationwith
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 applicationWhen I capture 4 valid fingerprintsThen application is sent for approval
Given a traveler leaving the countryWhen 1 finger is missingThen border supervisor is called
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
Layered World
Reusable core modules
Reusable core modulesbut
Many customizations
Reusable core modulesbut
Many customizationsand
Specific customer requirements ?
Plain Old Layers
Low level UI automationacross all
apps
Low level UI automationacross all
apps
Low level UI automationacross all
apps
Module“object”
automation
Low level UI automationacross all
apps
Module“object”
automation
Low level UI automationacross all
apps
Module“object”
automation
Applicationlogic
automation
Low level UI automationacross all
apps
Module“object”
automation
Applicationlogic
automation
Low level UI automationacross all
apps
Module“object”
automation
Applicationlogic
automation
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
Parallel Worlds
Multiple public-facing interfaces
GUI vs API
OR
Novice Usersvs
Power Users
Plain oldDependency Injection
FingerprintsShortcuts
IFingerprints
Given a complete Visa applicationWhen I capture 4 valid fingerprintsThen application is sent for approval
FingerprintsUI
Fingerprint.IFingerprints=
Fingerprint.FingerprintsUI
FingerprintsShortcuts
IFingerprints
FingerprintsUI
Fingerprint.IFingerprints=
Fingerprint.FingerprintsShortcuts
Given a complete Visa applicationWhen I capture 4 valid fingerprintsThen application is sent for approval
Parallel Worlds
Problem
Automate testing of multiple interfaces/executions for same scenario
Solution
A single test interface for the exposed functionalityTwo or more implementations of that interface
(Basic) dependency injection mechanism
Beyond Test Automation
CI SERVER
Vagrant-cloudstack
Commit to Repo
Vagrant-VirtualBox
BuildSuccess
Developer
Test Platform VM
DestroyVM
CreateNewVM
DestroyVM
Testrun
CreateNewVM
Integration
Unit tests
Integration tests
Smoke Test
Subset of acceptance tests
Acceptance Tests
All other acceptance tests
Manual Tests
Manual scenariosExploratory tests
From
CI SERVER
Test run
Test Workstation or Static VM
Test run
Test run
Accept or Reject
72
Integration
Unit tests
Int & Smoke Test
Integration tests
Subset of acceptance tests
Acceptance Tests
All other acceptance tests
Manual Tests
Manual scenarios
Exploratory tests
CI SERVER
Test run
Vagrant-cloudstack
CreateNewVM
Testrun
Test run
DestroyVM
Vagrant-cloudstack
CreateNewVM
DestroyVM
Test run
Accept or Reject
73
To
Thank you!
Q & A