Les tests non fonctionnels sont un type de test qui a pour objectif de vérifier les aspects non fonctionnels d'une application logicielle, tels que la fiabilité, la performance, le responsive…
Les tests non fonctionnels sont tout aussi importants que les tests fonctionnels et affectent la satisfaction des clients.
Types de tests non fonctionnels
Il existe plusieurs types de tests non fonctionnels, nous citons ci-dessous quelques-uns:

Tests de performance: Les tests de performance garantissent qu'un système logiciel répond rapidement aux demandes. Les performances lentes et limitées du logiciel détruisent l'expérience utilisateur, c'est pour ceci qu'on doit tester si l'application répond aussi rapide que possible.
Des APIs permettent de diagnostiquer rapidement les problèmes de performances d’une page web. La plus utilisée est certainement PageSpeed, développée par Google. Elle fournit un score sur 100, ainsi que des pistes pour améliorer la vitesse de chargement de la page.
Tests de charge: Les tests de charge consistent à tester la capacité de charge du système. La capacité de charge signifie que de plus en plus de personnes peuvent travailler simultanément sur le système. Ce système est testé pour sa capacité à fonctionner correctement dans un temps stipulé et est capable de gérer la charge. En d'autres termes, Le test de charge répond à la question : quelle est la charge maximale supportée par l’application ?
Il existe plusieurs outils sur le marché qui permettent d'effectuer les tests de charge tels que: LoadView, JMeter, Gatling, Tsung...
Tests de sécurité : Les tests de sécurité sont utilisés pour détecter les failles de sécurité de l'application logicielle. Le test est effectué via une enquête sur l'architecture du système et l'état d'esprit d'un attaquant. Les cas de test sont menés en trouvant des zones de code où une attaque est la plus susceptible de se produire. Les tests de sécurité peuvent aller de l'analyse automatique aux tests de pénétration périodiques, selon le niveau d'exposition de l'application aux menaces potentielles.
Des tests de sécurité peuvent être facilement mis en œuvre lors de la conception de tests d’API ; il suffit alors d’imaginer des scénarios “interdits” (exemple : essayer de changer le prix d’un article en utilisant l’API en étant connecté en tant que simple client !)
Test de portabilité: Le test de portabilité du logiciel est utilisé pour vérifier si le système peut fonctionner sur différents systèmes d'exploitation sans survenir de bogue. Ce test teste également le fonctionnement des logiciels lorsqu'il y a un même système d'exploitation mais un matériel différent.
Pour mettre en place une stratégie de tests de portabilité efficace, il est nécessaire d'avoir des statistiques sur les configurations les plus répandues pour les clients finaux. Pour ceci, les outils de tracking des utilisateurs sont très bénéfiques ( exemple de "Google Analytics" pour les sites Web).
Tests d'utilisabilité: Les tests d'utilisabilité ou de convivialité mesurent la qualité de l'expérience utilisateur dans une application, c'est un type de test manuel qui vise à éliminer la confusion utilisateur et améliorer son expérience. En d'autres termes, ceci sert à éliminer les réactions suivantes de l’expérience utilisateur :
« Je ne comprends pas. »
« Ça me frustre. »
« C'est compliqué. ».
De part sa nature, les remontées issues des tests d'utilisabilité peuvent paraître subjectives et ne reflètent que le point de vue du testeur, il est donc judicieux d'avoir recours à des références d'appui (témoignages utilisateurs, états de l'art...). Le crowdtesting (test participatif) peut également améliorer la qualité des tests d'utilisabilité.
Tests de fiabilité: Les tests de fiabilité permettent de s'assurer du fonctionnement du logiciel sans défaillance pendant une période de temps spécifiée dans un environnement particulier. Le but des tests de fiabilité est de s'assurer que le produit logiciel est exempt de bogues et suffisamment fiable pour l'usage auquel il est destiné.
Pour tester la fiabilité, on peut mettre l'applicatif et son environnement en difficulté (coupure réseau, indisponibilité d’une ressource tierce…). Ceci est pour tester son comportement et sa capacité de récupération.
Des dispositifs de monitoring peuvent également être mis en œuvre afin de vérifier la disponibilité de l’applicatif au fil du temps.
Avantages des tests non fonctionnels
Les tests non fonctionnels présentent plusieurs avantages:
- Les tests non fonctionnels augmentent la convivialité, l'efficacité, la maintenabilité et la portabilité du produit.
- Ils couvrent les tests qui ne peuvent pas être couverts par les tests fonctionnels.
- Les tests non fonctionnels aident à réduire les risques de production et les coûts associés aux aspects non fonctionnels du produit.
- Ils optimisent la manière dont le produit est installé, configuré, exécuté, géré et surveillé.
Inconvénients des tests non fonctionnels
Les tests non fonctionnels présentent également quelques inconvénients:
- A chaque mise à jour du logiciel, des tests non fonctionnels sont à nouveau effectués.
- En raison des mises à jour logicielles, les utilisateurs doivent payer pour réexaminer le logiciel ; ainsi le logiciel devient très cher.
Conclusion
Dans les projets logiciels, les tests non fonctionnels sont aussi importants que les tests fonctionnels, ils contribuent tous les deux à améliorer la qualité du projet et garantir la satisfaction Client.
Si les tests fonctionnels vérifient que l'application fonctionne conformément aux exigences fonctionnels du client, les tests non fonctionnels garantissent une meilleure expérience utilisateur qui assure la convivialité, la sécurité, la performance et la fiabilité.
Dans une stratégie de test, il est hautement recommandé de traiter les deux aspects fonctionnels et non fonctionnels du projet. Et de bien planifier les activités de tests adéquats menant à la réussite du projet.