Wednesday 13 March 2024

Some thoughts on testing, test plans and test cases



Phase 1 – Testing if It's Ready for Testing

When conducting testing of a new product or system, it's important to recognize that there will be many different levels of testing. There will be the initial testing that needs to be done by a small cohort of people who are actively involved in the product. They will understand what the product is supposed to do and will be able to identify minor or major faults. These individuals understand the requirements and the system, enabling them to design suitable tests, identify any shortcomings, and determine necessary remedial actions. They are also responsible for assessing the importance of the problems and deciding whether the product is acceptable or not.

This initial testing may involve using dummy data or scenarios to isolate specific functions for testing. It ensures that the product is sufficiently prepared for wider user testing later on. Releasing a product for extensive testing with many users when it's not ready would be inefficient and costly.

During this phase, it's essential to document the tests accurately so that they can be repeated consistently by many users. Random testing can yield unreliable results, highlighting the importance of thorough, complete, robust, and consistent testing for ensuring product efficacy and confidence.

Phase 2 – Testing if Everything Works

The second stage of testing requires more coordinated efforts compared to the initial round. Testers need written test scripts to guide them through the testing process, outlining what tests to conduct and how to interpret the results. This phase not only evaluates the product's functionality but also assesses supporting processes, procedures, and policies, preparing for user acceptance.

Testing during this phase may involve using realistic data, either from previous records or redacted data, to simulate real-world scenarios accurately. It's crucial to compare the actual outcomes with expected results or with data from legacy systems to ensure consistency and accuracy.

Beyond functionality, testing in this phase also examines data quality. Even if the software functions correctly, errors in the data, such as poorly formatted addresses or names, can lead to failures. Developing policies and procedures surrounding product usage is also essential at this stage to ensure alignment with organizational protocols.

Phase 3 – Testing if We Are Ready to Accept and Use

The final round of testing occurs once there is complete confidence in the product, its functionality, data usage, processes, outcomes, and supporting documentation. This phase ensures that all criteria for go-live readiness are met, including data migration from legacy systems.

User acceptance testing in this phase validates the accuracy and completeness of data migration. Any problems encountered, whether cosmetic or functional, need to be addressed before proceeding. This phase serves as a final check to ensure readiness for full implementation.

Conclusion

By following this three-step approach or variations of it, organizations can iteratively build their knowledge, skills, and experience with products and data. Each step informs the next, enhancing the ability to use the system effectively and develop supportive policies and procedures. Additionally, it facilitates learning and training, enabling early-stage participants to support those involved in later stages effectively. Ultimately, this approach not only results in a well-tested product but also enhances the competence, capacity, and supportiveness of users throughout the implementation process.

Summary Guidance

Creating test plans and test cases is a critical aspect of software testing, ensuring that the software meets its requirements and functions correctly.

Test Plan:

1. Understand Requirements: Review the software requirements and specifications to understand what needs to be tested.
2. Define Test Objectives: Determine the goals and objectives of the testing process. What do you want to achieve through testing?
3. Identify Scope and Features: Determine the scope of testing, including which features or functionalities need to be tested.
4. Allocate Resources: Assign roles and responsibilities for testing. Identify the team members involved and the resources required.
5. Define Test Strategies: Determine the overall approach to testing, including types of testing (e.g., functional, non-functional, regression), test environment setup, and test data requirements.
6. Create Test Cases: Develop detailed test cases based on the requirements and specifications. Each test case should include a description, test steps, expected results, and any preconditions.
7. Set Test Schedule: Define the timeline for testing activities, including milestones, deadlines, and dependencies.
8. Identify Risks: Identify potential risks to the testing process and develop mitigation strategies.
9. Review and Approval: Review the test plan with stakeholders, obtain feedback, and make revisions as necessary. Once finalized, ensure it is approved by relevant parties.

Test Cases:

1. Identify Test Scenarios: Break down the requirements into testable scenarios that cover various aspects of the software's functionality.
2. Create Test Cases: For each test scenario, create detailed test cases that outline the steps to be executed, the input data, the expected results, and any preconditions or assumptions.
3. Prioritize Test Cases: Prioritize test cases based on factors such as criticality, complexity, and frequency of use.
4. Review and Refinement: Review the test cases to ensure clarity, completeness, and consistency. Refine them as needed based on feedback.
5. Organize Test Cases: Group related test cases into test suites or test scripts for efficient execution.
6. Prepare Test Data: Identify and prepare the necessary test data required for executing the test cases.
7. Execute Test Cases: Execute the test cases in the test environment according to the defined test plan.
8. Record Test Results: Record the outcomes of the test cases, including any deviations from expected results, defects found, and other observations.
9. Retest and Regression: Retest any failed test cases after fixing defects. Perform regression testing to ensure that changes or fixes have not introduced new issues.
10. Review and Reporting: Review the test results, analyze trends, and generate test reports to communicate the status and findings to stakeholders.
11. Closure: Once testing is complete and the software meets the acceptance criteria, obtain sign-off from stakeholders and finalize the testing process.

Key roles and responsibilities in testing:

1. Testers: These individuals are responsible for conducting the actual testing of the product or system. They may include both internal team members and external users who represent the target audience.

2. Cohort of Active Users: A small group of individuals who are actively involved in the product and understand its requirements and functionality. They play a crucial role in conducting initial testing and identifying any faults or shortcomings.

3. Test Script Writers: These individuals are responsible for creating detailed test scripts that outline the specific tests to be conducted, the expected outcomes, and criteria for pass or fail.

4. Test Coordinators/Managers: Individuals who oversee and coordinate the testing process. They ensure that testing activities are well-planned, executed efficiently, and aligned with project timelines and objectives.

5. Policy and Procedure Developers: Responsible for developing policies and procedures surrounding the use of the product. They ensure alignment with organizational protocols and standards.

6. Data Experts: Individuals with expertise in data management and quality assurance. They ensure that the data used for testing is realistic, accurately represents real-world scenarios, and is of high quality.

7. User Acceptance Testers: Individuals who represent end-users and are responsible for validating the product's readiness for acceptance and use. They provide feedback on usability, functionality, and alignment with user expectations.

8. Documentation Specialists: Responsible for documenting test results, issues encountered, and remedial actions taken during the testing process. They ensure that all testing activities are well-documented for future reference.

9. Training Facilitators: Individuals responsible for training users on how to use the product effectively. They provide guidance and support to ensure that users understand the product's functionality and how to follow established protocols and procedures.

10. Project Stakeholders: Individuals with a vested interest in the project's success, such as project managers, product owners, and key decision-makers. They provide oversight, guidance, and support throughout the testing process to ensure that project objectives are met.

By following these steps, you can create comprehensive test plans and test cases to ensure thorough testing of your software product.


Tim HJ Rogers
Consult | CoCreate | Deliver

I support people and teams to grow, perform and succeed unlocking potential as a partner Consultant, Coach, Project and Change Manager. Together we can deliver projects and change, and improve the confidence, capacity, drive and desire of the people I work with.

ICF Trained Coach | MBA Management Consultant | PRINCE2 Project Manager, Agile Scrum Master | AMPG Change Practitioner | Mediation Practitioner | BeTheBusiness Mentor | 4 x GB Gold Medalist | First Aid for Mental Health | Certificate in Applied Therapeutic Skills

#people #process #performance #projects #programmes #pmo #change #processimprovement #projectmanagement #changemanagement #workshops #mediation #coach #icfcoach #mentor #facilitation #training #jersey #channelislands

No comments:

Post a Comment