Many years ago someone called me a guru at using QuickTest Pro for functional test automation since I knew how to do everything with that tool. Which was ironic, because as a “guru” of QTP, I was only able to maintain about 10 functional tests with any kind of reliability.
Today, I am capable of coding a functional Graphical User Interface test in under 30 minutes with a guarantee of 99 percent reliability. I can also execute hundreds of functional tests every single day. I’m not saying this to brag; I’m stating it to convey that there is a secret to such a transformation.
That secret was reading books.
If you want to truly master test automation and put a smile on the face of your managers, you must read. Every book you read will be an extra weapon enhancing your test automation arsenal.
Below is a list of the most impactful books that I read to improve my test automation skills.
Although this is not a book specifically for test automation, it’s one that every code writer should own. Out of all the books that I have read, this one has caused one of the largest improvements to my functional test automation. Bob Martin conveys a ton of coding best practices that anyone writing code should implement, even you, Automation Engineers. Furthermore, Uncle Bob tells the best stories. Some of the topics that are covered include how to:
- write meaningful names,
- write good functions,
- handle comments,
- deal with objects and data structures,
- do proper error handling, and
- write unit tests
I recently reopened it to help me with a presentation and then I realized that this book is pure gold. Even though it was written in 1999, so much of it still applies. By reading this book, you will gain 30 years of test automation experience, seriously. To this day, I see people repeating all the mistakes that are listed in Software Test Automation. Some things you will learn are:
- Capture replay is not test automation
- Building maintainable tests
It’s funny how the books that have had the most impact on my automated functional testing were books on software development. At some point, all Automation Engineers reach a place where automation skills are no longer their Achilles heel. Rather, it’s a lack of understanding of good Object Oriented design and patterns to deal with common problems faced by all of us.
Yes, I was a QTP guru according to some, but I was not a great Test Automation Engineer. This book helped me to surpass any such impasse by covering fundamental design patterns such as:
- Factory Pattern – excellent for WebDriver initializations
- Strategy Pattern – excellent for different kinds of behaviors
- Other great object oriented design principles such as “programming to an interface and not an implementation.”
Selenium Design Patterns by Dima is one of the excellent software testing books that will teach you some very valuable automation design patterns, regardless of the tools that you use. You will learn:
- Hermetic Design Pattern
- Page Object Pattern
- Spaghetti Antipattern
- And much more
This is an excellent resource for test automation. Dorothy and Mark have a lot of experience and help you to overcome many hurdles when dealing with test automation. Even today, I still see people making a lot of mistakes that could be overcome by reading this resource. You will learn some valuable techniques for how to:
- prioritize automation
- what to automate
- how to automate
- management issues
- technical issues
- database automation
- regression testing in production
- automating the testing of complex government systems.
I originally picked up this book to become a better tester in general. Although I am still reading this book, I have learned some valuable information. Some things that you will learn are:
- How to overcome barriers to test automation
- How to get testers engaged in agile development
- Where testers and QA managers fit on an agile team
- What to look for when hiring an agile tester
- How to transition from a traditional cycle to agile development
- Complete testing activities in short iterations
- How to use tests to successfully guide development
7) Refactoring: Improving the Design of Existing Code by Martin Fowler and Kent Beck
I don’t care what anyone says. A good Test Automation Engineer is a good programmer.
Now most of us may never work for Google developing Google Chrome, but we should have the capability to understand and write good code good code. More specifically, we should have the capability to design a maintainable, robust, and flexible test automation framework. Refactoring is the key to creating a flexible system.
The problem is that most Test Automation Engineers spend the majority of their time creating new automated functional tests while their old code rots. After a year of development, their automation grinds to a halt. In this book, you will learn:
- Bad smells in code
- The importance of refactoring
- Organizing data
- Making methods simpler
This is an excellent resource from Dave Haeffner that is purely focused on teaching you Selenium WebDriver. He goes through all of the pain points of working with Selenium and covers them one by one. Some topics that you will learn are:
- Getting Started
- Finding and Verifying Locators
- Your First Test
- Writing Maintainable Tests with Page Objects
- Writing Really Maintainable Tests with a Base Page Object