Testing is a vital part of the full stack engineering process.
It forces the developer to think about all cases.
It allows for easy and secure continuous refactoring.
Many types of testing:
- Unit
- Integration
- End-to-End
- Acceptance
- A/B
- Security
- Accessibility
- Target Group
Unit testing
- unit means a function, class or module
- internal to the project, white-box
- executed locally and on the continuous integration server
- smoothens cooperation within a team
- aim for optimum code coverage
Integration testing
- test integrations between components / modules / services
- inter-component, interface driven, white- & black-box
- executed on staging and production as part of deployment
End-2-End testing
- testing an application feature / behaviour from start to finish
- simulate user behaviour, white- & black-box
- executed locally or on continuous integration server
Acceptance testing
- externally specified tests, black-box
- testing whether our changes break:
- dependant services
- non-functional client specifications
- periodically executed on both staging and production environments
A/B testing
- hypothesis driven
- does this change have a statistically significant effect on metrics
- tested variants are usually product, but could be technical
Security testing
- attack surface
- penetration testing
- data privacy
User Testing
- Alpha
- Beta
- Accessibility
- Fixing bugs in Production