
Business & Integration IT Consultant
There is a file that defines what is acceptable behaviour in software application and what is not. It is a functional specification or requirements specification. A requirements specification is a document that describes what the software is supposed to do and includes a description of functional and non-functional requirements.
Requirements specification is important for software testing because it provides testers with the information they need to design and execute tests. So let’s take a look at what exactly functional testing is.
Functional testing is a type of software testing in which the basic functions of an application are tested against a predetermined set of specifications. In functional testing, each function is tested by specifying a value, determining the output and verifying the actual output against the expected value.
Functional testing is performed as black box testing, which is presented to confirm that the functionality of an application or system behaves as expected.
Functional testing is also called black box testing because it focuses on the application’s features rather than the actual code. The test results are binary: pass/fail.
There are two functional testing techniques that can be performed:
In functional testing, IT testers follow the following steps:
See also the functional testing checklist and make sure you don’t forget anything.
Functional tests verify that specified functional requirements are met, while non-functional tests can be used to test non-functions such as performance, security, scalability or application quality. In other words, functional testing is concerned with whether key functions in the application work correctly and non-functional testing is more concerned with how operations are performed, i.e., they are interested in performance, security, usability and more.
Types of functional testing include: Unit Testing, Integration Testing, System Testing, User Acceptance Testing, Regression Testing, Sanity Testing, etc.
While non-functional testing includes: Performance Testing, Security Testing, Usability Testing, Compatibility Testing, Load Testing, Stress Testing, Volume Testing, Penetration Testing, Migration Testing.
Regarding test criteria for functional testing, pass/fail criteria are often simple and based on expected results. However, for non-functional testing, pass/fail criteria may include thresholds or benchmarks (e.g., response time should be less than 2 seconds).
We are familiar with various functional testing types:
Example: a restaurant needs an app to help customers order food at a table without service. The developer will create a unit test to explore the “add to order” feature. Other features, such as “remove from order” or “send order”, would also go through unit testing.
Example: users can set up a savings account in the banking app. It includes the ability to transfer money from their main account to a savings account. Since these are separate modules, testers must perform integration testing to ensure that transactions between them run smoothly and correctly.
Example: a utility company has created an application with an outage reporting feature at customers’ homes. This feature will report address and other important information, as well as alert the homeowner when a controller is on their way. Smoke testing will validate this feature at a basic level to ensure that when an outage is reported, the correct information is sent so that the dispatcher can arrive on the correct location in time.
Example: suppose a customer buys a new pair of shoes from an online shoe store. UAT tests verify that the customer can successfully add the desired shoes to the shopping cart and pay.
Example: a customer tries to pay for an order via Paypal in an online shopping app. During interface testing, it is verified that the Paypal application is filled in correctly and the payment is processed.
Example: a group of users are asked to complete a set of tasks when using an online shopping application, for example: a user is asked to find a specific product, such as a pair of white running shoes. The user is observed while searching for the product and navigating the app. Next, the user is asked to add the item to the shopping cart. The user is observed as they add an item to the cart and proceed to checkout and complete the checkout process. The customer’s intuition and ability to navigate the system is assessed.
Example: a fitness app was created with options such as setting and tracking monthly fitness goals, listing fitness metrics, creating personal workout plans and smartwatch integration. Each of these features will be considered individually as well as all together when testing the system.
Example: a food delivery app has added a feature that helps users add multiple discount codes at once. A regression test needs to be performed to ensure that the checkout and payment process will not be affected.
Example: on an e-commerce website, users cannot add a specific product to their cart even if it is in stock. Once the problem has been corrected, validation testing will be performed to ensure that the “add to cart” function is actually working.
Example: a developer is testing a function that calculates the sum of two numbers. They examine the code of the function to identify potential bugs or flaws. The tester creates test cases that cover all possible inputs and outputs of the function. They execute the test cases and monitor the results. If any errors are found, the developer debugs and fixes the code.
Example: a tester is testing an ATM application. The tester will review the ATM application requirements to understand its functionality. They create test cases that cover all the major features of the ATM application. They execute test cases and monitor results. If any bugs are found, the tester reports them to the development team.
Example: a tester is testing a database application, examines the database schema to understand the structure of the database. They create test data that covers all the different types of data that will be stored in the database, execute test cases that insert, update, and delete data from the database. The tester verifies that the data in the database is accurate and complete. If performance issues are found, the tester reports them to the development team.
Example: suppose a developer is working on a new feature of a web application. They have finished coding the feature and want to make sure it works as expected. Instead of writing formal test cases, the developer can start using the feature randomly, clicking different buttons and entering different data.
Example: consider an online banking application. A network outage or server failure may occur during the transaction. Recovery testing would involve simulating these scenarios and verifying that the application handles the interruption gracefully, the application should not suddenly freeze or display error messages. It should maintain the integrity of transaction data and ensure that information is not lost or corrupted. The application should provide the user with clear instructions or options to resume the transaction or perform alternative actions. Once the interruption has been removed, the application should resume its normal functionality without having to perform a full restart.
Example: this is a line-by-line manual review of the code to identify potential errors or deficiencies.
Example: a tester is testing a web application. They first examine a section of the web application code to understand its general structure and functionality. Then they create test cases that cover both known and unknown areas of the web application. Later, the tester executes test cases and monitors the results. They use tools to analyze the code for potential bugs or flaws. If any bugs are found, the tester will report them to the development team.
Example: the health services app has a feature that helps patients schedule appointments with doctors of their choice. The part that needs to be tested is the way the system displays “nearby” hospitals or health centres using the user’s GPS data. To test this feature, the user profile is stub, and healthcare provider schedules is driver.
API functional testing is a type of software testing that verifies the functionality of application programming interfaces (APIs). It helps ensure that the application and APIs perform as expected under the specific workload they can handle.
APIs are the engines that power our software applications. They allow different systems to communicate with each other and transfer data seamlessly. But just like any other engine, APIs can break down and malfunction if not tested properly.
This is where functional API testing comes in. It involves testing the behaviour and functionality of the API to ensure that it performs as expected, meets specified requirements and returns the correct response in different scenarios.
Example: verify that the API can retrieve flight information based on the specified parameters.
The expected output is checked through the status and response body as shown below:
In addition, when customers confirm their booking and decide to pay the ticket price using any online payment platform such as Stripe or Paypal, testers need to test that the travel app can communicate with the payment service to ensure a successful and secure payment for users.
Selenium is an open-source project covering a range of tools and libraries developed to support the automation of web applications.
QTP is a tool designed to perform automated functional testing without the need to monitor the system.
JUnit is an open-source unit testing framework for the Java programming language. It is used to write and execute automated test cases.
It is one of the leading tools for testing SOAP and web services. It makes it easy and fast to create and execute functional, regression and stress testing.
Cucumber is an open-source testing tool written in Ruby.
If you want to learn more about functional testing or prepare for an interview, I recommend going through a few interview questions that will give you the answer right away. Find the questions here:
You can download the functional testing template here – functional testing template.
If you are an IT tester or IT automation tester and you speak German, take a look at our employee benefits and respond to our job offers!