Predicting how computer software will perform prior to it hitting the market is a crucial element of development that saves money, time, and aggravation for users. Simulation testing may be a complex process, but it’s well worth the effort to enhance the bottom line.
Today’s popular consumer apps are supported by highly complex microservices. Microservices allow developers to streamline complex business logic into manageable units that are reliable and easy to develop. Consider the fact that any user journey can have touchpoints across several microservices. Simulation testing aims to test this end-to-end user journey before letting any feature hit the market.
Simulation testing can be a complex process, but to create sustainable infrastructure and software systems, companies need to invest in this key initiative. That means allocating time, personnel, and money. The payoff for this investment is first and foremost user satisfaction, which will result in more profitability. To streamline simulation testing, here are five tips that will enhance the bottom line, reduce risks and ensure there are resources needed for successful simulation testing.
Use a centralized platform: Every member of the engineering team can easily define and run tests without having to handle infrastructure issues. The platform must ensure authentication support, be equipped to generate data and allow for setting up resource components. All of the necessary microservices must be available as well. The well-thought-out platform should not require any complex emulators for Android or any iPhone Operating Systems (iOS).
Create an easy setup: The platform should provide easy-to-use user-interface options or library support to create and run tests.
Monitor results: Developers need an easy way to check for regressions in the product and monitor the results of all tests.
Allow for proper isolation: Build multi-tenancy into the common platform to allow multiple simulations to be easily run together.
Test standard user flows: Examine all user journeys but testing anything specific to a single microservice is not in scope.
In the same article, the Argonne National Laboratory researchers noted several practical examples of how simulation testing is necessary. Car manufacturers, the author wrote, could predict a gamut of possible scenarios that might derail a car system or impact passengers during a variety of accidents. The simulation testing will ensure that the vehicle is safe to drive.
Pandemics, cancer treatment, predicting health code violations, and even understanding human relationships with religion can all benefit from computer simulation testing, the authors said.
Risks and mistakes
Microservices are all interconnected, therefore when software developers make changes to a system, it’s difficult to predict what might go wrong.
If one section of a test goes off the beam, chances are other parts of the system will be triggered and may go haywire.
In the end, users will appreciate the unseen simulation testing that went into the development process before they use the app.
The biggest mistake a company can make when deciding to implement simulation testing into its repertoire of operational steps is to not invest enough time, effort, and money into standardization of systems. Secondly, tests shouldn’t be tied to a single service. Instead, they could be tied to end-to-end user journeys.
End-to-end simulation testing
End-to-end (E2E) simulation testing is a difficult, but necessary process for developers. Why? Because user flows involve hundreds of interconnected microservices. For instance, when somebody wants a ride from Uber, they click the “book” button on the Uber app, but that app invokes multiple microservices. Simulating each level of the Uber service is required because developers want to spare the user of the app the grief of encountering a defect.
To run E2E competently, organizations should create a simulation testing platform that makes it easy to set up authentication, resources and removes dependency on the user app. The platform must allow simulation tests to run parallel with each other without affecting the performance of each test.
Standardized simulation testing will ensure development velocity is not impacted. However, such a slowdown isn’t necessarily a bad thing. Extra time could be beneficial because the chances of finding defects in production go down and time is freed up for teams to work on the next big thing.
RESTful APIs should be provided for smooth resource setup and management. Support is needed to create custom resources and to provide templates, which make writing tests standard along with frameworks and libraries. When monitoring these tests on the platform, the history of the previous test runs must be available for benchmarking.
Grab, a Southeast Asian company that developed a super app that offers rides, food delivery—even financial services—is a great example of how simulation testing improves the end product.
“A plethora of interconnected microservices is what powers the Grab’s app,” said the author of Grab Tech blog. “The microservices work behind the scenes to delight millions of our customers in Southeast Asia.”
Simulation testing at Grab looks at “user scenarios through a single platform before any new versions of these microservices are released,” the author said. Ideally, the platform should also have the capabilities to set up the data required for these simulations. For example, ride-booking requires data set up such as driver accounts, passenger accounts, location coordinates, geofencing, etc.”
The company created an internal platform called Marionette to simulate what drivers and passengers might do in the real world. The point of simulation is to ensure that standard usage is tested before the app goes to market.
While the investment varies from company to company, it’s critical to commit to the proper amount of time, money, and personnel to create standardized tests. Here’s why:
Time is needed to build the simulation testing platform and invest in educating engineering teams on the importance of simulation testing.
Money is required to have a dream team that owns the testing platform, which could result in a substantial investment.
Personnel growth is needed because without people who have specialized expertise, and are skilled at writing simulation tests, and developing the simulation testing platform, the new layer of operations cannot work.
Creating a sustainable platform allows more distinctive user flows, but companies should be prepared to spend money and time to get it right. When companies recognize that simulation testing is a necessary component of building a better product, they will find the payoff compelling.
Are the time, money, and personnel needed to employ standardized simulation worth the effort? Absolutely.
About the Author:
Rohan Tiwari is a software engineer manager at a top tech company. He has been a computer technology specialist for 10 years, heading up engineering departments in the United States, India, and Singapore. For more information, please send emails to firstname.lastname@example.org.