Have a look here for Types of Testing , STLC Phases , Qualities of Manual Tester & Testing Methodologies
Tags: softwaredevelopment, testing, learning
Published: 2024-03-06 16:35:45

## Types of Testing :
*********************
There are various types of testing that are performed throughout the software development life cycle to ensure the quality and reliability of software products. Some of the common types of testing include:

**Unit Testing:** This testing is performed by developers on individual units or components of the software to verify that each unit functions correctly in isolation.

**Integration Testing:** Integration testing is conducted to test the interactions between different units or components of the software to ensure that they work together as expected.

**System Testing:** System testing involves testing the entire software system as a whole to validate that it meets the specified requirements and functions correctly in various scenarios.

**Acceptance Testing:** Acceptance testing is performed to determine whether the software meets the acceptance criteria and satisfies the stakeholders' requirements. It can include User Acceptance Testing (UAT) where end-users validate the software against their needs.

**Regression Testing:** Regression testing is conducted to ensure that recent changes or enhancements to the software do not adversely affect the existing functionality. It involves retesting previously tested features to verify that they still work as intended.

**Sanity Testing:** Sanity testing, also known as Sanity check or Build Verification Testing (BVT), is a type of testing performed on a stable build of the software application to ensure that the critical functionalities work as expected. It is a subset of regression testing and the focus of sanity testing is not to verify all functionalities but to ensure that the most crucial features are working correctly.

**Smoke Testing:** Smoke testing, also known as Build Verification Testing (BVT) or Build Acceptance Testing, is a type of testing performed on a freshly built software application to verify that the basic functionalities work as expected and the application is ready for further testing.

**Retesting:** Retesting is a type of testing performed to verify that a previously identified defect has been fixed correctly and the affected functionality now works as expected. Retesting is typically performed as part of the defect resolution process, where developers fix reported defects, and testers verify the fixes before the software is released.

**Performance Testing:** Performance testing evaluates the responsiveness, throughput, reliability, and scalability of the software under various load conditions. It includes types such as Load Testing, Stress Testing, and Scalability Testing.

**Security Testing:** Security testing is performed to identify vulnerabilities and weaknesses in the software's security mechanisms. It includes tests such as Penetration Testing, Vulnerability Scanning, and Security Audits.

**Usability Testing:** Usability testing assesses the software's user interface and user experience to determine how easy and intuitive it is for end-users to use the software.

**Compatibility Testing:** Compatibility testing checks whether the software functions correctly across different devices, operating systems, browsers, and environments.

**Exploratory Testing:** Exploratory testing is an informal testing approach where testers explore the software application dynamically and spontaneously to uncover defects and identify potential areas of improvement. Testers use their domain knowledge, intuition, and creativity to design and execute test scenarios in real-time.

----------------------------------------------------------------

## STLC Phases :
****************
Software Testing Life Cycle(STLC) typically consists of the following phases:

**Requirement Analysis:** In this phase, testers analyze the requirements to understand the scope of testing and identify testable requirements.

**Test Planning:** Test planning involves defining the testing objectives, scope, approach, resources, and timelines. Test plans and test strategies are created during this phase.

**Test Case Development:** Test cases are created based on the requirements and test conditions identified during the requirement analysis phase. Test cases outline the steps to be executed, expected results, and test data.

**Test Environment Setup:** The test environment is set up to mimic the production environment where the testing will take place. This includes configuring hardware, software, and network components.

**Test Execution:** Test cases are executed based on the test plan. Testers run the test cases, record test results, and report any defects found during testing.

**Defect Reporting and Tracking:** Defects found during test execution are reported in a defect tracking system. Testers track the status of defects from discovery to resolution.

**Test Closure:** In this phase, the testing activities are formally concluded. Test closure activities may include summarizing test results, preparing test closure reports, and obtaining sign-off from stakeholders.

------------------------------------------------------------------
## Qualities of Manual Tester
*****************************
Manual tester is the one who ensures the software is developed as per requirement and also to achieve a good quality to sustain in market. Manual tester should possess several important qualities that contribute effectiveness in testing software.

**Attention to Detail:** One should have a keen eye for detail and can identify even the smallest discrepancies or inconsistencies in the software under test.

**_Example:_**
You are assigned to test a web application's registration form, which includes fields for the user's name, email address.

