You might like to consider the following facts while creating a productive and scalable test framework.
- Identify the type of application you are going to test. Is it a Web app, support mobile devices or runs on a desktop.
- Would it require backend testing? e.g. Databases or SDK.
- Decide on the input format. Is it static or dynamic?
- Do you need to test the app for internationalization?
- It must have a report which can help you trace a failure with minimum efforts.
- It must support the auto-generation of parametrization tests.
- Have a config file to define any setup related settings or global properties.
- Apply abstraction at every level to separate the functionality.