Introduction

Ces dernières années, les technologies logicielles ont évolué si rapidement et si largement que les développeurs n'ont plus guère le temps de s'occuper en plus de la qualité des logiciels. C'est pourquoi les tests sont devenus une partie de plus en plus importante du développement de logiciels, afin de soulager les développeurs.

Étant donné qu'à l'heure actuelle, la vie des gens dépend des logiciels informatiques, il est nécessaire qu'une mise en œuvre professionnelle soit effectuée. C'est l'une des raisons pour lesquelles les tests de logiciels sont d'une importance capitale. Les tests doivent être effectués avant l'utilisation du logiciel, car cela permet de détecter les erreurs à temps et de s'assurer que les fonctionnalités du logiciel fonctionnent comme requis. Le test de logiciels est une partie importante de l'assurance qualité des logiciels, une activité visant à évaluer et à améliorer la qualité des logiciels (Cf. F. Okezie et al 2019 p. 1).

Ces dernières années, il arrivait souvent que les logiciels soient presque terminés avant d'être testés, car de nombreuses entreprises ne disposaient pas encore de services de test définis. Après quelques expériences négatives, il existe désormais un consensus sur l'importance de la formation et de la sensibilisation à l'importance des tests de logiciels pendant le développement. Les tests de logiciels sont nécessaires pour répondre à l'exigence d'une qualité de livraison élevée, que le logiciel soit livré à des clients ou à des utilisateurs internes (cf. Witte (2019), p. 4).

Dans le cadre de ce travail, nous nous penchons sur la question de savoir où se situent les différences, les points communs, les problèmes et les limites entre les différents outils de test. En résumé, les outils de test sont comparés entre eux. Les objectifs, la qualité et le temps doivent pouvoir être atteints, tout en tenant compte des aspects économiques.

En outre, différents outils de test sont comparés entre eux au moyen de différents critères. Le chapitre 2 définit précisément les termes pertinents pour ce travail, tels que qualité du logiciel, tests, erreurs, outils de test et effort de test. Le chapitre 3 présente les méthodes et les types de tests de base. Parmi les méthodes de test, on trouve le test statique et le test dynamique. Dans le test statique, l'analyse assistée par des outils ainsi que les tests de groupe structurés - également appelés revues - sont examinés plus en détail. Dans le test dynamique, les procédures de la boîte noire et de la boîte blanche sont expliquées. Les types de tests comprennent le test unitaire, le test d'intégration, le test système, le test d'acceptation, le test fonctionnel, le test non fonctionnel, le test négatif, le test de régression ainsi que le test de bout en bout. Le chapitre 4 explique en détail la gestion des erreurs. Ensuite, le chapitre 5 présente une catégorisation des outils de test. Une distinction est faite entre les outils de test statique et les outils de test dynamique. Le chapitre 6 compare les outils courants entre eux. Il s'agit de définir ce que l'on entend par ces outils de test et comment ils fonctionnent. Comme la licence de trois outils n'était pas accessible, dont "Ranorex", "TestComplete", "UFT (Unified Functional Testing)", il ne sera question dans ce travail que de la description de ces outils. De plus, le chapitre 7 montre où les outils de test peuvent être utilisés selon le type de système. Enfin, le chapitre 8 présente des recommandations aux utilisateurs en tenant compte des connaissances en programmation et des considérations économiques.

Résultats

Après une recherche approfondie dans la littérature sur les outils de test suivants, le tableau ci-dessous résume les informations nécessaires sur les outils, en fonction de certains critères sélectionnés. Cette analyse peut aider les testeurs à choisir le meilleur outil pour tester les logiciels. Le tableau résume à nouveau les caractéristiques des outils.

Critetères/OutilsTestCaféSelenium Web-DriverAppiumSelenium IDEQF-TestRanorexTestCompleteUFT
langage de programmationJavaScript, Type-Script, CoffeeScriptJava, C#, Perl, Python, JavaScript, Ruby, PHPJava, C#, Perl, Python, JavaScript, Ruby, PHPJava, C#, Perl, Python, JavaScript, Ruby, PHPJava, Python, Groovy, JavaScriptC #, Python, C++, VB.net and XMLVbScript , Delphi, C++, C# und JScriptsVbScri pt
Plates-formes supportéesWebWebMobile, WindowsWebJava, Web, Desktop (Win), Mobile (Android)Mobile, Web, Desktop (Win)Mobile, Web, Desktop (Win)Web, Desktop (Win)
Rapports sur les résultats des testsouiouiouiouiouiouiouioui
Re-
réutilisation
ouiouiouinonouiouiouioui
Enregistrement/ Lecturenonnonnonouiouiouiouioui
facile à apprendreouiouinonouioui   
Compétences en programmationouiouiouiouinonnonnonnon
Outils types de testEnd-to-End TestsFunktional Unit Test, End-to-End TestGUI Test, Functional Unit TestFunctional Unit TestGUI TestGUI TestFunkcional Unit Test, GUI Test, Unit TestFunctional Unit Test, Regression Test
LicencegratuitegratuitegratuitegratuitePas gratuitePas gratuitePas gratuitePas gratuite
Sources

