The approach should take a path as explained below. For designing a framework, various elements need to be taken into consideration. Utilities/Components (re-usable) would be designed for the following elements that include (not limited to):
- Actions to be performed - Identification of actions to be automated for each object of the application
- Communicating Systems - Study of different internal systems, third-party systems and their communication methodology
- Business Rules - List of business layers and any specific algorithm has to be studied. A separate function needs to be created for each specific algorithm.
- Database Communication - Database validation and check point validations
- Communication with additional automation tools - In the scenario, where we would require communicating with different automation tool. All the communication requirements needs to be identified and designed
- Data retrieval - Retrieval of data from multiple input data stores
- Schedulers - Functionalities related to invoking of relevant scripts based on scheduler configuration
- Tool Extensibility - Overcoming tool limitations. Components for actions/validations for which the tool does not provide any support
- Device Communication - Device communication and data transfer related actions/validations
- Log - User-defined logs for analysis
- Error Handlers - Error handlers to handle known and unknown errors and log the information
- Custom Messages - Display of relevant defined messages
- Result Presentation - Customized and presentable reports on completion of test execution
Test automation framework would be designed based on the listed factors, using the following guidelines.
- Application-independent.
- Easy to expand, maintain, and perpetuate.
- Encapsulate the testers from the complexities of the test framework
- Identify and abstract common functions used across multiple test scripts
- Decouple complex business function testing from navigation, limit-testing, and other simple verification and validation activities.
- Decouple test data from the test scripts
- Structure scripts with minimal dependencies - Ensuring scripts executing unattended even on failures