When a software application is created it needs to be tested to ensure that both the functional specification i.e. the functional requirements as well as the non-functional requirements i.e. requirements like performance, usability, security etc are met.
This testing can be performed manually and using an automation tool also. Testing when performed manually is called Manual Testing, which we will be studying in this tutorial. Whereas, testing performed using an automated tool is known as Automation testing.
So, let’s get started with this tutorial. Here we will study about the formal definition of manual testing, the manual testing process, the need for manual testing, its limitations, the different types of manual testing, some tips to become a better tester and at the end some common myths surrounding manual testing.
What is Manual Testing?
Manual testing a type of testing that involves validation of the requirements of the application by executing a predefined set of test cases manually without the use of any automation tool.
Let’s now see in detail, how the manual testing is carried out.
Manual Testing Process
- Requirement Understanding - In this phase, all the requirements are gathered and analyzed. This is the most important phase of testing as the requirements is the very basis of the test cases and the overall testing of the application.
- Test plan and test strategy - In this phase, a document containing the scope and objective of testing is defined (Test Plan) along with deciding some principles that will define how testing will be carried out (Test Strategy).
- Test case creation - After test planning and test strategy, we prepare test cases based on the functional and non-functional requirements of the application.
- Test case execution and defect logging - Once test cases are ready and application is available for testing, we begin with test case execution, marking each test case as pass-fail and raising defects for each failure.
- Retesting and regression - After the bug fixing by developers, we retest the bug fixes and also do regression testing, to ensure that the fixes don’t adversely affect other functionalities.
- Test report sharing - Once the whole test execution cycle gets complete, the test results are shared with the relevant stakeholders along with a set of known issues, if any.
Why do we need Manual Testing?
Let’s see some advantages of manual testing-
- Manual testing helps in finding the defects before delivering to the customer, thus maintaining the application quality.
- It helps in early identification of the bugs. Bugs found by the customer or even in the later stage of the project are difficult to fix and increase the cost of the project. Hence, efficiently carried out manual testing helps in avoiding such situation by early detection of issues.
- It helps in ensuring the conformance to not only the functional requirements but non-functional requirements as well like - performance, usability and user-friendliness.
Disadvantages of Manual Testing
- Time consuming - It is a very time consuming process as testers have to create exhaustive test cases and then execute each and every step of the test cases. Also, the documentation of the test results with actual results takes time.
- Requires more resources - As compared to automation testing, in case of manual testing more resources are required to create and execute the test cases.
- Prone to human errors - The manual testing relies heavily on the ability or skills of the person creating and executing the test cases. Even with the predefined requirements and test steps, two testers can come up with different test results based on their understanding.
- Not all testing can be done manually - Some of the testing like - Performance testing, security testing or testing of scenarios like distributed testing, multi-threaded operation testing cannot be done effectively without any automation, performance or security tool.
Tips for better Manual Testing
In order to be good at manual testing, we have curated certain qualities that will help you become a better manual Tester-
- Get thorough understanding of the requirements - For better manual testing, the right and complete understanding of the requirements is very vital. It helps in improving the test coverage thereby improving the overall testing.
- Good Domain knowledge - Good understanding of the domain is also very important as it helps in taking care of unspecified requirements or the non-functional requirements e.g a person having knowledge of the e-commerce domain can effectively test any e-commerce application even with limited set of requirements.
- Technical skills - Having technical skills like ability to query database, understanding of table structure, knowledge of client server architecture etc helps in understanding of the internal working of the application and data flow. This in turn helps in creating better test cases.
- Attention to details - While testing, attention to detail helps in meticulously testing each and every feature of the application.
- Do not assume - As testers grow in experience, at times they tend to take certain things for granted but no matter how simple or trivial the functionality to be tested is, the tester should not assume that it will work without validating the same.
- Good communication skills - As a tester, one has to deal with different stakeholders, the fellow developers, managers and sometimes with the client representatives also. Good communication and interpersonal skills help testers in efficient gathering of requirements as clearly articulated queries helps in avoiding any requirement gaps.
Manual testing myths
- Automation and AI will remove manual testing - First of all, there are many kinds of testing that can only be performed by humans like exploratory testing, usability testing, UI testing etc. Secondly, even for conventional form of testing, manual testing is required till the application becomes stable and automation scripts get written. Also, 100% automation coverage is nearly impossible, so manual testing is there to stay.
- Testing starts only after development gets completed - Testing phase can start as early as the requirement elicitation phase and corresponding to software development activity, there can be a testing activity in each of the phases. A very common SDLC model implementing the same is the V-model.
- Testing is an easy job - Efficient testing requires complete knowledge of application to be tested, the domain knowledge, database structure and many a times the knowledge of the internal architecture as well. Apart from that a tester needs to meticulously test each and every aspect of the application without assuming anything and then clearly articulate the issues to the developers. All this means, testing is not an easy job.
- Testing increases project cost - The very aim of testing is to ensure software quality and early bug detection. Bugs found in early phases of the application and before project delivery greatly reduces the bug fixing cost. Hence, in the long run, testing doesn’t increase the project cost instead it helps in reducing the bug fixing cost.
In this post, we tried to cover the topic manual testing, right from its definition to its needs, limitations, tips and myths. If you want to learn the different manual testing concepts then I strongly suggest our tutorial series on Manual testing tutorial. In this tutorial series, we not only covered theoretical aspects of manual testing but also provided practical resources like test cases of different scenarios, tutorials on testing different types of applications etc.
Thanks!! Happy testing.