A mature framework is a fruitful result of years of technical hard work. Below are certain features that can be used as a guidelines by automation framework developers.
Note: There are countless feature that can be integrated with a framework, below are the most important one.
- Object management: Every application can be treated as a collection of objects(text box, button, menu, title, etc.) and behavior. We should be able to insert, delete or update objects easily without affecting the test-scripts or business logic.
- Test script management: Test scripts should be readable and understood by manual testers, BAs, SMEs and other important stakeholders. Test script files should be replica of manual test cases. Change in business logic should not heavily effect test script.
- Utility management: Utility is the heart of the framework. It contains the core technical configurations. These are reusable codes which are used across the framework. For example: how to launch chrome, click, verify, integration of test data (text file, excel or database etc.), environment variable setup, pre condition, post conditions, etc…
- Test data management: Mostly test data are volatile and changes for every execution. Hence never hard-code test data in the test-scripts or in the business logic. They should be fed from an external file like text file, excel file, properties file etc…
- Report management: This is the final product, everybody is interested on. Creating a colorful and graphical summary report of the test run and saving it automatically is very important.
- Version and Source control: For allowing a team to work efficiently on the same framework, version and source control system is must. Tools like TFS, SVN, GIT are to be integrated with the framework.
- Code Merge and Review tool: These are some tools that can be integrated easily for code merging and Review. For example: git merge tool (for code merging) and Gerrit (for code review).
- CI and CD: Continuous Integration and Continuous Deployment is another feature that may be required to integrate the changes every now and then, building the code and deploying the code base to different environments. For example: Jenkins.
- Cross-Browser testing: We can configure a config file to set the environment variable for the framework to run. Suppose we want to test the application with IE and Firefox, then we can configure IE and Mozilla and alter the framework variable to achieve the same. Tool that can be integrated for cross-browser testing is Sauce lab (cloud for cross browser testing).
- Code-Coverage: To find the code coverage we can integrate tools like: sonarqube.
Every project has its own landscape and constraints. These constrains tweaks the framework design. Some Advance feature may be treated as basic feature for certain project. Take a step back before integrating a tool or feature, analyze the pros and cons thoroughly w.r.t automation and then go ahead.
Please comment for any suggestions or thoughts so that I can improve my knowledge base.