Predicting how computer software will perform before it hits the market is a critical element of development that saves users money, time and aggravation. Simulation testing can be a complex process, but it is worth improving the result.
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. Keep in mind that each user journey can have touchpoints across different microservices. Simulation testing is designed to test this end-to-end user journey before a feature comes to market.
Simulation testing can be a complex process, but to create sustainable infrastructure and software systems, companies need to invest in this important initiative. That means allocating time, staff and money. The payoff of this investment is primarily user satisfaction, which will result in increased profitability. To streamline simulation testing, here are five tips that will improve results, reduce risk, and ensure there are resources for successful simulation testing.
Want more technical news? Subscribe to the ComputingEdge newsletter today!
Simple and effective simulation tests
- Use a centralized platform: Any member of the engineering team can easily define and run tests without infrastructure issues. The platform must provide authentication support, be equipped to generate data and enable resource components to be set up. All necessary microservices must also be available. The well-thought-out platform should not require complex emulators for Android or iPhone operating systems (iOS).
- Make a simple setup: The platform should provide easy-to-use user interface options or library support to create and run tests.
- Monitoring results: Developers need an easy way to check for regressions in the product and to check the results of all tests.
- Provide good insulation: Build multi-tenancy into the common platform to easily run multiple simulations together.
- Test standard user flows: Investigate all user journeys, but testing something specific for a single microservice is out of scope.
In a 2019 article on computer simulations in built-in beta, the unnamed authors wrote that good simulations should be run broadly”mathematical scenarios to determine the potential scope or impact of that scenario.”
In the same paper, the researchers at Argonne National Laboratory noted several practical examples of how simulation testing is needed. Car manufacturers, the author wrote, could predict a range of possible scenarios that could derail a car system or hit passengers in various accidents. The simulation tests ensure that the vehicle can be driven safely.
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 Errors
Microservices are all interconnected, so when software developers make changes to a system, it’s hard to predict what could go wrong.
If part of a test falls out of the beam, there is a good chance that other parts of the system will be activated and confused.
Ultimately, users will appreciate the unseen simulation tests that went into the development process before using the app.
The biggest mistake a company can make when deciding to implement simulation testing in its repertoire of operational steps is not investing enough time, effort and money in standardization of systems. Second, tests should not be associated with one service. Instead, they can 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 include hundreds of interconnected microservices. For example, if someone wants an Uber ride, they click the “book” button in the Uber app, but that app calls multiple microservices. Simulating every level of the Uber service is required because developers want to save the app user the grief of a breakdown.
To run E2E proficiently, organizations need to create a simulation testing platform that makes it easy to set up authentication and resources and removes dependency on the user app. The platform must allow simulation tests to run in parallel without affecting the performance of each test.
Standardized simulation tests ensure that development speed is not affected. However, such a delay is not necessarily a bad thing. Extra time can be beneficial as it reduces the chance of finding defects in production and frees up time for teams to work on the next big thing.
RESTful APIs must be provided for smooth installation and resource management. Support is needed to create custom resources and to provide templates, making 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 has developed a super app for offering rides, food delivery and even financial services, is a great example of how simulation testing improves the final product.
“A plethora of interconnected microservices is the power of the Grab app,” says the author of the Grab Tech blog. “The microservices work behind the scenes to please millions of our customers in Southeast Asia.”
Simulation testing at Grab looks at “user scenarios across a single platform before new versions of these microservices are released,” according to the author. Ideally, the platform should also have the capabilities to set up the data needed for these simulations. For example, booking rides requires setting up data such as driver accounts, passenger accounts, location coordinates, geofencing, etc.”
The company created an internal platform called Puppet to simulate what drivers and passengers might do in the real world. The purpose of simulation is to ensure that standard usage is tested before the app is released to the market.
While the investment varies from company to company, it is critical to allocate the right amount of time, money and personnel to create standardized tests. This is why:
- It takes time to build the simulation testing platform and invest in educating engineering teams about the importance of simulation testing.
- Having a dream team that owns the testing platform requires money, which can be a hefty investment.
- Staff growth is needed, because without people who have specialized expertise and are proficient in writing simulation tests and developing the simulation test platform, the new layer of operations cannot work.
Creating a sustainable platform allows for more distinctive user flows, but companies must be willing to spend the money and time to get it right. When companies recognize that simulation testing is a necessary part of building a better product, they will find the payout attractive.
Are the time, money and personnel required to apply standardized simulation worth it? Absolute.
About the author:
Rohan Tiwari is a software engineer manager at a top technology company. He has been a computer technology specialist for ten years and heads engineering departments in the United States, India and Singapore. For more information, please email email@example.com.