continuous delivery in an ancient world of physical devices

75
Continuous Delivery in an Ancient World of Physical Devices Manuel Pais London Continuous Delivery 20 th April 2016

Upload: manuel-pais

Post on 09-Apr-2017

476 views

Category:

Technology


2 download

TRANSCRIPT

Page 1: Continuous Delivery in an Ancient World of Physical Devices

Continuous Delivery in an Ancient World of Physical Devices

Manuel Pais

London Continuous Delivery20th April 2016

Page 2: Continuous Delivery in an Ancient World of Physical Devices

Agenda

An Ancient WorldForget Physical Laws

Layered WorldParallel Worlds

Beyond Test Automation

Page 3: Continuous Delivery in an Ancient World of Physical Devices

An Ancient World

Page 4: Continuous Delivery in an Ancient World of Physical Devices
Page 5: Continuous Delivery in an Ancient World of Physical Devices

<insert latest Docker orchestration diagram>

Page 6: Continuous Delivery in an Ancient World of Physical Devices

Not for everyone

Page 7: Continuous Delivery in an Ancient World of Physical Devices
Page 8: Continuous Delivery in an Ancient World of Physical Devices

Context

Page 9: Continuous Delivery in an Ancient World of Physical Devices
Page 10: Continuous Delivery in an Ancient World of Physical Devices
Page 11: Continuous Delivery in an Ancient World of Physical Devices
Page 12: Continuous Delivery in an Ancient World of Physical Devices

Do desktop applications still make sense?

Page 13: Continuous Delivery in an Ancient World of Physical Devices

IF you have to integrate with low-level SDKs

Page 14: Continuous Delivery in an Ancient World of Physical Devices

IF client app requires low latency

Page 15: Continuous Delivery in an Ancient World of Physical Devices

IF your stress tests look like this…

Page 16: Continuous Delivery in an Ancient World of Physical Devices
Page 17: Continuous Delivery in an Ancient World of Physical Devices
Page 18: Continuous Delivery in an Ancient World of Physical Devices
Page 19: Continuous Delivery in an Ancient World of Physical Devices
Page 20: Continuous Delivery in an Ancient World of Physical Devices
Page 21: Continuous Delivery in an Ancient World of Physical Devices
Page 22: Continuous Delivery in an Ancient World of Physical Devices
Page 23: Continuous Delivery in an Ancient World of Physical Devices
Page 24: Continuous Delivery in an Ancient World of Physical Devices
Page 25: Continuous Delivery in an Ancient World of Physical Devices
Page 26: Continuous Delivery in an Ancient World of Physical Devices

Forget Physical Laws

Page 27: Continuous Delivery in an Ancient World of Physical Devices

Test automationwith

physical devices ?!

Page 28: Continuous Delivery in an Ancient World of Physical Devices
Page 29: Continuous Delivery in an Ancient World of Physical Devices

Not a great fit for Continuous Delivery…

Page 30: Continuous Delivery in an Ancient World of Physical Devices

byte[] start_scan()

char[] capture()

char[] scan_finger()

Page 31: Continuous Delivery in an Ancient World of Physical Devices

Plain Old Interfaces

Page 32: Continuous Delivery in an Ancient World of Physical Devices
Page 33: Continuous Delivery in an Ancient World of Physical Devices

Decoupled Development

Page 34: Continuous Delivery in an Ancient World of Physical Devices

Decoupled Development

x. Device Integration

Page 35: Continuous Delivery in an Ancient World of Physical Devices

Decoupled Development

x. Device Integration

y. Application Biometric Logic

Page 36: Continuous Delivery in an Ancient World of Physical Devices

byte[] start_scan();

Page 37: Continuous Delivery in an Ancient World of Physical Devices

Test Data Management

Page 38: Continuous Delivery in an Ancient World of Physical Devices

Given a complete Visa applicationWhen I capture 4 valid fingerprintsThen application is sent for approval

Page 39: Continuous Delivery in an Ancient World of Physical Devices

Given a traveler leaving the countryWhen 1 finger is missingThen border supervisor is called

