Manual testing is a software testing process in which test cases are executed manually (By human) without using any automated tool. All test cases executed by the tester manually according to the end user’s perspective. It ensures whether the application is working as mentioned in the requirement document or not. Manual Testing is one of the most fundamental testing processes as it can find both visible and hidden defects of the software. The developer fixed the defects and handed it to the tester for retesting. Manual testing is mandatory for every newly- developed software before automated testing.
The procedure of Manual Testing
Understand The Requirements / Requirement Analysis:
For manual testing to be successful, a tester first needs to understand the requirements, which means, how the software is required to work. Documents containing all relevant information about the application under test are known as requirements, or user stories if written using that format. The main goal is to get the software as close as possible to being bug-free.
Write Test Cases / Test Plan Creation/ Test Case Creation:
After the requirements have been studied and understood, it’s time to write test cases. Test cases work as reference guides for testers, laying out the steps and instructions for testing the different functions and scenarios within the software application.
Some testers still use Excel to document their test cases, but test case management tools such as Jira can help organize test cases more efficiently, and improve the productivity of a tester.
Conduct The Tests / Test Case Execution:
After writing the test cases and preparing the testing environment, it’s time to begin testing. Once each test has been completed, it should be marked as having passed, failed, or skipped. When doing manual testing, keep notes on what has happened to cause a test to fail because it is useful to have access to these metrics for future planning.
Exploratory testing allows testers to work without a script and follow their imaginations, responding to lines of enquiry as they appear.
Log Bug Reports / Defect logging:
As well as testing, the tester is also responsible for logging details of all found bugs or defects. Logging richly detailed information about the bugs will benefit the development team later. Include steps for replicating the bug (often the test case steps), expected and actual results, plus any relevant attachments to help the development team understand the issue such as screenshots, screen recordings, or export files.
Defect Fix & Re-Verification
When developer makes necessary code changes and verifies the changes then he/she can make bug status as ‘Fixed’ and the bug is passed to testing team. At this stage the tester do the retesting of the changed code which developer has given to him to check whether the defect got fixed or not.
Why and When to Test Manually
Manual testing is a vital element in software building because automated testing can’t cover everything. After all, it’s humans who will be using your software, so it makes sense that humans are involved in testing your software. Manual testing finds and solves more usability issues than automated testing because it allows the tester to be flexible during the test.
Methods of Manual Software Testing
1- Black Box Testing:
As the name suggests, black box methodology means that the tester does not have knowledge about the code or structure of the application. The tester interacts with the application and test the functional and non-functional behavior of the application.
2- White Box Testing:
White box testing is the testing methodology where tester knows about the code and structure of the application. It is also known as glass box and transparent box testing. This is used by developers to perform unit testing. White box testing techniques include control flow testing, data flow testing, branch testing, statement coverage, decision coverage and path testing.
Note that the white box testing methodology is commonly used by the developers, and not testers.
3- Grey Box Testing:
Grey box testing is the mix of white box and black box testing. The aim of grey box testing is to identify the bugs and defects either due to structure or improper usage of the application. Grey box testing is used when you need to fix a critical issue in web applications.
Unit testing involves the testing of each unit or individual component of the software application. It is the first level of software testing. The aim behind unit testing is to validate unit component with its performance.
A unit is a single testable part of a software system and tested during the development phase of the application software.
Unit Testing Techniques:
Unit testing uses all white box testing techniques as it uses the code of software application:
⦁ Data flow Testing
⦁ Control Flow Testing
⦁ Branch Coverage Testing
⦁ Statement Coverage Testing
⦁ Decision Coverage Testing
System Testing includes testing of a fully integrated software system. Generally, a computer system is made with the integration of software (any software is only a single element of a computer system). The software is developed in units and then interfaced with other software and hardware to create a complete computer system.
System testing is a series of different type of tests with the purpose to exercise and examine the full working of an integrated software computer system against requirements.
Integration testing is the second level of the software testing process comes after unit testing. In this testing, units or individual components of the software are tested in a group. The focus of the integration testing level is to expose defects at the time of interaction between integrated components or units.
The goal of integration testing is to check the correctness of communication among all the modules.
Acceptance testing is formal testing based on user requirements and function processing. It determines whether the software is conforming specified requirements and user requirements or not. It is conducted as a kind of Black Box testing where the number of required users involved to test the acceptance level of the system.
Manual Testing Techniques
1. Exploratory Testing:
Exploratory testing is the testers’ initial steps of experimenting with the software to get familiar with the features and functionalities of an application. The manual tester explores each and every- feature of the system and observe its response to different inputs.
Exploratory testing seems very efficient at first because you don’t spend any time or effort in creating the test cases and it yield results quickly
2. Usability Testing:
A few common grounds on which usability of the product is measure include the consistency, layout and intuitiveness of the application to guide the user and takes user to what he is looking for.
3. Regression Testing:
Regression testing technique is used to perform integration and system testing. Regression testing is basically focused on testing the existing functionalities which might have affected because of any bug fix, new feature or change in code. Regression can take a lot of time for bigger applications.
4. Smoke Testing:
It is the type of testing which is focused on testing the big functionalities of the application. It is used for the final check when the release is to be handed over to the users or client.
Advantages of Manual Testing
- In comparison to automated testing, manual testing is less extensive and cost-efficient.
- Because of the involvement of the human element, we get accurate user interface feedback in testing.
- The user doesn’t need to change the entire code, in order to make small quick fixes in the app.
- With manual testing, we can get the exact replication of the real user experience on the web and mobile apps.
- The manual testing approach is able to handle difficult use case situations better than the automated testing.
Disadvantages of Manual Testing
⦁ GUI objects size difference and color combination etc. is not easy to find out in manual testing.
⦁ Load testing and performance testing is not possible in manual testing.
⦁ Running test manually is very time consuming job.
⦁ Regression Test cases are time consuming if it is manual testing.
Manual Testing vs Automation Testing
⦁ Manual testing requires human intervention for test execution.
⦁ Manual testing will require skilled labor, long time & will imply high costs.
⦁ Any type of application can be tested manually, certain testing types like ad-hoc and monkey testing are more suited for manual execution.
⦁ Manual testing can become repetitive and boring.
⦁ Automated Testing is use of tools to execute test cases
⦁ Automated testing is recommended only for stable systems and is mostly used for Regression Testing.
⦁ The boring part of executing same test cases time and again is handled by automation software in Automation Testing.