- Focus is on functionality, Algorithms, data structures. no need to handle all error cases.
- Proving performance
- Need reliability to the extent of not having too many issues/bugs while doing performance tests/ basic functionality tests.
- Test coverage is limited to End to End testing.
- No need for unit testing for every function/class.
- No integration with management layer (UI)
- Have automation to reduce the setup related tasks. (use Ansible playbooks/ shell scripts/ python scripts)
- Have clear document on what functionality is skipped and what needs to be taken care in the productization phase. ( requirements, features and functionality)
- All error handling.
- Log messages, and log file management
- Stats to get insights into the product layers. (need for debugging purpose)
- Stats to customer
- Management (Tools or UI) layer integration.
- Class/Function level unit testing.
- Sub component level testing. Make sure there are no race conditions and memory leaks.
- Integration testing (End to End testing)
- Performance related tests. Stress and Load testing.
- All possible functionality related testing at each level. Both Positive and Negative tests. Ask developers to get the infrastructure to induce errors.
- Tools/Utilities to manage and monitor the product.
- Call Home feature, where events are sent from customer machine to the Servicing company.
- Notifying users on specific events like failures/warnings.
- Testing on real Hardware.