DevExpress - TestCafe 
Documentation (2012-2021)

Thought-Works - Selenium Documentation (2021)Tom Christie Appium - Documentation (2014)Thought-Works - Selnium Dokumentation (2021)QF-Test Documentation (2020)Ranorex GmbH - Documentation (2021)Smart-Bear Software - Documentation (2021)MicroFocus - Documentation (2021)

 

Recommandations

Dans le développement de logiciels, la qualité est l'objectif le plus important de tout projet, c'est pourquoi il est recommandé de choisir un outil en tenant compte de l'ampleur du projet et du coût estimé des tests. La plate-forme sur laquelle le projet sera déployé devrait également être prise en compte dans les critères de sélection d'un outil de test. Sur la base des résultats obtenus dans le cadre de ce travail, Ranorex, TestComplete, UFT et QF-Test sont recommandés pour les tests sur toutes les plates-formes et pour les grands projets. Comme il s'agit d'outils sous licence, le budget alloué aux tests doit être pris en compte. Appium est recommandé pour les applications mobiles, tandis que TestCafe, Selenium Webdriver, Selenium IDE sont disponibles pour les tests web (Cf. F. Okezie et al. 2019 p. 9).

  • Groupe cible sans connaissances en programmation
    Pour les utilisateurs sans connaissances en programmation, il est recommandé d'utiliser QFTest, Ranorex, TestComplete, UFT et Selenium IDE, car ces logiciels ne nécessitent pas de connaissances en programmation. Ces outils sont conçus pour enregistrer des cas de test automatisés et poursuivent le même objectif.
    Ces outils sont conviviaux et faciles à utiliser, et l'interface utilisateur est claire et s'explique d'elle-même. Cela rend les choses faciles pour les débutants et les testeurs inexpérimentés. Dans le cas de Selenium IDE, par exemple, les entrées possibles sont suggérées par le biais d'une fenêtre contextuelle si des commandes doivent être insérées manuellement dans l'onglet "Table". De plus, les entrées possibles sont bien documentées sur le site web de chaque outil. De plus, le code source peut être modifié ultérieurement, ce qui rend l'outil intéressant pour les testeurs. En outre, les tests peuvent être exécutés à nouveau immédiatement après leur enregistrement, ce qui permet aux utilisateurs inexpérimentés de vérifier facilement le bon fonctionnement des tests.
  • Groupe cible ayant des connaissances en programmation
    Pour les utilisateurs ayant des connaissances en programmation, il est recommandé d'utiliser TestCafe, Selenium Webdriver, Appium. Ici, la décision est laissée à l'appréciation personnelle de l'utilisateur, car c'est une question d'intérêt personnel.
    Il est fortement recommandé de demander une version d'essai gratuite afin de se familiariser avec le processus avant de commencer les tests officiels. Comme on peut le voir dans ce travail, tous les fournisseurs n'offrent pas un large éventail de langages de script au choix, de sorte que les outils qui ne proposent pas la technologie préférée peuvent être rapidement rejetés 66. Le marché étant particulièrement restreint pour les utilisateurs de Mac, l'achat d'un programme de virtualisation devrait être envisagé.
  • Investir dans des outils de test
    L'introduction d'un nouvel outil implique des coûts de sélection, d'achat et de maintenance des outils. En outre, des coûts peuvent s'ajouter pour le matériel et la formation des collaborateurs. En fonction de la complexité de l'outil et du nombre de postes de travail à équiper, l'investissement peut rapidement se chiffrer à six chiffres. Il est bien sûr important, comme pour tout investissement, de définir le délai d'amortissement du nouvel outil de test.
    Dans le cas d'outils permettant d'automatiser l'exécution des tests, il est facile d'estimer l'effort qui peut être économisé grâce à une exécution automatisée des tests par rapport à une exécution manuelle. Le nouvel effort de programmation du test doit encore être déduit, de sorte qu'après une seule exécution de test automatisée, le bilan coûts/bénéfices est généralement négatif.
    Lors de l'investissement, il faut également tenir compte de la mesure dans laquelle la qualité des tests augmente grâce à l'utilisation du nouvel outil, ce qui permet de trouver et de corriger davantage d'erreurs. Les coûts de développement, d'assistance et de maintenance s'en trouvent réduits. Toutefois, le potentiel d'économies est ici plus élevé et donc plus intéressant (Cf. Spillner & Linz. (2019) p. 223 s.).
    Si le logiciel à tester est un petit projet, il est possible d'utiliser des outils open source plutôt que d'investir davantage dans l'achat d'un outil sous licence. Pour ceux qui ne disposent que d'un très petit budget, on peut recommander les logiciels gratuits TestCafe, Selenium Webdriver, Selenium IDE, Appium.

