Non Functional Testing

Download as docx, pdf, or txt
Download as docx, pdf, or txt
You are on page 1of 8
At a glance
Powered by AI
The key takeaways are that non-functional testing verifies non-functional requirements like performance, security, etc. It ensures that the application meets quality expectations.

The different types of non-functional testing are performance testing, load testing, stress testing, compatibility testing, usability testing, reliability testing, etc.

The purpose of non-functional testing is to ensure that the non-functional aspects of the application are tested and the application works well in context to aspects like performance, security, etc. It helps provide an application that meets business expectations.

What is Non Functional Testing: Its Types and

Purpose

What is Non-Functional Testing?


Non-functional testing is done to verify the non-functional requirement i.e. Performance,
Usability etc. It verifies if the behaviour of the system is as per the requirement or not. It
covers all the aspects which are not covered in functional testing.
As the name itself depicts, this testing concentrates on the non-functional aspect of the
application. So what are the non-functional aspects? Or should I say what are the
features which are not related to the functionality of the application?
Well, here are the answers to those:
 How does the application perform under normal circumstances?
 How does the application behave when too many users log in concurrently?
 Can the application handle stress?
 How secure is the application?
 Can the application recover from any disaster?
 Can the application behave in the same way in a different environment or OS?
 How easy is to port the application in a different system?
 Are the documents/user manual provided with the application easy to
understand?
The list can keep going. But the point here is, are not these features contributed towards
the quality of the application? The answer is YES. These features are equally important.

Imagine that an application meets all the user requirements perfectly, but some
unauthorized user easily goes and cracks the data entered by the user in the application,
or the application dies when more than 5GB of any file is uploaded. So would you say
that the application is of good quality? Obviously not right!!

Purpose of Non-Functional Testing


The sole purpose of non-functional testing is to ensure that the non-functional aspects of
the application are tested and the application works well in context to the same.

The purpose is to cover the testing of all the characteristics of the application which
helps to provide an application that meets the business expectation.

Importance of Non-Functional Testing


Non-functional testing is as important as functional testing.

Functional testing tests the application’s functionality and ensures that it works as
expected but non- functional testing ensures that the application works good enough to
meet the business expectations.

In order to understand its importance let’s see a simple Example:


An application is developed and is completely tested for functionality but non- functional
testing is not performed on the same.
And when the application goes live it might result in critical or major issues like when the
load is increased on the application it becomes too slow and takes a lot of time to open.

Response time might increase or when the load is increased to an extent, the application
might crash. This shows how important it is to test an application’s non-functional
aspects.

Advantages of Non-Functional Testing


Given below are few advantages of Non-Functional Testing:
 Non-functional testing covers the testing which cannot be covered in functional
testing.
 It ensures that the application runs efficiently and is reliable enough.
 It ensures the security of the application.
How to Capture Non-Functional Requirements
While we perform testing, the focus is mainly on functional testing which tests the
functionality of the product. But non-functional testing is as important as functional
testing and its requirement should be taken into consideration right from the inception of
the product.

Differences in Functional & Non-Functional Testing


Given below are few differences between Functional and Non-Functional Testing:
S.N
Functional Testing Non Functional Testing
o

1 Functional Testing verifies how Non functional testing verifies how well the
well the system works. system responds.

2 Functional testing verifies the Non functional testing verifies the


functionality of the system or how Performance of the system.
the system behaves.

3 Functional testing is based on the Non functional testing is based on the


customer requirement. customer expectation.

4 Functional testing has following Non functional testing includes:


types: • Performance testing
• Unit testing • Load Testing
• Integration testing • Stress testing
• System Testing • Volume testing
• Acceptance Testing • Security testing
• Installation testing
• Recovery testing

5 Example of Function testing: Example of Non Function testing: Providing


Providing username and username and password on login page
password on login screen should should allow to log into site within 3
allow the user to log into seconds.
application.
S.N
Functional Testing Non Functional Testing
o

6 Customer feedback helps in Customer feedback is more valuable for


reducing risk factors of the non functional testing as it helps to improve
product. and let the tester know the expectation of
the customer.

7 Functional testing does not Non functional testing can be more


necessarily require tools. It can be appropriate/efficient using tools.
done effectively manually.

8 Functional testing is done based Non- functional testing is done based on


on business requirement. customer expectation and Performance
requirement.

Non-functional Testing Types


The Following image depicts the types of Non-Functional Testing:

Performance Testing:
Evaluates the overall performance of the system.

Key elements are as follows:


–  Validate that the system meets the expected response time.
–  Evaluate that the significant elements of the application meet the desired response
time.
–  It can also be conducted as a part of integration testing.
–  It can also be conducted as a part of system testing.
Load Testing:
Load Testing is to verify that the system/application can handle the expected number of
transactions and to verify the system/application behaviour under both normal and peak
load conditions (no. of users).

Key points are:


