Software Engineering - Unit 3 (Testing Strategies)
Software Engineering - Unit 3 (Testing Strategies)
Testing Tactics
Testing tactics are the specific techniques and methods used to achieve the testing goals. Here are
some common testing tactics:
Examples:
Equivalence partitioning: Divides the input data into partitions to reduce the number of test
cases.
Boundary value analysis: Tests the software at the boundaries of the input data.
State transition testing: Tests the software's behaviour as it transitions between different
states.
Examples:
A strategic approach to software testing involves planning and executing tests to ensure the quality
and reliability of software products. Here's a brief overview:
1. Test Planning: Define the scope, objectives, and deliverables of the testing process.
2. Risk-Based Testing: Identify and prioritize high-risk areas of the software to focus testing
efforts.
3. Test Case Development: Create test cases based on requirements, user stories, or use cases.
4. Test Environment Setup: Ensure the necessary hardware, software, and network
configurations are in place.
5. Test Execution: Run the test cases, record results, and report defects.
6. Defect Management: Track, analyze, and resolve defects found during testing.
7. Test Closure: Document lessons learned, update test plans, and plan for future testing.
Strategic Issues
Strategic issues are complex problems that require careful consideration and planning to resolve. Here
are some common types of strategic issues:
Software testing is the process of evaluating a software product to ensure it meets the required
standards and works as expected.
1. Black Box Testing: Testing the software without knowing its internal workings, focusing on
inputs and outputs.
2. White Box Testing: Testing the software with knowledge of its internal workings, focusing
on the code and internal logic.
3. Gray Box Testing: A combination of black box and white box testing, where some internal
knowledge is used.
Testing Levels
Testing Techniques
1. Equivalence Partitioning: Dividing input data into partitions to ensure all possible scenarios
are tested.
2. Boundary Value Analysis: Testing the software at the boundaries of input data to ensure it
handles edge cases correctly.
3. State Transition Testing: Testing how the software behaves during state transitions.
1. Test Planning: Defining the scope, objectives, and approach of the testing process.
2. Test Case Development: Creating test cases based on the requirements and testing
techniques.
3. Test Environment Setup: Setting up the necessary environment for testing.
4. Test Execution: Running the test cases and recording the results.
5. Test Reporting: Documenting the test results and defects found.
6. Test Closure: Verifying that all defects are fixed and the software is ready for release.
1. Correctness: Ensuring the software behaves as expected and meets the requirements.
2. Completeness: Verifying that all features and functionalities are included and work correctly.
3. Quality: Evaluating the overall performance, reliability, and usability of the software.
4. Testability: Designing the software to be easily testable, with clear and concise code, and
minimal complexity.
5. Efficiency: Minimizing the time and resources required for testing, while maximizing the
effectiveness of the testing process.
1. Unit Testing
2. Integration testing
3. Validation Testing
4. System testing
5. Black-Box testing
6. White Box testing.
1. Unit Testing
Purpose: Verifies individual units of code (functions, methods, etc.) to ensure they
work as expected.
Benefits: Helps catch bugs early, ensures code is modular and reusable, and reduces
debugging time.
2. Integration Testing
Purpose: Tests how different units of code work together to ensure they integrate
correctly.
Example: Testing a login system that involves multiple functions and databases.
Benefits: Ensures that different components work together seamlessly, reduces the
likelihood of integration issues.
3. Validation Testing
Purpose: Ensures that the software meets the requirements and specifications defined
by the stakeholders.
Approach: Tests the software against the requirements and specifications, ensuring it
meets the expected behaviour.
Example: Testing software that meets the regulatory requirements for a specific
industry.
Benefits: Ensures that the software meets the needs of the stakeholders, reduces the
risk of non-compliance.
4. System Testing
Purpose: Tests the entire software system to ensure it works as expected in a real-
world environment.
Approach: Tests the software in its entirety, simulating real-world scenarios and
interactions.
Example: Testing software that involves multiple components, databases, and user
interactions.
5. Black-Box Testing
Purpose: Tests the software without knowing the internal workings, focusing on
inputs and outputs.
Approach: Tests the software by providing inputs and observing the outputs, without
knowing how the software works internally.
Example: Testing software that involves user interactions and outputs, without
knowing the underlying code.
Benefits: Ensures that the software works as expected from the outside, reduces the
likelihood of issues due to internal implementation.
Purpose: Tests the software with knowledge of the internal workings, focusing on
the code itself.
Approach: Tests the software by analysing the code, identifying potential issues, and
testing the code to ensure it works as expected.
Example: Testing software that involves complex algorithms and data structures,
with knowledge of the underlying code.
Benefits: Ensures that the software works as expected internally, reduces the
likelihood of issues due to internal implementation.