Unit Test: Check the smallest units of code, usually a single function or method. Using mocks, etc., It should ideally be very fast and not hit the hard drive or network in any way.
Functional testing: Test a set of functions / methods working together. Ideally, this should also not go to disk or network, but often will.
Integration testing: Testing, which is performed in the real world, takes place in real (albeit test) databases, is written to disk, etc. You test that your program works correctly with other services, that it "integrates" correctly with them. You will often have a separate program (for example, Selenium) that will conduct tests, as a real user would do.
also: White box testing: Tests that know the internal principles of the program. Unit tests and functional tests are often a white box. An example would be to call a function to store a value, and then verify that the value in the database is correct.
Black Box Testing: Tests that are not familiar with internal components and treat the program / function / method as a black box. An example would be calling a function to store a value and calling another (public) function to get that value.
Scott Kirkwood
source share