–  Validate that the system performs as expected when concurrent users access the
application and gets the expected response time.

–  This test is repeated with multiple users to get the response time and throughput.
–  At the time of testing, the data base should be realistic.
–  The test should be conducted on a dedicated server which stimulates the actual
environment.

Stress Testing:
Stress Testing is to verify the behaviour of the system once the load increases more
than the system’s design expectations. This testing addresses which components fail
first when we stress the system by applying the load beyond the design expectations. So
that we can design more robust system.

Key points are:


–  Test on low memory or low disc space on clients / servers that reveals the defects
which cannot be found under normal conditions.

–  Multiple user perform the same transactions on the same data.


–  Multiple clients connected to servers with different workloads.
–  Reduce the Think Time to “Zero” to stress the servers to their maximum stress.

Volume Testing:
Volume Testing is to verify that the system/application can handle a large amount of
data. This testing focuses on Data Base.

Key points are:


–  When the software is subject to large amounts of data, checks the limit where the
software fails.
–  Maximum database size is created and multiple client query the database or create
larger report.
–  Example– If the application is processing the database to create a report, a volume
test would be to use a large result set and check that if the report is printed correctly.
Usability Testing:
Evaluates the system for human use or checks if it is fit for use.

Key points are:


–  Is the output correct and meaningful and is it the same as which was expected as per
the business?
–  Are the errors diagnosed correctly?
–  Is the GUI correct and consistent with the standard?
–  Is the application easy for use?
User Interface Testing:
Evaluates the GUI.

Key points are:


–  GUI should provide help and tool tips to make it easy for use.
–  Consistent for its look?
–  Data is traversed correctly from one page to another?
–  GUI should not annoy the user or get difficult to understand.

Compatibility Testing:
Evaluates that the application is compatible with other hardware /software with minimum
and maximum configuration.

Key points are:


–   Test with each hardware with minimum and maximum configuration.
–   Test with different browsers.
–   Test cases are the same like which were executed during functional testing.
–   In case the number of hardware and software are too many, we can use OATS
techniques to arrive at the test cases to have maximum coverage.

Soak Testing:

Soak Testing is aka Endurance Testing. Running a system at high load for a prolonged
period of time to identify the performance problems is called Soak Testing. It is to make
sure the software can handle the expected load over a long period of time.

Spike Testing:

Spike Testing is to determine the behaviour of the system under sudden increase of load
(a large number of users) on the system.

What is Security testing?


Security Testing is a variant of Software Testing which ensures, that
system and applications in an organization, are free from any loopholes
that may cause a big loss. Security testing of any system is about finding all
possible loopholes and weaknesses of the system which might result into a
loss of information at the hands of the employees or outsiders of the
Organization.

Types of Security Testing:


There are seven main types of security testing as per Open Source
Security Testing methodology manual. They are explained as follows:
 Vulnerability Scanning: This is done through automated software to
scan a system against known vulnerability signatures.
 Security Scanning: It involves identifying network and system
weaknesses, and later provides solutions for reducing these risks.
This scanning can be performed for both Manual and Automated
scanning.
 Penetration testing: This kind of testing simulates an attack from a
malicious hacker. This testing involves analysis of a particular system
to check for potential vulnerabilities to an external hacking attempt.
 Risk Assessment: This testing involves analysis of security risks
observed in the organization. Risks are classified as Low, Medium
and High. This testing recommends controls and measures to reduce
the risk.
 Security Auditing: This is an internal inspection of Applications and
Operating systems for security flaws. Audit can also be done via line
by line inspection of code
 Ethical hacking: It's hacking an Organization Software systems.
Unlike malicious hackers, who steal for their own gains , the intent is
to expose security flaws in  the system.
 Posture Assessment: This combines Security scanning, Ethical
Hacking and Risk Assessments to show an overall security posture
of an organization.
Non-functional Testing Tools
There are several tools available in the market for Performance (Load & Stress) testing.

Few of them are listed below:


 JMeter
 Loadster
 Loadrunner
 Loadstorm
 Neoload
 Forecast
 Load Complete
 Webserver Stress Tool
 WebLoad Professional
 Loadtracer
 vPerformer
Conclusion
Non-functional testing is one of the important parts of Software testing and testing
cannot be considered complete without this as it ensures that application/Product
behavior is acceptable and is as per the business need.

Non-functional testing also requires a strategy and planning.

We can include non-functional testing details in the test plan or can create a separate
strategy for it. In either case, the goal is to have a proper coverage of non-functional
aspects of the software.

Example Test Cases Non-Functional Testing


Following are examples of Non-Functional Testing

Test Test Case Domain


Case #

1 Application load time should not be more than 5 secs Performance


up to 1000 users accessing it simultaneously Testing
2 Software should be installable on all versions of Compatibility
Windows and Mac Testing

3 All web images should have alt tags Accessibility


testing.

You might also like