Fundamentals of Software Testing
Previously we have discussed the top three points among all points of Fundamentals of Software Testing. This is the next part of the previous one. If you didn’t read our previous part yet then please click here to read.
We intend to provide awareness in the software testing field. If you are interested in this please feel free to knock us on our CONTACT US page. We’ll be happy to assist you.
Software Testing Life Cycle (STLC)
Software Testing Life Cycle (STLC) essentially performs as a checklist. Before the software is released to users, it must be tested step-by-step.
1. Requirement Analysis: Understand project requirements and goals so we can plan testing effectively.
2. Test Planning: Define testing scope, objectives, resources, and timelines.
3. Test Case Development: Create test cases based on requirements and design.
4. Test Environment Setup: Prepare the testing environment with necessary hardware, software, and tools
5. Test Execution: Execute test cases and scenarios, log defects, and verify fixes.
6. Test Reporting: Document test results, metrics, and any deviations from the test plan.
7. Test Closure: Evaluate testing objectives, prepare test summary reports and archive test assets.
8. Test Maintenance: Update test cases and scripts for future releases or changes. Can be skipped if no further iterations or updates are expected.
Testing Process Overview
- Understand: Prioritize learning the processes and key objectives of the software.
- Plan: Use a test plan and strategy. Select whether software systems need to be tested and how.
- Create: Develop test cases, which perform as requirements for testing various software features.
- Test: To test the software, follow the test cases. To check if the software functions as intended, try a few different things.
- Report: Start writing down any issues users find during the testing process. Provide a description of the issue and a method for reproducing it.
- Fix: Developers address problems during the testing phase.
- Retest: Conduct the test again to confirm the success of the changes and ensure no new issues have arisen.
- Release: Once testing verifies its functionality, software can be made accessible to the general public.
Introduce different levels of testing
Software testing involves multiple levels to make everything work together perfectly. These levels are:
a. Unit Testing
Purpose: To test individual components or units or modules function as intended, usually at the code level.
Objectives:
- Verify the correctness of each unit’s behavior according to its specifications.
- Detecting and fixing defects early in the development process.
- Facilitate code refactoring and maintainability by providing a safety net for changes.
- Enhance code quality and reduce the risk of defects propagating to higher levels of testing.
b. Integration Testing
Purpose: To test how individual units or modules integrate and work together within the larger system.
Objectives:
- Validate the interactions and interfaces between integrated components.
- Identify and resolve integration issues such as data flow problems, interface mismatches, or communication errors.
- Ensure that integrated modules collaborate effectively to achieve desired functionalities.
- Verify that data exchange between components is accurate and consistent.
c. System Testing
Purpose: To test the entire software system as a whole, including all integrated components, to evaluate its compliance with specified requirements.
Objectives:
- Validate the system’s functionality against functional and non-functional requirements.
- Assess system performance, reliability, scalability, and security aspects.
- Detects defects related to system behavior, usability, and user interactions.
- Verify that the system meets stakeholders’ expectations and business needs.
d. Acceptance Testing
Purpose: To determine whether the software meets the acceptance criteria defined by users, customers, or stakeholders.
Objectives:
- Validate that the software satisfies user requirements and fulfills its intended purpose.
- Assess whether the software is usable, intuitive, and aligned with user expectations.
- Obtain feedback from users or stakeholders regarding any necessary modifications or improvements.
- Verify that the software is ready for deployment and meets the criteria for release.
Each type of testing plays a crucial role in ensuring the quality, functionality, and usability of the software product, with a focus on different aspects and levels of testing. From the unit level to the acceptance stage, these tests collectively contribute to delivering a reliable and satisfactory software solution.
Test Planning and Documentation
Test Planning:
- Importance: Test planning helps set the direction and approach for testing activities, ensuring they align with project goals and requirements.
- Defining Test Scope: Establishing the boundaries of what will and won’t be tested prevents scope creep and ensures resources are used efficiently.
- Setting Objectives: Clear test objectives guide testing efforts, ensuring they focus on uncovering critical issues and meeting quality goals.
- Strategizing: Developing testing strategies enables teams to prioritize tasks, allocate resources effectively, and maximize test coverage within constraints.
Test Documentation:
- Importance: Test documentation serves as a roadmap for testing activities, ensuring consistency, repeatability, and accountability.
- Creating Test Plans: Test plans outline the testing approach, objectives, resources, and timelines, providing a comprehensive overview of the testing process.
- Designing Test Cases: Test cases detail specific scenarios and steps to be executed during testing, ensuring thorough coverage of functionality and requirements.
- Developing Test Scripts: Test scripts automate repetitive test procedures, improving efficiency and reproducibility while facilitating regression testing.
By investing time and effort in test planning and documentation, teams can ensure that testing activities are organized, systematic, and aligned with project objectives, ultimately leading to more effective and reliable testing outcomes.
Test Case Design Techniques
Test Case Design Techniques are methods for developing test cases that are efficient and effective.
A simplified overview of various test case design techniques.
01. Equivalent Partitioning:
Overview: Equivalence partitioning is a technique of software testing in which input data is divided into partitions of valid and invalid values
Usage: Define an initial value for each group to verify test cases and ensure complete and beneficial testing.
02. Boundary value analysis:
Overview: Boundary value analysis is a popular technique for creating test cases in black-box testing.
Usage: Test the limits (min, max and just above) to reveal possible errors related to the boundary conditions.
03. Decision Tables:
Overview: A decision table provides a tabular representation of input combinations and actions or outcomes.
Usage: To ensure thorough testing, create test cases that cover every possible combination of inputs and conditions listed in the decision table.
04. State Transition Testing:
Overview: Evaluates how a system performs when it changes from one state or situation to another.
Usage: Identify valid and invalid state transitions and design test cases to verify system behavior during these transitions
05. Use case testing:
Overview: Test the interaction between users and the system and verify the system’s ability to handle different use case scenarios.
Usage: Create test cases by considering specific scenarios that involve various paths, alternative flows, and exception conditions in order to verify that the system fulfills user needs and standards.
One Response