The Role of Manual Testing in Software Development
Software testing is a process that identifies if the actual behavior of software meets its intended behavior.
Broadly speaking, software testers try to find unexpected behavior, inconsistencies, and hidden errors in software.
In manual software testing, a human tester checks the functionalities of a product manually rather than using automated tools. It requires human intuition as well as analytical skills, logical thinking, and problem-solving abilities.
Manual software testers need to understand project requirements and carry out tests to make sure that a piece of software meets those requirements.
They also take part in writing test cases to ensure that the tests fully cover the software being tested.
The difference between software testers and QAs
A software tester focuses on exploring and investigating software to find bugs and write reports about them.
A software QA assures the quality of software. This term is ambiguous on purpose. QAs go beyond finding bugs.
They also check for grammar errors and ensure an excellent user experience.
For simplicity, we'll use the term tester
for the rest of this post.
What aspects of software development go through manual testing?
Manual testers scrutinize different types of code. These are as follows:
Modules
A module is a piece of code that is a part of a bigger software system and performs a specific function.
For example, in an enterprise resource planner (ERP), there are modules dedicated to human resources and material management.
Features
A feature is a unit of software that enables an application to do something. Multiple features can make up a module.
API
An application programming interface (API) is a piece of code that allows two different software to communicate with each other.
For example, you have a website that allows users to create an account using their Google account. An API makes it possible for your website to communicate with Google to make this happen.
What are the different types of manual tests?
GUI Testing
In graphical user interface (GUI) testing, a tester ensures that the part of the code that end-users interact with (the GUI) meets the requirements.
For example, a tester will check the buttons and icons on a web app will display properly on different web browsers.
The tester also ensures that the GUI aligns with the business goal. For example, if the goal of creating a new webpage feature is to increase signups, the tester evaluates if the GUI leads users towards that goal.
Ad-hoc testing
In ad-hoc testing, there is no plan or formal guide. A tester, following their experience and intuition, randomly explores a piece of code.
Testers usually run an ad-hoc test after formal testing is done. That's because formal testing does not always uncover all the bugs in a system.
Testers may also choose to run an ad-hoc test if there is not enough time to create documentation, test design, or test cases. This may happen if a bug is found at the last stage of development -- and there is pressure to release software immediately.
Compatibility testing
Compatibility testing is done to ensure that software runs on different hardware, operating systems, or web browsers.
It is also done to check how software performs with slower network connections.
Acceptance testing
Acceptance testing happens just before software is released.
This is the one type of testing that doesn't require professional testers. It is usually done by end-users and clients to confirm if the software is ready to be released.
Functional testing
Functional testing tests the main functions, basic usability, and accessibility of an application.
It is also performed to check error conditions and see if the correct error messages are displayed.
Localization testing
This is testing if the UI, content, and usability of software appear as they should for a given location.
Localization testing is extremely important for software that is customized to adapt to the culture and language of an end user.
What are the different approaches to manual testing?
The process of testing software requires different forms of investigation. That's why there are different approaches to how software is tested.
White box testing
In white box testing, a tester has full knowledge of the working code as well as its intended design. The tester examines the source code to:
- Identify security issues.
- Verify that an input returns the expected output.
- Ensure that the structure of code complies with the software requirement document.
In white box testing, the tester can also have access to the design document to have a better understanding of how a system works.
White box testing can be preventative. If performed during development, it helps testers find a bug before software is rolled out into production.
Black box testing
In black box testing, the tester probes the functionalities of an app or software without seeing its code or knowing about the technologies used to build it.
It emulates the real-world scenario in which end users use an application without knowledge of its internal workings.
Black box testing is the most approach to manual testing.
By nature, it is easy to miss bugs when doing black box testing exclusively. That's why software teams use both the black box and white box approaches to test software.
Grey box testing
The white box and black box approaches are combined in grey box testing.
The tester does not have full knowledge of the source code. However, they have enough access to the code to understand the core functions of the software or application they are testing.
There is no silver bullet that guarantees quick yet thorough software testing. That's why grey box testing has its own short-coming: mainly, it's not as fast as black box testing and not as comprehensive as white box testing.
However, it is an excellent option when choosing to focus on certain areas of code that need to be tested.
When is it necessary to perform manual software testing?
Automated testing has its own place in software development.
But there are cases when manual testing is the unambiguous best choice.
When the cost of automation is greater than its benefits
Writing code for automation is not justifiable when you're testing a small piece of code. There are cases when it will take three hours to write an automated test for a test case that can be manually done in ten minutes.
Usually, it's cheaper to use manual testing for small projects than to invest time and money into writing automation tools.
A tight project timeline may also make it impractical to write automated tests.
Automated tests are faster than manual tests when they are run. But it requires a significant amount of time to write automated testing scripts.
When human perspective is needed
Automation is great for completing repetitive tasks quickly. But it can't evaluate what an actual user experience is going to be like.
Human testers are needed to evaluate more nuanced concepts like the "look and feel" of an application.
When there are test cases that are not covered by automation
Exploratory testing requires a tester to be creative -- to find bugs that may exist beyond the scope of test cases.
A tester's experience is critical in boundary testing (testing an app between the extreme range of inputs) and finding edge cases (errors or bugs that are quite rare).
When checking for typos and grammar errors
A software tester's job primarily revolves around assuring professional quality. Grammatical and typographic errors can be off-putting to end users.
That's why software testers are on the lookout for those errors -- being the last line of grammar testers before a product is released.
Traits of an excellent manual tester
The quality of manual testing is only as good as the person who performs it.
Communication skills
Software testers need to constantly communicate with technical and non-technical people.
Testers need to tell developers how software is supposed to work, what's not working, and why it doesn't -- all in a diplomatic way to maintain harmony within the team.
They need to talk with the project manager and stakeholders about the state of the software being tested.
Understanding project requirements and writing bug reports demand a high level of communication skills.
Ability to work in an Agile setting
In the traditional waterfall model, software development follows a linear process: Requirements
⟶ Design
⟶ Build
⟶ Test
⟶ Deployment
.
When a software tester finds bugs in the system, the process starts over again.
To mitigate the risks of the waterfall model, the Agile approach to software development came into existence.
In Agile, software developers collaborate closely with testers.
There is no brick wall that separate testing and development. Testers are expected to immediately tell developers as soon as a bug is detected.
Testers also need to help define the definition of done
, verify fixes, and attend daily sprints.
Understanding of programming languages
Software testers are not expected to write code the way developers do. However, they need to have some understanding of the code that they are testing.
This allows for a more efficient two-way communication: developers don't need to explain every bit of the code that needs to be tested; and testers can communicate better with developers.
Manual testers who know how to code can easily transition into writing automation scripts.
Conclusion
While automated testing is the trend, there are certain aspects of software testing that require a human perspective.
Moreover, automation can be impractical for smaller projects that run on a tight schedule.
Are you looking to hire manual testers? Our chief technology officer (CTO) can give you more insights into the best person to hire.
Schedule a consultation call with our CTO.