What Are The Different Types of Functional Testing?

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 5

FUNCTIONAL TESTING is a type of software testing whereby the system is tested against the

functional requirements/specifications. Functions (or features) are tested by feeding them input
and examining the output. Functional testing ensures that the requirements are properly
satisfied by the application.

Each and every functionality of the system is tested by providing appropriate input, verifying the
output and comparing the actual results with the expected results.

This testing involves checking of User Interface, APIs, Database, security, client/ server
applications and functionality of the Application Under Test. The testing can be done either
manually or using automation

What are the different types of functional testing?


 Unit Testing.
 Smoke testing.
 Sanity testing.
 Integration Testing.
 Interface Testing.
 System Testing.
 Regression Testing.
 UAT.

UNIT TESTING is a level of software testing where individual units/ components of a software
are tested. The purpose is to validate that each unit of the software performs as designed.
A unit is the smallest testable part of any software. It usually has one or a few inputs and
usually a single output.

Smoke testing is defined as a type of software testing that determines whether the deployed
build is stable or not. This serves as confirmation whether the QA team can proceed with
further testing. Smoke tests are a minimal set of tests run on each build. Here is the cycle
where smoke testing is involved.

Sanity testing is the subset of regression testing and it is performed when we do not have
enough time for doing testing. Sanity testing is the surface level testing where QA engineer
verifies that all the menus, functions, commands available in the product and project are
working fine

INTEGRATION TESTING is a level of software testing where individual units are combined
and tested as a group. The purpose of this level of testing is to expose faults in the interaction
between integrated units. Test drivers and test stubs are used to assist in Integration
Testing.
Interface Testing is defined as a software testing type which verifies whether the
communication between two different software systems is done correctly. A connection that
integrates two components is called interface.

SYSTEM TESTING is a level of software testing where a complete and integrated software is
tested. The purpose of this test is to evaluate the system's compliance with the specified
requirements. Definition by ISTQB

User acceptance testing (UAT) is the last phase of the software testing process. During UAT,
actual software users test the software to make sure it can handle required tasks in real-world
scenarios, according to specifications.

System Integration Testing(SIT) is defined as a type of software testing carried out in an


integrated hardware and software environment to verify the behavior of the complete system. It
is testing conducted on a complete, integrated system to evaluate the system's compliance with
its specified requirement

Manual Testing:
As most people in the software industry know, there are distinct differences between manual
testing and automated testing. Manual testing requires physical time and effort to ensure the
software code does everything it’s supposed to do. In addition, manual testers have to make a
record of their findings. This involves checking log files, external services and the database for
errors. If you’re familiar with manual testing, you know this process can be extremely time-
consuming and repetitive.

Automated testing

Automated testing is, well, automated. This differs from manual testing where a human
being is responsible for single-handedly testing the functionality of the software in the
way a user would. Because automated testing is done through an automation tool, less
time is needed in exploratory tests and more time is needed in maintaining test scripts
while increasing overall test coverage.

The benefit of manual testing is that it allows a human mind to draw insights from a test
that might otherwise be missed by an automated testing program. Automated testing is
well-suited for large projects; projects that require testing the same areas over and over;
and projects that have already been through an initial manual testing process.

1. Automated Testing is Better Than Manual Testing

The reality is, there is no “better” or “worse” in the automated vs. manual debate,
there’s just “different.” Each approach has its own advantages and disadvantages.
Manual testing is performed by a human sitting in front of a computer carefully going
through application via SQL and log analysis, trying various usage and input
combinations, comparing the results to the expected behavior and recording the
results. Automated testing is often used after the initial software has been developed.
Lengthy tests that are often avoided during manual testing can be run unattended.
They can even be run on multiple computers with different configurations.

In the end, both manual and automated testing have their roles, especially if the
software you’re developing is too large and too complex to rely just on the manual
approach.

What is Performance Testing?


Performance testing, a non-functional testing technique performed to
determine the system parameters in terms of responsiveness and stability
under various workload. Performance testing measures the quality
attributes of the system, such as scalability, reliability and resource usage.

Performance Testing Techniques:


 Load testing - It is the simplest form of testing conducted to understand the
behavior of the system under a specific load. Load testing will result in
measuring important business critical transactions and load on the database,
application server, etc., are also monitored.

 Stress testing - It is performed to find the upper limit capacity of the system
and also to determine how the system performs if the current load goes well
above the expected maximum.

 Soak testing - Soak Testing also known as endurance testing, is performed to


determine the system parameters under continuous expected load. During soak
tests the parameters such as memory utilization is monitored to detect memory
leaks or other performance issues. The main aim is to discover the system's
performance under sustained use.

 Spike testing - Spike testing is performed by increasing the number of users


suddenly by a very large amount and measuring the performance of the
system. The main aim is to determine whether the system will be able to
sustain the workload.

 Scalability testing ensures that an application can handle the projected increase in
user traffic, data volume, transaction counts frequency, etc.

 Volume testing is defined as a type of Software Testing, where the software is


subjected to a huge volume of data. It is also referred to as flood testing. Volume
testing is done to analyze the system performance by increasing the volume of data in
the database

Security Testing

Security Testing is defined as a type of Software Testing that ensures software systems
and applications are free from any vulnerabilities, threats, risks that may cause a big loss. ...
It also helps in detecting all possible security risks in the system and help developers in
fixing these problems through coding.

Compatibility Testing:

Compatibility Testing is a type of Software testing to check whether your software


is capable of running on different hardware, operating systems, applications, network
environments or Mobile devices. Compatibility Testing is a type of Non-
functional testing.

Globalization is the process of designing and developing applications that function for
multiple cultures. Localization is the process of customizing your application for a
given culture and locale. ... Format and parse numbers, dates etc. according to the
user's locale.

Regression Testing is defined as a type of software testing to confirm that a recent


program or code change has not adversely affected existing features. Regression
Testing is nothing but a full or partial selection of already executed test cases which are re-
executed to ensure existing functionalities work fine.

Agile testing is a software testing process that follows the principles of agile software
development. Agile testing aligns with iterative development methodology in which
requirements develop gradually from customers and testing teams. The development is
aligned with customer requirements

Typically, "platform" refers to the actual hardware/software upon which a piece of software
is built or for which it is destined. Example usage: "I built this app for the Windows platform."
"Framework" refers to a collection of libraries/classes with the common goal of providing a
scaffold on which to build software.
What is difference between framework and tool?
The difference between a framework and a tool is that you have to do work to fillin
the blanks when it comes to a framework, whereas a tool does most of the work itself.
Also, frameworks are typically built to address a narrow need whereas toolsare built
for broader use cases.

Selenium is a free (open source) automated testing suite for web applications
across different browsers and platforms. It is quite similar to HP Quick Test
Pro (QTP now UFT) only that Selenium focuses on automating web-based
applications. Testing done using Selenium tool is usually referred as Selenium
Testing.

Selenium is not just a single tool but a suite of software's, each catering to
different testing needs of an organization. It has four components.

You might also like