Page 40: Continuous Delivery in an Ancient World of Physical Devices

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

Page 41: Continuous Delivery in an Ancient World of Physical Devices

Layered World

Page 42: Continuous Delivery in an Ancient World of Physical Devices

Reusable core modules

Page 43: Continuous Delivery in an Ancient World of Physical Devices

Reusable core modulesbut

Many customizations

Page 44: Continuous Delivery in an Ancient World of Physical Devices

Reusable core modulesbut

Many customizationsand

Specific customer requirements ?

Page 45: Continuous Delivery in an Ancient World of Physical Devices
Page 46: Continuous Delivery in an Ancient World of Physical Devices

Plain Old Layers

Page 47: Continuous Delivery in an Ancient World of Physical Devices
Page 48: Continuous Delivery in an Ancient World of Physical Devices

Low level UI automationacross all

apps

Page 49: Continuous Delivery in an Ancient World of Physical Devices

Low level UI automationacross all

apps

Page 50: Continuous Delivery in an Ancient World of Physical Devices

Low level UI automationacross all

apps

Module“object”

automation

Page 51: Continuous Delivery in an Ancient World of Physical Devices

Low level UI automationacross all

apps

Module“object”

automation

Page 52: Continuous Delivery in an Ancient World of Physical Devices

Low level UI automationacross all

apps

Module“object”

automation

Applicationlogic

automation

Page 53: Continuous Delivery in an Ancient World of Physical Devices

Low level UI automationacross all

apps

Module“object”

automation

Applicationlogic

automation

Page 54: Continuous Delivery in an Ancient World of Physical Devices

Low level UI automationacross all

apps

Module“object”

automation

Applicationlogic

automation

Page 55: Continuous Delivery in an Ancient World of Physical Devices

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

Page 56: Continuous Delivery in an Ancient World of Physical Devices

Parallel Worlds

Page 57: Continuous Delivery in an Ancient World of Physical Devices

Multiple public-facing interfaces

Page 58: Continuous Delivery in an Ancient World of Physical Devices

GUI vs API

Page 59: Continuous Delivery in an Ancient World of Physical Devices

OR

Page 60: Continuous Delivery in an Ancient World of Physical Devices

Novice Usersvs

Power Users

Page 61: Continuous Delivery in an Ancient World of Physical Devices

Plain oldDependency Injection

Page 62: Continuous Delivery in an Ancient World of Physical Devices
Page 63: Continuous Delivery in an Ancient World of Physical Devices
Page 64: Continuous Delivery in an Ancient World of Physical Devices
Page 65: Continuous Delivery in an Ancient World of Physical Devices

FingerprintsShortcuts

IFingerprints

Given a complete Visa applicationWhen I capture 4 valid fingerprintsThen application is sent for approval

FingerprintsUI

Fingerprint.IFingerprints=

Fingerprint.FingerprintsUI

Page 66: Continuous Delivery in an Ancient World of Physical Devices

FingerprintsShortcuts

IFingerprints

FingerprintsUI

Fingerprint.IFingerprints=

Fingerprint.FingerprintsShortcuts

Given a complete Visa applicationWhen I capture 4 valid fingerprintsThen application is sent for approval

Page 67: Continuous Delivery in an Ancient World of Physical Devices

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

Page 68: Continuous Delivery in an Ancient World of Physical Devices

Beyond Test Automation

Page 69: Continuous Delivery in an Ancient World of Physical Devices
Page 70: Continuous Delivery in an Ancient World of Physical Devices
Page 71: Continuous Delivery in an Ancient World of Physical Devices

CI SERVER

Vagrant-cloudstack

Commit to Repo

Vagrant-VirtualBox

BuildSuccess

Developer

Page 72: Continuous Delivery in an Ancient World of Physical Devices

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

Page 73: Continuous Delivery in an Ancient World of Physical Devices

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

Page 74: Continuous Delivery in an Ancient World of Physical Devices

Thank you!

Page 75: Continuous Delivery in an Ancient World of Physical Devices

Q & A