Non-functional testing is defined as a type of software testing to check non-functional aspects (performance, usability, reliability, etc) of a software application. It is designed to test the readiness of a system as per nonfunctional parameters which are never addressed by functional testing.

Non-functional testing is equally important as functional testing and affects client satisfaction.


  • Non-functional testing should increase usability, efficiency, maintainability, and portability of the product.
  • Helps to reduce production risk and cost associated with non-functional aspects of the product.
  • Optimize the way product is installed, setup, executes, managed and monitored.
  • Collect and produce measurements, and metrics for internal research and development.
  • Improve and enhance knowledge of the product behavior and technologies in use.


  • Non-functional testing should be measurable, so there is no place for subjective characterization like good, better, best, etc.
  • Exact numbers are unlikely to be known at the start of the requirement process
  • Important to prioritize the requirements
  • Ensure that quality attributes are identified correctly in Software Engineering.


The parameter defines how a system is safeguarded against deliberate and sudden attacks from internal and external sources.


The extent to which any software system continuously performs the specified functions without failure.


The parameter checks that the software system continues to function and recovers itself in case of system failure.


The parameter determines the degree to which user can depend on the system during its operation.


The ease with which the user can learn, operate, prepare inputs and outputs through interaction with a system.


The term refers to the degree in which any software application can expand its processing capacity to meet an increase in demand.


This non-functional parameter checks a software system interfaces with other software systems.


The extent to which any software system can handles capacity, quantity and response time.


The term refers to the ease with which the application can work in different hardware and software configurations. Like minimum RAM, CPU requirements.


The flexibility of software to transfer from its current hardware or software environment.


It refers to a portion of the software system that can be converted for use in another application.