People get really mixed up with web development testing terms. Let’s try to straighten this out:
All of the testing above can be done manually, but only some can be done with automated tools.
Build tests are any of the above testing types that have been automated and integrated into your build system.
Bob Sagat, a full-stack developer, is in charge of a new project. His manager is telling him to test the crap out of it. It’s a node/react dashboard. Here is his next 6 months of development:
Uses mocha to write Unit tests for controllers, models, services, etc.
Uses mocha to write Integration tests which calls the endpoints and asserts the response.
Uses jest to write Unit tests for react components.
Uses selenium to have Integration/functional tests which opens up a browser and pretends to be a user.
The QA team starts hammering the project and finds many bugs. As Bob fixes them, his current tests become Regression tests, making sure nothing else is busted.
The project manager gives a release candidate to some end users (and the CEO) to play with. These are User Acceptance Tests (UAT).
The product is out in the wild. Bob writes a few Selenium tests to Smoke/Sanity check the site, which runs every day at midnight.