Ce que vous devez savoir avant d'effectuer des tests automatisés

Qu'est-ce que les tests automatisés?

Je fais des tests depuis plusieurs années, j'ai vraiment appris et pratiqué les tests automatisés pendant un an, je sens que j'ai beaucoup gagné cette année. J'ai toujours voulu écrire un article pour partager une expérience dans la pratique des tests automatisés. Enfin décidé de prendre le temps de le faire.

Tout d'abord, clarifiez le concept de test automatisé. De manière générale, l'automatisation comprend toutes les activités qui remplacent ou facilitent les tests manuels au moyen d'outils (programmes), qui peuvent être considérés comme de l'automatisation, y compris les outils de test des performances (loadrunner, jmeter), ou écrites par vous-même Une section de programme utilisée pour générer 1 à 100 données de test. Au sens strict, le processus de test manuel est simulé au moyen d'un enregistrement d'outils ou d'un script, et les cas de test sont exécutés en rejouant ou en exécutant des scripts, remplaçant ainsi la vérification manuelle des fonctions du système.

Bien entendu, nous sommes plus généralement conscients des «tests automatisés» comme des «tests automatisés basés sur la couche d'interface utilisateur du produit ou du projet».

Tests automatisés en couches

Ce concept a été exposé récemment. Les tests automatisés traditionnels accordent plus d'attention aux tests automatisés au niveau de l'interface utilisateur du produit, tandis que les tests automatisés hiérarchiques préconisent que les différentes étapes (niveaux) des produits nécessitent des tests automatisés.
Insérez la description de l'image ici
Je pense que les étudiants du test ne connaissent pas la pyramide ci-dessus, n'est-ce pas le test correspondant aux différentes étapes de développement du produit? Nous avons besoin de tests unitaires standardisés et aussi de frameworks de tests unitaires correspondants, tels que Java's Junit, testNG, C # ’s NUnit, python's unittest, pytest, etc. Presque tous les langages traditionnels auront leurs frameworks de tests unitaires correspondants.

Les tests d'intégration et d'interface ne sont pas faciles à comprendre pour de nombreux nouveaux testeurs. Les tests unitaires se concentrent sur la logique d'implémentation du code, telle que l'implémentation d'une branche if ou d'une boucle for; alors l'intégration et les tests d'interface se concentrent sur une fonction et une classe (méthode) Si l'interface fournie est fiable. Par exemple, si je définis une fonction add () pour calculer le résultat de deux paramètres et le renvoyer, alors je dois appeler add () et transmettre les paramètres, et comparer la valeur de retour si les deux paramètres sont ajoutés. Bien entendu, le test d'interface peut également être passé sous forme d'url. Par exemple, si nous envoyons une requête au serveur via la méthode get, le contenu que nous envoyons est transmis au serveur dans le cadre de l'URL. Mais par exemple, une interface publique fournie par la technologie de service Web doit être testée à l'aide d'outils tels que soapUI.

Vous devez être familiarisé avec les tests automatisés de la couche UI. La plupart du travail de la plupart des testeurs consiste à tester les fonctions de la couche UI. Par exemple, nous testons à plusieurs reprises une soumission de formulaire, une requête de résultat et d'autres fonctions, et nous pouvons simuler ces opérations grâce aux outils de test automatisés correspondants, libérant ainsi un travail répétitif. Il existe de nombreux outils de test automatisés pour la couche UI, et les plus courants sont QTP, Robot Framework, watir, sélénium, etc.

Pourquoi dessiner une forme pyramidale au lieu d'un rectangle ou d'un triangle inversé? Il s'agit d'indiquer la proportion de tests automatisés investis dans les différentes étapes. Si un produit n'a jamais effectué de tests unitaires et d'interface, il n'est pas scientifique de ne faire que des tests automatisés au niveau de l'interface utilisateur, ce qui rend difficile de garantir essentiellement la qualité du produit. Si vous essayez de réaliser un test automatisé complet de la couche d'interface utilisateur, c'est une décision qui nuira aux personnes et à l'argent, et qui investira beaucoup de main-d'œuvre et de temps, et le bénéfice final peut être bien inférieur au coût payé. Parce que plus le niveau est élevé, plus le coût de maintenance est élevé. En particulier, les éléments de la couche d'interface utilisateur changeront de temps en temps. Par conséquent, nous devrions mettre plus de tests automatisés dans les phases de test unitaire et de test d'interface.

