What is Manual Testing?
Manual testing involves QA engineers testing a software application manually to find bugs. They follow a written test plan with specific test scenarios and analyze the website or app’s performance from a user’s point of view. QAs check if the software behaves as expected, and any differences are noted as bugs1.
Characteristics of Manual Testing:
- Human Performance: Human testers use the product the same way as end users during manual testing. By manually carrying out test cases, they provide input and observe the results to find errors.
- Investigative Testing: Exploratory testing, where testers examine the application without using pre-defined test cases, is common in manual testing. It helps locate unforeseen problems and evaluate the user experience.
- Flexibility: Testers can adapt to changing conditions and requirements throughout the testing process. They can adjust test cases based on observations or explore new ideas.
- Initial Testing: Manual testing can begin early in the software development life cycle, even before the program is fully developed. Exploratory testing helps identify issues early in the development process.
- Examining Complex Situations: Manual testing is effective for testing complex scenarios that might be difficult to automate. Testers can evaluate interactions between various components and complex workflows.
- Testing User Interfaces (UI): Manual testing assesses an application’s user interface. Testers evaluate the general design, responsiveness, appearance, and feel from a user’s perspective2.
Steps in Manual Testing:
- Analyze Requirements: Understand what the software is intended to do by analyzing functional requirements and user expectations.
- Develop a Test Plan: Create a clear test plan that outlines the testing approach, scope, and objectives.
- Write Test Cases: Document test cases that cover all the requirements defined in the software requirement specification document.
- Set Up the Test Environment: Prepare the necessary environment (hardware, software, and data) for testing.
- Execute Test Cases: Run the test cases and observe the software’s behavior.
- Log Defects: If any issues are found, log them as defects.
- Analyze Results and Reporting: Evaluate the test results and create reports.
- Retesting and Regression Testing: After defects are fixed, retest to ensure they are resolved, and perform regression testing to verify that existing functionality remains unaffected3.
Why Manual Testing?
- Bug-Free and Stability: The main goal of manual testing is to ensure that the application is bug-free, stable, conforms to requirements, and delivers a reliable product to customers.
- Familiarity with the Product: Manual testing helps test engineers become more familiar with the product and gain an end-user perspective, enabling them to write accurate test cases.
- Defect Verification: Manual testing ensures that defects are fixed by developers and that retesting has been performed on the fixed defects
Manual testing encompasses various methodologies, each tailored to specific testing needs. Let’s explore the different types of manual testing:
- White Box Testing:
- Also known as structural testing, white box testing is performed by developers. They meticulously examine every line of code before handing it over to the test engineer. Since the code is visible during testing, it’s called white box testing1.
- For more information about white box testing, you can refer to this link.
- Black Box Testing:
- Test engineers conduct black box testing. They verify the functionality of an application or software based on customer/client requirements. In this type of testing, the code is not visible during the testing process, hence the name black box testing1.
- For more information about black box testing, you can refer to this link.
- Gray Box Testing:
- Gray box testing combines elements of both white box and black box testing. Testers who understand both coding and testing perform gray box testing.
- It allows for a holistic evaluation of the application, considering both internal code structure and external functionality1.
- Acceptance Testing:
- This type of testing ensures that the software meets the specified acceptance criteria and is ready for deployment. It involves validating whether the application satisfies user requirements and business needs.
- System Testing:
- System testing evaluates the entire system as a whole. It verifies that all components work together seamlessly and meet the defined specifications.
- Integration Testing:
- Integration testing focuses on interactions between different modules or components within the system. It ensures that data flows correctly between interconnected parts.
- Unit Testing:
- Unit testing examines individual units or components in isolation. Developers typically perform unit testing to verify the correctness of specific functions or methods.
- Sanity Testing:
- Sanity testing quickly checks whether a new build or feature is stable enough for further testing. It helps identify major issues early in the development cycle.
- Smoke Testing:
- Smoke testing validates the basic functionality of the application after each build. It ensures that critical features are working before proceeding with more extensive testing.
- Regression Testing:
- Regression testing confirms that recent code changes haven’t introduced new defects or broken existing functionality. It’s essential to maintain software quality during development.
- User Interface (UI) Testing:
- UI testing assesses the application’s user interface. Testers verify the design, responsiveness, appearance, and overall user experience.