Imagine building an application like WhatsApp and putting it on the market. However, when users download and start using the software, they can’t send or receive messages. This will immediately make the software unpopular, and it will lose users. This scenario could have been avoided if software testing had been performed.
Every software you know of today went through the testing process. Before an application is sent to end users, the stakeholders need to ensure that it is market ready and doesn’t contain a lot of bugs. There are two main ways software testing can be completed: manually or automatically. As a rule of thumb, manual testing should be performed before any automation is done. In this article, we will talk about manual testing and the different types of this critical kind of testing.
What Is Manual Testing?
As the name suggests, manual testing is software testing that is carried out with active, physical effort. In other words, the testing is done manually. No tools or automation are used, and the experts must find the bugs themselves. This is different than automated testing, which is done with the help of scripts and programs like Selenium.
Now let’s discuss the process that testing experts go through when carrying out tests for software and apps.
Software Testing Process
Even though there are different types of manual testing, there is a common process that must be followed to carry out a good test.
Requirements analysis: The first phase in the manual testing process is to analyze the customer requirements for the app. Here, the tester is trying to find any requirements gaps. They need to ensure that all the customers’ requirements have been included in the app. For example, the customer asks the company to build an e-commerce website where users can add and remove items to the cart. The QA specialist reads through the requirements and tells the developers whether this functionality has been implemented or not.
Test planning: Once you understand the requirements, the next step will be to plan how the tests should be performed. In this phase, the tester writes the plan using information gathered from the previous phase. They write a plan based on the type of manual testing they wish to perform. The main aim is to target the set of requirements and organize the structure of the testing.
Test-case creation: In this step, the tester needs to come up with scenarios and create test cases for the requirements.
Test execution: Once a tester has the requirements, they can start executing the tests to check for bugs in functionalities. With the e-commerce site, for example, you need to manually open the website and try to add and remove items from the cart. If you find a bug, the scenario is reported to the development team, who fix it and send it back for a retest. This process is done for all functionalities until all of them have passed the testing.
Different Types of Manual Testing
There are many different methods and techniques by which manual testing can be done. Below are some of the most common ones.
White-Box Testing
In white-box testing, the tester is concerned about what is happening within the code written for that particular functionality. The tester needs to understand what implementation has been done by the developer and how that influences the end result. Here it is important to understand how the code is written and what it does. The main aim of this testing technique is to verify all the decision branches, statements, and loops in the code.
Black-Box Testing
Usually, in computing or engineering, the term “black box” is used when there is no knowledge of the internal workings of a system, and you are simply verifying the output based on the input. When we correlate that to testing, it basically means the same thing. As a tester, you provide input and verify the output. If the output is what is expected, then the test is passed. In black-box testing, QA does not have any knowledge of the specific implementation or feature being tested.
For example, say you are testing the “Create Account” feature for a website. Your objective is to verify that when the Create Account button is clicked, users are directed to a page where they can create an account. If you don’t know the server-side implementations or the code that was written to make this action happen, then it is referred to as black-box testing.
Gray-Box Testing
This is a combination of white-box and black-box testing. It is a strategy of software debugging in which the tester has limited knowledge of internal details or implementations of the program. The main goal of this testing technique is to find bugs due to incorrect code structure. In the process of gray-box testing, context-specific bugs related to the application are found. Here, all the layers of the system are tested. It is very useful in penetration and integration testing.
For example, if testers are testing websites for links and encounter any bad ones, they can immediately make the changes in the HTML code and check the results in real time.
With gray-box testing, the expert does not necessarily need to have access to the source code. Instead, a test is created using knowledge of architectures, algorithms, internal states, and other program behavior. The main techniques used in gray-box testing include matrix, regression, orthogonal array, and pattern testing.
Smoke Testing
Smoke testing, also known as build acceptance testing or verification testing, is a type of software analysis technique that ensures all the vital functions of an application work without going into much detail. The term “smoke testing” originates from hardware testing, where the device passes if it doesn’t smoke or catch fire the first time it is turned on.
Smoke testing is the preliminary check of an app after the build and before its release into the market. The expert finds the most critical components required for the software to function and tests them for errors. This test is performed every time a new build of the software is delivered. If the software passes, it moves on to more rigorous tests. If not, then a major bug has been discovered, and no other tests are performed. Instead, the testers ask the developers to send another build.
Cross-Browser Testing
Many people have encountered issues where an app is not working in one browser but functions properly in another. This situation often occurs if the software is not tested for browser compatibility. As the name suggests, cross-browser testing means testing websites or apps in multiple browsers.
An app that is going to be released to the market needs to be tested across multiple browsers as defined by the client in their requirements. These tests are also performed to find specific browser-related issues and fix them.
Cross-browser testing concentrates on base functionality, ensuring that dialogue boxes, forms, and cookies work seamlessly across all browsers. This type of testing also verifies the appearance of the website is the same for all browsers.
Acceptance Testing
Acceptance testing is done to ensure that the functionality of the software fulfills the customer’s needs and requirements. It is often the last phase of testing before the app is sent to the end user.
Beta Testing
This is a type of user acceptance testing where the app is sent to a group of end users who use it in a real-world setting and provide feedback. Beta testing has no standards, so the testers are just using the software as any other user would.
Before beta testing, the developers need to ensure that the software is stable and has all its features. Also, the testers should be part of the audience who will use the application. This type of testing is also a subtype of black-box testing because the testers have no idea of the implementations and source code. They are just checking if the input will give the desired result.
Exploratory Testing
This is a type of testing in which the tests are not documented in advance; the testers check the app in real time. They may write some ideas about what needs to be tested beforehand. Exploratory testing is commonly used in Agile development models and is mainly about discovery, investigation, and learning. It is random and unstructured, and it reveals some bugs that structured tests may miss.
Negative Testing
Negative testing is a type of testing that is performed on the system by inputting invalid data. The main goal of negative testing is to prevent the app from crashing or performing an unexpected action when a wrong value is inserted. These tests significantly increase the stability of the software.
Performing only positive testing will ensure that the system is working properly under normal conditions. But you will know how the system holds up in unexpected situations when you perform negative tests.
For example, in a website form that has a field for a phone number, positive tests will check if the field accepts numbers. With negative testing, however, the expert needs to check if the field will accept only numbers. So, they will input other characters to see if the form will return an error message. If it does, then the test is passed.
Usability Testing
User experience (UX) and user interface (UI) design are among the most important factors to consider when building software. They are crucial for success and acceptance by end users. Usability testing ensures that the apps are user friendly and easy to use. Here, the testers need to watch other users as they try to navigate through the software. The tests can be done on different designs to see which ones are best and favored by the users. Usability testing is done repeatedly from the start of development until the application is released.
Manual testing requires a lot of patience, creative thinking, and concentration. It provides the “human touch” to software testing, which many people think should be automated. Manual testing is still largely needed, though, and is obligatory to perform before doing any sort of automated testing. This is because automated testing does not have the power of prediction or the ability to think. It also can’t represent all the different scenarios that could occur while using the software. That is why manual testing is still indispensable—and will continue to be for the foreseeable future.