4 Types of Software Testing and When You Should Use Them