After carefully reviewing the company’s requirements, our QE team proposed an integrated automated testing framework to drastically reduce expenses and effort. Our team used the Page Object Model (POM) design pattern and followed a Test-Driven Development (TDD) approach for project implementation. This resulted in high-quality code that significantly reduced long-term project costs and increased development flexibility. Highlights of the automated QA test framework project include:
- Created a single script for multiple platforms: A single script runs all native mobile, web, and desktop application tests on all supported platforms, including Chrome, Firefox, iOS, and Android.
- Gained flexibility: Our QE team implemented the solution using a loosely-coupled pattern where individual components operate in isolation from each other but work together since the configuration is maintained externally. With a few easy configuration changes, execution is possible in different environments.
- Provided extensibility: Our team leveraged the Fillo API, allowing the company to customize configuration using simple Excel spreadsheets and Java Faker to generate an unlimited amount of real-world data. The flexible design allowed easy integration with TestRail, Sauce Labs, and Jenkins.
- Reduced test execution time: In addition to automation, our implementation introduced further improvements in the time required to conduct comprehensive testing by leveraging Apache HttpClient. When creating test data activity, this well-proven technology handles the pre- and post-conditions surrounding each test.
- Introduced industry best practices: The solution followed industry best practice design patterns, producing standard code for both Android and iOS applications which fostered reusability and maintainability, and also facilitated training on the framework.
A further advantage of our implementation was mapping test cases down to the assertion level. This implementation allows the company to execute multiple test cases simultaneously in a single test method, resulting in the same execution time for multiple scenarios.