More emphasis than ever is being placed on enterprises to create an amazing UX with their mobile apps. As If delivering error free apps was not pressured enough these superior quality apps must be delivered faster than the competition while facing a constantly evolving technological landscape.
The expectations and pressures of these situations will often drive a wedge between Testing and QA Teams.
This is Where CI/CD (continuous integration/delivery) methodology comes in.
Preserving the Developer/QA relationship
The key to a successful relationship is communication. This is as true of the relationship between Developer and QA teams as it is a marriage. Two teams are working towards the same goal, and yet there often seems to be a tremendous amount of tension between them.
To use a football analogy, it often seems as though the Developers are the offense and the QA are the defense. But rather than competing against one another they should be looking at it as though they are practicing against one another and sharpening their skills for the future.
Consider the pressure these teams are under.
The development and release cycle for B2B and B2C apps is down to just 2 weeks per app and update
This adds up to a lot of development and testing in a very short time span. Let’s say that an enterprise has a mobile DevOps team with the equivalent skill level of the 1985 Chicago Bears, who can code and develop in record time, and has the QA muscle to test it all. That does not make a Superbowl win a sure thing. The 1985 Bears still had to practice. The same is true of your code. Testing is essential and takes time especially when you take into account the ever-expanding matrix of devices currently on the market.
Let me give you a bit of context. Aside from testing your app in a sterile controlled environment, you need to test it on real devices running real operating systems. In August of 2015 open signal recorded more than 24,000 distinct android devices on the market. It is not only the devices either. The operating systems and device peripherals are different between manufacturers as well.
Your app needs to perform flawlessly from the moment it is released.
The stakes are higher than ever and as a result, enterprises are beginning to rethink the methods that they use to develop release and market their mobile apps. A new development and release methodology is known as CI/CD has been gaining steady traction and if implemented correctly will help you dominate your competition.
All Agile Development roads lead to CI/CD
Time was, development methodologies followed the waterfall process. That is to say that teams worked sequentially. When one phase was completed the next would begin. The process was time-consuming and led to tension between developers and QA testers. The seeming age old “test faster” “code better” argument.
In 2001 with the “Agile Manifesto” was released and set out to find a more collaborative method of software development. Around 2008 agile as a process began to take off and had jumped to 37% adoption by 2010.
At the same time, DevOps reinterpreted collaborative software development by incorporating non-IT staff in the process. The goal as always was to deliver new releases and updates faster and more frequently.
CI/CD stands for continuous integration continuous delivery.
When we talk about continuous integration and delivery we are referring to an extension of the agile methodology that uses tools and processes to integrate smaller pieces of code into the core code quickly while automating testing and delivering continuous updates.
Let’s break it down even further. CI or Continuous Integration is about frequently merging code into a mainline. The way it works is to break down development efforts into bite-sized chunks in order to keep the development process flowing. This makes sure that every piece of the code works properly to the specifications set forward from the get go. Imagine you are building a Lego castle and only when you are finished do you realize that there are a few small pieces out of place. The CI method makes sure that all of those pieces fit together properly through the development process so that there is no need to dismantle huge sections of code at the end in order to fit in the missing pieces.
One of the most important benefits of this method is that feedback comes more quickly and effectively. Since the code is being integrated into small pieces it is tested and approved as part of the active development process.
Continuous delivery operates as an extension of continuous integration. At the same time, we distinguish it separately. The point is to constantly make sure that our app or updates are ready to be deployed. This includes all aspects of testing like end-to-end testing, regression testing, and non-functional testing. If it has an effect on the UX of a mobile app, it is considered part of CD and must be tested and monitored.
Though separate terms these concepts are both parts of the same process. The main concern is to use mobile application testing to eliminate errors and reduce the time to market. Speed often sacrifices quality which is exactly what CI/CD methodology aims to resolve.
The CI/CD Pipeline
The method by which we deploy a CI/CD methodology is though the CI/CD pipeline. The pipeline is aimed at breaking down the software delivery processes into stages. Each stage is aimed at verifying the quality of new features from a different angle to validate its functionality and prevent errors from reaching your users. The pipeline provides constant outlets for feedback and improves visibility into the change flow so that everyone involved in delivering the new features can have the same information at their disposal.
The diagram below illustrates the way that the pipeline works from the planning and code validation stage through to the measurement and feedback. Each stage, of course, has a feedback loop where the original code can be sent back through the pipeline at any time.
Now that we have all of that covered let’s take a look at some CI/CD best practices that will help you solve your Mobile App Testing Challenges.
1. Build and deploy a mobile device cloud on your premises
Testing needs to take place on many different devices and operating systems. It is not enough to simply have testers connect devices to their machines locally and test on them on by one. Enterprises should consider creating a device lab on their premises that testers can access remotely. A mobile device cloud allows companies to introduce new devices and operating systems faster, automate more tests and improve collaboration.
2. Use Collaborative tools to create a common testing environment
Within the mobile device cloud developers and testers need advanced testing tools that will allow for easy test development. A mobile device cloud should be able to be integrated with development environments like XCode, Eclipse and Android Studio. UI and unit testing must also be supported. Perhaps most importantly be sure to make open source frameworks available to your testers and able to run on the mobile devices in your lab.
These types of development and testing solutions, when integrated with your mobile device cloud will provide a collaborative environment for all of your developers and testers.
3. CI tools and case management systems provide end-to end test automation
CI Software like Jenkins, Hudson and Team City are essential to a successful CI/CD methodology. Do your homework and select the right software for your testing environment. CI tools support continuous integration by helping developer and QA teams enable continuous delivery and helps increase productivity with real-time feedback. The benefits are in improved code quality which means that overall app quality will improve as well.
4. Build continuous testing environment that covers all mobile application testing cases
Your mobile device cloud is up and running, and all of your CI and test automation tools are connected to it. Now that your testing environment is centralised you will be able to run tests 24/7 and in parallel. This means that your tests will run constantly one more than one device at a time. With the ability to constantly run tests on multiple devices at the same time you will drastically accelerate your testing cycles.
5. Manage devices, applications, projects and users from a central location
This is about freeing your developer and testing teams from the day-to-day maintenance of dealing with mobile devices. When you set up a device cloud and connect it to all of your automation and CI tools you have a panoptic environment that can be managed by one person who will use a dashboard to keep track of all of the devices, users, projects, and applications. The cloud admin will make sure that tools are integrated, devices are connected and charged and that all of the necessary applications are available for testing on the cloud. The admin will also be able to alert developers and testers in case of any updates or emergencies.
6. End-to-end QA data analytics will provide rapid root cause analysis
Once an app has been tested and the results are in you will need to combine the reams of data that have been generated as a result of the test execution. The good news is that a lot of the tools that you already use will provide analytics. What you need is an end-to-end quality insight solution. The better you are able to drill down and analyse your results, the better your app improvements will be. Ultimately you want your test results to be actionable and indicate which areas are high risk and what the root causes of any failures are. With centralised reporting, those conclusions will be easier to reach, as all of the required scenarios you are testing for will be covered.
Legendary gridiron coach Mike Ditka famously said that “Success isn't measured by money or power or social rank. Success is measured by your discipline and inner peace.” This could not be truer of creating and carrying out a CI/CD strategy. Your teams require a well-balanced environment free of distractions and full of the right tools in order to help them carry out their tasks and reach their goals.
Guy Arieli is CTO of Experitest