Want to join a thriving community of quality champions? | Check out Shiftsync

Why and how to perform manual functional testing

Functional tests are certainly worthy of being part of your testing suite and can be conducted either manually or automated.…

Why and How to Perform Manual Functional Testing
By Testim,

Functional tests are certainly worthy of being part of your testing suite and can be conducted either manually or automated. This post, as its title suggests, is about the former variety. We’ll cover manual functional testing. That can be surprising to some of youdoesn’t this blog belong to a test automation tool? Yes, it does. But here at Testim, we also acknowledge the value of manual testing when conducted in the right circumstances and proportion.

We’ll open the post with some definitions that explain what manual functional testing means. Then, we’ll explain why you want to do it, even when automated functional testing is an alternative. Finally, we’ll get to the how of manual functional testing, giving instructions and covering best practices so you can start immediately.

What is functional testing?

Functional testing is a type of software testing that concerns itself with the functionality of a piece of software. In other words, functional tests verify whether an application behaves in the ways its stakeholders expect and fulfills its functional requirements. Typically, functional testing doesn’t concern itself with the application’s internal implementation but instead focuses on its external, observable behaviors. As such, functional testing belongs in the black box testing category. In that case, functional testing is starkly different from some other types of testing.

Take, for instance, unit tests. They’re written by software engineers, and one of their main goals is to validate whether the code they wrote behaves as expected at a low level. You could have 100% of code coverage and the application still doesn’t do what it should functionality-wise. That’s why functional testing matters so much. It helps teams prove that when it comes to customer-facing features, the application under test works.

Manual testing vs. functional testing

Manual and functional testing aren’t the same, but there is a relationship. As the introduction for this post makes it clear, you can perform functional tests in manual and automated forms. Conversely, manual testing can take many forms, of which functional testing is one. Thus, manual functional testing is functional testing performed by a human.

Expand Your Test Coverage

Fast and flexible authoring of AI-powered end-to-end tests — built for scale.
Start Testing Free

Why would you perform manual functional testing?

Given that automated functional testing is a thing, is the manual variety still worth it? First, let’s talk about practicality. In some scenarios—such as quick, easy tests for a new feature in development—it might not make sense to spin up a whole test environment. Remember that test environments aren’t cheap, but a couple of Docker images might suffice to enable a co-worker to test your application manually.

Sometimes, the manual test is simply cheaper and easier to do. Depending on your industry, you might have a need for formal sign-offs before a new feature can be released due to regulations. In these cases, manual testing is invaluable and doubles down as acceptance tests. Functional manual testing makes sense when validating the look, feel, and user-friendliness of a user interface. Here, we’re at the edge of what can be considered functional testing because usability is typically considered nonfunctional. Also, many test automation solutions—like Selenium WebDriver—require coding skills. Manual testing, then, lowers the barrier to entry, allowing more people into the software testing field. Last but not least, manual functional testing is a great way to discover opportunities for automation. Testers can perform the test cases manually the first time and then, with the help of a codeless test automation tool, automate them.

How do you perform manual functional testing?

Now that you’ve learned the fundamentals of manual functional testing, let’s see how you’d go about doing it. But first, let’s clarify what can be a source of confusion.

Functional testing is not ad-hoc testing

Manual functional testing doesn’t mean just testing the application as you see fit without any plan or preparation. This is what we call ad-hoc testing, which is often mixed up with exploratory testing. Ad-hoc testing has its merits—such as helping to uncover unanticipated edge cases—but it’s still a different thing. Manual functional testing does require preparation and planning. Typically, a QA analyst would come up with test cases that they then can hand to other people to perform or perform themselves. A common format for a test case is a table with three columns:

  • the step to be performed
  • the expected outcome
  • a space to be filled with the actual outcome

If the desired and actual outcomes don’t match, the QA analyst will typically fail the test. What happens next depends on the team process, but usually, a bug or issue is added to the team bug tracker so developers can diagnose and fix whatever is causing the test not to pass.

Example of a manual functional testing test case

First, let’s think of an application and feature to test. Suppose you’re developing a web app for a local hotel that will enable users to make reservations online. The interface for making reservations is simple. First, you pick the check-in and check-out dates. Then, you enter the number of adults and children who will be staying at the hotel and click search. The following is a non-exhaustive list of test cases for the feature:

  • Picking a check-out date earlier than the check-in date shouldn’t be allowed.
  • Similarly, picking the same check-in and check-out dates shouldn’t be allowed.
  • At least one adult needs to be selected. Otherwise, an error message is shown.
  • If you pick valid dates and at least one adult, the correct number of available rooms is displayed.

Let’s pick the third test case from the list above and expand it, showing its composing steps:

Step Expected Outcome Actual Outcome
1. Open Google Chrome and access the application URL. The front page of the web app is displayed.  
2. Click on the date picker for the check-in date, and choose Feb. 1, 2023. The desired date is selected in the date picker.  
3. Click on the date picker for the check-out date, and choose Feb. 10, 2023. The desired date is selected in the date picker.  
4. On the guests’ selection area, click on the plus sign next to the word “Children” three times. The UI shows three children as guests.  
5. Click on the “Search Rooms” button. An alert box appears with the message “Please select at least one adult guest to continue!”  

  A QA analyst, tester, or another testing professional would perform the steps mentioned above. Additionally, the tool used to track the test results can enable users to upload evidence of the test execution, such as screenshots of each step after it’s performed.

Manual regression testing: Leverage when it makes sense

It’s no secret that we at Testim love test automation in its incarnations. But we also recognize that manual testing still has a place in a well-balanced quality strategy. That’s why this post covered manual testing and to be precise, manual functional testing. As you’ve seen, manual functional testing can still provide benefits and serve as a discovery tool for more automation opportunities.

There are scenarios in which automated testing completely outshines manual testing. For instance, automated tests excel at preventing regressions. As soon as you find a bug—and before fixing it—you create a failing automated test in such a way that as soon as you fix the bug, the test passes. Should the bug ever appear again, your test suite will warn you.

The suite of automated tests, when executed, covers a larger portion of the application at a fraction of the cost and time it would take to do the same manually. That way, automated functional testing ensures higher test coverage. Manual functional tests can be valuable at an early stage of the testing process when the QA analyst is still exploring and learning which test cases make sense. In this stage, manual tests are an easy and quick solution that can then be automated later on.