Testing

Written by Cody Lindley

The Front-End Developer Roadmap from Frontend Masters - Advance your skills with in-depth, modern front-end engineering courses.


Overview:

Learning resources and tools.


Definitions:

Unit Testing
A piece of code whose inputs you control in order to verify the outputs. For a test to be considered an unit test, it must respect certain characteristics, such as:
  • It should be fast. If a test takes 2 minutes to be executed, then it's not an unit test.
  • It should be reliable. If a test works only if the network is on, then it's not an unit test.
  • It should be trustworthy. If you are not sure that a test you wrote will still work in a year when the associated production code has not changed, then it's not an unit test.
  • It should be automated. If you need to press a button to execute the test, then it's not an unit test.
Contrary to popular belief, it is possible for a test to traverse several units of code, be they functions, classes or modules.
Integration Testing
A test that is not an unit test is an integration test. If it is slow, or if it is not deterministic, or if it accesses a database, then it's an integration test.
End to End Testing
End to end testing (E2E testing) refers to a software testing method that involves testing an application’s workflow from beginning to end. This method basically aims to replicate real user scenarios so that the system can be validated for integration and data integrity.

Contribute content, suggestions, and fixes on github:

https://github.com/FrontendMasters/learning-roadmap


Test Runners

Testing Tools

Testing Assertions for Unit Testing:

Test Spies, Stubs, and Mocks for Unit Testing:

Hosted Testing/Automation for Browsers:

Integration/Functional Testing:

UI Testing Tools:

Automated dead link and error detectors:

HTTP Stubbing