Task 1- Manual Testing -April 21

Testing Methodologies & SDLC

1.What are the different types of Testing

There are various types of testing in software development, each serving a specific purpose in ensuring the quality and reliability of the software. Here are some common types

  1. Unit Testing: Testing individual components or modules of the software to validate that each unit functions correctly in isolation.

  2. Integration Testing: Testing the interaction between different units or modules to ensure they work together as expected.

  3. System Testing: Testing the entire system as a whole to verify that it meets specified requirements and functions correctly in its intended environment.

  4. Acceptance Testing: Also known as user acceptance testing (UAT), this involves testing the software from an end-user perspective to determine whether it meets user requirements and is ready for deployment.

  5. Regression Testing: Testing performed to ensure that recent changes or enhancements to the software have not adversely affected existing functionality.

  6. Performance Testing: Evaluating the performance of the software under various conditions such as load, stress, and scalability to ensure it meets performance requirements.

  7. Security Testing: Identifying vulnerabilities and weaknesses in the software's security measures to ensure it is protected against unauthorized access, data breaches, and other security threats.

  8. Usability Testing: Assessing the ease of use and user-friendliness of the software to ensure a positive user experience.

  9. Compatibility Testing: Checking the compatibility of the software with different operating systems, browsers, devices, and other software to ensure seamless functionality across various platforms.

  10. Smoke Testing: Conducting a quick and basic test to determine whether the software is stable enough for further testing.

  11. Exploratory Testing: Simultaneously learning about the software and designing and executing tests to uncover defects and areas of improvement.

  12. Ad Hoc Testing: Informal testing without predefined test cases, often performed to identify defects quickly or to explore specific aspects of the software.

These are just some of the many types of testing methodologies used in software development, and often, a combination of these approaches is employed to thoroughly assess the quality and performance of the software.

2.What are the different STLC phases?

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

  1. Requirement Analysis: In this phase, testers analyze the requirements documents to understand the functionality of the software system and identify the scope of testing.

  2. Test Planning: Test planning involves creating a test plan document that outlines the testing approach, objectives, scope, resources, schedule, and risks associated with the project.

  3. Test Case Development: Test cases are designed based on the requirements and test scenarios identified earlier. These test cases define the inputs, actions, and expected results for various test scenarios.

  4. Test Environment Setup: This phase involves setting up the required hardware and software environments for executing the test cases. It ensures that the testing environment closely resembles the production environment.

  5. Test Execution: Testers execute the test cases in the designated test environment. They record the test results, including any defects or deviations from expected behavior.

  6. Defect Tracking and Management: Defects encountered during test execution are logged, tracked, and managed using a defect tracking system. This phase involves prioritizing defects, assigning them to developers for resolution, and verifying fixes.

  7. Test Reporting: Test reports are generated to communicate the progress, status, and quality of the testing effort. These reports provide insights into test coverage, defect trends, and overall product quality.

  8. Test Closure: In the final phase, the testing team evaluates whether all testing objectives have been met. They prepare test closure reports, conduct post-mortem meetings to discuss lessons learned, and archive testing artifacts for future reference.

These phases can vary slightly depending on the specific methodology or framework used for software development and testing, but they generally cover the essential activities involved in testing a software system.

3.As a manual tester, what qualities do you possess? Provide examples to illustrate to your points.

