Testing
Testing
Testing
1. Planning Phase
Sprint Planning
Involvement: Testers are involved in sprint planning meetings along with developers
and product owners.
Story Analysis: Testers help analyze user stories to ensure they are clear, concise,
and testable.
Acceptance Criteria: Testers help define acceptance criteria for each user story,
ensuring that the requirements are clear and verifiable.
2. Design Phase
Test Planning
Test Strategy: Develop a test strategy for the sprint, detailing the types of tests to be
conducted, tools to be used, and resources required.
Test Cases: Create high-level test cases or scenarios based on the acceptance criteria.
These can include both manual and automated tests.
3. Development Phase
Unit Tests: Developers write unit tests before coding. Tests are written to define the
expected behavior of the code.
Code Implementation: Code is developed to pass the unit tests.
Refactoring: Code is refactored to improve quality while ensuring all tests still pass.
Pair Programming: Testers and developers often pair program, particularly for test
automation scripts.
Continuous Integration: Frequent code integration and continuous builds help
identify issues early. Automated tests run as part of the build process.
4. Execution Phase
Manual Testing
Automated Testing
Automation Scripts: Develop and run automated test scripts for regression,
integration, and end-to-end testing.
Continuous Testing: Automated tests run continuously with each code check-in,
providing immediate feedback.
Regression Testing
Regression Suite: Maintain a suite of regression tests that run whenever new code is
integrated to ensure existing functionality is not broken.
Sprint Review
Demo: Testers participate in sprint reviews to demonstrate the completed features and
discuss the testing done.
Feedback: Collect feedback from stakeholders to identify any issues or
improvements.
Retrospective
6. Defect Management
Bug Tracking
Logging Defects: Testers log defects in a tracking tool (like JIRA), providing detailed
steps to reproduce, severity, and screenshots.
Prioritization: Defects are prioritized based on their impact and urgency.
Verification: Testers verify fixes once developers address the defects and close them
if resolved.
7. Continuous Feedback
Customer Feedback
User Feedback: Incorporate feedback from end-users and customers to identify areas
of improvement and new requirements.
Usability Testing: Conduct usability testing to ensure the product meets user
expectations and is easy to use.
Testing Techniques
Example Workflow
1. Sprint Planning:
o Analyze user stories and define acceptance criteria.
o Create a test strategy for the sprint.
2. Development and Testing:
o Write unit tests (TDD).
o Develop and execute test cases.
o Conduct exploratory and ad-hoc testing.
o Integrate and run automated tests continuously.
3. Defect Management:
o Log, prioritize, and track defects.
o Verify fixes and close defects.
4. Review and Feedback:
o Participate in sprint reviews and retrospectives.
o Gather and act on customer feedback.
By integrating testing throughout the development process, Agile ensures that quality is
maintained continuously and that the product meets customer expectations. The collaborative
and iterative nature of Agile allows for quick identification and resolution of issues, leading
to a more robust and reliable product.
Software testing is a crucial part of the software development lifecycle, ensuring the quality,
functionality, and performance of software applications. Here are the major types of software
testing, categorized based on various criteria:
1. Based on Functionality
1. Black Box Testing: Testing the software without knowing the internal code structure.
2. White Box Testing: Testing based on knowledge of the internal code structure.
3. Gray Box Testing: A combination of both black box and white box testing
methodologies.
4. Based on Testing Objectives
1. Smoke Testing: Preliminary testing to check the basic functionality of the software.
2. Sanity Testing: Checking specific functionality after making changes to ensure
correctness.
3. Regression Testing: Ensuring that new code changes have not adversely affected
existing functionalities.
4. Retesting: Verifying that defects have been fixed.
1. Mutation Testing: Introducing changes to the code to ensure the test suite can catch
the errors.
2. A/B Testing: Comparing two versions of a software to determine which one performs
better.