Testing Methodologies & SDLC
Tags: beginners, testing
Published: 2023-08-21 14:57:56

Software testing is a part of the software development process that helps the quality, functionality of a software product to improve by the Customer needs.

- These Two are the Major Basic Testing Methodologies are Functional and Non-functional types of testing.

1. **Functional Testing:** Functional Testing is a testing to checks whether the software functions works according to the specified requirements as per it expected.
2. **Non-Functional Testing:** Non-functional Testing is a testing to test the software about its performance, stability etc..,

## Here are some of the most common types of testing:

1. **Unit Testing:** Unit Testing is a testing to test the individual units or components of a software application. It is done by developers to identify bugs early in the development process.

2. **Performance Testing:** This Testing evaluating the software's responsiveness, speed, stability under various conditions.
This type includes subcategories such as:

A.) **Load Testing:** To Test the software's behavior under expected load conditions.
B.) **Stress Testing:** To Test the software to its limits to assess how it handles extreme conditions.

3. **Smoke Testing:** Smoke Tests means verifying the important features are working and there are no Bugs in the build that is under testing. In software testing process the smoke test determines whether the deployed software build is stable or not. Smoke testing is a confirmation for QA team to proceed with further software testing and Smoke testing is also known as “_Build Verification Testing_” or “_Confidence Testing_.”

4. **Sanity Testing:** Sanity testing means after receiving a software build, with minor changes in code, or functionality that the bugs have been fixed and no further issues are introduced due to these changes. Sanity testing aims to ensure that specific changes or fixes introduced in a software build have not negatively impacted the existing functionalities.

5. **Regression Testing:** Regression testing is a type of software testing that focuses on the recent code changes or updates in a software application do not negatively affect existing functionalities. The primary aim of regression testing is to maintain the overall quality and stability of the software, even as new features or fixes are added. In simple terms, _Regression testing is like double-checking that new updates haven't broken the previously working parts of the software._

6. **User Acceptance Testing :** UAT is a final phase of testing where real users where evaluate the software application to determine whether it meets their requirements and is ready for actual use. In simple terms, UAT is like giving the software a Trial Run to make sure it works the way users expect it to before it's officially deployed.

## Different Types of STLC Phases

> STLC is a process used to test the software and confirm that product conditions works are met. Testing is process and also an integral part of Software Development Life Cycle (SDLC). There are 6 phases in STLC

1. **Requirement Analysis:** In this phase, the testing team reviews and analyzes the project requirements, specifications, and documentation to understand the scope of testing and the expected behavior of the software.

2. **Test Planning:** In this phase, plan is created based on the analysis of requirements. This plan outlines the testing approach, scope, objectives, resources, schedule, and criteria for success.

3. **Test Case Development:** Test cases are developed based on the test plan. Test cases outline the specific conditions, inputs, and expected outcomes for testing different aspects of the software.

4. **Test Environment Setup:** A suitable testing environment is established, including hardware, software, and network configurations, to simulate real-world conditions for testing.

5. **Test Execution:** In this phase, the actual testing takes place. Testers execute the prepared test cases and record the outcomes. Defects and issues are identified, documented, and reported to the development team.


6. **Test Closure:** Once testing is complete, a formal closure report is prepared. This report summarizes the testing activities, results, issues, and the overall quality of the software. It also provides a recommendation for the software's release.

## As a Manual tester, I have certain qualities that make me good at testing software. Here are some of those qualities..,

1. **I'm Really Good at Paying Attention:** I'm really good at noticing even the small things that might be wrong in the software.

2. **I'm Great at Solving Puzzles:** I'm good at figuring out why something isn't working correctly and finding solutions to it unexpected challenges that arise during testing.

3. **I'm a Clear Communicator:** I can explain things in a way that makes sense to others and I am skilled in documenting also.

4. **I'm Interested In Testing:** I possess a strong understanding of the domain or industry for which the software is being developed.

5. **I'm Creative with Ideas:** I can come up with different ways to test things that others might not think of and also I am able to think outside the box when it comes to test scenarios and test cases and missed scenarios.

6. **I'm Good at Managing My Time:** I can plan my work so that I finish on time. I made a plan, focused on the most important parts, and managed to test everything in time for the release.

7. **I'm a Problem Solver:** I'm good at finding ways to fix problems and troubleshooting and finding solutions to unexpected challenges.

8. **I Think about Users:** I always think about how the people using the software will feel. I always keep the end-users in mind while testing, aiming to deliver a flawless product.

## Agile vs Waterfall – Difference Between Methodologies


> **Agile:**

1. **Small Steps:** Work is divided into small parts called "sprints". Each sprints delivers a piece of the software.
2. **Changes Welcome:** Changes can be made even after work has started. Flexibility is a big thing here.
3. **Testing Along the Way:** Testing is done continuously as each part is built, helping catch issues early.
4. **Quick Deliveries:** You get smaller pieces of the software more often, which is good for seeing progress.
5. **Team Collaboration:** The team works closely together and communicates a lot. Communication is important.

>**Waterfall:**

1. **Step-by-Step:** Waterfall is like building things step by step, like a waterfall flowing down.
2. **Changes are Harder:** Changes are tough once you've moved to the next phase. It's like turning back in a one-way street.
3. **Testing at the End:** Testing happens after everything is built. Sometimes problems are found too late.
4. **Single Delivery:** You get the whole software at the end, which can take a while.
5. **Sequential Teams:** Different teams handle different phases, often working separately.