Slide 1

Slide 1 text

C# Cookware Manuel Pais CukeUp! London 3rd Apr 2014

Slide 2

Slide 2 text

Agenda Prelude An Ancient World Forget Physical Laws Layered World Parallel Worlds

Slide 3

Slide 3 text

Prelude

Slide 4

Slide 4 text

No content

Slide 5

Slide 5 text

No content

Slide 6

Slide 6 text

Test .NET Code with Specflow

Slide 7

Slide 7 text

Test .NET Code with Specflow Drive a Windows App Using White

Slide 8

Slide 8 text

Test .NET Code with Specflow Drive a Windows App Using White Test Windows GUIs with AutoIt

Slide 9

Slide 9 text

No content

Slide 10

Slide 10 text

No content

Slide 11

Slide 11 text

An Ancient World

Slide 12

Slide 12 text

No content

Slide 13

Slide 13 text

Not for everyone

Slide 14

Slide 14 text

For some many of us this is more accurate…

Slide 15

Slide 15 text

No content

Slide 16

Slide 16 text

Our context

Slide 17

Slide 17 text

No content

Slide 18

Slide 18 text

No content

Slide 19

Slide 19 text

No content

Slide 20

Slide 20 text

Do desktop applications still make sense?

Slide 21

Slide 21 text

IF you have to integrate with low-level SDKs And…

Slide 22

Slide 22 text

IF client app requires low latency IF you have to integrate with low-level SDKs And…

Slide 23

Slide 23 text

AND your stress tests look like this…

Slide 24

Slide 24 text

No content

Slide 25

Slide 25 text

No content

Slide 26

Slide 26 text

No content

Slide 27

Slide 27 text

No content

Slide 28

Slide 28 text

No content

Slide 29

Slide 29 text

No content

Slide 30

Slide 30 text

No content

Slide 31

Slide 31 text

No content

Slide 32

Slide 32 text

No content

Slide 33

Slide 33 text

No content

Slide 34

Slide 34 text

Forget Physical Laws

Slide 35

Slide 35 text

Test automation with physical devices ?!

Slide 36

Slide 36 text

No content

Slide 37

Slide 37 text

Not great to maintain…

Slide 38

Slide 38 text

char[] start_scan() char[] capture() char[] scan_finger()

Slide 39

Slide 39 text

Plain Old Interfaces

Slide 40

Slide 40 text

byte[] start_scan();

Slide 41

Slide 41 text

byte[] start_scan();

Slide 42

Slide 42 text

Decoupled Development x. Device Integration y. Application Biometric Logic

Slide 43

Slide 43 text

Decoupled Development x. Device Integration y. Application Biometric Logic

Slide 44

Slide 44 text

Decoupled Development x. Device Integration y. Application Biometric Logic

Slide 45

Slide 45 text

byte[] start_scan();

Slide 46

Slide 46 text

byte[] start_scan();

Slide 47

Slide 47 text

byte[] start_scan();

Slide 48

Slide 48 text

byte[] start_scan();

Slide 49

Slide 49 text

Requires: Categorized Test Data Supports: Randomization

Slide 50

Slide 50 text

Requires: Categorized Test Data Supports: Randomization

Slide 51

Slide 51 text

byte[] start_scan();

Slide 52

Slide 52 text

No content

Slide 53

Slide 53 text

No content

Slide 54

Slide 54 text

Virtual Fingerprint Scanner

Slide 55

Slide 55 text

Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval Virtual Fingerprint Scanner

Slide 56

Slide 56 text

Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval Virtual Fingerprint Scanner

Slide 57

Slide 57 text

Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval Virtual Fingerprint Scanner

Slide 58

Slide 58 text

Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval Virtual Fingerprint Scanner

Slide 59

Slide 59 text

Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval Virtual Fingerprint Scanner

Slide 60

Slide 60 text

Given a traveler leaving the country When 1 finger is missing Then emigration supervisor is called Virtual Fingerprint Scanner

Slide 61

Slide 61 text

Forget Physical Laws Problem Automate testing of applications using physical devices Ingredients • Common interface for similar devices • Virtual device implementation for that interface • Categorized test data repository • Test data sampler

Slide 62

Slide 62 text

Layered World

Slide 63

Slide 63 text

Reusable core modules but Many customizations and Specific client requirements ?

Slide 64

Slide 64 text

Reusable core modules but Many customizations and Specific client requirements ?

Slide 65

Slide 65 text

Reusable core modules but Many customizations and Specific customer requirements ?

Slide 66

Slide 66 text

No content

Slide 67

Slide 67 text

Plain Old Layers

Slide 68

Slide 68 text

No content

Slide 69

Slide 69 text

Low level UI automation across all apps

Slide 70

Slide 70 text

Low level UI automation across all apps

Slide 71

Slide 71 text

Low level UI automation across all apps Module “object” automation

Slide 72

Slide 72 text

Low level UI automation across all apps Module “object” automation

Slide 73

Slide 73 text

Low level UI automation across all apps Module “object” automation Application logic automation

Slide 74

Slide 74 text

Low level UI automation across all apps Module “object” automation Application logic automation

Slide 75

Slide 75 text

