1. A method for developing a software product, comprising: generating documentation describing capability test test cases used to test components implementing operations of the software product; generating capability test programs implementing the capability test test cases for the components, wherein component developers use the capability test programs to test components during the development and coding of the components; generating documentation describing component abstract test cases incorporating information on capability test test cases; generating component test programs implementing the component abstract test cases for the components and utilizing capability test programs, wherein each component test program tests one component for at least one test case specified in the component abstract test case documentation for the component; storing the capability test programs and component test programs in a shared repository accessible to multiple developers and testers of the software product; and deploying a software development program to the developers and testers developing the software product to enable the developers and testers to execute groups of component test programs in the shared repository to test the components during different phases of the development of the software product.