Unit testing part 1: What and why, different types and frameworks