Overview of functional testing

Overview of functional testing


Functional testing helps software teams validate the correctness of the software functionalities they build, extend and maintain. Thanks to the automated functional testing, software teams can release software to production without fear of breaking software features.

This article will go through different aspects of functional testing and how you can leverage this fantastic method of automated software testing to test your software, including different types of API.


Table of Contents


What is functional testing

Functional testing is a form of software testing (either manually or automated) and a variation of black-box testing. In black-box testing, the tester is not aware of the internals of the software under test.

The focus of functional testing is to verify the correctness of different software functionalities.

To validate the correctness of functionalities, QA teams consult product requirements and specification documents. The word functional does not mean that you are testing a function (method, procedure) of your module, package, or class in a programming language.

Looking for an API testing tool?

Testfully offers multi-step tests, local & deployed API testing, team collaboration, historical test results and many more features. Import from Postman supported!

How to do functional testing

  • Start reading the product requirement & specification document to familiarise yourself with the functionalities and expected behavior. The chances are that the product requirements do not exist, or you don’t have access to it. In this situation, you can document the existing functionality and use it as the source of truth. While looking at the functionalities, make a list of the functionalities and how you expect them to work. Then, apply the below steps to all of the items in your inventory.

  • Create a test case for the functionality

  • Define the input data based on the functionality

  • Define the output data based on the functionality

  • Execute the test

  • Compare the expected & output data, they should be identical to each other, or the test should fail.

Testing how software functions under unhappy paths are as crucial as happy paths, and you must include unhappy paths in your functional testing.


What is non-functional testing

The functional aspect of the software is not the only area that requires software testing. For example, QA & software teams test the availability of an API under the expected load to make sure the API can handle the workload. As the name suggests, non-functional testing focuses on how the software operates rather than the system’s behavior. Examples of non-functional API testing are Loading testing, performance testing, security testing, recovery testing, stress testing, and volume testing.


Functional testing vs. non-functional testing

Functional and non-functional testings cover two equally important aspects of the software under test and complete each other. The table below lists the difference between functional testing and non-functional testing.

Functional testing Non-functional testing
Tests software’s functionalities against the requirements Tests non-functional aspects, including performance, reliability, and security.
Functional testing can be done manually or by automation Manual non-functional testing is not feasible
Answers “Would the software work as expected with this change?” question Answers “Would the software work as good as before?” question
Uses product requirement & specification documents as the source of truth Uses desired performance and availability metrics as the input


Functional API testing example

In this part, we will go through one functionality available in almost any web API: user authentication, and token generation. Most APIs offer an endpoint (or a GraphQL query field, in GraphQL APIs) for authentication, a functionality that we should include in our API testing effort. I would break this functionality into two parts:

  • Active users should be able to log in using a valid username & password
  • The returned token can be used for authorization.

A functional test with two steps would be able to verify the mentioned expectation. Using your tool/framework of choice for functional testing:

  • Define a test case called Active users can log in and get a valid token JWT token
  • Add the first step called Active users should be able to log in using a valid username & password
  • Configure the first step to send the request to the auth endpoint
  • Verify that the response contains a token
  • Add the second step called The returned token can be used for authorization
  • Pass the token from the first step to an endpoint that requires authorization
  • Verify that the endpoint does not return an error

Our top 10 API testing mistakes article cover some of the most common mistakes in API testing.


Benefits of automated functional testing

On the surface, automating your functional tests gives you the agility you have always wanted to test & release your software. That said, speed is not the only benefit of automated functional testing.

  • Your feedback cycle becomes faster
  • Reduced time on software testing
  • Reduces business expenses on software testing
  • You can include tests in your CI / CD pipelines
  • You can actively monitor your production API using functional tests
  • Testing multiple environments using one set of tests become possible


Testfully benefits for API functional testing

Testfully was build from the ground up for API functional testing. Unlike many other available API testing tools, Testfully allows you to define both single and multi-step functional tests. Moreover, Testfully offers the following unique features for functional API testing:

  • Run functional tests against multiple environments, including localhost
  • Monitor production API functionalities using the same set of tests
  • Add tests to any CI/CD pipeline using Testfully CLI
  • Define functional test cases without writing a single line of code
  • Run functional test in parallel for faster result turnaround
  • Access to historical functional test results at any time
  • A cloud-based solution that makes your tests available to your entire team


Demo: Functional API testing using Testfully

The below short video gives you a quick demo of Testfully’s functional API testing and monitoring features, including functional test creation, running tests in parallel, and scheduling test cases for API monitoring.


FAQ


What’s the difference between functional & non-functional testing?


While functional testing is focused on software’s functionalities, non-functional testing is concerned about other aspects of software like security and performance.


Which one is more important? Functional or non-functional testing?


Functional and non-functional testing are both equally important, and you should try to exercise both practices. With that said, if you have resources to allocate to only one, we highly recommend focusing on functional testing as it delivers more value to you.


Can I use Postman for functional API testing?


Although you can use Postman for functional API testing, you will be very limited as Postman does not support multi-step tests that you will most probably need for functional testing. Testfully makes a great Postman alternative for functional testing & monitoring.


What is a happy path in software testing?


A happy path happens when the user takes the actions you expect them to take, and nothing goes wrong in between; that’s a happy path.


What is an unhappy path in software testing?


An unhappy path happens when the user takes actions you don’t expect them to take. For example, in an authentication scenario, a user may enter an invalid email address, and that’s a user entering an unhappy path.

Looking for an API testing tool?

Testfully offers multi-step tests, local & deployed API testing, team collaboration, historical test results and many more features. Import from Postman supported!

comments powered by Disqus

Recent Articles

blog-image
7 HTTP methods and how to use them

HTTP protocol works by clients sending requests to the servers and servers responding to the requests. We do CRUD operations (Create, Read, Update, Delete) by sending HTTP requests with different HTTP methods, sometimes called HTTP verbs.



blog-image
Introduction to API Blueprint

API blueprint is a powerful high-level API design language for web APIs. In this article, we want to dive deeper into it and learn more about how it works, the differences between API blueprint and Swagger, and what makes it unique that leads to its extensive use. But before we dig into API Blueprint, we must ensure a solid base of information about the “API first approach” concepts.

blog-image
False positive & false negative in software testing

Exports in automated software testing have borrowed false positive and false negative terms from the medical examination field. In the medical field, the purpose of a test is to determine whether the patient has a particular medical condition or not. As far as software testing is concerned, a false positive indicates a bug when there is none. Conversely, a false negative indicates no bug when there is one.