Today we’re launching a four part series that covers simple steps you can take to improve your apps and make your release cycles faster. Our advice is based on real-world challenges and rewards from Niels Frydenholm, Senior iOS Developer at eBay Classified, who spoke at Xamarin Evolve 2014.
You Can’t Afford Not to Do It
“When I talk to people from other companies about automating their entire test base, they give two reasons why they aren’t doing it: ‘The tools are just too complicated to use’ – which just isn’t true — and ‘We don’t have time to start.’ I think the question they should be asking is ‘How can we afford to not be doing this?'”
In 2013, Denmark’s eBay Classifieds ran small, self-contained development teams focused on short, iterative sprints, but overhead from manual testing inhibited continuous delivery for mobile.
The development team spent two to five days per release on test runs and bug fixes, so product owners forced as many features as possible into each release before the gates closed. This feature bloat cost the company quality and time. Large deltas between releases introduced more bugs that were discovered later in the process, increasing the burden on both development and testing.
According to Niels, eBay adopted a heavily-automated testing process “to speed up the whole development cycle.” While eBay took a number of steps to integrate and tune their process, the move toward automation was the root of the strategy.
Over time, eBay automated its entire test base and reassigned manual testing resources to areas where they could have the greatest impact. The effort was challenging, but ultimately worth it. They achieved:
- Better app quality
- Faster release cycles
- Happier teams in ways we’ll address later this week
Easy Ways to Get Started
Niels offered three tips for anyone moving toward automation:
- Prioritize. Test automation is a process, and your existing deployments cannot stop while you reboot. Divide your automation efforts into three categories.
- Focus on automating your riskiest areas of existing code first.
- Automate tests for new features on an ongoing basis as you create them.
- Automate the remainder of your test suite as time allows.
- Structure your test code. Write clean, well-commented code free of hard-coded variables and designed for reuse, then have that code peer-reviewed before committing.
- Supplement with manual tests. Manual testers are wonderful at finding creative ways to break things. Use exploratory manual tests to discover new weaknesses. When those tests are successful, structure and automate them.
Ultimately, Niels’ advice to developers is to push through internal resistance to reach the obvious benefits. As Niels notes, “It’s not effortless. There’s a learning curve, but it will pay off.”
In Part II we cover how to cut your app release cycles in half (or more), in Part III we discuss which target platforms fit your testing needs, and in Part IV we explore how test automation helps teams do more important work.