You’re reading the second post in a series that’s intended to get you and your teams started on the path to success with your UI test automation projects:
1. Introduction
2. Before You Start (you are here)
3. People
4. Resources
5. Look before You Jump
6. Automation in the Real World
7. Improving Your Success
Important note: After its completion, this series will be gathered up, updated/polished and published as an eBook. We’ll also have a follow-on webinar to continue the discussion. Interested?
"Plans are useless, but planning is indispensable." This quote from American President Dwight Eisenhower is one of my favorite quotes. Sure, he's talking about the run up to D-Day in World War II, but it's applicable to so many things in life—especially software development.
You need to ensure you're spending your time and effort wisely before you jump in and start hacking away at automated tests. Here are a few things I've found helpful to work through as part of the planning process.
Why are you considering bringing in test automation to your delivery process? Take some time to get very specific about the problem you're trying to solve. More importantly, make sure you're tackling a concrete business problem. UI automation's a nifty tool, but it's an expensive one to get adept with, and it's a very costly tool to deal with if you use it badly. It's also only one form of test automation, and by itself it's not going to solve much of any delivery "challenges" you're having.
Here are a few business-related areas in which UI automation may be helpful:
Worst of all, here are two areas that, for me, trump all other concerns:
The last two, especially the last one, should concern every team member. It's really bad if you've lost higher-level management's trust. It's potentially disastrous if you're losing customers.
There are some areas for which you should not consider UI automation as a solution:
UI test automation may help you solve technical or process problems, but ensure you're first asking why and focusing on solving business problems first.
Once you've decided that UI test automation is a good choice for you, the next critical factor is whether your team is able to be successful at UI automation. Several different aspects come into play:
Adopting UI automation will require significant changes to how you work. You'll need team members with the right skills, you'll need resources (no, “resources” are not people), and you'll need additional time.
Adding UI automation into your delivery process will decrease your velocity. You have to make sure your stakeholders and sponsors truly understand that. They have to support the decrease in velocity for the improvement in delivered business value.
"Decrease in velocity" is always something that concerns the business side of the organization. I've found it very helpful to tie back to the specific business-level issues discussed earlier in this post. Say this:
"Yes, we're going to slow down a bit, but the goal is to cut the support costs we're incurring through escaped bugs. We're also hoping to gain back revenue we've lost from the decline in license and service renewals."
This links your efforts back to the things the stakeholders really care about: the organization's mission and bottom line.
Good communication is the foundation of every successful human effort, software notwithstanding.
Are your teams able to get good information about features in a timely fashion? Do designers,
If the answers to any of those questions are "No," you will need to address those issues as you move forward with your automation—or suffer the friction and stress that falls out.
Great communication helps ensure everyone involved in UI automation knows the priorities before they start their work. It helps everyone understand how to balance automation work with focused manual testing, and it helps focus automation work on the right parts of the system.
UI automation rarely succeeds when testers are expected to create all automation in a silo or walled-off room. I already mentioned the importance of early, frequent communication between developers, stakeholders, testers—basically the entire team.
If your teams are fragmented into highly constrictive silos, you will likely see additional friction and difficulties when trying to clear up basic fundamentals such as getting good locators on elements around which you’re building automation scripts.
The best structure for any team is an open environment that empowers frequent communication directly between concerned team members. Co-located teams always function the best; however, geographic dispersion can't be an excuse for poor communication.
Break down communication bottlenecks in your teams. Guide project managers or others to get out of the mindset of requiring communication to flow through them—wheel/spoke communication routed through one person is guaranteed to cause problems as teams try to get more efficient at their work.
Encourage your testers to reach out directly to developers when possible. The developers can clear up issues around tricky asynchronous operations, or other behind-the-scene functionality that's not apparent to someone looking only at the UI.
Setting up a team's structure for success means as few roadblocks and walls to frequent, candid discussions.
Notice I've left the actual tooling for last. Yes, yes: the toolset you use is critical, but it doesn't matter what tools you select for automation if you haven't answered the harder questions first.
You can finally jump into tool selection once you've addressed that you've got a clear case for why you're going to use automation, and what problems you're trying to solve.
There are a huge range of UI automation test tools available. Some are open-source, some are free and some are commercial. There are also many types of tools, from drivers to frameworks to entire suites.[1]
Selecting the right toolset for your team means answering a few more questions:
Telerik put out a “Buyer’s Guide” in 2014 that answers these and other questions.
All of these high-level planning concepts will be central to your team getting automation started as quickly and effectively as possible. You shouldn't spend months answering these questions—analysis paralysis can cause entire organizations to lose a lot of time wringing hands over silly details.
Spend enough time to get a sense of comfort that you've at least talked about the major points above. After that, it's time to move on and discuss the people and resources you'll need for a successful effort.
What do you think of the planning topics we've laid out here? Are there other topics you've covered in your own automation efforts? Let us know in the comments.
[1] An automation driver is responsible for driving the UI application around. Think of Selenium WebDriver or the Telerik driver. An automation framework sits atop the driver and normally gives teams a grammar-based approach for writing tests (think Cucumber, Fitness, SpecFlow and so on).
Jim is an Executive Consultant at Pillar Technology. He is also the owner of Guidepost Systems. He has been in various corners of the IT world since joining the US Air Force in 1982. He’s spent time in LAN/WAN and server management roles in addition to many years helping teams and customers deliver great systems. Jim has worked with organizations ranging from startups to Fortune 100 companies to improve their delivery processes and ship better value to their customers. When not at work you might find Jim in the kitchen with a glass of wine, playing Xbox, hiking with his family, or banished to the garage while trying to practice his guitar.