There are several different levels in the testing process (unit or component testing, integration testing, system testing, and acceptance testing) that a software product must go through before release. The question is why we need to go through these levels. Could we skip some levels? Could we just test the finished software instead?