As technology stacks become more complex and companies rely on infrastructure as code to manage their systems, it is becoming increasingly important to ensure the quality of not just the product, but the entire user experience. In order to do this effectively, testing teams must look beyond their product to understand and optimize the entire ecosystem that supports it. Any number of third-party vendors or service disruptions can affect the user experience, and no matter the root cause, users will almost certainly associate a negative experience with the product.
Traditionally, testing teams operate in a silo and focus solely on their product. The supply chain industry, in particular, has undergone a digital transformation in recent years. Technology stacks are constantly growing deeper and more varied. Supply chain and fulfillment software must integrate with multiple sales channels, Warehouse Management Systems (WMS), and booking platforms in addition to the usual software technology stack (networks and infrastructure, code repositories, cloud services, Databases, etc.). These multiple connection points make the product flexible to meet the demands of the end user but ultimately make it vulnerable as well. This is why it’s critical to step out of the testing silo to equip cross-functional teams to test the end-to-end process just as a customer would experience it.
Cross-Functional Collaboration
The greatest opportunity testers have to collaborate cross-functionally to ensure that the end-to-end process is tested thoroughly is with their DevOps team. DevOps has a high-level view of the entire system, including many of the connection points. They monitor for network problems, data layer problems, and upstream dependencies issues and can greatly benefit from self-service automated testing.
To effectively empower DevOps teams to run their own tests and identify problem areas within current supply chain projects, it’s important to implement best practices and workstreams. One effective workstream is to build templated tests that DevOps can easily run remotely on their own.
One practical use case I’ve encountered is implementing an internal API automation suite built using Axios and AVA. In this case, the team configured the tests to run in CircleCi (a CI/CD tool) to allow the results to be kicked off and viewed by anyone, as well as incorporate them into product pipelines. They also added tests to a schedule to run nightly, which allowed the team to check for any errors in the code. To enable the DevOps team to test applications outside of the core product, the team gave DevOps the ability to kick off a test suite using Slack. Any Slack user could kick off tests with links to the results even if they were not familiar with the CI/CD tool. This allowed the DevOps team to run any test suite on any of the environments.
The team then added schedules to run the automation tests continuously throughout the day, and log any failures to DataDog (a monitoring tool). This allowed the Devops team to monitor the results in order to identify code issues, problems with cloud providers, configuration issues after releases, performance issues with the API gateway and more.
Like with any testing protocol, there must also be a plan for follow-through. Once issues within the system are identified, it’s important to have clear processes in place for mitigating and responding to them. This can involve creating a centralized repository for tracking issues and assigning ownership to specific team members. It can also involve setting up automated alerts to notify the relevant teams when issues arise, so that they can be addressed in a timely manner.
Setting up these protocols is a time investment that will pay dividends for your organization and create greater collaboration across departments. By empowering DevOps to test and simulate the end-to-end user experience, you can optimize your entire ecosystem and deliver and drive greater user sentiment towards your product.
Ultimately, the goal of empowering DevOps teams to test the end-to-end process is to ensure that issues are resolved quickly and efficiently, often before customers are even aware of them. By working together and leveraging each other’s skills, testing and DevOps teams can create a more effective and reliable platform that delivers a seamless customer experience.