Once we develop a software component/ product, we have to analyze and inspect its features and also evaluate the component for potential errors and bugs so that when it gets delivered in the market, it is free of any bugs and errors. It is the point where we need extensive testing of the software. Software testing can be of two types: Manual and Automated. In this article, we will discuss the concepts related to manual testing of an application by covering the details under the following topics:
- What is manual testing?
- Why do we need it?
- When to do it?
- What are different types of manual testing?
- How to perform it?
- What are it's advantages/disadvantages?
- And, what is the difference between Manual and Automated testing?
What is Manual Testing?
As the name suggests, Manual testing is the one in which application testing happens manually. The test cases/scenarios are executed one by one by Testers (professional involved in software testing) manually without using any readymade tools, and then the results are verified.
So manual testing is a process in which we compare the behavior of a piece of software (it can be a component, module, feature, etc.) with the predefined, expected behavior which we set during the initial phases of SDLC.
Manual verification is the most primitive form of software testing. A novice can do it without any knowledge of any particular tool. Even a student, who has a basic understanding of the application or testing of a system, can perform manual verification. Nonetheless, it is an essential step in the software testing cycle. Any new system or applications must be tested manually before automating the testing.
Majorly, it helps in ensuring the quality of the application by ensuring the following points:
- Ensuring that the application meets the defined system requirements.
- Finding out any bugs/errors which may arise while running the application.
Before moving deep into understanding the concepts of manual testing, lets first try to understand why do we need manual verification of an application in the first place?
Why do we need manual testing?
With the changing trends in the software industry, more and more software professionals prefer automated testing, but there are still multiple reasons which justify the need for manual testing. Few of them are:
Human Perspective: The basic usability and look & feel of the application can only be gazed and evaluated by Humans. As the software is developed for humans only, so they only can do better justice of validation from a user experience perspective.
A broader perspective and variation of the System workflows: Manual verification always gives a broader perspective of the overall application. As the human mind will always be in an exploratory form, instead of a coding mechanism that executes the same steps each time. So, it will provide more expansive coverage for the system validation.
Cost of automation: Sometimes, due to the timelines or size of the project, the extended efforts for the automation are not justifiable, and we always prefer a quick manual validation over the automation testing.
Un-automatable scenarios: There can be multiple scenarios that are either not worth automating and doesn't give clear confidence of the user behavior when just testing using automation. For Example, there have been multiple scenarios on mobile devices, which need user interactions, such as "Tap & Pay", which sometimes have different behaviors when automated using tools and when a person manually validated them.
Considering all these points, manual testing has still maintained its place in the validation phase of the fast-paced software development cycle. Now, there are some specific use-cases where manual verification can be the best fit. Let's see what those are?
When to do manual testing?
So, the question remains as to when exactly we should do manual testing or which are the scenarios that compel us to opt for this type of testing? We go for such testing under the following scenarios:
- Adhoc testing: Adhoc testing, as the name suggests, is unplanned testing. It doesn't have any specific approach defined neither it has any documentation associated with it. Adhoc testing is entirely informal, and the only important factor is the knowledge and insight of the tester. Hence in such cases, manual testing is a good option. You can refer to the link "Adhoc testing" for detailed knowledge of Adhoc testing.
- Usability testing: Another scenario where manual testing is required is the case of usability testing. We perform usability testing to assess how convenient, efficient, and user-friendly the product has turned out to be for the end-users. For this assessment, we require the highest manual intervention and cannot rely on tools to assess it for us. So to evaluate the product from the end-user point of view, we opt for manual testing. You can refer to the link "Usability testing" for detailed knowledge of Usability testing.
- Exploratory testing: When the documentation of the test is poor, and we have a short time for execution, in such cases, this exploratory testing requires analytical skills and creativity of the tester and also the tester's product knowledge. When we have to perform exploratory testing, we go for manual verification as we cannot use tools with little knowledge and documentation.
Let's now understand the various types of manual testing which a QA can perform on an application.
What are the different types of manual testing?
Depending on how and when we perform the manual test, we broadly categorize it into the following types:
Let's understand some necessary details about all these types testings:
Validation of an individual software component or module is called Unit Testing. Generally, the developers perform it and not by the QA Engineers, as it requires detailed knowledge of the internal program design and code.
Integration testing is testing of a subsystem which comprises two or more integrating components. Its carried out once the individual components have been unit tested, and they are working as expected. Its carried out to find defects in the interfaces and the interactions between the integrated components.
System Testing means testing the system in its entirety. All the developed components are unit tested and then integrated into an application. Once this finishes, we test the entire system rigorously to ensure the application meets all the quality standards.
User Acceptance Testing – UAT is a type of testing performed by the Client to certify the system concerning the requirements that got agreed upon earlier. We perform this testing in the final phase of testing before moving the software application to the Market or Production environment. The client executes this type of testing in a separate environment (similar to the production environment) & confirm whether the system meets the requirements specifications.
Black Box Testing
In the Black Box Testing method, testing happens without knowing the internal codes and structure of the program. The testing happens from the customer's point of view, and the tester knows only about the inputs and the expected outputs of the application. The tester is not aware of how the requests are being processed by the software and giving the output results.
White Box Testing
White Box Testing is the testing method in which the tester knows the internal codes & structure of the software. The tester chooses inputs and executes the test by giving inputs to the system through the codes and determines the appropriate outputs. The main focus of White Box Testing is on strengthening the security and on improving the design and usability of the software.
Let's now understand what process we generally follow while performing a manual test of the application:
How to perform manual testing?
A complete manual testing process consists of the following steps:
Let's understand the details of all these steps:
Step 1: First, gather the requirements using the requirement analysis step. Once we gather and understand the requirements, we know what the expected behavior is and what we need to test, and when we say we have found the defect.
Step 2: Secondly, once we understand the requirements, we identify and draft the test cases that will cover all the requirements contained in the project documentation. Additionally, the test cases help us follow a sequence to test functionality and various test scenarios such that we cover the entire application and check expected results.
Step 3: Once test cases are ready, the tester has to review the test cases with the team leader and with the client if need be. By examining the test cases, we will find glitches, if any, and correct them before executing the test cases.
Step 4: Once test cases are ready, and the test environment sets, we execute the test cases one by one. Each test case will have one of the following states:
- Passed: If the scenario under test works as expected.
- Failed: If the working is not as expected.
- Skipped: If the test case cannot complete. It may be because of some limitations or unforeseen circumstances.
Step 5: As the test cases execute, we have to report the identified bugs and defects to the concerned developer and submit a bug report.
Step 6: Finally, we create a detailed test report that will include detailed information on how many defects or bugs we found, how many test cases need to be rerun, how many test cases failed, and how many we skipped. Once we fix the bugs and defects, execute the test cases that could not verify the fixed bugs.
Conclusively, when we have understood the manual testing process, let's understand what the advantages and disadvantages of performing a manual test of the application under test are:
What are the advantages/disadvantages of manual testing?
The below lists a few of the significant advantages and disadvantages of manual testing:
|Manual testing of an application identifies most of the issues, including the look and feel issues of the application.||Manual testing is time-consuming.|
|Visual components like text, layout, other components can easily be accessed by the tester, and UI and UX issues can be detected.||It isn't easy to find size difference and color combination of GUI objects using a manual test.|
|It usually has a low cost of operation as we do not use any tools or high-level skills.||Load testing and performance testing is impractical in the manual tests.|
|It is well-suited in case we make some unplanned changed to the application as it is adaptable.||When there is a large number of tests, then running tests manually is a very time-consuming job.|
|Humans can observe, judge, and also provide intuition in case of manual tests, and this is useful when it comes to user-friendliness or rich customer experience.||Regression Test cases performed using manual tests are time-consuming.|
Now, let's have a quick look at the significant differences between manual and automation testing:
What is the difference between Manual and Automated testing?
Below are a few of the significant differences between manual and automation testing:
|Comparison Parameter||Manual Testing||Automated Testing|
|Execution||Testers manually execute test cases.||Uses tools to schedule and execute the test cases.|
|Time and cost||The manual test takes up lots of time and implies a high cost.||Automated testing: since the test cases are automated, it saves time and is very low.|
|Type of application||We can manually test any application.||Automated testing is beneficial only for stable systems.|
|Nature||The process is such that it is repetitive and boring.||Since the automation tool handles the execution, the tester skips the boring part.|
|Reliability and Accuracy||Low reliability as manual verification is prone to human error||High accuracy since all test cases are automated and executed by tools|
|User interface||More user-friendly and guarantees improved customer experience||Does not guarantee user-friendliness or good customer experience.|
- Manual testing requires creative skill and imagination, using which a tester can imagine various scenarios to test a particular application.
- Additionally, the manual tester is not required to have expert software skills, but creativity and imagination are essential.
- Although nowadays, we can test almost all applications using automation, manual testing still is required as the base of testing.
- Also, we can find specific bugs only by testing the application manually.