Testing
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
Testing Tools
Testing Assertions for Unit Testing:
Test Spies, Stubs, and Mocks for Unit Testing:
Hosted Testing/Automation for Browsers:
Integration/Functional Testing:
Automated dead link and error detectors:
HTTP Stubbing