Étant donné que les tests automatisés de la couche d'interface utilisateur sont si laborieux, nous ne pouvons faire que des tests unitaires et des tests d'interface. NON, car quel que soit le type de produit, la couche d'interface utilisateur est enfin présentée à l'utilisateur. Par conséquent, les testeurs devraient se concentrer davantage sur la couche d'interface utilisateur. C'est donc précisément parce que les testeurs mettent beaucoup d'efforts dans la couche UI, il est donc nécessaire pour nous de nous aider à "libérer partiellement" le travail répétitif grâce à l'automatisation.

Dans les tests automatisés, le changement le plus redouté est le changement, car le résultat direct du changement est l'échec du scénario de test, alors le script d'automatisation doit être maintenu; comment contrôler l'échec et réduire le coût de maintenance est essentiel au succès ou à l'échec de l'automatisation. À l'inverse, un scénario de test automatisé qui s'exécute toujours avec succès est sans valeur.

Quant au rapport des trois tests dans la pyramide, il doit être divisé en fonction des exigences réelles du projet. Dans le livre "Google Test Method", pour les produits Google, 70% de l'investissement sont des tests unitaires, 20% sont des tests d'intégration et d'interface, et 10% sont des tests d'automatisation de la couche d'interface utilisateur.

Pourquoi devrais-je faire des tests automatisés?

Selon le rapport "China Software Testing Practitioners Survey Report" de 51testing, les tests manuels représentent 89% du total. Par rapport au développement, le seuil de test est bas et le salaire est généralement bas. Bien que les connaissances requises aient une certaine ampleur, elles manquent de profondeur. Ceci est l'état général des tests.

C'est précisément en raison du faible seuil des tests de compétences manuels qu'un grand nombre de diplômés, même non professionnels, se sont déversés dans cette industrie. Augmentant ainsi la concurrence féroce dans cette industrie. Pour ceux qui ont travaillé pendant plusieurs années et sont en test manuel, il y aura un fort sentiment de crise. Le contenu technique du travail n'étant pas élevé, l'augmentation salariale s'est heurtée à un goulot d'étranglement. En revanche, elle est menacée par de nouveaux entrants. La même entreprise peut le faire avec 5K recrues, donc elle ne dépensera pas 8K.

Eh bien, cette question ne devrait pas apparaître dans le sujet de la discussion sur la technologie, mais c'est en effet un problème auquel la plupart des testeurs doivent faire face. Par conséquent, en ce qui concerne le développement des testeurs eux-mêmes, je dois en fait utiliser la technologie d'automatisation pour augmenter ma compétitivité. Bien entendu, les testeurs ayant atteint un certain nombre d'années choisiront de passer à des postes de direction ou d'autres postes, ce qui est un autre sujet.

Du point de vue du développement de l'industrie des tests, en raison des caractéristiques des produits nationaux, il n'y a pas beaucoup de produits de classe mondiale, un contenu technique relativement faible, des exigences de qualité relativement faibles, l'externalisation de projets étrangers et de faibles coûts de main-d'œuvre pour les tests, de sorte qu'un grand nombre de testeurs manuels sont nécessaires .

Par conséquent, dans un avenir pas trop lointain, je pense que la demande de testeurs manuels purs diminue et que l'entreprise a besoin de plus de tests avec des capacités techniques plus élevées. La qualité a besoin de tests. Le comportement des tests ne disparaîtra jamais, mais il est possible que les testeurs manuels purs disparaissent.

Eh bien, vous pouvez dire que tester l'industrie avec beaucoup de soleil, je suis purement alarmiste. Quel que soit l'avenir, nous devons tous améliorer nos compétences, n'est-ce pas!

Quel projet convient aux tests automatisés?

Si vous avez décidé d'apprendre les tests automatisés, comment apprendre est le prochain problème à affronter? Ce problème est analysé en fonction du produit testé.Si la technologie que vous avez apprise ne peut pas être appliquée (vérifiée), cela rendra votre processus d'apprentissage difficile.

Vérifiez d'abord si le produit convient aux tests automatisés. Le consensus général sur cette méthode est de peser trois aspects.

Les exigences logicielles changent rarement

La stabilité du script de test détermine le coût de maintenance du test automatisé. Si les exigences logicielles changent trop fréquemment, les testeurs doivent mettre à jour les cas de test et les scripts de test associés en fonction des exigences modifiées, et la maintenance du script lui-même est un processus de développement de code qui doit être modifié, débogué et, si nécessaire, le test automatisé doit être modifié. Framework, si le coût n'est pas inférieur au coût du test économisé en l'utilisant, le test automatisé échouera.

