Testing is an integral part of the software development life cycle and should be organized according to the life cycle model used. There are three main life cycle models - waterfall, V-model, and iterative - each of which determine how testing is structured. Testing involves several levels from unit to system including functionality, interfaces, and overall system behavior. Tests should target functions, product characteristics, structure, and changes to verify software quality.