Testing Types - coderslyf/articles--get-started GitHub Wiki
Unit testing refers to tests that verify the functionality of a specific section of code, usually at the function level.
These types of tests are usually written by developers as they work on code (white-box style), to ensure that the specific function is working as expected.
Unit testing alone cannot verify the functionality of a piece of software, but rather is used to ensure that the building blocks of the software work independently from each other.
Functional Testing is a type of black-box testing that bases its test cases on the specifications of the software component under test.
It usually describes what the system does.
Functional testing tests a slice of functionality of the whole system.
Integration testing is the phase in software testing in which individual software modules are combined and tested as a group.
The purpose of integration testing is to verify functional, performance, and reliability requirements placed on major design items.
Integration testing takes as its input modules that have been unit tested, groups them in larger aggregates, applies tests defined in an integration test plan.
Reference: https://en.wikipedia.org/wiki/Software_testing
Regression testing is a type of software testing which verifies that software, which was previously developed and tested, still performs correctly after it was changed or interfaced with other software.
Changes may include software enhancements, patches, configuration changes, etc.
The purpose of regression testing is to ensure that changes such as those mentioned above have not introduced new faults.
Common methods of regression testing include re-running previously completed tests and checking whether program behavior has changed and whether previously fixed faults have re-emerged.
Regression testing can be performed to test a system efficiently by systematically selecting the appropriate minimum set of tests needed to adequately cover a particular change.
Reference : https://en.wikipedia.org/wiki/Regression_testing#cite_note-1
Smoke Testing is a preliminary testing to reveal simple failures severe enough to reject a prospective software release.
A tester will select and run a subset of test cases that cover the most important functionality of a component or system.
Reference: https://en.wikipedia.org/wiki/Smoke_testing_(software)
System testing
The system is tested as a whole
The application/System is tested in an environment that particularly resembles the effective production environment where the application/software will be lastly deployed.