Certains modules du projet sont relativement stables, tandis que les exigences de certains modules sont très variables. Nous pouvons effectuer des tests automatisés sur des modules relativement stables, tandis que des tests manuels sont toujours utilisés pour des changements plus importants.

Long cycle de projet

Parce que la détermination des exigences de test automatisé, la conception de cadres de test automatisés, ainsi que l'écriture et le débogage des scripts de test prennent tous beaucoup de temps. Un tel processus en lui-même est un processus de développement de logiciels de test, et il prend beaucoup de temps à terminer. Si le cycle du projet est relativement court et qu'il n'y a pas assez de temps pour soutenir un tel processus, les tests automatisés deviennent une blague.

Les scripts de test automatisés peuvent être réutilisés

La réutilisation des scripts de test automatisés doit être envisagée sous trois aspects. D'une part, si les éléments testés sont très différents (comme la différence entre le système C / S et le système B / S); si l'outil de test sélectionné convient Cette différence; enfin, si le testeur a la capacité de développer un cadre de test automatisé qui s'adapte à cette différence.

Quel outil choisir pour les tests automatisés

Si vous avez confirmé que le projet XX est adapté aux tests automatisés, la prochaine chose que vous devez faire est de choisir un outil de test.

Tout d'abord, vérifiez si le produit que vous testez est un programme de bureau (C / S) ou une application Web (B / S).

Les outils pour les programmes de bureau sont: QTP, AutoRunner

Outils pour les applications Web: QTP, AutoRunner, Robot Framework, watir, sélénium

En raison des nombreux avantages de l'architecture B / S, un grand nombre d'applications d'architecture C / S ont été converties en architecture B / S il y a quelques années. Cela favorise également le développement de technologies de développement et de test Web. Si le produit testé est d'architecture C / S, alors le QTP est recommandé. Le QTP représente la moitié du taux d'essai dans le domaine des tests d'automatisation de l'interface utilisateur. Par conséquent, il suffit de montrer que QTP est puissant et facile à utiliser dans le domaine de l'automatisation. L'apprentissage des outils traditionnels peut également vous offrir plus d'opportunités. Les livres sur le QTP sur le marché sont également très riches. Bien sûr, si vous voulez bien apprendre QTP, vous devez maîtriser le langage de script VBS.

Si le produit testé est une structure B / S, alors le sélénium est recommandé, pourquoi pas QTP ou d'autres outils? Parce que le sélénium supporte très bien les applications B / S, et plus important encore, il prend en charge le développement multilingue.Pour vraiment essayer le sélénium, vous devez maîtriser plus qu'un simple outil, vous devez également apprendre une langue. Pourquoi devrais-je choisir le sélénium? J'ai également besoin d'apprendre une langue, ce qui a sans aucun doute augmenté mes coûts d'apprentissage. Tout en augmentant les coûts, cela augmente également votre compétitivité.Ainsi, vous apprenez non seulement un outil d'automatisation, mais vous pouvez utiliser la langue que vous apprenez pour faire plus de choses.

D'accord! Si vous décidez d'essayer le sélénium, vous êtes confronté à un nouveau problème, choisissez une langue. Selenium prend en charge java, python, ruby, php, C #, JavaScript.

En termes de facilité d'apprentissage du langage, ruby ​​et python sont préférés

En termes de largeur d'application du langage, java, C #, php,

