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!

Recent Articles

blog-image
You no longer need to write API docs by yourself: an Introduction to Testfully API Docs

API Docs, like almost any other concept in API development, have different flavors. At Testfully, We believe that your HTTP requests have the information we need to generate API Docs so why don’t we use them instead of hand-writing all of the docs ourselves.

blog-image
Testfully integrates with Microsoft Azure Active Directory (Azure AD) for Single Sign On

Starting today, Testfully integrates with Microsoft Azure Active Directory for Signe Sign On. Your colleagues can start accessing your workspace by identifying themselves using Microsoft Azure AD.



blog-image
Testfully integration with Okta as Identity Provider for Single Sign On

The integration with Okta allows your team to access your Testfully workspace using their Okta account. Moreover, your team can launch Testfully from within their Okta dashboard. Once enabled, other methods of login will be unavailable for users