Testing is a critical part of developing programs. Objects are loosely coupled to other objects and are very cohesive, making the object a natural unit for testing. You can test single objects or assemblies of objects, and there are many different types of test harnesses and tests.
The professional programming process often includes a quality assurance period during which non-programmers run regression tests on objects produced during development. This is not enough, however. Every programmer must be proficient in creating test harnesses and should consider building and using them a normal part of any programming effort.