En termes de technologie de test (et d'information) liée au langage: ruby, python, java

Ou vous pouvez considérer la langue courante utilisée par toute l'équipe technique, puis choisir la langue correspondante.

Avant d'utiliser le sélénium

D'ACCORD! Après le processus ci-dessus, je pense que vous devez faire le choix correspondant.Si vous choisissez l'outil sélénium, lisez la suite.

Tout d'abord, vous devez passer un à deux mois pour apprendre une langue avant de commencer le sélénium. Ceci est basé sur des étudiants qui n'ont aucune base linguistique. Je recommande ruby, python, java n'importe quelle langue pour apprendre.

Bien sûr, si vous avez une bonne base de langage pour ignorer ce lien, ou vos riches compétences en programmation Java, l'apprentissage de python ne peut prendre que quelques jours ou moins.

Si vous avez déjà acquis les bases d'un langage, vous devez d'abord comprendre le sélénium. Le sélénium n'est pas seulement un outil. C'est un ensemble d'outils. De plus, il est divisé en 1.0 et 2.0. Bien sûr, 3.0 est aussi Est arrivé.

Selenium n'est pas un outil simple, mais se compose de plusieurs outils, chacun ayant ses propres caractéristiques et scénarios d'application.
Insérez la description de l'image ici
IDE sélénium

Selenium IDE est un plug-in intégré dans le navigateur Firefox pour réaliser des fonctions simples d'enregistrement et de lecture d'opérations de navigateur. Alors, quand est-il utilisé?

Créez rapidement des scripts de reproduction de bogues Pendant le processus de test des testeurs, après avoir trouvé des bogues, ils peuvent enregistrer les étapes de reproduction via l'EDI pour aider les développeurs à reproduire les bogues plus facilement.

Le script enregistré par l'EDI peut être converti en plusieurs langues pour nous aider à développer rapidement le script.Nous présenterons cette fonction en détail plus tard lorsque nous l'utilisons.

Grille de sélénium

Selenium Grid est une aide aux tests automatisés. Grid peut accélérer les tests fonctionnels des applications Web en utilisant l'infrastructure informatique existante. Grâce à Grid, vous pouvez facilement exécuter plusieurs cas de test en parallèle sur plusieurs machines et dans un environnement hétérogène. Ses caractéristiques sont:

  • Exécution parallèle
  • Utilisez un hôte pour contrôler uniformément les cas d'utilisation à exécuter dans différents environnements et différents navigateurs.
  • Ajout flexible de machines de test de changement

sélénium RC

Selenium RC est l'outil principal de la famille sélénium. Selenium RC prend en charge une variété de langages différents pour écrire des scripts de test automatisés. Le serveur sélénium RC sert de serveur proxy pour accéder aux applications afin d'atteindre l'objectif des tests.

Selenium RC utilise les bibliothèques clientes et le serveur selenium. La bibliothèque bibliothèques clientes est principalement utilisée pour écrire des scripts de test pour contrôler la bibliothèque serveur sélénium.

Selenium Server est responsable du contrôle du comportement du navigateur. En général, Selenium Server comprend principalement trois parties: Le Launcher, Http Proxy et Core. Parmi eux, Selenium Core est intégré dans la page du navigateur par Selenium Server. En fait, Selenium Core est un ensemble de fonctions JS C'est à travers ces fonctions JS que nous pouvons utiliser des programmes pour faire fonctionner le navigateur. Le lanceur est utilisé pour démarrer le navigateur, charger Selnium Core dans la page du navigateur et définir le proxy du navigateur sur le proxy Http de Selenium Server.

sélénium 2.0

Je comprends la relation familiale du sélénium 1.0, le sélénium 2.0 ajoute WebDriver à cette famille; simplement exprimé sous forme de formule:

sélénium 2.0 = sélénium 1.0 + WebDriver

Il faut souligner que dans le sélénium 2.0, WebDriver est le produit principal. WebDriver est un substitut au sélénium RC. Le sélénium étant rétrocompatible, le sélénium RC n'a pas été complètement abandonné. Il est recommandé d'utiliser WebDriver. Alors, quelle est la principale différence entre Selenium RC et Webdriver?

Selenium RC exécute des applications JavaScript dans le navigateur et utilise le traducteur JavaScript intégré du navigateur pour traduire et exécuter des commandes selenese (selenese est une collection de commandes sélénium).

WebDriver contrôle directement le navigateur via la prise en charge native du navigateur ou l'extension de navigateur. WebDriver est développé pour chaque navigateur et remplace JavaScript intégré dans l'application Web testée. L'intégration étroite avec le navigateur prend en charge la création de tests plus avancés, évitant les restrictions causées par le modèle de sécurité JavaScript. En plus de la prise en charge des fournisseurs de navigateurs, WebDriver utilise également des appels au niveau du système d'exploitation pour simuler l'entrée utilisateur.

S'il s'agit d'un nouveau projet, il est possible d'apprendre directement le pilote Web, RC est une technologie obsolète.

Parcours d'apprentissage Selenium

Configurez votre environnement de test pour configurer votre environnement de test de sélénium correspondant pour la langue que vous apprenez. Le sélénium est comme la définition de la sémantique - "Bonjour". Si vous utilisez le chinois, pour exprimer bonjour, votre écriture est "Bonjour". Si vous utilisez l'anglais, votre écriture est "bonjour". Par conséquent, la même sémantique aura une écriture (grammaire) différente dans différentes langues.

Ensuite, vous devez vous familiariser avec l'API webdriver, qui est une méthode définie par sélénium pour localiser et utiliser divers éléments de la page.

Apprenez d'abord le positionnement des éléments. Selenium fournit des méthodes de positionnement telles que id, nom, nom de classe, nom de balise, texte de lien, texte de lien partiel, xpath, css, etc. La puissante syntaxe de xpath et css est légèrement compliquée, et vous devrez peut-être en savoir plus sur le front-end entre-temps. xml, javascript etc.

Le but de la localisation des éléments est de faire fonctionner les éléments. Ensuite, vous devez vous renseigner sur divers éléments, notamment les opérations, les zones de saisie, les listes déroulantes, les clics de bouton, les téléchargements de fichiers, les téléchargements, la pagination, les boîtes de dialogue, les boîtes d'avertissement ... etc.

Après une période d'étude, vous pouvez facilement simuler des tests manuels pour manipuler divers éléments de la page. Il ne vous reste plus qu'à organiser ces «cas d'utilisation» et à les exécuter ensemble.

Ensuite, tout ce que vous avez à faire est d'apprendre et d'utiliser le framework de test unitaire. Le framework de test unitaire lui-même résout l'organisation et le fonctionnement des cas d'utilisation.

Après avoir écrit quelques "cas de test", vous constaterez qu'il y a beaucoup d'opérations répétées dans les cas d'utilisation. Pouvez-vous les écrire dans un fichier séparé et appeler ces opérations si nécessaire? Bien sûr, il sera très simple d'utiliser vos compétences en programmation pour y parvenir. Ensuite, vous constatez qu'il y a des données dans chaque cas d'utilisation. Ces données sont également les mêmes, mais si elles changent et qu'il est très difficile de les modifier, vous pouvez également les écrire dans un fichier séparé pour la lecture.

Ensuite, vous rencontrez de nouvelles questions. Les scripts (cas d'utilisation) que j'ai écrits sont tous rationalisés. Comment savoir si le cas d'utilisation échoue ou réussit? Ensuite, vous devez ajouter une vérification et une assertion au script.

Ensuite, vous avez d'autres idées. Le journal du framework de test unitaire est trop grossier. Pouvez-vous générer un beau rapport de test? Puis-je exécuter ce script régulièrement? Pouvez-vous envoyer les résultats des tests de chaque script exécuté directement dans ma boîte aux lettres? Peut tu...

Pour résoudre ces problèmes, vous devez apprendre plus de techniques de programmation, puis votre «structure de test» deviendra plus puissante et plus flexible. Produit un certain degré de polyvalence et de portabilité. Un cadre de test automatisé réaliste est né.

Si un jour vous ne faites plus de tests d'interface automatisés, vous constaterez qu'il n'y a pratiquement aucune difficulté à faire des tests unitaires ou des tests d'interface. Ce n'est pas un problème de développer un outil de test, merci Selenium! Au fait, merci aussi!

Recommander de bons articles:

Un pack de bandes épicées tristes pour partager les dix meilleurs outils de test automatisés

À propos des tests de logiciels! Tout ce que vous voulez savoir est ici, Xiaobai doit voir!

10 ans de perceptions des ingénieurs de test logiciel - à des amis encore confus

Quel type de personne convient aux tests de logiciels?

Connaissances pour comprendre les tests automatisés python (3)

Quel est le plus adapté aux tests automatisés, Python ou Java?

Le travail quotidien des testeurs de logiciels

Jouez avec les tests automatisés Python + Selenium en 10 minutes et apprenez-vous à démarrer rapidement!

Enfin: Bienvenue à suivre l'éditeur pour recevoir un résumé des connaissances de base des ingénieurs de test automatisé Python avec un document pdf de 300 pages! Groupe d'échange de technologies de test de logiciels: (313782132) Le contenu de ces documents sont tous les points de connaissances que l'intervieweur doit demander pendant l'entretien. Le chapitre comprend de nombreux points de connaissances, y compris les connaissances de base, les bases de Linux, Shell, les principes du programme Internet, Mysql Base de données, rubriques sur les outils de capture de paquets, outils de test d'interface, programmation de tests avancés-Python, tests d'automatisation Web, tests d'automatisation d'applications, tests d'automatisation d'interfaces, tests d'intégration continue avancés, framework de tests de développement d'architecture, tests de performances, tests de sécurité, etc.

Je suppose que tu aimes

Origine blog.csdn.net/weixin_50271247/article/details/108513270
conseillé
Classement