End-to-end (E2E) testing is often the biggest hurdle for software companies to clear when it comes to preparing their products to ship on time and with as few errors as possible. When these companies write applications to be deployed across multiple platforms, with each platform requiring multiple development solutions, E2E testing becomes paramount to ensure the timely delivery of a bug-free product.
Within end-to-end testing, re-creating a production environment for testing purposes often presents the biggest challenge to a software company. For example, if one module runs on POS machines, another module connects to an Oracle server in the back-end and a different module connects to yet another different server, a developer will need to test each of these modules separately as well as in conjunction with each other to ensure compatibility. But current test environment solutions don’t make this process easy, fast, or accurate.
When an end-to-end testing environment is created, it’s imperative that every component precisely mirrors production scenarios. From OS configuration to IP addresses and MAC addresses, the test environment should be exactly the same as the production environment.
11 Steps to Creating a Test Environment
To achieve an accurate mirror of production, a software company typically follows the steps below (or at least they should if they want a near-accurate test environment):
- Identify all servers in the end-to-end workflow, including infrastructure components such as Active Directory, DNS, etc.
- Prepare a thorough inventory, making sure to record details such as the server OS, all applications on the server, their configurations and patch levels and, most importantly, the server’s network configuration (IP address, Network mask, etc.)
- Decide on whether any reduction in scope is warranted, e.g., “Do we really need a clustered environment for the test?”
- Configure all servers to match production, e.g., disks, NICs, RAM, CPUs. If using virtualization, this step can go fairly quickly.
- Configure the test network to match production, perhaps by fencing off the test environment so that it can be created to match production exactly, even matching IP addresses, MAC addresses, etc. The advantage of this is that configuring applications later on becomes that much easier.
- Connect the test network with the production network so that you can communicate to test from production, with a firewall/NAT setup in between.
- Install OS and applications and apply patches and hotfixes to match production.
- Configure the OS, e.g. set up networking.
- Configure applications.
- Copy application data from production to the test environment. For example, a backup image may be used. However, if you restore multiple servers, be aware that this data should be from the same backup in order to avoid the data not being in sync.
- Boot up the test environment and verify that the applications are working as expected.
Depending on the environment, some shortcuts are available. For example, with a complete server image backed up, you can restore the entire OS/application/data combination, thus combining Steps 7-10. Or, if your production environment is virtualized, you can combine Steps 4 and 7-10 via VM cloning, at least for the virtualized servers.
Traditional end-to-end testing suffers from four major problems:
- Expensive machines must be purchased.
- Extensive resources must be spent in configuring these machines.
- When the project is completed, the entire test environment may become outdated and useless.
- Sometimes, the test environment continues to be maintained even when not in use, but that consumes precious financial and personnel resources.
More often than not, a development team discovers issues during setup of the test environment. They may discover a situation where the test environment does not exactly mirror production. Once this happens, more waiting occurs—and more time and effort is expended—to correct this situation. This process can become so strenuous and stressful that some developers and/or companies are tempted to not complete a thorough end-to-end test of their product, which is a terribly risky path to choose.
But what if there was a much simpler solution?
The Kubisys Platform is a cost-effective hardware and software solution that will allow you to quickly create production-accurate test environments. Among its many benefits in E2E testing, our Platform:
- takes away the necessity to buy new hardware for each project,
- allows you to configure your test environment to match production in a matter of minutes,
- eliminates the risk of having to go to production with a poorly tested product,
- and, because changes are inevitable, allows you to make changes easily and painlessly
For a free demo of how our Platform can help your company with better end-to-end testing, contact us at firstname.lastname@example.org.