In-Depth Notes on Testing Strategies and Process
Test Process
- Testing is crucial to ensure software reliability and quality.
- Several types of testing exist, including unit testing, integration testing, system testing, and acceptance testing.
Unit Testing
- Definition: The smallest testable part of software, such as functions or methods.
- Purpose: Verify that each unit behaves as expected.
- Typically conducted by developers.
Integration Testing
- Definition: Testing the interaction between multiple components that have been individually unit-tested.
- Goals of Integration Testing:
- Identify issues from component interactions.
- Ensure correct communication between components.
- Test off-the-shelf components that aren't unit tested.
- Strategies for Integration Testing:
- Big Bang Integration: Integrating all components at once, which can be quick but may lead to complex debugging.
- Incremental Integration: Gradually adding components, allowing for easier fault location and fixes.
- Bottom-up Integration: Testing lower-level modules first and then integrating them upward.
- Top-down Integration: Testing upper-level modules first to check control structures and interfaces.
- Sandwich Strategy: Combining elements from both top-down and bottom-up approaches for better fault isolation.
Test Case Allocation
- Allocate test cases strategically:
- 80% for developed systems; 20% for other areas such as interface and hardware.
- Prepare a test procedure that sets environmental conditions and runs test cases randomly.
System Testing
- The final integration step before the system delivery.
- Includes both functional and non-functional testing.
- Often performed by independent testing teams.
- Critical non-functional aspects include performance, security, and usability.
- Differences in Testing Types:
- System testing checks the entire system, while integration tests focus on interconnections between components.
Acceptance Testing
- The last validation phase conducted usually by the end-users.
- Users test the system based on their business processes for final sign-off.
- Types of Acceptance Testing:
- Alpha Testing: Internal testing simulating end-user experience.
- Beta Testing: External testing in a real-world environment to validate user expectations.
Continuous Integration (CI)
- CI is a development practice where code check-ins are frequent, requiring automated builds and tests.
- CI ensures a runnable system from day one, integrating tool support for build management, tests, and issue tracking.
Non-Functional Testing
- Importance of testing non-functional requirements:
- Performance, usability, security, and compatibility should not be neglected during system testing.
- Often documented separately to ensure clarity on specific needs.
Summary of Testing Lifecycle
- Testing involves several stages:
- Unit Testing
- Integration Testing
- System Testing
- Acceptance Testing
- Quality assessment techniques should accompany each testing phase to ensure overall quality and reliability of the software system.