These days the speed of software delivery is of the utmost importance in most development shops. However, these same development shops are unwilling, as they should be, to sacrifice quality in the process. This forces the DevOps team to ask the following question: How can we thoroughly test the product we are building without slowing the pace of software delivery?
The goal of maintaining a fast-paced development cycle while still having confidence that your testing procedures will ensure the creation of a quality product can be achieved by using proven testing strategies that are popular in many DevOps organizations today.
Below, I describe and review a few tactics that are helpful for achieving software quality without slowing software delivery. These tactics include such practices as parallel testing, shift-left testing and automated testing.
The key to testing thoroughly while not slowing software delivery lies almost entirely in how we are testing our applications. One such testing strategy that can assist in this pursuit is known as parallel testing. Parallel testing is the automated process of running multiple tests to satisfy multiple test cases at the same time. Essentially, the process of automating and running test scripts written to validate the functionality of your application in parallel saves time versus when these same tests are run sequentially.
For example, imagine that you are part of a web development team that needs to test their product across multiple browsers. You have written five test scripts that all need to succeed to validate the functionality of the application. These five scripts need to be run against multiple browsers, as you are not sure if the end users will choose to use your application in Google Chrome or Firefox, so each of the 5 scripts will need to be run using Chrome and Firefox. It is easy to see that the faster approach is not to run these scripts sequentially in the following manner:
Run test script 1 in Chrome → Success! → Run test script 2 in Chrome → Success… (and so on and so forth until all test scripts have been successfully completed in Chrome and Firefox).
The much faster approach would be to use a testing automation framework that allows parallel testing such as that provided by Sauce Labs. Through the use of such a tool as it applies to our example, you can run test scripts 1 through 5 concurrently in Chrome and Firefox—the only difference being that instead of waiting for 10 scripts to complete sequentially, you cut the testing time down to the length of time it takes for the longest running script to complete. This can only assist in speeding up the process of testing in an environment that values fast-paced software delivery.
Shift left testing is another invaluable strategy that can be efficiently and easily used to ensure thorough testing in a time crunch. The idea behind this term is to shift the testing process to the left in the delivery cycle—that is, to begin testing your application and its components as early as possible in the development process.
What this gives us is more time to test throughout the duration of the project. Instead of waiting for the end of the project to start testing the product as a whole, components of the project will be tested as they are completed by Development. This will ensure that enhancements that come later in the development cycle will not be designed and coded on top of already faulty code.
In addition to the time this buys us by having a majority of the project fully tested prior to the completion of development, this methodology also gives the DevOps team a greater chance at finding major bugs as early in the project as possible. By discovering the major bugs at an early point in the development process, the software developers will have more time to fix them. Thus, they won’t be rushing to fix severe problems with the application in the home stretch, leading to higher quality bug fixes and the effect of perpetuating the philosophy of developing quality code on a schedule.
It almost (but not quite) goes without saying that automated testing helps you double-down on the benefits of parallel testing and shift-left testing. Indeed, in most real-world scenarios, test automation is the only feasible way of achieving parallel testing and shift-left testing at scale.
By having your CI tools configured to run automated tests, the application being deployed can be tested inherently with each build. In this manner, the DevOps organization can rest easy, knowing that major components of the application are bug-free and ready for action!
Parallel testing, shift-left testing and automated testing are useful strategies when attempting to test applications thoroughly without slowing down software delivery. These strategies lend themselves to being tied into a continuous delivery strategy that can serve any DevOps organization well. Using any sort of continuous integration tool for building your application and deploying to a configured production-like environment can provide your organization with an up-to-date and functional test environment at all times.
Scott Fitzpatrick has over 5 years of experience as a software developer. He has worked with many languages, including Java, ColdFusion, HTML/CSS, JavaScript and SQL.