Adam Guida Introduction Adam Guida - Senior QA Automation Developer Work History: - 2011 – Present: - Deutsche Bank Global Technologies Cary, NC - 2006-2011: - lulu.com - Raleigh, NC Email: [email protected].

Download Report

Transcript Adam Guida Introduction Adam Guida - Senior QA Automation Developer Work History: - 2011 – Present: - Deutsche Bank Global Technologies Cary, NC - 2006-2011: - lulu.com - Raleigh, NC Email: [email protected].

Adam Guida
Introduction
Adam Guida
- Senior QA Automation
Developer
Work History:
- 2011 – Present:
-
Deutsche Bank Global Technologies
Cary, NC
- 2006-2011:
-
lulu.com - Raleigh, NC
Email: [email protected]
2
Automated Testing is a Liability
Unless you have
Stable
 Test Environments
 Deployment Automation
Strong
 Communication
 Collaboration
 Technical Expertise
The Truth About Automated Testing
Automated Testing:
 When done correctly, it can significantly increase the repeatability and
effectiveness of testing efforts
 Augments classical test methodology but does NOT replace manual
testing
 Increases regression consistency
 Reduces tedium
 Allows human testers a greater focus on new and creative ways of breaking
things
However:
 Automated testing is ineffective without an approach that considers all
facets of the development automation ecosystem
Purpose of this lecture
Lessons Learned
 Poorly written test
automation isn’t sustainable
 Writing good tests alone
isn’t enough
 Continuous Automation in QA
 Test Strategies
 Best Practices
 Environments
 Tools & Technologies
 Communication
Continuous Automation
Practices
Continuous Integration (CI)
 A practice where code is automatically compiled and
unit tested on every developer code check-in
Continuous Deployment
 If CI phase passes, application(s) are automatically
