Unit tests are typically automated tests written and run by software developers to ensure that a section of an application (known as the “unit”) meets its design and behaves as intended.
Integration Testing
Test multiple classes and functions work together
Test that one service integrates with another service
E2E Testing (Workflow Testing or UI Testing)
Test the entire functionality the way that a user would interact with it
They are the hardest to setup
Alpha - Beta Testing
Alpha Testing
Alpha testing is the first phase of software testing, which is typically conducted by the software development team or a dedicated test team within the organization.
software is tested in-house to identify and fix any issues or bugs before releasing it to external users.
It is not typically open to the public.
Beta Testing
Beta testing, on the other hand, is the second phase of software testing, and it is conducted by external users who have access to a pre-release version of the software.
Beta testers are often chosen from a pool of volunteers or customers who have signed up for early access to the software.
Smoke Testing
Sanity Testing
A sanity check or sanity test is a basic test to quickly evaluate whether a claim or the result of a calculation can possibly be true.
The point of a sanity test is to rule out certain classes of obviously false results, not to catch every possible error.
White Box Testing
Black Box Testing
Gray Box Testing
Combination of Black Box and White Box testing
Functional Testing
Mutation Testing
A/B Testing
Automation Testing
It includes Workflow test and sometimes integration tests as well
Regression Testing
Regression testing is re-running functional and non-functional tests to ensure that previously developed and tested software still performs after a change. If not, that would be called a regression.
Changes that may require regression testing include
bug fixes
software enhancements
configuration changes
and even substitution of electronic components.
As regression test suites tend to grow with each found defect, test automation is frequently involved.
We should do “root cause analysis” in case regression happens
Regression testing is done after functional testing has concluded, to verify that the other functionalities are working.
In the corporate world, regression testing has traditionally been performed by a software quality assurance team after the development team has completed work.
Fixture
The purpose of a test fixture is to ensure that there is a well known and fixed environment in which tests are run so that results are repeatable. Some people call this the test context.
Examples of fixtures:
Loading a database with a specific, known set of data
Erasing a hard disk and installing a known clean operating system installation
Copying a specific known set of files
Preparation of input data and set-up/creation of fake or mock objects
Setup and Tear down
Test Suite
Extreme Programming
Extreme programming (XP) is a software development methodology intended to improve software quality and responsiveness to changing customer requirements.
It is a type of agile software development
The methodology takes its name from the idea that the beneficial elements of traditional software engineering practices are taken to “extreme” levels. As an example, code reviews are considered a beneficial practice; taken to the extreme
Other elements of extreme programming include:
programming in pairs
doing extensive code review
unit testing of all code
not programming features until they are actually needed
a flat management structure
code simplicity and clarity
expecting changes in the customer’s requirements as time passes and the problem is better understood
frequent communication with the customer and among programmers