But what if all our apps suddenly stopped working? Easy access to things that affect daily life, like checking accounts or health monitoring systems, would be much more difficult.
That's why -- in 2018 -- it is imperative that developers deliver continuous quality throughout the entire software development lifecycle (SDLC). This starts with continuous testing (CT). Once considered a bottleneck that delayed the DevOps process, CT is quickly becoming a staple of the SDLC, as more organizations apply DevOps techniques to identify, react and respond to bugs in real time.
While automation is a key factor in the DevOps lifecycle and makes continuous testing a reality, there are hurdles that deter development teams from embracing an earnest automation initiative. In fact, according to a 2017 report from Sogeti, only 16% of test activities are automated.
Why is that? Let's explore four challenges development teams face when they try to infuse CT into the SDLC and how to overcome them.
Challenge No. 1: Rapid release turnarounds mean quicker timelines
In today's digital age, everyone is expected to move not only faster but also smarter. Consider the latest iOS release, which has undergone several iterations and updates during its first few months of general availability. And every time there is a new release, app developers must check if their apps still work. It's difficult to automate these new tests within existing cycles and that holds developers back from continued maintenance and innovation.
In 2018, release cycles are only going to accelerate, especially as consumer expectations rise and more and more platforms need to sync with new technologies in a DevOps lifecycle -- like IoT devices and wearables. So how can development teams get with this program?
- Adopt acceptance test-driven development (ATDD) and behavior-driven development (BDD) practices, in which testing and collaboration between groups along the SDLC essentially drives the design and coding of the prospective app.
- Accelerate setup time and test execution speed by implementing faster test execution frameworks -- like Espresso and XCUITest for mobile and Puppeteer and Google Lighthouse for web.
Challenge No. 2: Dev teams aren't aligned on data or test automation
There's this stigma when it comes to test data in a DevOps team that's basically, "It's not my problem." Most believe that it's the testing team's job to share all the data and insights. As DevOps continues to evolve within Agile organizations, we're starting to see those silos merge. How can devs better align with the data?
- Implement collaborative discipline throughout your SDLC. Everyone needs to be in agreement. For example, make sure all teams align to a process together, whether it's BDD, ATDD or Agile.
- Eliminate continuous integration (CI) processes lurking in the shadows to assure teams have access to a single view of the quality per code commit.
- Empower teams with the tools that best match their skill set, while still integrating with the overall CI and continuous development
Challenge No. 3: An inability to use AI for data insights
Today, teams encounter an overwhelming amount of information. While testing continuously generates new insights, the sheer amount of information available makes it nearly impossible to act on this data. The lack of intelligent design is partly to blame. Most organizations, however, are struggling to determine the best way to implement machine learning and AI throughout the entire DevOps lifecycle. So how can DevOps teams organize their data?
- Focus on the areas in which test analytics could have the most value across the SDLC.
- Take advantage of existing machine learning and AI tools to determine test suite efficiency and platform usage.
Challenge No. 4: Uncertainty around open source
Open source tools are becoming an important element of the development team's stack. But most organizations are struggling to see the value in terms of productivity. Open source tools have limited capabilities; they don't support advanced features, share detailed reports or optimize intelligently, which makes it difficult for developers to enhance debugging capabilities or scale test automation itself. How can DevOps organizations make open source productive in a DevOps lifecycle?
- Don't just use open source tools solo; combine them with commercial tools. This makes it easier to execute automation at scale -- especially in the cloud.
- Pick the right open source tool, one that has a larger community and faster turnaround time to support new features and resolve defects.
- Create a scoring table for the open source tools that your developers and test engineers are considering and choose the one that best fits your organization based on a predetermined set of agreed criteria -- e.g., community size, supported platforms, advanced APIs, seamless integrations, advanced reporting, etc.