# How to do what kind of testing when: testing types by scope Correctly identifying _when_ you test could be just as important as _what_. Below are types of testing according to scope. ### Static testing Static testing occurs when requirements are written. Question requirements and spell out what each one means. _Concerns:_ Setting up a system to track and link requirements to test cases, negotiating business needs with technical feasibility, clarifying scope. ### Unit testing Unit testing occurs when coding begins. Practice Test-Driven Development by translating requirements into tests before writing the code. _Concerns:_ Treating test code like application code, getting developer buy-in, communicating technical implementation, performance, pair programming. ### System testing System testing occurs when a build is released. Employ black-box testing: step back from the code and assess the feature as a whole for consistency. _Concerns:_ Adherence to common design standards, equivalence partitioning, boundary value analysis, fighting scope creep, usability, creating test data. ### System integration testing (SIT) SIT occurs when integrating multiple components. Use white-box or grey-box testing to target the interactions and traffic between components. _Concerns:_ API testing, stubbing and mocking, identifying request paths throughout the system, performance benchmarking, observability and analysis. ### Business acceptance testing (BAT) BAT occurs when the code is assessed against overall business goals. Seek out SMEs who can help you verify expected outcomes. _Concerns:_ Adherence to business requirements and regulations, process testing, simplifying request flows, identifying potential customer pain points. ### User acceptance testing (UAT) User acceptance testing occurs before code is released to production. Map test cases to requirements and test real-world scenarios. _Concerns:_ Testing for superuser workflows, data cleansing, verifying real user behavior from historical logs, exploratory testing, end-to-end performance. ### Regression Testing Regression testing occurs between builds. Supplement a robust automation test suite with nuanced manual test cases that address known problem areas. _Concerns:_ Setting up a CI/CD pipeline, deciding what to automate, consolidating test and development tools, tracking failures over time. ### Question everything Remember: **testing is an attitude.**