As a manual tester, possessing certain qualities is crucial for effectively carrying out testing activities. Here are some key qualities:

  1. Attention to Detail: Manual testers need to pay close attention to every aspect of the software being tested to identify even the smallest defects or deviations from expected behavior. For example, when testing a web application, a manual tester might meticulously check each form field to ensure that input validation is working correctly and that error messages are displayed accurately for invalid inputs.

  2. Analytical Skills: Testers must be able to analyze requirements documents, user stories, and other project artifacts to understand the intended functionality of the software and devise test scenarios accordingly. For instance, a manual tester might analyze a new feature requirement and identify various user workflows to test comprehensively.

  3. Communication Skills: Effective communication is essential for manual testers to collaborate with developers, product managers, and other stakeholders. Testers need to clearly articulate defects they find, provide detailed steps to reproduce issues, and communicate testing progress and status. For example, a manual tester might write clear and concise defect reports, including screenshots and detailed descriptions, to convey issues to the development team.

  4. Critical Thinking: Manual testers should be able to think critically to assess risks, prioritize testing activities, and determine the most appropriate test approaches. For instance, when faced with tight deadlines, a manual tester might prioritize testing efforts based on the most critical functionalities or areas of the application that are likely to have the highest impact if they fail.

  5. Problem-Solving Skills: Testers often encounter complex issues and unexpected scenarios during testing. Being able to think creatively and devise solutions to testing challenges is important. For example, if a manual tester encounters a situation where automated tests cannot be used, they may devise alternative testing strategies such as exploratory testing to uncover defects.

  6. Persistence and Patience: Testing can be repetitive and sometimes tedious, especially when executing large sets of test cases or performing regression testing. Manual testers need to exhibit patience and persistence to execute tests diligently and thoroughly, ensuring that all possible scenarios are covered.

  7. Domain Knowledge: Depending on the industry or domain of the software being tested, manual testers may need to possess domain-specific knowledge to understand user needs and behaviors better. For example, a manual tester working on healthcare software should have an understanding of medical terminology and workflows to effectively test the application's functionality.

These qualities, combined with technical skills and domain expertise, enable manual testers to contribute significantly to the quality assurance process and ensure the delivery of high-quality software products.

4.What is the difference between Agile and Waterfall methodologies in SDLC?

Waterfall and Agile methodologies are two different approaches to software development, each with its own set of principles, practices, and characteristics. Here are the key differences between the two:

  1. Sequential vs. Iterative Approach:

    • Waterfall: In the Waterfall model, the software development process follows a linear and sequential approach, with distinct phases such as requirements gathering, design, implementation, testing, and deployment. Each phase must be completed before moving on to the next.

    • Agile: Agile methodologies, on the other hand, follow an iterative and incremental approach. Development work is divided into small, manageable iterations or sprints, typically lasting a few weeks. At the end of each iteration, a potentially shippable product increment is produced, allowing for continuous feedback and adaptation.

  2. Flexibility and Adaptability:

    • Waterfall: Waterfall is less flexible and adaptable to changing requirements once the project has started. Changes to requirements often require going back to earlier phases, which can be time-consuming and costly.

    • Agile: Agile methodologies embrace change and prioritize responding to customer feedback and evolving requirements. Agile teams can adapt to changing priorities and requirements more easily, incorporating feedback into future iterations.

  3. Customer Involvement:

    • Waterfall: Customer involvement typically occurs primarily at the beginning and end of the project, with limited opportunities for feedback and collaboration during the development process.

    • Agile: Agile methodologies emphasize frequent collaboration and communication with customers and stakeholders throughout the development process. Customers are involved in providing feedback, prioritizing features, and validating incremental deliverables.

  4. Risk Management:

    • Waterfall: Waterfall projects carry higher inherent risks, as potential issues may not be discovered until late in the development cycle. This can lead to delays and budget overruns if significant changes are required.

    • Agile: Agile methodologies mitigate risks through early and continuous delivery of working software. By delivering increments of functionality iteratively, risks are identified and addressed earlier in the development process.

  5. Documentation:

    • Waterfall: Waterfall projects typically require extensive documentation upfront, including detailed requirements specifications, design documents, and test plans.

    • Agile: Agile methodologies prioritize working software over comprehensive documentation. While documentation is still important, Agile teams focus more on collaboration and delivering value to customers through working software.

  6. Team Structure and Roles:

    • Waterfall: Waterfall projects often have predefined roles and responsibilities, with distinct teams for each phase of the project (e.g., requirements analysts, developers, testers).

    • Agile: Agile teams are cross-functional, with members from different disciplines (e.g., development, testing, design) working together collaboratively. Team members may take on multiple roles and responsibilities to achieve the project's goals.

Overall, while Waterfall is characterized by its structured and sequential approach, Agile methodologies offer greater flexibility, adaptability, and customer collaboration, making them particularly well-suited for projects with evolving requirements and dynamic environments.