2. Introduction
Jim Hazen
Veteran of the Software Testing Trenches
Experience in software testing, both commercial
and consulting work.
Working with automation and tools since 1989.
Implemented Automation Tools on DOS, OS/2,
Windows and Web platforms.
Experience with tools; including HP/Mercury,
IBM/Rational, and other ‘scripting’ languages.
3. Sage Words to Remember
“Insanity: doing the same thing over and over again
and expecting different results.” – Albert Einstein
4. Agenda
What is ‘Test Automation’
A Brief History
Different types of test automation, tools and uses
Automation Myths
How to correct them
Resources & Skills needed
Setting expectations for Management & Others
Summary
Q&A
13. What ‘Test Automation’ Really Is
“Automation” definition
Webster’s – “the technique of making an apparatus, a
process, or a system operate automatically”
In Software Testing we use ‘tools’ to drive our processes
People only think of tools that execute a test as
‘Automation’ .
Other tools can be used for Test Design, Test Data
Generation, Defect Tracking, Test Management, etc.
“Automation” is using a tool during any part of the
process of testing.
15. A Brief History
Test “Execution” tools have been around a long time!
Mainframes (pre
Mid-80’s)
PC DOS
(Mid 80’s –
90’s)
PC GUI &
Web (1990’s
– present)
Mobile
(2008 –
present)
Mainframe – Home grown ‘macro’ tools1, Hyperion
PC DOS – AutoTester, SuperKey (macro tool)
PC GUI – Automated Test Facility (ATF), Rational Robot,
QA Run, Winrunner, etc.
PC Web – QTP, SilkTest, Selenium, TestComplete, etc.
Mobile – MonkeyTalk, Robotium, etc.
16. Other Types of Test Automation Tools
Other Test Execution Tools
xUnit (JUnit & NUnit), SOAPUI, FitNesse, etc.
Test Design & Test Data Generation
Hexawise, AllPairs, Tosca Test Suite, etc.
Test Execution Management
HP ALM, MS Team Foundation Server, TestLink, etc.
Test Environment Management
VMWare vCloud Director, etc.
Defect Tracking & Reporting
Bugzilla, JIRA, etc.
18. Old Myths
You can automate 100% of your tests
Automation will “cure” all problems with testing
Automation tools are usable by anyone
Record/Playback is all you need
Automation allows Management to cut test staff
One tool is all you need
Automation will speed up testing process
* Oldies, but goodies!!
19. New Myths
You don’t have to know how to program
Opensource tools are “free”
Commercial tools are “expensive”
GUI level automation is a waste of time
“Codeless” and “Scriptless” tools
Commercial tools can’t support agile
Developers only need to focus on Unit Tests
20. How to Correct Them
100% Automation – Certain tests shouldn’t or can’t be
‘automated’. 80/20 Rule; automate 20% of
functionality used 80% of time.
Automation solves all testing problems – it helps, but
it creates new problems too.
Automation can be done by anyone – Not everyone has
the ‘mindset’, it is both learned and inherent (logic).
Record/Playback is all you need – Proven time & time
again to be false, and to fail.
21. How to Correct Them cont.
One tool is all you need – There isn’t a one-size fits all.
Automation speeds up testing process – The “Illusion
of Speed” problem. Both execution and creation.
You don’t need to know programming – Anyone can
Automate problem.
Opensource tools are free – Costs due to ramp up time
(money) and skilled staff to do it (more expensive).2
Commercial = Expensive – Not really in grand scheme
of things. 2
22. How to Correct Them cont.
GUI level automation is a waste of time – Not really
23. How to Correct Them cont.
Codeless/Scriptless tools – Just a different UI. You’re
still writing a ‘test’ which is a set of ‘instructions’
(code).
Commercial tools don’t do Agile – Yes they do, it’s how
you use the tool that counts.
Developers only create Unit Tests – Other tools require
someone to ‘build’ the fixtures/code to ‘talk’ to the
SUT.
25. Einstein was right!
We keep repeating history, why?
Always a ‘new’ group of management and testers.
Companies always looking to do testing faster, cheaper
and with less resources.
Vendors and others who sell “Automagic”.
Instant gratification mindset. Automation takes time.
Not learning from past mistakes.
Software not designed with “testability” in mind.
Testers not involved early with decisions, not included
by management.
26. Resources for Automation
Dedicated Staff
Skilled & experienced staff
Dedicated Equipment/Environments
Reduce risk of competition of resource or teams
stepping on each other
Dedicated Budget
Automation isn’t cheap, plan appropriately
Dedicated Management Support
Can’t have any of the other 3 without it
27. Skills for Test Automation
It’s a different view and purpose for the script code.
Creating ‘software’ to ‘test’ software; i.e.,
PROGRAMMING!
Need basic understanding of programming methods.
Understand different types of technology layers
GUI, API, System, Web, Services, Database, etc.
You need to know how to program in different
languages when needed.
C#, Java, VBScript, Jscript, XML, SQL, etc.
28. Test Automation Skills Cont.
Need to understand how to ‘hook’ the software under
test and interact with it, and at what level.
API, or Object, or Service, or Protocol, etc.
Understand how tool ‘interacts with’ the software
under test; what functions/methods are to use.
GUI Object ‘methods’ (functions)
Ex: SwfWindow(“LoginForm").SwfEdit(“ID”).SET “Jim”
Need to understand how to “pick apart” the software
and “drive it” programmatically.
29. Axioms to remember
SMART
Standalone
Test/Script able to run by itself, minimize dependencies
Modular/Maintainable
Scripts and code need to be modular in design and easy to
maintain
Appropriate
Build according to need for project, don’t try to automate
100%
Reusable
Build for reuse; keep script code compact and focused.
Testable & Traceable
Make it easy to debug your code, and be able to link together.
30. Axioms to remember cont.
SEARCH4,5
Setup
Test/Script needs to check for pre-test conditions and flag if
needed.
Execute
The logic and data needed to run the test itself
Analyze
Validations, Error Handling, etc.
Report
Progress, Error, Summation of run information (Logfile)
Cleanup
Test/Script needs to ‘cleanup’ (temp files, reset data, etc.)
Help (or Home)
31. Setting Realistic Expectations
Management & Other Groups
100% automation is an unreachable goal.6,7
Automation is its own form of software development.
Ramp-up time will be required, longer than you think.
Benefits realized over time, no immediate payback for
investment.
32. Expectations cont.
Management & Other Groups
No tool supports all systems & technologies out of the box.
Not all testers can write scripts. Specialized resources are a
must and need to be dedicated to the work.
Nothing is “Free”, there are always costs involved.
Don’t believe the marketing hype! Don’t buy the snake oil.8
There is no Magic!
34. Summary
What is ‘Test Automation’ – A lot more than you think!
History – Lots of tools over the last 30 plus years.
Different types of test automation tools – Not just for
execution of a test only.
Automation Myths – Old and New; lots of failures due
to them.
How to fix the problems – Be realistic, dispel the myths.
Resources and Skills needed for test automation –
Again, a lot more than you think. It is Programming!
Setting expectations for Management & Others –
Without proper expectations you are painted into a
corner.
37. Contact Info
Jim Hazen
Company: Freelance Contractor
Home email: calkelpdiver@gmail.com
LinkedIn profile:
http://www.linkedin.com/profile/view?id=2835000&trk=tab_pro
38. References
1) “Experiences of Test Automation: Case Studies of Software Test Automation”,
Chapter 5, Graham & Fewster, Addison-Wesley, 2012
2) “Test Automation - Let's Talk Business”, Igor Gershovich, Connected Testing,
2006.
3) “Implementing Automated Software Testing”, IDT Survey, Elfriede Dustin et
al., Addison-Wesley, 2009.
4) “How We Test Software At Microsoft”, page 187, Alan Page, Microsoft Press,
2009.
5) “How to Automate Testing: The Big Picture“, Keith Stobie & Mark Bergman,
1992.
6) “Seven Steps to Test Automation Success”, Bret Pettichord,
http://www.io.com/~wazmo/papers/seven_steps.html, 2001.
7) “Success with Test Automation”, Bret Pettichord,
http://www.io.com/~wazmo/succpap.htm, 2001.
8) “Test Automation Snake Oil”, James Bach, 1996
39. Thank you for attending this session.
Please fill out an evaluation form.
Editor's Notes
What does it mean to make an apparatus or process or system ‘operate’ automatically. It means setting it up so that it runs autonomously without human intervention during the operation. It means it runs by itself and does not require a human to interact with it to get the job done.
Typically people know of or think of “automation” as the “execution” of a test, or set of tests, via a tool. They see it as some type of “magic monkey” that will do their work for them. Execution of a test is only a small part of the process of testing. What about test design, test data generation, test execution management, and test results analysis and reporting? There are tools that automate those tasks/processes as well. They are “test automation” tools too.
All in all it is a dirty job! You have to get your hands into the application and work hard to get the tool to do what you want.
Mainframe based tools worked against static and linear logic based applications. The User Interfaces also were very static in their layout and behavior. Macros were easy to record and fields were simple to navigate to. The recorded keystrokes and tests were easy to replay because the applications were very straightforward in their logic and business actions.
DOS based tools also worked against static and linear logic based applications. So just like a mainframe app using Record/Playback was relatively successful. This in effect lulled some people into a false sense of security with automation at this time.
PC GUI based tools had a totally new animal to deal with. GUI applications allowed for additional keystroke and mouse interaction between the system and user. Also, the logic paths changed from linear to ‘event driven’. The interaction was not consistent in path logic or process. The application reacted to the users actions/inputs. Straight up R/P quickly failed.
Web based systems took everything to a new level, and now mobile adds a totally other dimension to the puzzle of getting automation tools to do their jobs. The level and amount of complexity has skyrocketed.
Other Test Execution Tools
Unit Testing, Services Testing, API, Load & Performance, etc.
Test Design & Test Data Generation
Test scenario design and generation
Data generation via different methods
Test Execution Management
Manual and automated type tests
Test Environment Management
Test Lab configuration & maintenance
Defect Tracking & Reporting
100% Automation myth – Use functionality maps, categorization and prioritization, and critical path as criteria to narrow scope and get focused tests. Common Usage Modeling Language (CUML) is a way to do it.
Automation Solves all testing problems – it can help with some, but creates its own problems with purpose and maintenance.
Automation can be done by anyone – Proven time and time again to be false. Not anyone can be a doctor or lawyer. Automation requires skills, knowledge and experience.
Record/Playback – enough said.
One tool is all you need – Not every job can be done with a hammer. You need a tool that is appropriate for the job at hand.
Automation speeds up testing – The “Illusion of Speed” problem. Even automation is dependent upon synchronization and other timing issues in software. Also, a large amount of automated scripts will not run extremely fast if there are dependencies upon run order and data. And if the workload stack is only run on a couple, or single, machine you are throttled by the processing capacity of the setup. Put the workload stack on its side and divide up the workload and then distribute to multiple machines to run in parallel. Use “Economies of Scale” to get “speed”.
Automation can be created quickly – A lot of time is required to write/create an automated test initially, and then additional time to maintain them. Expect a greater initial investment than in comparison to manual testing. The investment will pay back over time, but it is not instantaneous. Because automation is its own form of software development is will be constrained by the same rules as most other types of application development work.
You don’t need to know programming – Anything you do with a computer is some form of programming. You are giving the machine “instructions” to do its work. You need to understand process and logic to instruct a computer to do its job. It takes logic.
Opensource tools are free – Initially the cost of the tool itself is zero, but the overall cost to implement and use them can be quite large due to time to build the framework and its functionality to match commercial tools. And the cost of staff can be higher due to scarcity of resource or skills to do the work. This can result in major hidden costs.
Commerical tools are expensive – Initial costs maybe, but over the long run they are not.2
GUI level Automation is a waste of time – Not really, Business scenario & End-to-End tests have to be done this way. Also, if you follow the Automation Pyramid method you still have a number of GUI tests to build. For example if GUI automation should only be 10% of your automation effort and you have automated 10,000 Unit Tests that means you will have 1,000 GUI tests. Better do it right from the beginning.
Commercial tools don’t do Agile – It isn’t the tool that does agile, it is the person using it.
Developers only create Unit Tests – In the Automation Pyramid you have Services and API tests, and the tools that drive this are more technical and/or require someone to build interfaces (Fixtures) for them. Developers are best suited to this job, or a skilled tester with programming skills/knowledge who can do the same.
You don’t need to know programming – Anything you do with a computer is some form of programming. You are giving the machine “instructions” to do its work. You need to understand process and logic to instruct a computer to do its job. It takes logic.
Opensource tools are free – Initially the cost of the tool itself is zero, but the overall cost to implement and use them can be quite large due to time to build the framework and its functionality to match commercial tools. And the cost of staff can be higher due to scarcity of resource or skills to do the work. This can result in major hidden costs.
Commerical tools are expensive – Initial costs maybe, but over the long run they are not.2
GUI level Automation is a waste of time – Not really, Business scenario & End-to-End tests have to be done this way. Also, if you follow the Automation Pyramid method you still have a number of GUI tests to build. For example if GUI automation should only be 10% of your automation effort and you have automated 10,000 Unit Tests that means you will have 1,000 GUI tests. Better do it right from the beginning.
Commercial tools don’t do Agile – It isn’t the tool that does agile, it is the person using it.
Developers only create Unit Tests – In the Automation Pyramid you have Services and API tests, and the tools that drive this are more technical and/or require someone to build interfaces (Fixtures) for them. Developers are best suited to this job, or a skilled tester with programming skills/knowledge who can do the same.
You don’t need to know programming – Anything you do with a computer is some form of programming. You are giving the machine “instructions” to do its work. You need to understand process and logic to instruct a computer to do its job. It takes logic.
Opensource tools are free – Initially the cost of the tool itself is zero, but the overall cost to implement and use them can be quite large due to time to build the framework and its functionality to match commercial tools. And the cost of staff can be higher due to scarcity of resource or skills to do the work. This can result in major hidden costs.
Commerical tools are expensive – Initial costs maybe, but over the long run they are not.2
GUI level Automation is a waste of time – Not really, Business scenario & End-to-End tests have to be done this way. Also, if you follow the Automation Pyramid method you still have a number of GUI tests to build. For example if GUI automation should only be 10% of your automation effort and you have automated 10,000 Unit Tests that means you will have 1,000 GUI tests. Better do it right from the beginning.
Commercial tools don’t do Agile – It isn’t the tool that does agile, it is the person using it.
Developers only create Unit Tests – In the Automation Pyramid you have Services and API tests, and the tools that drive this are more technical and/or require someone to build interfaces (Fixtures) for them. Developers are best suited to this job, or a skilled tester with programming skills/knowledge who can do the same.
Additional References
“Software Test Automation”, Mark Fewster & Dorothy Graham, Addison-Wesley, 1999.
“Automated Software Testing”, Elfriede Dustin et al., Addison-Wesley, 1999.
“Why does test automation often fail to deliver?”, Ben Simo, http://www.questioningsoftware.com/2007/03/why-does-test-automation-often-fail-to.html, 2007.
“Important Considerations for Test Automation”, http://bazman.tripod.com/auto.html.
“I’m a tester, why should I care about unit tests?”, Testing the Mind blog, http://testingthemind.wordpress.com/2012/02/09/im-a-tester-why-should-i-care-about-unit-tests/?utm_source=feedburner&utm_medium=feed&utm_campaign=Feed%3A+stcfeedsbloggers+%28Testing+Feeds+-+Bloggers%29, 2012.
“Conquering Common Test Automation Challenges”, Bob Crews, STPCon 2012 Fall, http://www.stpcon.com/Item/1070/, 2012.
“Rants of a Madman – I don’t care if it’s automation, it’s still code!”, Mark Lawler, Blog, http://markslawler.wordpress.com/2012/07/30/rants-of-a-madman-i-dont-care-if-its-automation-its-still-code/, 2012.
“Automate your way to ineffective testing with my twelve step program…”, Jared Quinert, Blog, http://www.software-testing.com.au/blog/2007/03/09/automate-your-way-to-ineffective-testing-with-my-twelve-step-program/, 2007.