1. A method for developing a software product, comprising: generating documentation describing capability test cases used to test components implementing operations of the software product, wherein each component comprises a component file that implements one or more functions of the software product being tested, and wherein each capability test case defines a set of attributes, settings, and input values provided to a component to test different configurations under which the component executes; generating capability test programs implementing the capability test cases for the components, wherein component developers use the capability test programs to test the components during development and coding of the components; generating documentation describing component abstract test cases used to test the components and incorporating information on the capability test cases, wherein each component abstract test case defines a set of attributes, settings, and input values provided to a component to test different configurations under which the component executes; generating component test programs implementing the component abstract test cases for the components and utilizing the capability test programs, wherein each component test program implements at least one component abstract test case for one of the components to test the component for the component abstract test cases specified in the component abstract test case documentation for the component; storing the capability test programs and the 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 multiple developers and testers developing the software product to enable the multiple developers and testers to execute groups of the capability test programs and/or the component test programs in the shared repository to test the components during different phases of development of the software product.