Software testing is the process of testing a software product in order to check the conformity between the actual and expected behavior of the program. There are several types of testing. As a rule, it can be distinguished either functional or non-functional testing.
In the article, we figured out the difference between these types of testing, what stages and types of functional testing exist, what tools are useful, and how testing can be automated. We also shared some tips for newbies in QA.
Functional testing is a type of testing where we check WHAT the software product does, for example, checking the API, database, user interface, functionality of the product under test, etc. It is checked for compliance with specifications and business requirements and is based on customer requirements.
Non-functional testing is a type of testing that checks HOW a software product works: performance, scalability, load, UX, etc. It is based on customer expectations. Example: authorization occurred in 2 seconds.
Compared to functional testing, requirements for non-functional testing are harder to collect. They are vaguer, do not have a clear TDA and are based on user experience. It should be noted that non-functional testing occurs after checking for the correct operation of all functions – functional testing.
Beginning testers often forget that they need to look at how the system behaves under unforeseen conditions. When does a product perform as expected by the consumer? Is it effective under any circumstances? What load can it withstand?
Checks that include non-functional testing
- accessibility testing – the software product is available for use 24/7;
- usability testing (UX/UI) – how the design matches the layouts; moreover, the usability of the software product by the end user is also checked;
- performance testing – how fast the product works, as well as determining the speed of procedures, stability and reliability;
- localization testing – the content of the software product is checked for linguistic errors, compliance with cultural requirements and the specifics of a particular country/region;
- security testing – on this stage, the vulnerability of a software product to various attacks is checked.
Where to start non-functional testing, or what you need to check
Availability and security. The software product can be used at any time, and the user’s data will not be in the hands of an attacker. If we are talking about web applications, eliminate the possibility of cross-site scripting and request forgery, as well as exclude authentication and authorization bypasses.
After that, you should pay attention to ease of use. Look at the target audience of the software product and build a test plan based on this. The end user must like the product so that they want to return to it and use it over and over again.
Performance and localization. Here, you need to reason from the specifics of the project. For example, your product is for internal use in a company, and only 100 people will use it. In this case, performance testing will be exhaustive.
You can automate some of the checks described above and make your job easier. But don’t mindlessly automate everything. Understand how necessary this is for your particular project.
Tools that are needed / will be useful when automating non-functional testing
- Apache Jmeter is one of the most popular load and stress testing tools. Can be installed on any OS. The Jmeter official website has detailed instructions for using the product. Plus, you can find the answer to any question on the Internet, because it has been used by many testers for over 20 years. How it works: JMeter emulates user requests. In it, you can set the number of visitors to the software product and the cycles for launching queries. Jmeter will collect all the statistics on the executed scripts and give you a report in a convenient form
- Netsparker – This program allows you to identify vulnerabilities. For example, SQL injection or cross-site scripting in web applications and web APIs. Helps automate security checks. How it works: Netsparker automatically scans all legacy and modern web application types and single page applications, as well as password-protected web resources. Found vulnerabilities are immediately assigned severity levels in order to determine potential damage
- Google Optimization – with the help of this service you can view the behavior on the site and conduct experiments. The most popular section is A/B-testing where you can evaluate the usability of new buttons on the site and entire pages. How it works: a script is created that switches versions. Set up display criteria. As a result, the user will see one of the versions of the site or page.
- Firebase – This service is similar to Google Optimization. Most often used for mobile applications.
It should be noted that a complete newbie in QA will find it difficult to use this toolkit. Get ready to learn SQL and programming languages, at least at a basic level.
You may also face a lack of time, because non-functional testing comes at the very end. Of course, there are checks that go in parallel with the functional one – localization and UX/UI. But basically it is carried out when the software product gets into operation by the end user. Your task is to check the system based on the initial data and prevent product failures and breakdowns. And try to start as early as possible.
Conclusion
Non-functional testing is necessary when testing software products. It is difficult to understand and study, but you should not forget about it. Beginners in this field should start the acquaintance with security and usability testing, and when you have more experience and knowledge, move on to other types of non-functional testing. Remember: never give up!