Bonjour, Habr!
J'ai décidé d'écrire mon opinion sur si l'automatisation des tests remplacera les testeurs en fait. Tout d'abord, parce que j'entends assez souvent une opinion similaire chez le Junior QA, qui ne fait que ses premiers pas dans les tests et a déjà peur qu'il n'ait pas réussi à faire quelque chose.
En toute justice, une opinion similaire existe chez les enfants plus âgés. Très souvent, on pense que l'automatisation est presque le seul moyen de développer un testeur manuel. À propos de tout cela et bien plus encore sous la coupe.
Un petit éclaircissement avant de commencer. Toute la discussion ci-dessous portera sur les autotests fonctionnels. Il s'agit de tests d'interface utilisateur, à ne pas confondre avec les tests unitaires dans ce contexte. Ces derniers ont toujours été écrits et devraient être écrits par des développeurs, et dans le cas contraire, ils font l'objet d'une discussion complètement différente.En bref sur l'histoire de l'automatisation
Je travaille dans les tests depuis un certain temps et j'ai vu plusieurs étapes dans le développement de l'automatisation des tests. Avec son développement, son attitude envers elle a également changé. Voyons comment c'était et essayons de comprendre - qu'est-ce que tout cela va faire?
En 2010, alors que je faisais mes premiers pas dans le monde informatique, tout le monde ne connaissait pas un tel outil que le sélénium. À cette époque, sa première version était en cours d'utilisation, appelée Selenium Remote Control.
Je me souviens comment nous avons automatisé notre premier projet sur Selenium. Cet outil était alors assez simple, il pouvait cliquer sur des éléments invisibles, parfois il se trompait en trouvant des localisateurs et même en recevant du texte de certains éléments délicats.
Je me souviens encore que notre patron les appelait des «coups». Voyant comment nous nous asseyons et écrivons ces tests, il l'a dit: encore une fois, écrivez vos coups? Je ne l'aurais pas vérifié et sorti avec mes mains il y a longtemps.
Mais le temps a passé, Selenium s'est développé, il a eu de nouvelles opportunités. Au début, il y en avait une deuxième, et maintenant sa troisième version. Une norme est apparue (les fabricants de navigateurs ont commencé à écrire eux-mêmes les pilotes), Selenium a acquis plusieurs protocoles, acquis des concurrents sur le marché, et maintenant presque toute personne travaillant dans l'informatique le sait, qu'elle appartienne ou non à QA.
À l'heure actuelle, il existe de nombreuses solutions pour tester l'automatisation des applications Web et mobiles.
Maintenant, ce n'est plus seulement des coups, maintenant la conversation moyenne des RH au poste d'AQ ressemble à ceci (exagéré, bien sûr):
- Bonjour. Selon votre CV, ce n'est pas clair. Pouvez-vous écrire des autotests?
"Non, mais je suis bon en ..."
- * déjà raccroché *
Et s'il s'agit d'une position de leader, vous entendez qu'ils aimeraient d'abord configurer l'automatisation, puis embaucher des ingénieurs QA. Ou ne louez pas. Et si vous ne le faites pas? Eh bien, ce sont des économies. Même après avoir écrit tous les tests, vous seriez viré. Et les développeurs, quand ils feront tout ... Laissez sur le site un bouton "Payer ici" et déposez-vous au coucher du soleil ... Quelque chose s'est mal passé pour moi.
Bien sûr, avec de telles tendances, la question se pose: les tests manuels remplaceront-ils l'automatisation? Et quand cela arrivera-t-il?
Autotests à travers les yeux des développeurs
Pour répondre à cette question, il convient tout d'abord de réfléchir - et qui écrit les autotests? J'ai vu des entreprises dans lesquelles les autotests sont écrits par les développeurs eux-mêmes. Et j'ai vu des entreprises où les ingénieurs QA écrivent des autotests. Quelle est selon vous la différence fondamentale?
Je suppose que la différence réside dans le code. Comme ils sont développeurs, ils écrivent mieux le code. Par conséquent, leurs tests sont meilleurs. Mais ce n'est pas tout à fait vrai.
La qualité du code est sans aucun doute un paramètre important, mais pour les développeurs eux-mêmes, les tests ne sont pas l'occupation principale. Et par conséquent, ils ne peuvent pas y consacrer beaucoup de temps. Les tests sont écrits à la hâte et le code laisse souvent à désirer. Et c'est une situation normale, je le répète - ce n'est pas ce sur quoi ils devraient consacrer une grande partie de leur temps de travail.
Un code particulièrement bon n'est pas la chose la plus importante dans les autotests. Ce qui est plus important, c'est les cas couverts par ces autotests. Et ici, la pensée d'un spécialiste de l'assurance qualité est déjà considérablement différente de la façon dont le développeur voit le produit.
Prenons un exemple. Il est nécessaire de couvrir l'inscription sur le site avec des tests automatiques. Il est clair que nous couvrirons en premier lieu un cas positif. Nous sommes entrés, avons marqué une forme de cinq ou six champs de saisie, avons franchi des étapes supplémentaires comme la confirmation par courrier ou SMS - le test est prêt, vous êtes génial!
Je soutiens que 90% des développeurs qui ont abandonné la responsabilité d'écrire des autotests s'arrêteront là. Ils ne décriront pas une partie des cas, car ils les considèrent comme essentiellement différents de celui déjà couvert. Certains ne seront tout simplement pas pris en compte. Quoi qu'il en soit, "j'ai moi-même écrit le code de production, tout est fiable là et pour toujours."
Classes d'équivalence, valeurs limites, cas négatifs - tout cela reste quelque part en marge.
Approche ingénieur AQ
L'ingénieur QA adopte une approche différente. Il a de l'expérience, une compréhension des principes de conception des tests, un temps suffisant et, surtout, pour rechercher des bogues et vérifier que c'est sa responsabilité directe. De plus, le plus souvent, ces personnes sont simplement intéressées à vérifier quelque chose. Que se passe-t-il si vous piquez ici hors de tour? Et si vous saisissez les données ici de manière incorrecte?
C'est l'approche qui distingue l'ingénieur QA du développeur. Et il n'est pas formé par la capacité d'automatiser les tests, mais par une manière de penser. Un mauvais testeur écrira de mauvais tests. Dans ce cas, un bon testeur trouvera plus de problèmes avec la vérification manuelle qu'un mauvais avec son tas de cas de test mal conçus.
Quelle conclusion voudrais-je en tirer? Tout est très simple. Un spécialiste de l'assurance qualité est avant tout une compréhension des principes des tests et de l'expérience de test d'une personne. Et pas les outils qu'il utilise.
Bien sûr, être un bon testeur ne suffit pas. Sans connaissance des outils de base tels que bash, Git, SQL, etc., il est impossible de travailler efficacement dans n'importe quelle entreprise. Ils doivent être étudiés.
L'automatisation est le même outil, elle seule n'est ni bonne ni mauvaise. Cela ne rendra pas votre travail plus efficace simplement parce que vous l'avez récupéré. Il a encore besoin de certaines compétences.
Et la vérification manuelle?
La vérification manuelle n'ira nulle part. D'une manière ou d'une autre, lorsque nous verrons une nouvelle fonctionnalité ou un produit entier devant nous, nous l'étudierons de nos mains. Nous devons encore comprendre comment cela fonctionne, quels cas considérer comme prioritaires et en général, s'ils fonctionnent maintenant. Quel est l'intérêt de se précipiter pour écrire un test si le produit est cassé?
Et il en sera toujours ainsi, à chaque nouvelle fonctionnalité ou modification introduite. Il y aura d'abord une étape de vérification manuelle. Et alors seulement - la couverture ou la mise à jour des tests qui l'entourent.
Serait-il préférable que les tests manuels et la rédaction des autotests soient effectués par un spécialiste ou partagent les responsabilités? Je ne sais pas, cela dépend déjà des caractéristiques de la façon dont le processus est construit dans votre entreprise. Quelque part, ce sera efficace et donc bénéfique. Et quelque part - non.
Donc, à la question de savoir s'il vaut la peine d'étudier l'automatisation des tests, je réponds catégoriquement oui. L'ingénieur QA doit être familier avec l'automatisation. Habituellement, les spécialistes ayant cette compétence ont plus de curriculum vitae et de salaires, et ils sont valorisés plus haut sur le marché. Mais l'automatisation remplacera-t-elle la vérification et les tests manuels? Bien sûr que non.
Résumé
C'est ainsi que cet article a vu le jour. J'ai partagé mon opinion et ma vision de la question. Je serai heureux de connaître le vôtre, assurez-vous de partager dans les commentaires!
Un collègue de Yandex a également développé un cours en ligne pour ceux qui souhaitent s'immerger dans l'automatisation des tests mobiles. Des informations et des liens peuvent être trouvés sur ma page de profil. :)
Merci de votre attention!