In the world of QA, automated testing is becoming more and more popular. This can be confusing to employers, who aren’t sure how much automated testing they need, and whether it can replace manual testing completely. Some aren’t even sure what manual testing is, or how it differs from automation.
The reality is that manual testing is the cornerstone of a good Agile QA process and should have a strong presence in any Engineering team.
What is Manual Testing?
Manual testing involves manually performing actions on a mobile app or website, looking for bugs or other user experience issues.
For example, let’s say that you wanted to test whether a login feature in an iOS app was working. With manual testing, you would:
- Pick up the iPhone and tap the relevant app icon on the home screen
- Once the app loads, tap the “Login” button
- On the resulting screen, type a valid email address in the “email” field, and the relevant password in the “password” field
- Tap “Login” to proceed
- Observe whether you’re taken to the expected home screen
The full scope of login tests would usually involve additional actions. (For example, checking an incorrect password to make sure it shows an error message, or making sure the email field isn’t case-sensitive.) But the heart of manual testing is going through a feature or flow in an app or site, observing the results, and reporting any bugs you encounter.
The core tasks involved in manual testing include:
These tasks are the foundation of manual testing for both apps and websites.
What Traits Are Good For Manual Testing?
To excel as a manual tester, it’s helpful to be:
To learn more, see our article on What Makes a Good QA Engineer.
One of the most important aspects of manual testing is the ability to improve user experience. Of course, all bugs are bad user experience – so anything an automated script can find will also help. But having a real person go through an app or site can identify areas of improvement that an automated script might not.
For example, maybe the layout of the top nav menu is confusing. An automated script wouldn’t pick this up unless, for example, one of the links was outright broken. But a person could identify design or functionality that might bother other people, despite technically “working.”
To learn more, see our article on What is User Experience.
As a manual tester, how do you make sure that your testing is comprehensive enough? You don’t want to skip testing any important paths — and in the heat of a fast-paced Sprint, it’s easy to accidentally leave things out. This is where test cases come in. Sometimes there simply isn’t time to stop and write test cases before testing, but it’s important to incorporate them whenever time allows.
For example, say that you were testing the iOS app login example referenced above. You might write the following test cases:
- Tapping “Login” in left nav menu should bring up a login screen
- When logged in, tapping “Logout” in left nav menu should log the user out
- If user enters an email address that does not exist (with any password) and selects Login, relevant error message should come up
- If user enters a valid existing account email address with an incorrect password and selects Login, error message should come up
- When user enters valid email address and password and taps Login, they should be logged in and taken to Home screen
- When user is logged in, and closes app or re-starts device then re-opens, they should still be logged in
- Email address field should not be case sensitive
- Password field should be case sensitive
- Login screen elements should match design file
- Login button should be grey until user enters credentials (whether valid or not), at which point it should turn red
Test cases will usually be more detailed than the above, but these provide a simple example of what test cases are. When a deadline is urgent and the timeline is short, you may have to wing it. But when you do have time, having test cases makes testing less stressful and more thorough. It also increases the reliability of the process and results.
To learn more about test cases, see our article on What Are QA Test Cases.
It’s hard to overstate the importance of communicating and providing high quality bug reports. These need to be clear and easy to understand, but with enough technical details for developers to identify the problem.
To learn more and see sample bug reports, see our article on Best Practices for Reporting Bugs.
Manual vs. Automated Testing
In an ideal scenario, an Engineering team should have manual and automated QA. It’s also beneficial to have separate manual and automated testers, rather than relying on one person to do both types. Manual and automated testing can involve different skill sets, and it’s best to have an expert at each.
In a perfect world, the relationship between manual and automated testers should be collaborative. Manual testers can write test cases for the full app/site, as well as for any new features that get developed. Automated testers (or SDETs) can then use those test cases to determine the exact steps to automate.
Manual testers can provide thorough testing on any new features, which can usually use a real person’s eyes — especially for vetting user experience. On the other hand, automated test scripts can cover regression testing, which will save manual testers from a lot of rote work.
By working together in this way, manual and automated testers make each other’s lives easier — while streamlining the QA process.
The Value of Manual QA
Nowadays, manual QA is often devalued. Many companies under-hire and/or under-pay manual testers, with the assumption that they can or should be replaced by automated testers. Unfortunately, this isn’t the best way to assure quality and reduce bugs. Nonetheless it’s a reality at many modern tech companies.
The best way to combat this mindset is education. If you can help your company or team understand the importance of manual QA, it will help their bottom line in addition to increasing respect for the benefits of manual testing.
For example, you can bring up these facts:
- Manual testing is not something that just anyone can do. A good manual tester must be extremely detail-oriented, reliable, flexible, and highly communicative. They should also have expertise when it comes to user experience, and software conventions.
- Just because someone is good at automated testing does not mean they are skilled at or have time for manual testing. There are some who understand the importance of manual testing, but think that it can be done by their automated tester(s). Automated testing requires a whole different set of skills, and like manual testing, is a time-consuming job. Generally, a company will have better results by having a separate manual testing expert.
What is Manual Testing?
Manual testing may not always be centered in modern QA conversations. But it’s as important as ever, and is the root of good user experience. At the end of the day, manual testers should always have a place in software development.
Do you need manual testing? We have manual testers available both on-demand and full-time. To learn more, see our Manual Testing Services page and contact us.