Il existe plusieurs types de tests, mais les plus importants sont les tests unitaires, les tests de composants, les tests de fonctions et les tests de bout en bout.
-
Unit tests
vérifie si vos classes fonctionnent comme prévu (JUnit). Ces tests sont la base de votre environnement de test car ils indiquent si vos méthodes fonctionnent. Votre objectif est d'obtenir une couverture de 100 %, car il s'agit de la partie la plus importante de vos tests.
-
Component tests
vérifie comment plusieurs classes fonctionnent ensemble dans votre code. Le composant peut être un grand nombre de choses dans le code, mais c'est essentiellement plus que les tests unitaires, et moins que les tests de fonctions. L'objectif de couverture est d'environ 75%.
-
Function tests
testent les fonctionnalités réelles que vous mettez en œuvre. Par exemple, si vous voulez un bouton qui enregistre certaines données d'entrée dans une base de données, il s'agit d'une fonctionnalité du programme. C'est ce que vous testez. La couverture visée ici est d'environ 50 %.
-
End-to-end tests
testent l'ensemble de votre application. Celles-ci peuvent être assez robustes, et vous ne pouvez et ne voulez probablement pas tout tester, ce test est là pour vérifier si l'ensemble du système fonctionne. L'objectif de couverture est d'environ 25%.
C'est aussi l'ordre d'importance.
Mais il n'y a rien de tel dans ce domaine que d'être "meilleur". Tout test que vous pouvez exécuter pour vérifier que votre code fonctionne comme prévu est également bon.
Vous souhaitez probablement que la plupart de vos tests soient automatisés : vous pouvez ainsi tester pendant votre pause café ou vos serveurs peuvent tout tester pendant votre absence du travail, puis vérifier les résultats le matin.
Les tests de l'interface graphique sont considérés comme la partie la plus difficile des tests, et il existe plusieurs outils qui vous aident dans ce domaine, par exemple Selenium pour les tests de l'interface graphique du navigateur. Plusieurs modèles architecturaux comme Model-View-Presenter essaient de séparer la partie GUI de l'application pour cette raison et de travailler avec une GUI aussi muette que possible pour éviter les erreurs. Si vous parvenez à séparer votre graphique, vous serez en mesure de simuler la partie GUI de l'application et de l'exclure de la plupart des processus de test.
Pour référence, je suggère "Effective Software Testing" d'Elfriede Dustin, mais je ne suis pas familier avec les livres sur le sujet ; il pourrait y en avoir de meilleurs.