A while ago the lead business analyst in my project asked me if I could supply him with a list of non functional tests.
While aware that he probably meant if I could supply him with the non functional tests defined, executed and/or logged for our project I did not have a lot of time to search our test ware for them and I gave him the below list of definitions to digest as a starter.
I shared that list so the items on it can be used as a list to draw test ideas from. Since the initial publication I decided that this should be a living document. My first addition is based on the list of Software Quality Characteristics by Rikard Edgren, Henrik Emilson and Marin Janson (The testeye). I would like to continue to add definitions and possibly the supporting items that the Testeye added to theirs for each of them.
accessibility: usability of a product, service, environment or facility by people with the widest range of capabilities
accountability: degree to which the actions of an entity can be traced uniquely to the entity
adaptability: The capability of the software product to be adapted for different specified environments without applying actions or means other than those provided for this purpose for the software considered.
analyzability: The capability of the software product to be diagnosed for deficiencies or causes of failures in the software, or for the parts to be modified to be identified
availability: The degree to which a component or system is operational and accessible when required for use.
capacity: degree to which the maximum limits of a product or system parameter meet requirements
capability: Can the product perform valuable functions?
Completeness: all important functions wanted by end users are available.
Accuracy: any output or calculation in the product is correct and presented with significant digits.
Efficiency: performs its actions in an efficient manner (without doing what it’s not supposed to do.)
Interoperability: different features interact with each other in the best way.
Concurrency: ability to perform multiple parallel tasks, and run at the same time as other processes.
Data agnosticism: supports all possible data formats, and handles noise
Extensibility: ability for customers or 3rd parties to add features or change behavior.
change ability: The capability of the software product to enable specified modifications to be implemented.
charisma: Does the product have “it”?
Uniqueness: the product is distinguishable and has something no one else has.
Satisfaction: how do you feel after using the product?- Professionalism: does the product have the appropriate flair of professionalism and feel fit for purpose?
Attractiveness: are all types of aspects of the product appealing to eyes and other senses?
Curiosity: will users get interested and try out what they can do with the product?
Entrancement: do users get hooked, have fun, in a flow, and fully engaged when using the product?
Hype: does the product use too much or too little of the latest and greatest technologies/ideas?
Expectancy: the product exceeds expectations and meets the needs you didn’t know you had.
Attitude: do the product and its information have the right attitude and speak to you with the right language and style?
Directness: are (first) impressions impressive?
Story: are there compelling stories about the product’s inception, construction or usage?
compatibility: degree to which a product, system or component can exchange information with other products, systems or components, or perform its required functions, while sharing the same hardware or software environment
compatibility: How well does the product interact with software and environments?
Hardware Compatibility: the product can be used with applicable configurations of hardware components.
Operating System Compatibility: the product can run on intended operating system versions, and follows typical behavior.
Application Compatibility: the product, and its data, works with other applications customers are likely to use.
Configuration Compatibility: product’s ability to blend in with configurations of the environment.
Backward Compatibility: can the product do everything the last version could?
Forward Compatibility: will the product be able to use artifacts or interfaces of future versions?
Sustainability: effects on the environment, e.g. energy efficiency, switch-offs, power-saving modes, telecommuting.
Standards Conformance: the product conforms to applicable standards, regulations, laws or ethics.
compliance: The capability of the software product to adhere to standards, conventions or regulations in laws and similar prescriptions.
confidentiality: degree to which a product or system ensures that data are accessible only to those authorized to have access
flexibility: the ease with which a system or component can be modified for use in applications or environments other than those for which it was specifically designed
install ability: The capability of the software product to be installed in a specified environment
integrity: degree to which a system or component prevents unauthorized access to, or modification of, computer programs or data
interoperability: The capability of the software product to interact with one or more specified components or systems
IT-ability: Is the product easy to install, maintain and support?
System requirements: ability to run on supported configurations, and handle different environments or missing components.
Installability: product can be installed on intended platforms with appropriate footprint.
Upgrades: ease of upgrading to a newer version without loss of configuration and settings.
Uninstallation: are all files (except user’s or system files) and other resources should be removed when uninstalling?
Configuration: can the installation be configured in various ways or places to support customer’s usage?
Deployability: product can be rolled-out by IT department to different types of (restricted) users and environments.
Maintainability: are the product and its artifacts easy to maintain and support for customers.
Testability: how effectively can the deployed product be tested by the customer?
learnability: The capability of the software product to enable the user to learn its application
localizability: How economical will it be to adapt the product for other places
maintainability: The ease with which a software product can be modified to correct defects, modified to meet new requirements, modified to make future maintenance easier, or adapted to a changed environment
maintainability: Can the product be maintained and extended at low cost?
Flexibility: the ability to change the product as required by customers.
Extensibility: will it be easy to add features in the future?
Simplicity: the code is not more complex than needed, and does not obscure test design, execution and evaluation.
Readability: the code is adequately documented and easy to read and understand.
Transparency: Is it easy to understand the underlying structures?- Modularity: the code is split into manageable pieces.
Refactorability: are you satisfied with the unit tests?
Analyzability: ability to find causes for defects or other code of interest.
modifiability: ease with which a system can be changed without introducing defects
modularity: degree to which a system or computer program is composed of discrete components such that a change to one component has minimal impact on other components
non-functional requirement: A requirement that does not relate to functionality, but to attributes such as reliability, efficiency, usability, maintainability and portability
operability: The capability of the software product to enable the user to operate and control it
performance: Is the product fast enough?
Capacity: the many limits of the product, for different circumstances (e.g. slow network.)
Stress handling: how does the system cope when exceeding various limits?Responsiveness: the speed of which an action is (perceived as) performed.
Availability: the system is available for use when it should be.
Throughput: the products ability to process many, many things.
Endurance: can the product handle load for a long time?
Feedback: is the feedback from the system on user actions appropriate?
Scalability: how well does the product scale up, out or down?
pleasure: degree to which a user obtains pleasure from fulfilling personal needs
portability: The ease with which the software product can be transferred from one hardware or software environment to another
portability: Is transferring of the product to different environments and languages enabled?
Reusability: can parts of the product be re-used elsewhere?
Adaptability: is it easy to change the product to support a different environment?
Compatibility: does the product comply with common interfaces or official standards?
Internationalization: it is easy to translate the product.
Localization: are all parts of the product adjusted to meet the needs of the targeted culture/country?
User Interface-robustness: will the product look equally good when translated?
recoverability: The capability of the software product to re-establish a specified level of performance and recover the data directly affected in case of failure
reliability: The ability of the software product to perform its required functions under stated conditions for a specified period of time, or for a specified number of operations
reliability: Can you trust the product in many and difficult situations?
Stability: the product shouldn’t cause crashes, unhandled exceptions or script errors.
Robustness: the product handles foreseen and unforeseen errors gracefully.
Recoverability: it is possible to recover and continue using the product after a fatal error.
Resource Usage: appropriate usage of memory, storage and other resources.
Data Integrity: all types of data remain intact throughout the product.
Safety: the product will not be part of damaging people or possessions.
Disaster Recovery: what if something really, really bad happens?
Trustworthiness: is the product’s behavior consistent, predictable, and trustworthy?
replaceability: The capability of the software product to be used in place of another specified software product for the same purpose in the same environment
reusability: degree to which an asset can be used in more than one system, or in building other assets
robustness: The degree to which a component or system can function correctly in the presence of invalid inputs or stressful environmental conditions
safety: The capability of the software product to achieve acceptable levels of risk of harm to people, business, software, property or the environment in a specified context of use
satisfaction: freedom from discomfort and positive attitudes towards the use of the product
scalability: The capability of the software product to be upgraded to accommodate increased loads
security: Attributes of software products that bear on its ability to prevent unauthorized access, whether accidental or deliberate, to programs and data
security: Does the product protect against unwanted usage?
Authentication: the product’s identifications of the users.
Authorization: the product’s handling of what an authenticated user can see and do.
Privacy: ability to not disclose data that is protected to unauthorized users.
Security holes: product should not invite to social engineering vulnerabilities.
Secrecy: the product should under no circumstances disclose information about the underlying systems.
Invulnerability: ability to withstand penetration attempts.
Virus-free: product will not transport virus, or appear as one.
Piracy Resistance: no possibility to illegally copy and distribute the software or code.
Compliance: security standards the product adheres to.
stability: The capability of the software product to avoid unexpected effects from modifications in the software
suitability: The capability of the software product to provide an appropriate set of functions for specified tasks and user objectives
supportability: Can customer’ usage and problem be supported?
Identifiers: is it easy to identify parts of the product and their versions, or specific errors?
Diagnostics: is it possible to find out details regarding customer situations?
Troubleshootable: is it easy to pinpoint errors (e.g. log files) and get help?
Debugging: can you observe the internal states of the software when needed?
Versatility: ability to use the product in more ways than it was originally designed for.
survivability: degree to which a product or system continues to fulfill its mission by providing essential services in a timely manner in spite of the presence of attacks
testability: The capability of the software product to enable modified software to be tested
testability: Is it easy to check and test the product?
Traceability: the product logs actions at appropriate levels and in usable format.
Controllability: ability to independently set states, objects or variables.
Isolateability: ability to test a part by itself.- Observability: ability to observe things that should be tested.
Monitorability: can the product give hints on what/how it is doing?- Stability: changes to the software are controlled, and not too frequent.
Automation: are there public or hidden programmatic interface that can be used?- Information: ability for testers to learn what needs to be learned…
Auditability: can the product and its creation be validated?
traceability: The ability to identify related items in documentation and software, such as requirements with associated tests
usability: extent to which a system, product or service can be used by specified users to achieve specified goals with effectiveness, efficiency and satisfaction in a specified context of use
usability: Is the product easy to use?
Affordance: product invites to discover possibilities of the product.
Intuitiveness: it is easy to understand and explain what the product can do.
Minimalism: there is nothing redundant about the product’s content or appearance.
Learnability: it is fast and easy to learn how to use the product.
Memorability: once you have learnt how to do something you don’t forget it.
Discoverability: the product’s information and capabilities can be discovered by exploration of the user interface.
Operability: an experienced user can perform common actions very fast.
Interactivity: the product has easy-to-understand states and possibilities of interacting with the application (via GUI or API).
Control: the user should feel in control over the proceedings of the software.
Clarity: is everything stated explicitly and in detail, with a language that can be understood, leaving no room for doubt?
Errors: there are informative error messages, difficult to make mistakes and easy to repair after making them.
Consistency: behavior is the same throughout the product, and there is one look & feel.
Tailorability: default settings and behavior can be specified for flexibility.
Accessibility: the product is possible to use for as many people as possible, and meets applicable accessibility standards.
Documentation: there is a Help that helps, and matches the functionality.
Any additions to this list or comments on the definitions used are welcome.