Testing

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 6

Agile Methodology: -

In Agile methodology, testing is integrated throughout the development lifecycle, ensuring


continuous feedback and quality improvement. The testing process in Agile is collaborative,
iterative, and incremental. Here’s a detailed breakdown of the testing process in Agile:

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

Test-Driven Development (TDD)

 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.

Pairing and Collaboration

 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

 Exploratory Testing: Testers perform exploratory testing to discover issues that


automated tests might miss.
 Ad-hoc Testing: Informal testing based on tester’s experience and intuition.

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.

5. Review and Retrospective Phase

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

 Process Improvement: Testers participate in sprint retrospectives to discuss what


went well, what didn’t, and how the testing process can be improved.
 Action Items: Define action items to enhance the testing process in the next sprint.

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.

8. Tools and Techniques

Common Agile Testing Tools

 JIRA: For issue and project tracking.


 Selenium: For automated browser testing.
 Cucumber: For behavior-driven development (BDD).
 Jenkins/Bamboo: For continuous integration and continuous testing.
 Postman: For API testing.

Testing Techniques

 Behavior-Driven Development (BDD): Using tools like Cucumber to write tests in


plain language.
 Acceptance Test-Driven Development (ATDD): Defining acceptance criteria and
tests before development begins.
 Exploratory Testing: Simultaneous learning, test design, and test execution.
 Session-Based Testing: Time-boxed exploratory testing sessions with clear
objectives.

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.

All Types of Testing

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. Unit Testing: Testing individual components or units of a software.


2. Integration Testing: Testing the combination of units/modules as a group.
3. System Testing: Testing the complete and integrated software to evaluate its
compliance with the requirements.
4. Acceptance Testing: Verifying if the software meets the business requirements and is
acceptable for delivery.

2. Based on Test Execution

1. Manual Testing: Testing the software manually without automation tools.


2. Automated Testing: Using tools and scripts to perform tests on the software.

3. Based on Test Approach

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. Functional Testing: Ensuring the software functions according to the requirements.


2. Non-Functional Testing: Testing aspects not related to specific behaviors or
functions, such as performance, usability, reliability, etc.

5. Based on Testing Scope

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.

6. Based on Testing Levels

1. Alpha Testing: In-house testing by developers or QA teams before releasing to


external testers.
2. Beta Testing: Testing by a select group of external users before the final release.

7. Based on Specific Testing Purposes

1. Performance Testing: Assessing the speed, responsiveness, and stability under a


workload.
o Load Testing: Checking software behavior under expected load.
o Stress Testing: Evaluating software performance under extreme conditions.
o Spike Testing: Testing the software's response to sudden and extreme spikes
in load.
o Scalability Testing: Ensuring the software can scale up or down.
o Volume Testing: Testing with a large volume of data.
2. Security Testing: Identifying vulnerabilities, threats, and risks in the software.
3. Usability Testing: Evaluating how easy and user-friendly the software is.
4. Compatibility Testing: Ensuring the software works across different devices,
browsers, OS, etc.
5. Recovery Testing: Testing the software's ability to recover from crashes or failures.
6. Localization Testing: Verifying the software's adaptation for different languages and
regions.
7. Globalization Testing: Ensuring the software can function in any cultural or locale
settings.
8. Compliance Testing: Checking the software's adherence to standards, laws, and
guidelines.
9. Installation Testing: Verifying the installation process for the software.
10. Alpha and Beta Testing: Pre-release testing with internal and external users,
respectively.

8. Based on Development Methodologies

1. Agile Testing: Continuous testing in an Agile development environment.


2. DevOps Testing: Integrated testing practices within the DevOps pipeline.

9. Special Types of Testing

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.

Understanding and implementing these various types of testing ensures comprehensive


coverage, helping to deliver high-quality and reliable software products

You might also like