Un aperçu des tests automatisés pour les développeurs
Cet article fournit une vue d'ensemble de haut niveau des tests automatisés; ce que c'est, comment cela fonctionne, et certaines choses à considérer lorsque vous cherchez à l'intégrer dans votre processus de développement.
Le test automatisé est une partie vitale du processus de développement pour la construction de logiciels robustes. Malheureusement, il est parfois considéré comme inutile ou trop lourd pour les développeurs. Tout comme la soie dentaire et le dépôt de vos taxes à temps, les tests automatisés sont un domaine de la vie d'un développeur qui ne devrait pas être évité – en particulier compte tenu des effets positifs et des résultats positifs
Qu'est-ce que les tests automatisés? AKA, automatisation des tests) est un processus de développement qui implique des outils pour exécuter des tests prédéfinis sur des logiciels basés sur un événement. Ces tests impliquent généralement des opérations qui sont répétitives dans leur nature et leur résultat.
Les développeurs ont plusieurs façons de tester le code qu'ils écrivent. La plupart du temps, ces tests sont effectués manuellement. Les tests automatisés diffèrent par la présence d'un processus, d'un système ou d'un service qui effectue ces tests en réponse aux développeurs qui modifient le code source. En pratique, l'impact sur le flux de travail du développeur est minime puisque les tests sont effectués de manière asynchrone et autonome.
La nature des tests automatisés pour les développeurs est claire: nous effectuons une série prédéfinie de tâches (tests) contre un ensemble de préconditions et de postconditions (assertions) basé sur un événement déclencheur (changement de code source).
Bien que cette description semble simple, la possibilité d'intégrer des tests automatisés dans le flux de travail d'un développeur peut être loin. plus nuancé. De nombreux avantages sont associés aux tests automatisés, tout comme de nombreux coûts associés
Practical Automated Testing for Developers
Généralement, les développeurs souhaitent tester des aspects particuliers d'une application tels que son infrastructure et ses API sous-jacentes. Ceci est fait par des tests unitaires. Les tests unitaires sont des extraits de code qui affirment des affirmations sur la façon dont certaines parties d'une application (ses bibliothèques, ses frameworks, ses API, etc.) doivent se comporter dans certaines conditions. Les tests unitaires informent le développeur lorsqu'un changement dans une unité interfère avec la fonctionnalité d'un autre. Les structures de tests unitaires modernes sont généralement implémentées en utilisant le même code que celui utilisé par le système testé.
Il y a un coût associé à la création et à la maintenance continue des tests unitaires. Ils peuvent prendre le temps d'écrire et exiger de la discipline pour les tenir au courant des changements en cours au code. Cependant, ce coût devrait être considéré comme un investissement puisque les tests unitaires inspirent la confiance; le code fonctionnera comme prévu
Maintenant, je mentionne tout cela parce que les tests automatisés peuvent tirer parti des tests unitaires dans le cadre du processus de développement. Par exemple, un EDI peut exécuter ces tests après la fin d'une génération réussie. Ou, dans un scénario plus élaboré, l'infrastructure peut être configurée pour exécuter des tests unitaires selon un calendrier (par exemple, tous les soirs à 23 heures). Quelle que soit la configuration utilisée, il y a des gains tangibles à gagner en tant que développeur grâce à des tests automatisés de ce type. Mais, comme je l'ai déjà dit, le "coût" vient de la création et du maintien des tests unitaires eux-mêmes.
Note: Cet article ne couvre pas les méthodologies associées aux tests unitaires tels que le développement piloté par les tests (TDD) et le développement piloté par le comportement (BDD)
. UI. Ceci est similaire à certains égards aux tests unitaires dans la mesure où les tests d'interface utilisateur peuvent être petits et focalisés sur des aspects particuliers d'une application. Cependant, il diffère en ce sens qu'il exécute ces tests sur des parties de l'interface utilisateur présentes lors de l'exécution. Cela nécessite une infrastructure à supporter. Il nécessite également un cadre pour la création de ces tests. Ces frameworks fournissent les blocs de construction nécessaires pour tester l'interface utilisateur. Cependant, ils sont souvent limités à un environnement similaire à celui des tests unitaires.
Certaines solutions fournissent un moyen d'enregistrer l'interaction d'un utilisateur avec l'application en tant que moyen de créer ces tests. Ils agissent comme un générateur de code de tests en observant toutes les interactions qu'un utilisateur a avec une application et l'utilise comme base de tests. Une fois créés, ces tests peuvent être modifiés pour s'adapter à d'autres exigences.
En fin de compte, les développeurs ont le choix de choisir le framework de test à utiliser. Bien qu'il soit possible d'écrire et de mener des tests unitaires sans un tel cadre, le processus peut être difficile, compliqué et très manuel. Il y a beaucoup de cadres de tests unitaires disponibles. Chacun des cadres a ses propres mérites et en choisir un dépend des caractéristiques requises et du niveau d'expertise de l'équipe de développement. Ces infrastructures fournissent l'infrastructure et les fonctions nécessaires pour tester le code.
Les avantages et les coûts des tests automatisés
Il y a de bonnes raisons d'incorporer les tests automatisés dans votre flux de travail. L'article de Wikipédia sur Test Automation développe certains de ses avantages:
Quelques tests de logiciels tâches, telles que les tests de régression extensive de l'interface bas niveau être laborieux et fastidieux à faire manuellement. De plus, une approche manuelle peut ne pas toujours être efficace pour trouver certaines classes de défauts. L'automatisation des tests offre la possibilité d'effectuer ces types de tests efficacement. Une fois que les tests automatisés ont été développés, ils peuvent être exécutés rapidement et à plusieurs reprises. Plusieurs fois, cela peut être une méthode rentable pour les tests de régression de produits logiciels qui ont une longue durée de vie.
La phrase clé dans cette description (ci-dessus) est "test efficace". Il n'y a rien de pire qu'un outil qui constitue un fardeau dans son utilisation ou son application. Les bonnes solutions de test automatisées sont celles qui complètent les workflows; ne les empêche pas. Ils devraient améliorer la productivité d'un développeur;
En fin de compte, les essais portent sur le retour d'information; Son but est de fournir un aperçu de la robustesse des solutions logicielles que nous construisons. Les tests automatisés fournissent une approche différente des tests manuels en garantissant que le code est continuellement mesuré et validé par rapport à nos attentes. Malheureusement, ce n'est pas parfait. Il y a des coûts réels associés. Tenez compte de l'infrastructure qui pourrait être nécessaire pour prendre en charge les tests automatisés. Des serveurs ou des services peuvent être nécessaires pour exécuter ces tests. Ceux-ci nécessiteront une maintenance au fil du temps. Une base de données peut être nécessaire pour stocker les résultats des tests et les rapporter.
Cela fait partie de l'histoire quand il s'agit des coûts associés aux tests automatisés. Il y a toute la question de la gestion et du maintien des tests eux-mêmes. Si vous décidez de modifier votre logiciel de manière significative, vous devrez mettre à jour vos tests pour refléter toute nouvelle hypothèse ou attente quant à la manière dont il devrait fonctionner et se comporter. Une bonne solution de test automatisé considérera cela comme une réelle possibilité et fournira un moyen de l'atténuer.
Quelques critères pour les solutions de test automatisées
Il existe de nombreuses solutions et produits sur le marché qui prennent en charge les tests automatisés. Certains d'entre eux s'intègrent directement dans des environnements de développement avec peu ou pas d'infrastructure de support, alors que d'autres peuvent nécessiter une configuration plus élaborée. Certains sont conçus pour prendre en charge des développeurs individuels, tandis que d'autres sont conçus à l'échelle pour soutenir les équipes. Quelle que soit la solution de test automatisée que vous choisissez, il est important de prendre en compte les critères suivants:
- Quel type d'application ou de système testez-vous? Par exemple, s'agit-il d'une application de bureau ou d'un site Web avec des systèmes intégrés dorsaux? Votre solution de test automatisé peut-elle les cibler?
- Avez-vous l'infrastructure requise pour prendre en charge les tests automatisés? Certaines solutions de test automatisé ont des exigences importantes. (Remarque: les solutions hébergées sont disponibles.)
- Comment les tests sont-ils créés et intégrés à votre solution de test automatisée? La gestion et la maintenance des tests représentent un coût important associé aux solutions de test automatisées
- Votre solution de test automatisé s'intègre-t-elle à vos outils et environnements de développement existants tels que Visual Studio?
- Quelles fonctionnalités de reporting sont disponibles? Comment savez-vous si vos tests ont réussi ou échoué? Pouvez-vous obtenir une vue historique de vos tests pour observer votre progression dans le temps?
- Comment les tests sont-ils exécutés dans votre solution de test automatique? Sont-ils déclenchés en fonction de certains événements? Peuvent-ils être programmés pour fonctionner à certains moments de la journée? Certains tests peuvent prendre beaucoup de temps à s'exécuter.
Prenez le temps d'examiner ces questions et d'autres encore. Leurs réponses vous guideront vers une solution de test automatisée appropriée
Tests automatisés: Oui ou Non?
Les preuves pour que les développeurs utilisent et supportent les tests automatisés sont claires; il a un impact considérable sur la productivité des développeurs lorsqu'il est intégré correctement dans un flux de travail. Même s'il est vrai que les tests automatisés entraînent des coûts, ils sont amortis sur la durée du projet logiciel et peuvent même vous faire gagner du temps et de l'argent à long terme.
Nous avons constaté l'impact des tests automatisés nous-mêmes. Nous avons construit des produits qui ont été utilisés par des millions de développeurs pendant de nombreuses années. Pendant ce temps, nous avons utilisé des tests automatisés pour des produits populaires comme Kendo UI et Sitefinity avec beaucoup de succès. Nous avons également aidé les développeurs à améliorer leur productivité grâce à des solutions de test automatisées que nous avons construites comme Telerik Test Studio
Par exemple, avec des produits tels que Telerik Test Studio ont réalisé un gain de temps de 30% en éliminant les tests manuels, en réduisant le temps nécessaire pour faire des scénarios répétitifs et en permettant des tests de performance en utilisant le même outil.
sur une analyse détaillée de vos besoins et des processus de développement que vous utilisez pour construire des logiciels. Adoptez une approche mesurée lors de l'évaluation de vos options. Déployez-les dans l'isolement, utilisez-les pendant un certain temps, et considérez les impacts positifs (et négatifs) qu'ils ont pour vous et votre équipe.
Les commentaires sont désactivés en mode prévisualisation.
[ad_2]
Source link