Low level UI automation across all apps Module “object” automation Application logic automation

Slide 76

Slide 76 text

Application Driver DSL

Slide 77

Slide 77 text

Given a traveler entering the country When I capture all biometric data And no alarms are raised Then travel is allowed Application Driver DSL

Slide 78

Slide 78 text

Given a traveler entering the country When I capture all biometric data And no alarms are raised Then travel is allowed Application Driver DSL

Slide 79

Slide 79 text

Given a traveler entering the country When I capture all biometric data And no alarms are raised Then travel is allowed Application Driver DSL

Slide 80

Slide 80 text

Layered World Problem Automate testing of reusable client modules with project customizations and specific requirements Ingredients • Specflow (Cucumber family) • White (GUI automation) • Layered test code: pure UI + module + application DSL

Slide 81

Slide 81 text

Parallel Worlds

Slide 82

Slide 82 text

Multiple public-facing interfaces GUI vs API

Slide 83

Slide 83 text

Multiple public-facing interfaces GUI vs API

Slide 84

Slide 84 text

OR

Slide 85

Slide 85 text

Multiple execution alternatives GUI objects vs Keyboard shortcuts

Slide 86

Slide 86 text

Multiple execution alternatives GUI objects vs Keyboard shortcuts

Slide 87

Slide 87 text

Plain old Dependency Injection

Slide 88

Slide 88 text

No content

Slide 89

Slide 89 text

No content

Slide 90

Slide 90 text

FingerprintsUI

Slide 91

Slide 91 text

FingerprintsUI

Slide 92

Slide 92 text

FingerprintsUI FingerprintsShortcuts … IFingerprints

Slide 93

Slide 93 text

FingerprintsShortcuts IFingerprints Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval FingerprintsUI

Slide 94

Slide 94 text

FingerprintsShortcuts IFingerprints Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval FingerprintsUI Fingerprint.IFingerprints = Fingerprint.FingerprintsUI

Slide 95

Slide 95 text

FingerprintsShortcuts IFingerprints Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval FingerprintsUI Fingerprint.IFingerprints = Fingerprint.FingerprintsUI

Slide 96

Slide 96 text

FingerprintsShortcuts IFingerprints Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval FingerprintsUI Fingerprint.IFingerprints = Fingerprint.FingerprintsShortcuts

Slide 97

Slide 97 text

FingerprintsShortcuts IFingerprints Given a complete Visa application When I capture 4 valid fingerprints Then application is sent for approval FingerprintsUI Fingerprint.IFingerprints = Fingerprint.FingerprintsShortcuts

Slide 98

Slide 98 text

Parallel Worlds Problem Automate testing of multiple interfaces/executions for same scenario Ingredients • A single test interface for the exposed functionality • Two or more implementations of that interface • (Basic) dependency injection mechanism

Slide 99

Slide 99 text

Image credits Ancient world map: http://ancientworldmaps.blogspot.com.es/2010/06/world-map-17th-century_12.html Fingerprint scanners: http://www.bayometric.com/lumidigm-venus-v302.html http://www.biometricsintegrated.com/passport-seva.html http://www.indiamart.com/bayometric-mumbai/fingerprint-scanners.html Signature pads: http://www.ez-tech.com.mx/store/STU-500-LCD-Signature-Tablet-Large-STU-500.html http://www.reusetek.com/topaz-t-lbk766se-bhsb-r-4x5-lcd-usb-signature-pad/ http://www.alphacard.com/siglite-signature-capture-terminal Document readers: http://www.access-is.com/ocr640-desktop-full-page-passport-id-reader.php http://www.access-is.com/ocr601_kiosk_desktop_airport_mrz_passport_reader.php http://www.assuretec.com/product/passport-readers Cameras: http://www.ephotozine.com/article/canon-eos-1100d-digital-slr-review-16085 http://www.lawyersandsettlements.com/blog/tag/webcam http://www.hdrphotographypro.org/best-tools/ A4 scanner: http://www.printerland.co.uk/Xerox-7600i-P13571.aspx Workstation: http://www.channelregister.co.uk/2011/04/12/hp_workstations/ Web technologies: http://www.smartechworldweb.com/smartech_web_technology.html Building blocks: http://www.getfilecloud.com/blog/2014/01/the-fundamental-building-blocks-of-cloud- computing/#.Uzf2RfmSySo Unfinished building: http://www.panoramio.com/photo/26507136 UK border control: http://www.theguardian.com/uk/2011/nov/08/border-control-row-targeted-checks Veridoc: http://www.marpless.co.za/Secure-Document.html Biometric enrolment: http://www.zimbio.com/pictures/JV59KukDbmF/Home+Office+Minister+Demonstrates+New+Biometr ic/tA8g2BhKmD9/Phil+Woolas Border control queue: http://www.dailymail.co.uk/travel/article-2133883/Passport-checks-cut-Olympic- official-complains-hour-delay-Heathrow.html Recipe template: http://www.vertex42.com/WordTemplates/recipe-card-template.html

Slide 100

Slide 100 text

Thanks! Francisco Cerrudo Francisco Garcia Javier Perez José Cruz

Slide 101

Slide 101 text

Thank you!

Slide 102

Slide 102 text

Q & A