1. By aims and goals
1.1. By ways of dealing with application
1.1.1. Positive testing
1.1.2. Negative testing
1.2. Functional testing
1.3. Nonfunctional testing
1.4. Installation testing
1.5. Regression testing
1.6. Re-testing
1.7. Acceptance testing
1.8. Usability testing
1.9. Accessibility testing
1.10. Interface testing
1.11. Security testing
1.12. Internationalization testing
1.13. Localization testing
1.14. Compatibility testing
1.14.1. Configuration testing
1.14.2. Cross-browser testing
1.15. Comparison testing
1.16. Qualification testing
1.17. Reliability testing
1.18. Recoverability testing
1.19. Failover testing
1.20. Data quality testing and Database integrity testing
1.21. Resource utilization testing
1.22. Performance testing
1.22.1. Load (Capacity) testing
1.22.2. Scalability testing
1.22.3. Volume testing
1.22.4. Stress testing
1.22.5. Concurrency testing
2. By chronology
2.1. General chronology
2.1.1. Positive (simple)
2.1.2. Negative (simple)
2.1.3. Positive (complex)
2.1.4. Negative (complex)
2.2. By component hierarchy
2.2.1. Bottom-up testing
2.2.2. Top-down testing
2.2.3. Hybrid testing
2.3. By attention to requirements and requirement's components
2.3.1. Requirements testing
2.3.2. Functional components testing
2.3.3. Nonfunctional components testing
3. By code execution
3.1. Static testing
3.2. Dynamic testing
4. By specification (testing) level
4.1. Unit testing
4.2. Integration testing
4.3. System testing
5. By architecture tier
5.1. Presentation tier testing
5.2. Business logic tier testing
5.3. Data tier testing
6. By access to application code and architecture
6.1. White box method
6.2. Black box method
6.3. Grey box method
7. By functions under test importance (decreasingly) (by functional testing level)
7.1. Smoke testing
7.2. Critical path testing
7.3. Extended testing
8. By and users participation
8.1. Alpha testing
8.2. Beta testing
8.3. Gamma testing
9. By automatization level
9.1. Manual
9.2. Automated (+automatic)
10. By application nature
10.1. Web add testing
10.2. Mobile app testing
10.3. Desktop app testing
10.4. ...
11. By formalization level
11.1. Test case based
11.2. Exploratory
11.3. Ad hoc
12. By techniques and approaches
12.1. Positive testing
12.2. Negative testing
12.3. Based on tester's experience, scenarios, checklists
12.3.1. Explorary
12.3.2. Ad-hoc
12.4. By intrusion to application work process
12.4.1. Intrusive testing
12.4.2. Nonintrusive testing
12.5. By automation techniques
12.5.1. Data-driven testing
12.5.2. Keyword-driven testing
12.5.3. Behavior-driven testing
12.6. By input driven selection techniques
12.6.1. Equivalence partitioning
12.6.2. Baundry value analysis
12.6.3. Domain testing
12.6.4. Pairvise testing
12.6.5. Orthogonal array testing
12.7. By code
12.7.1. Control flow testing
12.7.2. Data flow testing
12.7.3. State transition testing
12.7.4. Code review
12.8. By error source (knowledge)
12.8.1. Error guessing
12.8.2. Heuristic evaluation
12.8.3. Error seeding
12.8.4. Mutation testing
12.9. By operational environment
12.9.1. Development testing
12.9.2. Operational testing
12.10. By application behavior (models)
12.10.1. Decision table testing
12.10.2. State transition testing
12.10.3. Specification-based testing
12.10.4. Model-based testing
12.10.5. Use case testing
12.10.6. Parallel testing
12.10.7. Random testing
12.10.8. A/B testing