A mobile-first approach is imperative for successful businesses given the huge proliferation of mobile devices, yet many companies are still behind in adopting the DevOps practices for mobile app development. In this blog I am going to walk you through a case study of one of the leading global providers of vehicle rental services CarRent (name replaced with fictitious name due to confidentiality reasons) which wanted to transform itself into a mobility solution provider but is currently struggling with legacy mobile app development practices.
Business Need/Pain Points
Development Team was spending huge amount of time doing regression testing as part of each sprint rather than focusing on new development
Development, regression testing and go live were spread over two to three sprints rather than happening as part of one sprint. This resulted in about 6-9 weeks of SDLC cycle before a feature can be released to app stores
Mobile build generation was an onerous, time consuming and error prone task
Dependence on manual testing late in the cycle led to late discovery of defects and defect leakages to staging and live environments
It was not feasible to manually test all combinations of mobile devices leading to frequent device specific live issues
It was quite cumbersome to diagnose any live issues due to the complexity of the mobile app platform
CarRent was struggling with time to market for mobile releases and losing market share to their competitors. It was very evident that they needed to completely overhaul their development lifecycle and adopt DevOps to accelerate the time to market if they had to survive.
Three Ways of DevOps
CarRent used three ways of DevOps as the basic guiding principle to transform their development lifecycle. These 3 principles offered a valuable focus for evolving the culture change requirements that were the core challenge for embedding a DevOps value system. Just to jog our memories “the Phoenix Project” book presented the Three Ways of DevOps as the set of underpinning principles from which all the observed DevOps behaviors and patterns are derived.
First Way: Work always flows in one direction – downstream
Second Way: Create, shorten and amplify feedback loops
Third Way: Continued experimentation, in order to learn from mistakes, and achieve mastery
CarRent used the three pillar view of People, Process and Tools view to make sure all aspects of improvement opportunities were considered.
People/Process – Using TDD to change the development approach
Test Driven Development (TDD) - TDD helped CarRent develop a robust test suite to catch bugs, as well as guiding them to write a more modular, flexible code. This was a paradigm shift for working ways of the team and gave them benefits in terms of improved test coverage & fewer bugs in the build.
Acceptance Test Driven Development (A-TDD) – is an extension of TDD which really turns the concept of testing upside down where requirements are iteratively refined by creating automatable acceptance tests, or in other words executable specifications. The focus is on prevention rather than detection. Tests and requirements become in-distinguishable. This was planned as part of each sprint by automating the acceptance test cases (based on accept