Functional and Non Functional Testing
Functional and Non Functional Testing
Functional and Non Functional Testing
Functional testing is performed using the functional specifications provided by the client
or you can say by using the design specifications like use cases provided by the design
team.
In this, tester has to test the application to see that all requirements of the client which
he has said in SRS and BRS have been incorporated or not.
Non Functional Testing is that which is always concerned with the client expectations
like performance, load and stress issues and so on.
Distinction between Functional and Non Functional Testing
5 In this sort of testing testers mainly In this sort of testing developers mainly
focuses on the functionality of the focuses on the structure means
system. program/code of the system.
7 This type of testing always focuses This type of testing always focuses on
on what is performing/ carried out. how it is performing/ carried out.
9 Other names of this testing include Other names of this testing include
means synonyms of black box means synonyms of white box
testing are testing regarding testing are testing regarding code
functionality means Functional means Structural testing, Glass-box/
testing, Behavioral testing, and Clear-box testing, Open-box testing/
Opaque-box/ Closed-box testing Transparent-box testing, Logic-driven
that is the reason why in this testing and Path-oriented testing that is
testing no knowledge of the reason why in this testing knowledge
programming is needed. of programming is needed.
10 Black box testing means functional White box testing means structural test
test or external test. or interior test.
Functional testing is an activity that extends from component-level testing all the way to regression
testing of existing features. Here is a list of common functional testing types and examples.
Unit testing
This type of testing is executed by developers as they write code and build the application. The
purpose of unit testing is to validate the functionality of a unit or component, making sure the
desired outputs are generated given a set of inputs. As the most granular test, it sets up a solid
foundation for more complicated, integrated, and comprehensive features.
Example: a restaurant needs an app that helps customers order at their tables without a server. The
developer would create a unit test to examine the “add to order” function. Other individual functions
such as “remove from order” or “submit order” would also go under unit testing.
Component testing is similar to unit testing because they both isolate a single functionality and
validate that individually. However, testing for components at this phase might call for stimulative
interactions with sample test data, aka stub and driver.
Example: a healthcare service app has a functionality to help patients schedule to meet with medical
professionals of their choice. The component to be tested is how the system displays the “nearby”
hospitals or healthcare centers using data from the user’s GPS. To test for this function, the user’s
profile is the stub and the driver is the available schedules from the health care provider.
Integration testing
While modules and components can pass individually, quality engineers still need to ensure their
functionalities as a group. Since a system’s modules and components are commonly built separately
by different developers, integration testing is critical to validate that they work together correctly.
Modern software infrastructure often includes microservices that communicate with one another.
These communications need to be included in integration testing and ensured that they operate
properly.
Example: A banking app has a function where users can set up a saving account. It includes a money-
transferring capability from their main account to the saving account. As they are separate modules,
testers need to perform integration testing to ensure that the transactions happen smoothly and
correctly between the two.
System testing
As the name suggests, in this phase, the software is tested as a complete, integrated system to verify
that all business and functional requirements are met. Hence it is also referred to as end-to-end
testing and often occurs right before User Acceptance Testing.
To yield correct validation, the test environment for system testing needs to be an accurate
replication of the production environment. On top of that, it is performed in the white-box testing
method, where testers have no involvement in the development of the system.
Example: a fitness app was created with capabilities such as setting up and tracking monthly fitness
goals, consolidating fitness and wellness metrics, building personalized exercise sessions, and smart-
watch integration,... Each of these functions will be assessed individually as well as all together in
system testing.
The types of testing above can be distinguished by their level of granularity. For instance, if you are
validating a webpage with the login function, this is how the level of granularity progresses:
Integration test: validate the transition between the login page and other pages
Unit, component, integration and system tests are performed in multiple processes within the
software testing life cycle, including regression testing, sanity testing, and smoke testing.
Regression testing