Principles
for
building
an
Automa(on
Framework
Code
Quality
Design
PaBerns
Abstrac(on
Layers
Refactor
Pairing
Evolve
Extend
Prac(ces
for
building
an
Automa(on
Framework
Configurable
Con(nuous
Integra(on
(CI)
Screenshots,
Video
Recording
Logging
Tools
&
U(li(es
Test
Data
No
Copy-‐Paste
Outlook
for
Windows
• White
/
QTP
Outlook
for
Mac
• Automator
Outlook
Web
Access
(OWA)
• Selenium
/
Ruby
Outlook
Sync
for
Android
• RoboBum
/
Java
For
a
user
who
has
installed
and
configured
Outlook
on
– Windows
OS
–
desktop
version,
and,
– Android
device
–
naBve
mobile
app
– Mac
OS
–
desktop
version
– …
An
email
draQed
in
one
product
is
reflected
in
the
other
products
How
will
you
Automate
the
IntegraBon
Test
….
End-‐2-‐End
Integra-on
Tests
(Test
Framework
for)
Outlook
on
Windows
(Test
Framework
for)
Outlook
Sync
on
Android
Create
&
Save
as
DraE
1
Verify
DraE
4
Verify
DraE
present
2
Modify
DraE
3
Orchestrator
Can
you
use
the
same
technology
stack
for
automa(ng
the
tes(ng
of
each
variant
of
Outlook?
The
Problem
Outlook
for
Windows
• White
/
QTP
Outlook
for
Mac
• Automator
Outlook
Web
Access
(OWA)
• Selenium
/
Ruby
Outlook
Sync
for
Android
• RoboBum
/
Java
End-‐2-‐End
Integra-on
Tests
Framework
TaaS
Client
Test
Framework
for
Outlook
on
Windows
TaaS
Server
Test
Framework
for
Outlook
Sync
on
Android
TaaS
Server
Create
&
Save
as
DraE
1
Verify
DraE
4
Verify
DraE
present
2
Modify
DraE
3
Orchestrator
Service
Providers
Return
the
Results
• Output
parameters
– As
console
output
between
special
markers
• Console
logs
• ExcepBons
(if
any)
• All
return
values
are
in
“json”
format
TaaS
Server
• Specify
contract
details
• Implement
contracts
• Return
the
results
• Run
TaaS
Server
(REST
service)
• Serve
TaaS
Client
requests
– As
separate
processes
TaaS
Client
• Collect
the
input
parameters
• Invoke
the
contract
• Consume
the
result
• ConBnue
with
test
orchestraBon
Summary
of
Features
• Contract
– Decoupling
of
technology
barriers
– Timeout
• Passing
of
input
parameters
as
Environment
variables
• Result
as
json
– Output
parameters
– Console
logs
and
errors
– ExcepBons
• Developed
in
Ruby
using
Sinatra
Why
is
this
a
Good
Idea?
• Automate
the
last-‐mile
• No
code
duplicaBon
• ImplementaBon
of
contract
lies
with
the
framework
tesBng
that
product
– Evolves
with
product
changes
• Decoupling
of
technologies
Why
is
this
a
Good
Idea?
• Helps
in
Manual
TesBng
(setup
of
data)
• Anyone
can
use
it
• Each
product
is
tested
in
the
“best”
possible
way
• Its
–
providing
Test
as
a
Service!!!
How
can
you
use
TaaS?
• Open
source
(apache2
license)
• Available
on
github!
• Available
on
rubygems.org
!
Steps
to
Follow
• NegoBate
contract
details
• Setup
&
configure
TaaS
Server
– Implement
contracts
– Return
the
results
– Run
TaaS
Server
(REST
service)
• Configure
TaaS
Client
Before
you
use
TaaS
…
IdenBfy
–
• Is
TaaS
the
right
thing
for
you?
• Error
codes
for
the
service
• Service
Discovery
• Security
• Create
a
Java
/
.Net
version
of
TaaS
Server
• Asynchronous
requests
How
can
You
help
TaaS?
What
TaaS
did
for
me?
• Be
creaBve
• Find
InnovaBve
soluBon
to
the
problem
• Another
open
source
contribuBon