c# cookware - presented at cukeup! 2014
TRANSCRIPT
![Page 1: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/1.jpg)
C# Cookware
Manuel Pais
CukeUp! London
3rd Apr 2014
![Page 2: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/2.jpg)
Agenda
Prelude
An Ancient World
Forget Physical Laws
Layered World
Parallel Worlds
![Page 3: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/3.jpg)
Prelude
![Page 4: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/4.jpg)
![Page 5: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/5.jpg)
![Page 6: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/6.jpg)
Test .NET Code with Specflow
![Page 7: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/7.jpg)
Test .NET Code with Specflow
Drive a Windows App Using White
![Page 8: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/8.jpg)
Test .NET Code with Specflow
Drive a Windows App Using White
Test Windows GUIs with AutoIt
![Page 9: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/9.jpg)
![Page 10: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/10.jpg)
![Page 11: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/11.jpg)
An Ancient World
![Page 12: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/12.jpg)
![Page 13: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/13.jpg)
Not for everyone
![Page 14: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/14.jpg)
For some many of us
this is more accurate…
![Page 15: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/15.jpg)
![Page 16: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/16.jpg)
Our context
![Page 17: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/17.jpg)
![Page 18: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/18.jpg)
![Page 19: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/19.jpg)
![Page 20: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/20.jpg)
Do desktop applications still make sense?
![Page 21: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/21.jpg)
IF you have to integrate with low-level SDKs
And…
![Page 22: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/22.jpg)
IF client app requires low latency IF you have to integrate with low-level SDKs
And…
![Page 23: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/23.jpg)
AND your stress tests look like this…
![Page 24: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/24.jpg)
![Page 25: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/25.jpg)
![Page 26: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/26.jpg)
![Page 27: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/27.jpg)
![Page 28: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/28.jpg)
![Page 29: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/29.jpg)
![Page 30: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/30.jpg)
![Page 31: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/31.jpg)
![Page 32: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/32.jpg)
![Page 33: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/33.jpg)
![Page 34: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/34.jpg)
Forget Physical Laws
![Page 35: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/35.jpg)
Test automation
with
physical devices ?!
![Page 36: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/36.jpg)
![Page 37: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/37.jpg)
Not great to maintain…
![Page 38: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/38.jpg)
char[] start_scan()
char[] capture()
char[] scan_finger()
![Page 39: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/39.jpg)
Plain Old Interfaces
![Page 40: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/40.jpg)
byte[] start_scan();
![Page 41: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/41.jpg)
byte[] start_scan();
![Page 42: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/42.jpg)
Decoupled Development
x. Device Integration
y. Application Biometric Logic
![Page 43: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/43.jpg)
Decoupled Development
x. Device Integration
y. Application Biometric Logic
![Page 44: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/44.jpg)
Decoupled Development
x. Device Integration
y. Application Biometric Logic
![Page 45: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/45.jpg)
byte[] start_scan();
![Page 46: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/46.jpg)
byte[] start_scan();
![Page 47: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/47.jpg)
byte[] start_scan();
![Page 48: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/48.jpg)
byte[] start_scan();
![Page 49: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/49.jpg)
Requires: Categorized Test Data
Supports: Randomization
![Page 50: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/50.jpg)
Requires: Categorized Test Data
Supports: Randomization
![Page 51: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/51.jpg)
byte[] start_scan();
![Page 52: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/52.jpg)
![Page 53: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/53.jpg)
![Page 54: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/54.jpg)
Virtual Fingerprint Scanner
![Page 55: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/55.jpg)
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
Virtual Fingerprint Scanner
![Page 56: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/56.jpg)
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
Virtual Fingerprint Scanner
![Page 57: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/57.jpg)
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
Virtual Fingerprint Scanner
![Page 58: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/58.jpg)
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
Virtual Fingerprint Scanner
![Page 59: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/59.jpg)
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
Virtual Fingerprint Scanner
![Page 60: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/60.jpg)
Given a traveler leaving the country
When 1 finger is missing
Then emigration supervisor is called
Virtual Fingerprint Scanner
![Page 61: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/61.jpg)
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
![Page 62: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/62.jpg)
Layered World
![Page 63: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/63.jpg)
Reusable core modules
but
Many customizations
and
Specific client requirements ?
![Page 64: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/64.jpg)
Reusable core modules
but
Many customizations
and
Specific client requirements ?
![Page 65: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/65.jpg)
Reusable core modules
but
Many customizations
and
Specific customer requirements ?
![Page 66: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/66.jpg)
![Page 67: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/67.jpg)
Plain Old Layers
![Page 68: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/68.jpg)
![Page 69: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/69.jpg)
Low level UI
automation
across all apps
![Page 70: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/70.jpg)
Low level UI
automation
across all apps
![Page 71: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/71.jpg)
Low level UI
automation
across all apps
Module
“object”
automation
![Page 72: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/72.jpg)
Low level UI
automation
across all apps
Module
“object”
automation
![Page 73: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/73.jpg)
Low level UI
automation
across all apps
Module
“object”
automation
Application
logic
automation
![Page 74: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/74.jpg)
Low level UI
automation
across all apps
Module
“object”
automation
Application
logic
automation
![Page 75: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/75.jpg)
Low level UI
automation
across all apps
Module
“object”
automation
Application
logic
automation
![Page 76: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/76.jpg)
Application Driver DSL
![Page 77: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/77.jpg)
Given a traveler entering the country
When I capture all biometric data
And no alarms are raised
Then travel is allowed
Application Driver DSL
![Page 78: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/78.jpg)
Given a traveler entering the country
When I capture all biometric data
And no alarms are raised
Then travel is allowed
Application Driver DSL
![Page 79: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/79.jpg)
Given a traveler entering the country
When I capture all biometric data
And no alarms are raised
Then travel is allowed
Application Driver DSL
![Page 80: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/80.jpg)
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
![Page 81: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/81.jpg)
Parallel Worlds
![Page 82: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/82.jpg)
Multiple
public-facing interfaces
GUI vs API
![Page 83: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/83.jpg)
Multiple
public-facing interfaces
GUI vs API
![Page 84: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/84.jpg)
OR
![Page 85: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/85.jpg)
Multiple
execution alternatives
GUI objects vs Keyboard shortcuts
![Page 86: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/86.jpg)
Multiple
execution alternatives
GUI objects vs Keyboard shortcuts
![Page 87: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/87.jpg)
Plain old
Dependency Injection
![Page 88: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/88.jpg)
![Page 89: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/89.jpg)
![Page 90: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/90.jpg)
FingerprintsUI
![Page 91: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/91.jpg)
FingerprintsUI
![Page 92: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/92.jpg)
FingerprintsUI FingerprintsShortcuts …
IFingerprints
![Page 93: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/93.jpg)
FingerprintsShortcuts
IFingerprints
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
FingerprintsUI
![Page 94: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/94.jpg)
FingerprintsShortcuts
IFingerprints
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
FingerprintsUI
Fingerprint.IFingerprints
=
Fingerprint.FingerprintsUI
![Page 95: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/95.jpg)
FingerprintsShortcuts
IFingerprints
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
FingerprintsUI
Fingerprint.IFingerprints
=
Fingerprint.FingerprintsUI
![Page 96: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/96.jpg)
FingerprintsShortcuts
IFingerprints
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
FingerprintsUI
Fingerprint.IFingerprints
=
Fingerprint.FingerprintsShortcuts
![Page 97: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/97.jpg)
FingerprintsShortcuts
IFingerprints
Given a complete Visa application
When I capture 4 valid fingerprints
Then application is sent for approval
FingerprintsUI
Fingerprint.IFingerprints
=
Fingerprint.FingerprintsShortcuts
![Page 98: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/98.jpg)
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
![Page 99: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/99.jpg)
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+Biometric/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
![Page 100: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/100.jpg)
Thanks!
Francisco Cerrudo
Francisco Garcia
Javier Perez
José Cruz
![Page 101: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/101.jpg)
Thank you!
![Page 102: C# Cookware - presented at CukeUp! 2014](https://reader034.vdocument.in/reader034/viewer/2022042723/58e941f71a28ab84768b5ffb/html5/thumbnails/102.jpg)
Q & A