Task 1 - Manual Testing
Published: 2023-12-09 05:56:32

**QN1 : What are the different types of Testing?**
The Software testing is broadly classified into Manual Testing and Automation Testing.
**Manual Testing**: Testing any software or an application according to the client's needs without using any automation tool is known as manual testing.
Automation Testing: Automation Testing is a software testing technique that is performed using special automated testing software tools to execute a test case suite.
Manual testing is further classified into many subcategories which are explained as below:
**• White Box Testing
• Black Box Testing
• Grey Box Testing**
<u>White Box testing</u> : In white-box testing, the developer will inspect every line of code before handing it over to the testing team or the concerned test engineers. The purpose of implementing the white box testing is to emphasize the flow of inputs and outputs over the software and enhance the security of an application.
White box testing is also known as open box testing, glass box testing, structural testing, clear box testing, and transparent box testing.
<u>Black Box testing</u> : In this testing, the test engineer will analyse the software against requirements, identify the defects or bug, and sends it back to the development team. The main objective of implementing the black box testing is to specify the business needs or the customer's requirements.
Black box testing is a process of checking the functionality of an application as per the customer requirement. The source code is not visible in this testing; that's why it is known as black-box testing.
Black Box testing is classified into Functional testing and Non-functional testing.
<u>Functional Testing</u> : In functional testing, all the components are tested by giving the value, defining the output, and validating the actual output with the expected value.
Functional testing is a part of black-box testing as its emphases on application requirement rather than actual code. Functional testing is also known as Component testing.
Functional testing is further classified into the following:
1) Unit Testing - With this functional testing type, smallest functional and testable unit of code is tested during unit testing. Mostly, performed by developers, since it is a White-Box testing technique.
2) Integration Testing - Two or more unit tested components of the software are integrated together, and tested to validate the interaction between them is as expected. The communication of commands, data, DB calls, API calls, Micro-services processing is happening between the units and there is no unexpected behaviour observed during this integration. It has 3 approaches called Top-Down Approach, Bottom-Up Approach and Hybrid Approach.
3) System Testing - All components of the system are combined and the system is tested for compliance and correctness against the requirement specifications (Functional or System).
4) Regression Testing - After some enhancements or code fixes by developers, it becomes very important to run the regression test suite. Regression is run to ensure that these code changes have not hampered the existing working functionalities or any new defect is not injected in the code.
5) Smoke Testing - After development, when a new build is released, Smoke Testing is performed on the application to ensure that all end-to-end major functionalities work. Smoke testing is usually done for the builds created during the initial phase of development for an application, which are not yet stable.
6) Sanity Testing - Sanity Tests are selected from the Regression Test suite, covering major functionalities of the application.
7) Acceptance Testing - During Acceptance Testing, the acceptance of the application by the end-user is tested. It is performed just after the System Testing and before the final release of the application in the real world.
<u>Non-functional Testing</u> : It provides detailed information on software product performance and used technologies.
Non-functional testing will help us minimize the risk of production and related costs of the software.
It is classified into:
• Load Testing
• Stress Testing
• Scalability Testing
• Stability Testing
**Grey Box testing** : Another part of manual testing is Grey box testing. It is a collaboration of black box and white box testing.
Since, the grey box testing includes access to internal coding for designing test cases. Grey box testing is performed by a person who knows coding as well as testing

**QN2: What are the different STLC phases?**
The Software Testing Life Cycle (STLC) is a systematic approach to testing a software application to ensure that it meets the requirements and is free of defects. It is a process that follows a series of steps or phases, and each phase has specific objectives and deliverables. The STLC is used to ensure that the software is of high quality, reliable, and meets the needs of the end-users.	
Phases of STLC
<u>Requirement Analysis</u> : In this phase quality assurance team understands the requirements like what is to be tested.  
Creating a requirement traceability matrix (RTM) to map requirements to test cases

<u>Test Planning</u> : Test Planning is the phase where all testing plans are defined. In this phase, team lead and team calculate the estimated effort and cost for the testing work.

