Functional Testing

Functional Testing

What is Functional Testing?

Functional testing is a type of black box testing that evaluates the conformance of a system or component with stated functional requirements. Functional testing specifies what the system does.

As the name specifies, the test verifies if all the functionalities of the application are working as expected and ready for release. Since it is black box testing, the tester will not know the internal structure of the app or the source code. Development team will create functional unit test cases with respect to user/business requirements and testers specify the functionality requirements based on the user perspective. Functional testing can be carried out by manual test teams or can be automated.

What do you test in functionality testing?

Functional testing also known as black box testing verifies

  • Functionality
  • End-to-end workflows
  • Business Scenarios
  • Data storage in the database

Example of a functional test scenario

Sample Test scenario: Verify user is able to add new reminders – SMS 

  1. Login to application
  2. Mouse hover on schedule menu
  3. Select Follow -up Reminders’
  4. Click ‘New Reminder’ button
  5. Select reminder type as ‘SMS’
  6. Select the reminder value
  7. Click ‘Update Reminders’

How do you perform functional testing?

Functional testing follows a step by step process,

  • Identify functions that the application is intended to perform
  • Create the input based on the function’s specifications
  • Establish the output based on the function’s specifications
  • Execute the written test cases
  • Compare the final actual and expected outputs

Let’s see the different functionality testing types and tools,

  • Unit Testing
  • Integration Testing
  • Smoke Testing
  • System Testing
  • Regression Testing
  • User Acceptance Testing

Examples of functional test cases

Unit Testing 

Unit testing in simple terms validates if the separate units of code function properly. For example, it validates if a function, loop, method or a statement in the piece of code is working as intended. It is written by developers.

Example of a Unit test for ‘Login’ will look like,

  • Navigate to login page
  • In the ’email’ field, enter the email address of the registered user
  • Click the ‘Next’ button
  • Enter the password of the registered user
  • Click ‘Sign In’
  • If success, go to next page
  • If not, throw error message and go back to login page

Integration Testing 

Integration testing verifies the interfaces or the flow between the units. The focus is given on verifying the integrating links. Sample integration test case for the test scenario:  Add to bag -> My bag will look like,

Test Case ID  Test Case Objective Test Case Description  Expected Result 
1 Check the interface between the Add to cart and My cart module on the e-commerce application homepage From homepage select product and click Add to cart button Selected product should appear in the My cart folder

Here, the objective is to verify the integration between Add to cart and my cart folder.

Smoke Testing 

Smoke testing is performed once after developers publish the ‘new build’, usually unstable – to evaluate critical functionalities of the system. The objective of the testing is to verify the most important functionalities of the system and not run an exhaustive testing process. Critical functionality test cases are chosen, run and verified. Both testers and developers perform smoke testing and the testing is ‘build’ focused.

Sanity Testing  

Sanity Testing and smoke testing are used interchangeably in testing contexts. This is because both tests are run after the build is received. However, sanity testing, a subset of regression testing, focuses on executing test cases that are related to the changes made to the builds. In simple terms, when a build, usually stable, is received with minor changes, sanity test is performed. It is performed by testers and is ‘release focused’.

Difference between functional and non-functional test 

Functional Tests   Non-Functional Tests 
Tests the actions and working functionalities of the application Tests the non-functionality side of the application. I.e look and feel.
Ex., Performance, Security, Usability
Performed first – applicable in Unit, Integration, System Testing Performed after functionality tests – applicable in System Testing phase
Focus lies on user/business requirements Focus lies on User Expectations/Experience
Tests ‘What’ the system should do Tests ‘How’ the system should work
Can run manual and automated tests Mostly automated tests
  • Unit Testing
  • Integration Testing
  • System Testing
  • Acceptance Testing
  • Performance Testing
  • Security Testing
  • Recovery Testing
  • Usability Testing
Example: Verify the ‘Place Order’ functionality Example: Easy to navigate to ‘Place Order’ button and 100
number of people should be able to place order
concurrently irrespective of OS/browser/device configurations

Functionality Testing Tools

Some widely used functionality testing tools include,

  • Selenium – Open-source, most well-known testing framework used for functional testing automation for browser-based web applications. It supports variety of programming languages for writing test scripts such as PHP, Java, C#, Groovy, Python, Ruby, and Perl. It also supports multiple browsers across OS platforms.
  • Ranorex Studio – Built with Selenium web driver, it’s used for functional test automation for web, desktop and mobile applications. It supports GUI (Graphical User Interface) and offers record and play back for naïve testers.
  • TestComplete – Functional testing platform that offers solutions to automate functional testing for web, desktop and mobile applications. It supports a range of programming language such as DelphiScript, C++Script, C#Script, JavaScript, Python, VBScript, and JScript.
  • UFT – formerly known as QuickTestProfessional(QTP), by HP. Used to perform automated regression testing as well as functional testing. It offers a full-length feature set for API, web services, and GUI testing of desktop, web, and mobile applications across platforms. It is well known for its user friendliness, image-based object recognition feature, reusable test components, and automated documentation.
  • Katalon studio – The software is built on top of the open-source automation frameworks like Selenium, Appium with a specialized IDE acting as a one stop shop for all API, WebUI, Desktop and Mobile testing and the combined capabilities among those.

Final Word

Functionality testing is critical for any software/application. Businesses that consider testing processes to be a gate keeper and skip this crucial stage to launch products quickly in the market will have to face the wrath of its end users when the app doesn’t work as intended.

Therefore, it is very important for teams to pick right combination of manual testing and automation tools to get the most out of functional testing and help businesses deliver a quality product.

WANT TO RULE DIGITAL? GET IN TOUCH