Per què voleu automatitzar una prova?

Per què automatitzaria una prova? Quins avantatges obtenim amb l’automatització de proves?

Molt sovint, quan la gent s’implica en proves automàtiques, el seu enfocament principal passa de dissenyar bones proves a assegurar-se que el codi automatitzat pugui executar i executar la prova.

Durant el sprint, quan els membres de l’equip estan pressionats per publicar les històries en un període de temps limitat, normalment no hi ha prou temps per provar tots els escenaris previstos, i menys encara escriure scripts de prova automatitzats per provar la nova funcionalitat.


Ens podem embadalir amb els detalls del treball, codificar, revisar, executar i oblidar-nos del motiu principal Per què en realitat automatitzem una prova.



Per què automatitzem una prova?

Aquesta és una de les preguntes que faig quan entrevoco candidats per a un rol d’automatització de proves i, per a la meva sorpresa, molts candidats semblen perdre la raó principal i més important per automatitzar una prova. Algunes de les respostes que obtinc dels candidats són bastant creïbles, però encara no són la resposta que estic buscant. Algunes de les respostes que tinc a la pregunta anterior són:


Augmenta la cobertura de les proves

Aquesta resposta és força vàlida, però com definim la cobertura? Si tenim 100 proves, com podem mesurar el percentatge de cobertura?

Amb una pràctica d’automatització de proves avançada, podríeu executar centenars de proves en un període de temps relativament curt.

Per això, podem crear més casos de prova, més escenaris de prova i provar amb més dades d’entrada per a una característica determinada i, així, obtenir més confiança que el sistema funciona com s’esperava.

Tanmateix, a les proves i, sobretot, a l’automatització de proves, més proves no signifiquen realment una millor qualitat ni més possibilitats de trobar errors.


En un post de Martin Fowler, on discuteix Cobertura de la prova , esmenta

Si feu que un determinat nivell de cobertura sigui un objectiu, la gent intentarà assolir-lo. El problema és que les xifres d’alta cobertura són massa fàcils d’aconseguir amb proves de baixa qualitat. Al nivell més absurd que teniu AssertionFreeTesting . Però, fins i tot sense això, obteniu moltes proves que busquen coses que poques vegades funcionen malament i us distreu de provar les coses que realment importen.

Estalviar temps

Aquesta resposta també és certa, ja que podeu passar un temps valuós fent proves exploratòries interessants mentre s’executen les proves automatitzades. Tot i això, per a una nova característica desenvolupada, en realitat podria trigar més a escriure scripts automatitzats que provar-la manualment en el primer instant.

Per tant, és important tenir en compte que per estalviar temps de les proves automàtiques, es requereix un esforç inicial inicial en la creació de scripts de les proves automatitzades, assegurant-se que es revisen el codi, i que no hi hagi problemes en l’execució de les proves automatitzades.


Troba més errors

Aquesta resposta em preocupa de vegades, ja que mai no he vist cap mètrica que suggereixi que hi hagi més errors detectats per automatització que proves manuals / exploratòries. Les proves automatitzades solen comprovar si hi ha cap regressió al sistema després d’haver implementat el codi nou.

Sempre hi ha més possibilitats de trobar errors en funcions noves que en funcions existents. A més, hi ha altres motius per què les proves automatitzades no troben defectes

Substitueix els verificadors manuals

Aquesta és probablement la pitjor resposta que he escoltat pel que fa a per què automatitzem una prova. Hi ha una clara distinció entre el que fa un provador manual i el que comprova una prova automàtica. Les proves automatitzades no són proves, sinó comprovació de fets.

Per poder automatitzar una prova, hem de conèixer el resultat esperat per poder comprovar el resultat vàlid o no vàlid. Això és el que ens dóna cert o fals, positiu o negatiu, aprovar o fracassar.


Les proves, d'altra banda, són un exercici d'investigació, on dissenyem i executem proves simultàniament. Moltes coses es poden comportar de manera diferent on només un observador humà observador ho pot notar.

Sempre caldran bons verificadors manuals a causa de la mentalitat diferent i de la capacitat de qüestionar el sistema.



Millorar la qualitat

Tot i que les proves automatitzades poden donar-nos comentaris ràpids i alertar-nos sobre la salut d’una aplicació, de manera que podem revertir qualsevol canvi de codi que hagi trencat el sistema, les proves automàtiques per si soles no milloren la qualitat. El fet de disposar d’una automatització de proves per a adults no garanteix que cap error s’escapi a la producció.

Podem millorar la qualitat assegurant-nos que es segueixen les pràctiques correctes de principi a fi d’un cicle de desenvolupament. La qualitat no és una cosa posterior; s’ha de coure des del principi. No n’hi ha prou amb confiar en proves automatitzades per obtenir una imatge de la qualitat del producte.




Per tant, quina és la raó principal per la qual automatitzem una prova?

La resposta breu és repetibilitat . Automatitzem una prova perquè hem d’executar les mateixes proves una i altra vegada. Voleu automatitzar una prova si només la féssiu una vegada i l’oblidéssiu? És clar que no! El temps i l'esforç que invertiu en automatitzar la prova, podríeu haver-la executat manualment.

Ara, per definició, automatitzem proves repetibles, és a dir, proves de regressió, que hem d’executar amb freqüència.

Per tant, la propera vegada, quan vulgueu automatitzar una prova, feu un pas enrere i penseu amb quina freqüència és probable que executeu aquesta prova? Realment val la pena l'esforç per automatitzar la prova?