You need to truly understand the importance of testing, or you will never be able to deliver robust software.
This is something I deeply believe in.
However, it’s the first thing that gets cut out from estimation, because there is an unrealistic expectation that the software will work straightaway out of the developer factory.
There are 4 (general) types of testing.
Unit test – this is the developer’s basic responsibility; to make sure what he’s building _actually_ works against the requirement of the user story.
Systems test – this is the QA’s responsibility, to make sure that functionality is tested within the business process in which it sits. Testing will need to include ‘negative’ test cases, and to make sure that it doesn’t just work along the “happy path”.
Integration test – this is where you’d test end-to-end functionality including all third party systems that has been integrated such as external website, payment gateway or delivery system.
User Acceptance test – this is where the client will need to test and make sure the system has been developed to their requirements.
Skimping on any of the above processes will mean that the cost of fixing defects will be higher if they are discovered after go-live.
As they say, #preventionisbetterthancure.
And nowhere is this more true, than in software development.
I will post about Data migration, None Functional Requirement testing such as Security / Penetration and Volume Testing another day.