Engineering software programs play a critical role in helping engineers understand complex engineering challenges and in analyzing engineering data to aid management in making the right decisions. Currently, it is almost impossible to present a job design without the help of engineering software. In petroleum industry this situation is especially true in the areas of reservoir study, drilling, hydraulic fracturing, cementing, and sand control, where the software is an integrated collection of the right technologies and is the "medium" used to transfer technology to end users.
Unlike a physical product, which has a solid touch and feel, the architectural design and detailed development of engineering software often seem like a mystery to users, because of the numerous, hidden algorithms. Ensuring the correctness of all the implemented logic and producing reliable software has always been the focus of software engineering. Theoretically, any change made to the software has the potential to affect the entire application and may require a full retesting of the application's functionality before release to the user. It is impossible to retest all logical combinations and algorithms by using traditional testing methodologies. A new automated test solution has been developed to revolutionize the process of software development and testing to improve software reliability. The new test automation technique enables the developer to record and document all testing on individual algorithms as well as algorithm combinations during early development phases. Most importantly, testing can be automatically repeated at a later stage as needed. This activity includes unit testing, module testing, integration testing, and the final entire application testing. The precision range can also be set in the proposed methodology.
Automated testing and retesting significantly improves the reliability of the software as it is developed during its lifecycle. The proposed methodology was validated by successful application of the new solution in our software development projects.