<u>Test Case Development</u> :  In this phase testing team notes down the detailed test cases. The testing team also prepares the required test data for the testing. 

<u>Test Environment Setup</u> :  The test environment decides the conditions on which software is tested.  In this process, the testing team is not involved. either the developer or the customer creates the testing environment.

<u>Test Execution</u> : After the test case development and test environment setup test execution phase gets started. In this phase testing team starts executing test cases based on prepared test cases in the earlier step.
The activities that take place during the test execution stage of the Software Testing Life Cycle (STLC) include:
•	Test execution
•	Defect logging
•	Test data preparation
•	Test environment setup
•	Test execution
•	Test result analysis
•	Defect retesting
•	Test Reporting

<u>Test Closure</u> : Test closure is the final stage where all testing-related activities are completed and documented. The main objective of the test closure stage is to ensure that all testing-related activities have been completed and that the software is ready for release.
The main activities in test closure stage include:
•	Test summary report
•	Defect tracking
•	Test environment clean-up
•	Test closure report
•	Knowledge transfer
•	Feedback and improvements

**QN3:As a manual tester, what qualities are you required to possess?**

**Attention to detail, curiosity, creativity, strong analytical and problem-solving skills, communication and collaboration skills, patience and persistence, and a passion for quality** is the important quality I feel a manual tester is required to posses. I believe I posses these qualities and by cultivating these qualities, testers can make a significant contribution to the success of the software development process and help to deliver high-quality products that meet customer needs and expectations.
The below technical skills are also a must to be a good manual tester and I strongly believe in improving these skills as per the market demand.
**•  Experience in project management and QA approaches
•  Familiarity with agile frameworks
•  Working knowledge of testing tools, programming languages
•  Error documentation and debugging
•  Test management software experience**

Apart from these, I also do believe that I have a good soft-skills as mentioned below that helps me to communicate and execute my thought process to deliver a high quality product.
**•  Written and oral communication skills
•  Attention to detail
•  Team working and critical thinking
•  Professionalism with a team focus
•  Interpersonal skills**

The QA tester responsibilities includes the following activities and I am good at the below mentioned skills/responsibilities.
•  Define testing objectives and the methodology to fulfill them
•  Review, analyze system specifications, and test procedures
•  Early testing of applications for early identification of errors
•  See to it that the test strategy is aligned with the development requirements
•  Report errors, document logs, and solve technical problems with the development team through bug tracking tools like Bugzilla, etc.
•  Root cause analysis of errors and defects
•  Executing debugging programs for fixation of defects and bugs
•  Design and execute test scripts, and test cases, and evaluate results for manual and automated tests

**QN4:What is the difference between Waterfall and Agile methodologies in SDLC?**

Agile and Waterfall are two well-known project management methodologies. Both of them are popular in software development but each is best suited for different types of projects. The main difference is that **Waterfall is a linear system** of working that requires the team to complete each project phase before moving on to the next one while **Agile encourages the team to work simultaneously on different phases** of the project.
**Agile Methodology**
•	Approach: Frequent stakeholder interaction
•	Flexibility: High
•	Requires: Team initiative and short-term deadlines
Agile methodology was developed as a response to Waterfall’s more rigid structure. As a result, it’s a much more fluid form of project management. A software development project can take years to complete, and technology can change significantly during that time. Agile was developed as a flexible method that welcomes incorporating changes of direction even late in the process, as well as accounting for stakeholders’ feedback throughout the process.
In Agile, the team will work on phases of the project concurrently, often with short-term deadlines. Additionally, the team, rather than a project manager, drives the project’s direction. This can empower the team to be motivated and more productive, but also requires a more self-directed team.
**Waterfall Methodology**
•	Approach: Hands-off; goals and outcome established from the beginning
•	Flexibility: Low
•	Requires: Completing deliverables to progress to the next phase
Waterfall methodology is a linear form of project management ideal for projects where the end result is clearly established from the beginning of the project. The expectations for the project and the deliverables of each stage are clear and are required in order to progress to the next phase.