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.
SOURCES
- HTTP://WWW.COMPUTER.ORG/SEVOCAB
SEARCH ITEMS ISO 29119 AND IS0 25010 - ISTQB GLOSSARY
- CRUSSPIC STMPL (RST COURSEWARE)
- Software Quality Characteristics and Internal Software Quality Characteristics by Rikard Edgren, Henrik Emilson and Martin Jansson in The little black book on test design
Nice alternative in relation to the Quality Characteristics from Rikard Edgren. See page 16 of “The Little Black Book on Test Design” for more information http://thetesteye.com/blog/2011/09/the-little-black-book-on-test-design/
LikeLike
Thanks Yanto,
Since I want this post to be dynamic in content I will add the content of Rikard Edgren, Henrik Emilsson and Martin Jansson to the individual items. I also want to point out that there is a Dutch (slightly adjusted) version made by DEWT which can be downloaded here:
Click to access thetesteye_softwarekwaliteitkenmerken1.pdf
LikeLike
Pingback: Five Blogs – 6 November 2014 | 5blogs