deployed to one or more pre-production
environments, triggering additional layers of
automated testing
Continuous Automation
public class Feature {
Unit test failed! I’ll take a
private int 1;
look
at
broke
and
Latest
build
ontry
public
My
void
bad!doSomething(){
I’ll what
check-in
ais
fixup
for
that
if (a
right
== away.
b){
again
CI
for testing!
return true;
}
Sweet! All tests
passed!
DEV & QA
Let me take a look. I see! You’re
Feature: Test A and B are True
This
one is my
fault.
LooksEquals
like I B
Scenario:
Hey,
can youVerify
takeLet’s
athat
lookAat
the last
Awesome!
forgot
to adjust
some“Feature”
testsgrab
after
Given
I open
run?
Looks
like a the
regression test
that
last
build.
I’ll
check-in
a fix &
When Ilunch!
click on “A” and “B”
some
failed.
restart the automation
Then the result is “…….”
Dude, I’m having a problem
getting this test working. The
web service is returning a 404
Test SCM
the wrong resource. I’ll IM
App calling
SCM
you
the correct name
Automation Pipeline
Build +
Unit Test
Test Environment
Deploy
Automated
Testing
Report
Continuous Automation
Collaboration
 Establish partnerships & comradery with your
development team
 Treat QA & Developers as a single team
 Close low-level knowledge gaps in functional testing
 Develop workflows for how DEV & QA address test failures as
a team
 Foster a culture that values cross-team learning, exchange of
knowledge and professional growth
Continuous Automation
Best Practices Demo
Continuous Automation
Best Practices
Automated Test Suite should be
run as often as possible
 Automated tests should run……………………...automatically
 On every successful automated deployment
 Automation executes using the fewest clicks possible
 Start Small and Simple – It won’t all happen overnight
Automation Test Team:
Strategies
 Delegation - Separate the technical from test responsibilities for a given task

Increases efficiency and focus by reducing context switching
 Pair-testing - Pair technical & non-technical testers together for greater
impact
Increases technical experience and promotes mentorship of non-technical testers
 Increases usability & readability of tests

 Reporting - Test Lead/Manager - keep a close eye on automated test reporting.
If tests start failing, seek to understand the underlying causes, then try to assist test team by
removing roadblocks
 Understanding daily/weekly trends in test results helps guide risk assessments

Continuous Automation
Best Practices
Treat Your Test Suite like an Enterprise Application
Automated testing *IS* a form of programming and bound by the same laws as
software development
 Strive to be the best programmer you can & adhere to software development best practices
 Use a Source Control Management tool
 Unit Test your test automation (Yes, that means testing your tests)
 Practice Code reviews
 Seek architectural guidance and input from your development team
 Defect tracking (automated tests apps get bugs too!)
Automated Test Strategies
The Perfect Automated Test
 Fast – Speed impacts every aspect of a quality automation suite
 Reusable – Reuse reduces code complexity and increases simplicity of a test suite
 Relevant – Test indicate a problem we care about and is not redundant
 Independent – Is self sufficient and does not depend on the ordering of other tests
 Focused – Tests a specific aspect of the application without being too broad
 Clear – Determines a pass or failure result automatically, ideally narrowing down the
exact cause of the failure
 Understandable – Is written in such a way that documents behavior other stake-
holders can understand
 Flexible – Change is the only constant – write tests in ways that can handle changes
within reason
Automated Test Strategies
Managing the Complexity Versus Coverage Tradeoff
 System Integration / End-to-End –Provides the
most comprehensive test coverage at the cost of speed
and complexity.
 Unit – Isolated testing of individual classes, methods
and functions
 Component – Tests are isolated to the component
itself. Inputs/Outputs are simulated through test
adapters or mock
Automated Test Strategies
Example of Component Testing
Data Transformer Testing
MOCK DATABASE
H2
End-2-End
TEST 1
User
Database
Product
Database
Marketing
Aggregator
WEB SERVICE CALL
Web Server
Browser
Order
Database
TEST 2
Web Service Testing
TEST 3
MOCK
AGGREGATOR
UI Testing
Automated Test Strategies
Managing the Complexity Versus Coverage Tradeoff
 Diversify your test portfolio using a combination of Unit, Component
and System testing
 Promote Unit Testing w/ Devs - allows you to start trusting some basic
elements of the system, so you can focus on more challenging test scenarios
 Minimize System/End-to-End tests - to fewer high-level smoke tests based
on areas of importance
 Maximize your Component Testing - focus on lower level functionality, API’s
and data model interactions
 Use Test Adapters – for both greater control & reliability of the application
input/outputs
Choosing the right
Tools & Technologies
 Don’t Reinvent the Wheel – someone has already solved your problem
 Carefully Evaluate All Technologies – Require experience prior to adoption.
Invest time in evaluating the pros & cons of a variety of different solutions. Build
POC’s and give stakeholders (developers) a role in decision making
 Straightforward Integration – Utilize tools which accept open formats for
read/write – ensure each tool can fully integrate with others as necessary
 Active Community of Users – Favor technologies where an active online support
community exists over managed (paid) support solutions
Technologies
Programming Language
Rule of thumb: Test Automation should be based on the same
programming language of your application
 Enables sharing of development resources, support and
contribution
 Shared libraries and other resources between testing & dev
 Should be capable of utilizing a highly functional IDE’s such as
Eclipse, Intellij, Visual Studio, etc
Tools: IDEs (Integrated Development Environment)
Intellij IDEA / RubyMines
 Fully integrated support for Cucumber
 Syntax highlighting
 Code Editing/Refactoring
 Supports many languages
 Build-in database browser
 Debugger
Tools: Continuous Integration Server
 CI (Continous Integration Server)
More than just a build agent
 Manages the end-to-end flow of your
automation pipelines and reporting
 Is both the glue and front-end that
binds the continuous deployment,
testing and reporting processes
Tools: VMs - Virtual Machines
 VirtualBox
 Virtualized OS’s

Linux

Windows

Android

OS X
 Contained sandbox
environments
 Backup/Restore, share and
take snapshots of your VM
environments
Tools:
 Create and configure
lightweight, reproducible,
and portable development
environments
 Easy to setup/tear down
and deploy to a
standardize test
environment
 Works with VirtualBox
and other virtual
environment products
 Support integrated into
Intellij IDEA via plug-in
Tools: Deployment Orchestration
 Help automate aspects of environment provisioning &
deployment
 Install & Configure Servers & other resources
 Helps facilitate continuous deployment of your
application
 Many great frameworks to choose from - each has it’s
own set of strength & weakness
Tools & Technology:
Database Management
•Treats SQL like version-able code
• XML, JSON, YAML and generic SQL
syntax supports multiple database
technologies
• Flexible runtime: Maven Plugin and
standalone support
24
Final Thoughts
 Automation is an investment, that when managed effectively, provides a
particular set of benefits which increase efficiency and repeatability of
testing.
AUTOMATION IS NOT A BENEFIT IN ITSELF
 Treat automation as a 1st class citizen of your project
 If you’d like a copy of this presentation, please send me an email at:
[email protected]