Unit test: Specify and test one point of a single class method's contract. The scope of this should be quite limited and well defined. Complex external dependencies and interactions are stubbed or mimicked.
Integration test: Verify that several subsystems work together properly. There's a wide range of tests there, from integrating two classes to integrating with the production environment.
A smoke test (also known as a sanity check) is a simple integration test in which we just verify that when the system under test is called, it responds normally and does not blow up.
Smoke testing is an analogy with electronics, where the initial test is performed while powering up a circuit (if it smokes, it's a defective circuit!)... and, supposedly, with plumbing, where a system of pipes is literally filled with smoke and then visually assessed. If anything starts to smoke, the system is faulty.
A regression test was written after a defect was fixed. It guarantees that this particular bug will not recur. The full name of this test is "non-regression test." It can also be a test run prior to altering a programme to ensure that the result is the same.
Acceptance test: Verify that a feature or use case is implemented correctly. It's comparable to an integration test, except instead of focusing on the components involved, it focuses on the use case to deliver.
Tests a system as if it were a black box. During the test, other systems' dependencies are frequently mocked or stubbed (otherwise it would be more of an integration test).
Pre-flight check: Tests that are run in a production-like environment to avoid the dreaded "builds on my machine" syndrome. Performing an acceptance or smoke test in a production-like environment is a common way to accomplish this.
Accelerate your DevOps journey with Continuous Testing in DevOps and ensure quality at every stage of your software development lifecycle