DevOps, Agile, CI/CD, all the buzz words that define software development today are about speed and quality. If you plan to survive in the digital economy, you need to bring your applications to market faster, and you want to ensure quality. Automation is a key to help you achieve both goals. In a recent blog on DEVOPSdigest, Nigel Kersten, VP of Ecosystem Engineering at Puppet, provided survey results that showed "69 percent of C-level respondents strongly agree automation is a competitive advantage."
Everyone talks about automating the software development lifecycle (SDLC) but the first question should be: What should you automate? With this question in mind, DEVOPSdigest asked experts from across the IT industry — from analysts and consultants to the top vendors — for their opinions on what steps in the SDLC should be automated.
Many experts said "automate everything." Dave West, CEO, Scrum.org, disagrees: "When deciding on what to automate in your development process it is important to balance flexibility with removing waste. Wasteful tasks should be automated, but only if the cost of that automation is not reduced agility. Sometimes flexibility is more important than efficiency."
We cannot truly automate every task currently performed by humans. So some decisions must be made. The purpose of this list is to provide you with insight from a multitude of experts in the field, to help you make those decisions.
The list of "Steps You Should Be Automating in the SDLC" will be posted in 5 parts this week. Part 1 starts with by-far the most popular recommendation: Testing.
Definitely testing. Developers often treat testing as an afterthought and, when they actually do testing, the parameters aren’t realistic. Good use of automation in all aspects of testing ensures the right tests happen and are effective in ensuring application quality.
Research Director, Aberdeen
The one elusive area is testing. Realistically none have able to accomplish automation to a high degree (90%+). Over time we will improve in test automation, but seeing completely automated testing is still elusive.
VP of Market Development and Insights, AppDynamics
Automated testing at all levels gives everybody more confidence in the life cycle, saves from expensive production bugs, and allows creation of new features. Test automation is often thought of much later in the life cycle which means that teams often test manually and create decisions that make automation much harder in the future.
Knowing what to automate during the testing phase is where true DevOps success can be achieved. Unlike automating portions of the lifecycle — like package dependency, code analysis, and infrastructure — automated testing, if not properly implemented, can result in a significant increase in the total build time and inhibit the success of DevOps initiatives.
VP of Products, Test & Development, SmartBear
The more development teams can focus on developing software that provides customer value, the better the business outcome. The biggest inhibitor in this process is manual testing. Shifting left and incorporating automated testing into the development lifecycle earlier enables developers to reduce cycle times and iterate more quickly. When combined with Continuous Integration, test automation provides a quick, reliable, repeatable process to test new ideas and fixes. This enables faster feedback, increases developer productivity and allows development teams to deliver better software faster.
Director, Product Marketing, Micro Focus
Test Automation. Any DevOps team cannot be 100% productive if it still has to rely largely on manual testing. Of course it is important to define and analyze certain quality attributes manually; for e.g. if a customer reports a critical bug and the DevOps team is working on a fix, a good understanding of the application functionality and the underlying development landscape can facilitate a smooth resolution. However, for most repeated test operations, the development and testing teams should work together to develop test scripts that can be safely automated. This can help increase overall testing efficiency, fasten the deployment time and reduce the risk of certain errors missed during manual testing to be released in the build.
Market Analyst, ITOM-Applications Manager, ManageEngine
Software testing is a crucial part of any modern software development life cycle. As such, it's critical that teams automate their testing in the development process. Manual testing is inefficient and time consuming, and can become a serious bottleneck in the software delivery pipeline. With automated testing, teams save time, catch bugs early when they are easier to fix, and are enabled to test much more comprehensively than they can when relying on manual testing alone. Automated testing allows companies to focus on building and deploying code so that their customers can have a seamless experience.
VP, Sauce Labs
For starters go with testing. Automated testing is a big gap in many environments and can significantly delay an automated CI/CD process. Whether it is Unit Testing, Functional Testing, Regression Testing or even Smoke Testing it will truly benefit from automation. Not only will the automation of testing speed your application delivery time, it will improve code quality throughout its lifecycle for better performing and more available applications.
DevOps Solutions Architect, Forty8Fifty Labs
I would say test automation is the most important part of the SDLC because manual testing takes a long time and it's expensive, and if issues are missed the customer impact is huge. So test automation not only allows developers to deliver software faster but also in a more secure way. It gives you the best bang for the buck.
Director of Quality Engineering and Developer Productivity, CloudBees
Unit testing (across all platforms, including the mainframe) is prime for automation. Unit testing breaks applications down into their smallest testable parts, enabling problems to be identified earlier. This ultimately prevents bugs from being baked into software and becoming more costly and time-consuming to resolve. Creating unit tests for mainframe code has traditionally been a slow, manual process that many developers chose to ignore. However, because of the critical back-end processing performed by mainframe code, any quality issue will affect the end user experience. Importantly, mainframe unit tests can and should be integrated into modern, automated DevOps toolchains to ensure continuous quality.
VP of Product Development, Compuware
MOBILE APP TESTING
Testing should be automated, especially important for mobile apps. Automated testing continues to be mission critical for scaling mobile apps, fast. Today's consumers run mobile apps on a countless number of devices, so developers must have access to every device imaginable in order to deliver the highest level of performance. This point is especially important when you consider that the cost of regaining a customer is four times higher than winning them in the first place. Getting software right the first time through a culture of Continuous Integration and Continuous Deployment (CI/CD) is critical to success.
Senior Product Manager, BrowserStack
You should be using information from live production, e.g. the most common user journeys and data, to automatically generate test scripts that focus on what users really care about. Test Automation is great, but most teams have a very manual and unsophisticated approach to deciding which user journeys they should test. This should all be based on what real users are doing NOW in live.
Everyone is automating their CI processes and unit testing these days. If I were to run a team, one of the things I would ask them to focus on is Acceptance Testing Automation, a significant bottleneck development teams face today.
Director of DevOps Strategy and Delivery, CollabNet VersionOne
The most important part of the DevOps pipeline that should be automated is regression testing. Running manual regression tests for every new product feature and release can consume an enormous amount of valuable time. Also, developers don't get early feedback and are not aware if their new code contains bugs in places they did not expect. Automation is the key to fast feedback and thorough coverage, which are essential for successful regression testing.
Innovation Manager, Ranorex
DevOps creates a new software build and tests it in their lab but then it is often questionable as to whether the network wide rollout will work correctly. Many DevOps rollout issues can be reduced, if not eliminated, by using proactive monitoring solutions with automated synthetic traffic generators that mimic production network busy hours to pretest new software releases.
Senior Manager, Solutions Marketing, Ixia Solutions Group a Keysight Technologies business
Real users who recently reviewed DevOps solutions in the IT Central Station community recommend automating common tasks in the CI/CD pipeline.
Founder and CEO, IT Central Station
Invest time in building out the CI/CD pipeline. Have it build, test, package, and deploy your services to a test environment. Make it trivial to deploy to production with a click of a button and with confidence. Increasing the development velocity has a clear and direct impact on delivering software to production and that typically correlates with business success.
Manual monitoring remains the only part of the CI/CD process that isn't automated, and continues to be a pain point for DevOps teams. Automatic monitoring would finally allow the entire CI/CD process to become automated. An automatic CI/CD process would enable DevOps teams to realize their full potential and allow organizations to become quicker with the delivery of their applications.
Read Steps You Should Be Automating in the SDLC - Part 2, covering the coding process.