->So at First you enter a valid email address in the email field and ensure that the form accepts it without error.
Next, you enter an invalid email format (e.g., missing "@" symbol) and verify that the form displays an appropriate error message prompting the user to enter a valid email address.


**Analytical Thinking:** One should possess strong analytical skills, allowing to break down complex problems into manageable components and identify the root cause of issues.

**_Example:_**
->While reviewing the requirement, you think analytically about potential edge cases or boundary conditions that may impact the system's behavior.
->For example, you consider scenarios such as testing with email addresses containing special characters, testing with email addresses exceeding the maximum character limit, and testing with email addresses from different domains.


**Communication Skills:** Effectively communicate with stakeholders, developers, and other team members to convey testing results, report defects, and discuss testing requirements

**_Example:_**
->When you encounter defects during testing, you carefully document them in the defect tracking system, providing detailed information such as steps to reproduce, expected behavior, and actual behavior.
->You prioritize defects based on severity and impact, clearly communicating the urgency of fixing critical issues to the development team and product owner.
->As you work closely with developers to resolve defects, you maintain open and constructive communication, discussing the root cause of issues and proposing potential solutions.
->You provide feedback on the effectiveness of defect fixes and collaborate with developers to verify the resolution of issues through retesting.


**Adaptability:** One should be Adaptable and can quickly adjust to changing project requirements, priorities, and timelines.

**_Example:_**
->Your testing team receives updated requirements from the project manager.
->Despite the tight deadline, you adapt quickly to the changes by reviewing the updated requirements and adjusting your testing approach accordingly.
->You analyze the new requirements and identify the areas of the application affected by the changes.
->You promptly update your existing test cases to reflect the changes, adding test scenarios to verify the new functionality.


**Problem-Solving Skills:** Need to demonstrate strong problem-solving skills, allowing to identify creative solutions to testing challenges and overcome obstacles encountered during testing

**_Example:_**
->During testing, you encounter a scenario where the system does not correctly handle email addresses with special characters, such as underscores or hyphens.
->Instead of simply reporting the issue, you analyze the underlying cause by examining the system's validation logic and the handling of special characters in email addresses.
->Based on your analysis, you identify that the system's regular expression for email validation does not account for certain special characters, causing the validation to fail.
->You propose a solution to update the regular expression pattern to include the necessary special characters, ensuring that the system accurately validates email addresses according to the requirement.

------------------------------------------------------------------

## Waterfall Methodology:
*************************

**Sequential Approach:** Waterfall follows a linear and sequential approach to software development, where each phase (requirements, design, implementation, testing, deployment) is completed sequentially and the next phase begins only after the previous one is finished.

**Detailed Planning:** Waterfall requires comprehensive planning and documentation upfront, with all requirements and design specifications defined in detail before development begins.

**Rigid Structure:** Waterfall is characterized by its rigid and inflexible structure, with limited room for changes once the project moves into the implementation phase.

**Longer Timeframes:** Due to its sequential nature and upfront planning, Waterfall projects typically have longer development cycles and may face challenges in adapting to changing requirements.

**High Documentation:** Waterfall emphasizes extensive documentation throughout the development process, including requirements documents, design specifications, and test plans.

-------------------------------

## Agile Methodology:
*********************
**Iterative and Incremental:** Agile follows an iterative and incremental approach to software development, where requirements, design, implementation, and testing are carried out in short, iterative cycles called sprints.

**Adaptive Planning:** Agile promotes adaptive planning and welcomes changes in requirements, design, and priorities throughout the development process. Requirements evolve and are refined collaboratively with stakeholders.

**Flexibility:** Agile is characterized by its flexibility and ability to respond to changing customer needs and market conditions. Teams can adjust priorities and make course corrections quickly based on feedback received during each iteration.

**Continuous Integration and Testing:** Agile encourages continuous integration and testing, with a focus on delivering working software incrementally at the end of each sprint. Testing is integrated throughout the development process, ensuring early detection and resolution of defects.

**Collaboration and Communication:** Agile emphasizes collaboration and communication within cross-functional teams, with a strong focus on customer collaboration and delivering value to the customer.

 **<u> Difference Between Waterfall and Agile methodologies</u>**

The main differences between Waterfall and Agile methodologies lie in their approach to planning, flexibility, adaptability to change, and level of customer involvement. 
->Waterfall is characterized by its sequential structure and detailed upfront planning. 
->Agile is known for its iterative and adaptive approach, fostering collaboration, flexibility, and continuous improvement.