Conclusion

L'objectif de ce travail était de comparer les différents outils de test sur la base de différents critères dans le domaine du test de logiciels. Pour cette comparaison, des outils de test ont été choisis sur Internet et testés au moyen d'un site web de cinéma programmé dans le cadre du module "Technologie web" pendant les études.

Il est indispensable pour un testeur de connaître quelques termes importants du domaine des tests logiciels et leurs définitions. La notion de qualité logicielle en fait partie, car la qualité et son assurance font également partie des tâches du testeur. De même, un testeur doit maîtriser la définition des tests afin de pouvoir effectuer son travail en connaissance de cause. Il doit également connaître la notion d'erreur, qui peut avoir différentes définitions en fonction de ce à quoi l'erreur se rapporte. Comme un testeur n'a qu'un certain temps pour tester dans un projet, il doit être en mesure d'estimer la durée du test. En outre, les principaux types de tests qui se prêtent à l'exécution se distinguent par leurs objectifs. Il s'agit notamment des objectifs et des méthodes des tests fonctionnels, qui consistent à vérifier la fonctionnalité du système telle qu'elle est décrite dans une spécification. Inversement, il y a aussi les tests non fonctionnels, qui s'intéressent à des aspects tels que la convivialité et l'acceptation par l'utilisateur. Pour que les tests puissent être effectués, il faut des procédures permettant de créer des cas de test ou d'obtenir une vue de l'objet du test. Il faut considérer des méthodes telles que la méthode de la boîte noire, qui effectue les tests sur la base de spécifications, et la méthode de la boîte blanche, qui prend le texte du programme comme référence pour les tests. Ces deux méthodes permettent d'observer différentes vues de l'objet du test, qui sont très différentes et donnent une bonne vue d'ensemble du système.

Les tests logiciels constituent une partie importante du cycle de vie du développement logiciel. Ils garantissent que les logiciels mis sur le marché sont exempts d'erreurs. C'est pourquoi un testeur doit pouvoir distinguer les différentes méthodes de test logiciel ainsi que les catégories d'outils et leurs domaines d'application. Les testeurs doivent toujours être conscients de l'utilisation de ces outils dans le processus de développement.

Au cours du travail, il a été constaté que certains outils ne sont adaptés qu'au test d'applications web et que d'autres peuvent être utilisés pour tester des applications web, mobiles et de bureau. De même, la plupart des outils étaient des "outils de capture/reproduction" qui peuvent être utilisés par des utilisateurs sans connaissances en programmation.

Ce qui fait un bon testeur, c'est l'expérience accumulée dans le domaine du test de logiciels, car seule une grande expérience permet à un testeur de développer un bon sens de la recherche d'erreurs dans les logiciels. Une autre condition pour être un bon testeur est d'avoir de nombreuses compétences en programmation, car les scripts sont générés dans différents langages de programmation. Étant donné qu'un testeur est celui qui rapporte au développeur l'erreur causée par un autre, il doit avoir une certaine sensibilité pour convaincre les développeurs de corriger l'erreur qu'il a trouvée.

En raison des points abordés dans ce travail, le test logiciel est devenu incontournable dans le développement de logiciels. En tant que testeur de logiciels, on est responsable de la garantie de la qualité du produit ainsi que de la documentation. Cela permet aux développeurs de se concentrer sur la programmation, la conception et la correction des erreurs dans le programme. Ils ne doivent plus chercher eux-mêmes les erreurs, elles leur sont présentées par les testeurs. C'est pourquoi la collaboration et le soutien mutuel entre eux doivent bien fonctionner.

Ce travail serait utile aux testeurs et aux développeurs pour savoir quel outil est le plus approprié pour un projet donné, davantage d'outils peuvent être comparés et davantage de critères de comparaison peuvent être mis en évidence. Cela permettrait aux testeurs de logiciels de choisir des outils parfaits pour tester les applications. Cela permettrait de gagner plus de temps et de réduire les coûts en choisissant le bon outil de test. On peut en conclure qu'il n'existe pas un seul outil parfait pour les tests, mais que pour un objectif de test donné, des compromis peuvent être faits en fonction de la taille du projet afin de choisir le meilleur outil qui tienne compte des coûts prévus pour les tests et qui permette la plate-forme de l'application et également la langue dans laquelle le projet est développé.

La complète thèse concernant QF-Test peut être trouvée ici (PDF en allemand).

Mémoire de licence : Tests logiciels : Comparaison des outils de test communs, octobre 2021 - Fachhochschule Südwestfalen - Université des sciences appliquées, Iserlohn, Allemagne.

(Original German texts and citations are translated into English.)