Non-functional testing inspects various aspects that functional testing doesn’t cover, such as productivity, compatibility, loading, performance, accessibility, localization, security, and many other software development aspects.
Let’s break down each case, digging deeper and with additional explanations.
Accessibility testing checks if our product is suitable for users with disabilities and can serve people with different backgrounds. This opens doors for new customers and creates a good image of the company. It is usually conducted by following the Web Content Accessibility Guidelines (WCAG) standards.
Accessibility testing also uncovers technical issues, disabling flashing, rotating, moving functions, and ensures smooth navigation.
Some examples of accessibility testing are:
- Website/applications readable by screen readers
- Color contrast optimal for people with vision problems
- Font and page sizes are adjusted
- Closed captioning for audio content
- If the content is reachable by using the tab – navigation without using the mouse
There are many tools for accessibility testing which are very simple to use.
By browsing a single URL, or the entire website, a full listed report is received with the accessibility requirements.
Usability testing involves tracking user behavior while they perform tasks using our product. This testing is user-centered, and it tests if the design of the product is intuitive enough, if it meets the intended purpose, and if it’s easy to use and understand.
Performing usability testing, we should provide an answer to the question “how easy this product is to use” – because usability is “ease of use.” It is primarily done in the early stages of the product development to evaluate and validate the design against specific goals.
One of the examples of a usability test plan can be:
Usability testers perform a given task, comment on their actions, and answer prepared questions. At the same time, the test lead makes notes from observing this action.
Furthermore, A/B testing can be used as an experimental approach to web design, focusing on user experience design. The test is performed so that the end-user receives two versions of the product (A and B). The testing user selects one of those two versions that he/she finds more user-friendly, easier to use, etc.
The main goal of Usability testing is to understand how real users interact with our product and make changes based on the results.
This testing practice checks how the product performs under normal conditions regarding responsiveness and stability. It measures the time needed for a page to load under normal conditions or how many seconds it takes to respond to the request. It is crucial to track performance metrics to define what areas and/or features require improvements.
Is the product achieving adequate response times? Nowadays, if the website fails to load within five seconds for a mobile user, the user will promptly abandon it and go to a different source.
Good performance means more online traffic and an increased likelihood of conversions.
Load testing measures the product’s performance under specific conditions as part of the performance testing. For example, what happens if we have a lot of people entering the website at the same time – is it still going to be stable and responsive?
We are adding load pressure and measuring the response by performing load testing.
Load testing helps identify the maximum operating capacity of the application and any bottlenecks to determine which element is causing the degradation. It gives us valuable information about system crashes caused by a high level of traffic to prevent loss of sales, user dissatisfaction, and brand damage.
This type of testing uncovers vulnerabilities, risks, and threats of malicious attacks from internal and external sources, resulting in loss of information, revenue, identity, etc. For example, it is performed by simulating malicious attacks on a given system.
Part of security testing is Confidentiality, Integrity, Authentication, Authorization, and Availability testing. Confidentiality refers to protection against disclosure of information, while integrity refers to protecting data from being modified by untheorized parties. Authentication refers to confirming a person’s identity and whether someone is allowed to access the application. Authorization checks if a person is given privileges within the application to access functions like admin, work, accounting, etc. A good example can be access control. This type of testing should also be involved in the early development phases.
Some of the simple test scenarios for security testing can be:
- While working with finance data, the Browsers back button should not work
- Checking cookies and session’s time expiration
- Invalid users should not have access to the system
- Passwords should be in an encrypted format
Here we test if our product – application, website, or system – is suitable for various environments. Like different devices, multiple browsers, databases, operating systems, hardware platforms, networks, different versions of configurations, etc. One example of compatibility testing is testing the same webpage throughout various browsers, tablets, and mobile devices.
Some of the common defects are:
- Alignment related issues
- Content not accessible on smaller devices
- Content overlapping
- Broken tables or frames
- Different CSS styles and color
- Different font size
- Issues with the scroll
- Text not visible
Under this type of testing, we check and ensure if our product is suitable for a specific culture, region, or locale.
Part of localization is the translation of the texts to a local language and adapting software to a particular region’s numbers formatting, system measurement, time zones, local holidays, what is acceptable on the images, tax systems, compliances, etc.
Localization testing ensures that our product has high quality globally and is entirely suitable for all targeted markets.
The advantages of functional testing are performance improvements that ensure the product runs smoothly and efficiently across platforms. If used simultaneously by numerous users, it does so without loading issues. Non-functional testing also ensures the security of users’ data and resources. Last but not least, ensuring that the product allows accessibility for users with disabilities and is adapted to different countries with specific conditions. Most of the non-functional tests aren’t related to strictly manual work, but QA engineers can use multiple helpful tools.
Just to note that I have listed only a portion of the non-functional tests here. All of them have high importance and impact on the overall quality of the product and the end user’s satisfaction.