a software development methodology is to develop a software product including a plurality of units . unit tests are generated according to a unit test framework . the unit test framework comprises a plurality of subsequently narrowing maturity levels , each maturity level outlining how a unit test at that level should be defined based on what functionality of the plurality of units should be tested and how that functionality should be tested . each subsequent maturity level tests functionality at a more detailed level than functionality at a previous maturity level . the plurality of units are developed , and the unit tests are executed . a top maturity level includes testing whether each unit performs a function based on existence of strictly expected conditions . maturity levels below the top maturity level include testing dependencies among the plurality of units , testing for exceptions of object functions and function dependencies , and testing for functionality to be later included in the software product .