Software Testing Life Cycle: a Model Based Explanation