====== Different Types of Software Testing ====== All software needs testing. ===== Unit Tests ===== A unit test method should validate one single concern or unit of code and should be: * Repeatable -- You can rerun the same test as many times as you want. * Consistent -- Every time you run the test, you get the same result. * Transient -- It has no "hard" dependencies on an external resource. * Fast -- The test should only take up to a couple of seconds to execute. ===== Integration Tests ===== Integration tests try to verify the interfaces between components. They are meant to make sure that the entire application works together correctly and as expected. ===== User Acceptance Testing ===== User Acceptance Testing (UAT) involves users of a computer system using scripts to test the interaction between a user and the system. Sometimes UAT can be automated, but it is always preferable to have real users running the test.