NON-FUNCTIONAL TESTING

Non-functional Testing Is The Testing Of A Software Application Or System For Its Non-functional Requirements: The Way A System Operates, Rather Than Specific Behaviours Of That System

1.Explain in detail about Non Functional Testing

In non-functional testing the quality characteristics of the component or system is tested. Non-functional refers to aspects
of the software that may not be related to a specific function or user action such as scalability or security. Eg. How many
people can log in at once? Non-functional testing is also performed at all levels like functional testing.

Non-functional testing includes:

  • Reliability testing
  • Usability testing
  • Efficiency testing
  • Maintainability testing
  • Portability testing
  • Baseline testing
  • Compliance testing
  • Documentation testing
  • Endurance testing
  • Load testing
  • Performance testing
  • Compatibility testing
  • Security testing
  • Scalability testing
  • Volume testing
  • Stress testing
  • Recovery testing
  • Internationalization testing and Localization testing

Reliability Testing : Reliability Testing is about exercising an application so that failures are discovered and removed
before the system is deployed. The purpose of reliability testing is to determine product reliability, and to determine whether
the software meets the customer’s reliability requirements.

Usability Testing : In usability testing basically the testers tests the ease with which the user interfaces can be used. It tests
that whether the application or the product built is user-friendly or not.

Usability testing includes the following five components:

  • Learnability: How easy is it for users to accomplish basic tasks the first time they encounter the design?
  • Efficiency: How fast can experienced users accomplish tasks?
  • Memorability: When users return to the design after a period of not using it, does the user remember enough to use iteffectively the next time, or does the user have to start over again learning everything?
  • Errors: How many errors do users make, how severe are these errors and how easily can they recover from theerrors?
  • Satisfaction: How much does the user like using the system?

Efficiency Testing : Efficiency testing test the amount of code and testing resources required by a program to perform a
particular function. Software Test Efficiency is number of test cases executed divided by unit of time (generally per hour).

Maintainability Testing : It basically defines that how easy it is to maintain the system. This means that how easy it is
to analyze, change and test the application or product.

Portability Testing : It refers to the process of testing the ease with which a computer software component or application
can be moved from one environment to another, e.g. moving of any application from Windows 2000 to Windows XP.
This is usually measured in terms of the maximum amount of effort permitted. Results are measured in terms of the time
required to move the software and complete the and documentation updates.

Baseline Testing : It refers to the validation of documents and specifications on which test cases would be designed. The
requirement specification validation is baseline testing.

Compliance Testing : It is related with the IT standards followed by the company and it is the testing done to find the
deviations from the company prescribed standards.

Documentation Testing : As per the IEEE Documentation describing plans for, or results of, the testing of a system or
component, Types include test case specification, test incident report, test log, test plan, test procedure, test report. Hence
the testing of all the above mentioned documents is known as documentation testing.

Endurance Testing : : Endurance testing involves testing a system with a significant load extended over a significant
period of time, to discover how the system behaves under sustained use. For example, in software testing, a system may
behave exactly as expected when tested for 1 hour but when the same system is tested for 3 hours, problems such as
memory leaks cause the system to fail or behave randomly.

Load Testing : A load test is usually conducted to understand the behavior of the application under a specific expected
load. Load testing is performed to determine a system’s behavior under both normal and at peak conditions. It helps to
identify the maximum operating capacity of an application as well as any bottlenecks and determine which element is
causing degradation. E.g. If the number of users are in creased then how much CPU, memory will be consumed, what is
the network and bandwidth response time

Performance Testing : Performance testing is testing that is performed, to determine how fast some aspect of a system
performs under a particular workload. It can serve different purposes like it can demonstrate that the system meets
performance criteria. It can compare two systems to find which performs better. Or it can measure what part of the system
or workload causes the system to perform badly.

Compatibility Testing : Compatibility testing is basically the testing of the application or the product built with the
computing environment. It tests whether the application or the software product built is compatible with the hardware,
operating system, database or other system software or not.

Security Testing : Security testing is basically to check that whether the application or the product is secured or not. Can
anyone came tomorrow and hack the system or login the application without any authorization. It is a process to
determine that an information system protects data and maintains functionality as intended.

Scalability Testing : It is the testing of a software application for measuring its capability to scale up in terms of any of
its non-functional capability like load supported, the number of transactions, the data volume etc.

Volume Testing : Volume testing refers to testing a software application or the product with a certain amount of data.
E.g., if we want to volume test our application with a specific database size, we need to expand our database to that size
and then test the application’s performance on it.

Stress Testing : It involves testing beyond normal operational capacity, often to a breaking point, in order to observe the
results. It is a form of testing that is used to determine the stability of a given system. It put greater emphasis on
robustness, availability, and error handling under a heavy load, rather than on what would be considered correct behavior
under normal circumstances. The goals of such tests may be to ensure the software does not crash in conditions of
insufficient computational resources (such as memory or disk space).

Recovery Testing : Recovery testing is done in order to check how fast and better the application can recover after it has
gone through any type of crash or hardware failure etc. Recovery testing is the forced failure of the software in a variety
of ways to verify that recovery is properly performed. For example, when an application is receiving data from a network,
unplug the connecting cable. After some time, plug the cable back in and analyze the application’s ability to continue
receiving data from the point at which the network connection got disappeared. Restart the system while a browser has a
definite number of sessions and check whether the browser is able to recover all of them or not.

Internationalization and localization Testing : Internationalization is a process of designing a software application so
that it can be adapted to various languages and regions without any changes. Whereas Localization is a process of
adapting internationalized software for a specific region or language by adding local specific components and translating
text.