differences between unit testing
Una comparació detallada d'unitats, integració i proves funcionals:
Per a qualsevol aplicació de programari, tant les proves d’unitat com les proves d’integració són molt importants, ja que cadascuna d’elles utilitza un procés únic per provar una aplicació de programari.
Però qualsevol o fins i tot tots dos no poden substituir les proves funcionals en cap moment.
Què aprendreu:
- Proves d'unitat contra proves d'integració i proves funcionals
- Què és la prova unitària?
- Què és la prova d'integració?
- Proves d’unitats vs proves d’integració
- Proves funcionals
- Diferència exacta
- Conclusió
- Lectura recomanada
Proves d'unitat contra proves d'integració i proves funcionals
Proves d’unitat significa provar mòduls individuals d'una aplicació de forma aïllada (sense cap interacció amb dependències) per confirmar que el codi està fent les coses bé.
Proves d'integració significa comprovar si diferents mòduls funcionen bé quan es combinen junts com a grup.
Proves funcionals significa provar una part de funcionalitat al sistema (pot interactuar amb dependències) per confirmar que el codi està fent les coses bé.
Les proves funcionals estan relacionades amb les proves d’integració, però, signifiquen les proves que comproven la funcionalitat de tota l’aplicació amb tot el codi funcionant junts, gairebé una prova d’integració.
Les proves unitàries consideren la comprovació d’un sol component del sistema, mentre que les proves de funcionalitat consideren la comprovació del funcionament d’una aplicació amb la funcionalitat prevista descrita a l’especificació de requisits del sistema. D'altra banda, les proves d'integració consideren la comprovació de mòduls integrats al sistema.
I, el més important, per optimitzar el retorn de la inversió (ROI), la vostra base de codi hauria de tenir el màxim nombre de proves unitàries possibles, menys proves d’integració i el menor nombre de proves funcionals.
Això es mostra millor a la següent piràmide de prova:
profunditat primer cerca c ++
Les proves unitàries són més fàcils d’escriure i d’executar més ràpidament. El temps i l’esforç per implementar i mantenir les proves augmenta de la prova unitària a la prova funcional, tal com es mostra a la piràmide anterior.
Exemple:
Entenguem aquests tres tipus de proves amb un exemple simplificat.
Per exemple . Per a un telèfon mòbil funcional, les parts principals necessàries són 'bateria' i 'targeta SIM'.
Exemple de prova d’unitat - Es comprova la durada, la capacitat i altres paràmetres de la bateria. La targeta SIM es comprova per activar-la.
Exemple de proves d’integració - La bateria i la targeta SIM estan integrades, és a dir, muntades per iniciar el telèfon mòbil.
Exemple de proves funcionals - La funcionalitat d’un telèfon mòbil es comprova en funció de les seves característiques i ús de la bateria, així com de les instal·lacions de la targeta SIM.
Hem vist un exemple en termes laics.
Ara, prenem un exemple tècnic d'una pàgina d'inici de sessió:
Gairebé totes les aplicacions web requereixen que els seus usuaris / clients iniciïn sessió. Per a això, totes les aplicacions han de tenir una pàgina 'Inici de sessió' que contingui aquests elements:
- Compte / nom d'usuari
- Contrasenya
- Botó d'inici de sessió / sessió
Per a la prova unitària, poden ser els casos de prova següents:
- Longitud del camp: camps de nom d'usuari i contrasenya.
- Els valors del camp d’entrada haurien de ser vàlids.
- El botó d'inici de sessió només s'activa després que s'introdueixen valors vàlids (format i longitudinal) als dos camps.
Per a les proves d’integració, poden ser els casos de prova següents:
- L'usuari veu el missatge de benvinguda després d'introduir valors vàlids i de prémer el botó d'inici de sessió.
- L'usuari hauria de navegar a la pàgina de benvinguda o a la pàgina d'inici després d'una entrada vàlida i fent clic al botó Iniciar sessió.
Ara, un cop acabades les proves de la unitat i de la integració, vegem-ne les addicionals casos de prova que es consideren per a proves funcionals:
- Es comprova el comportament esperat, és a dir, l’usuari pot iniciar la sessió fent clic al botó d’inici de sessió després d’introduir un nom d’usuari i valors de contrasenya vàlids.
- Hi ha un missatge de benvinguda que aparegui després d'un inici de sessió correcte?
- Hi ha un missatge d'error que hauria d'aparèixer en un inici de sessió no vàlid?
- Hi ha galetes del lloc emmagatzemades per als camps d'inici de sessió?
- Es pot iniciar sessió un usuari inactivat?
- Hi ha algun enllaç 'contrasenya oblidada' per als usuaris que han oblidat les seves contrasenyes?
Hi ha molts més casos que vénen a la ment d’un provador funcional mentre realitzen proves funcionals. Però un desenvolupador no pot assumir tots els casos mentre construeix casos de proves d’Unitat i Integració.
Per tant, hi ha un munt d’escenaris que encara no s’han de provar fins i tot després de les proves d’unitat i integració.
Ara és hora d’examinar les proves d’unitat, integració i funcionals una per una.
Què és la prova unitària?
Com el seu nom indica, aquest nivell implica provar una 'Unitat'.
Aquí, la unitat pot ser la part més petita d'una aplicació que es pugui comprovar, ja sigui la funció, el mètode individual més petit, etc. Els desenvolupadors de programari són els que escriuen els casos de prova d'unitat. L’objectiu aquí és fer coincidir els requisits i el comportament esperat de la unitat.
A continuació es mostren alguns punts importants sobre les proves d’unitats i els seus avantatges:
- La prova d’unitat es realitza abans que utilitzen els desenvolupadors de programes per fer proves d’integració tècniques de proves de caixes blanques .
- La prova d’unitat no només comprova el comportament positiu, és a dir, la sortida correcta en cas d’entrada vàlida, sinó també les fallades que es produeixen amb una entrada no vàlida.
- Trobar problemes / errors en una fase inicial és molt útil i redueix els costos globals del projecte. Com que es fan proves de la unitat abans de la integració del codi, els problemes trobats en aquesta etapa es poden resoldre molt fàcilment i el seu impacte també és molt menor.
- Una prova unitària prova petites peces de codi o funcions individuals, de manera que els problemes / errors trobats en aquests casos de prova són independents i no afecten la resta de casos de prova.
- Un altre avantatge important és que els casos de prova unitària simplifiquen i faciliten les proves de codi. Per tant, també és més fàcil resoldre els problemes en una etapa posterior, ja que només s’ha de provar l’últim canvi en el codi.
- La prova unitària permet estalviar temps i costos i és reutilitzable i fàcil de mantenir.
JUnit ( Framework Java ), PHPUnit (framework PHP), NUnit (.Net framework), etc. són eines populars de proves d’unitats que s’utilitzen per a diferents idiomes.
Què és la prova d'integració?
Les proves d’integració comproven la integració de diferents parts del sistema. Primer s’integren dues parts o mòduls diferents del sistema i després es realitzen proves d’integració.
L’objectiu de les proves d’integració és comprovar la funcionalitat, la fiabilitat i el rendiment del sistema quan s’integra.
Les proves d’integració es realitzen amb els mòduls que es proven primer per unitat i després les proves d’integració defineixen si la combinació dels mòduls dóna la sortida desitjada o no.
Les proves d’integració les poden fer verificadors independents o també desenvolupadors.
Hi ha 3 tipus diferents d’enfocaments de proves d’integració. Analitzem breument cadascun d'ells:
a) Enfocament d’integració del Big Bang
En aquest enfocament, tots els mòduls o unitats s’integren i comproven en conjunt alhora. Normalment, això es fa quan tot el sistema està a punt per fer proves d’integració en un sol moment.
No confongueu aquest enfocament de les proves d’integració amb les proves del sistema, només es prova la integració de mòduls o unitats i no de tot el sistema, tal com es fa a les proves del sistema.
L’enfocament del big bang és important avantatge és que tot el que està integrat es prova alhora.
Una important desavantatge és que es fa difícil identificar els fracassos.
Exemple: A la figura següent, la unitat 1 a la unitat 6 s’integra i es prova mitjançant l’enfocament del Big Bang.
b) Enfocament de dalt a baix
La integració de les unitats / mòduls es prova de nivell superior a nivell pas a pas.
La primera unitat es prova individualment per escrit prova STUBS . Després d'això, els nivells inferiors s'integren un per un fins que es configura i prova l'últim nivell.
L’enfocament de dalt a baix és una manera d’integrar-se molt orgànicament, ja que és coherent amb com passen les coses a l’entorn real.
L'únic preocupació amb aquest enfocament és que la funcionalitat principal es prova al final.
c) Enfocament ascendent
Les unitats / mòduls es proven de baix a nivell superior, pas a pas, fins que tots els nivells d’unitats / mòduls s’integrin i es provin com una sola unitat. Programes estimuladors anomenats CONDUCTORS s’utilitzen en aquest enfocament. És més fàcil detectar problemes o errors als nivells inferiors.
L'alcalde desavantatge d'aquest enfocament és que els problemes de nivell superior només es poden identificar al final quan s'hagin integrat totes les unitats.
Proves d’unitats vs proves d’integració
Després d’haver tingut prou discussió sobre les proves d’unitat i les proves d’integració, anem a revisar ràpidament les diferències entre les dues a la taula següent:
Proves unitàries | Proves d’integració |
---|---|
Es realitza a la fase inicial de les proves i es pot realitzar en qualsevol moment | S'ha de dur a terme després de la prova d'unitat i abans de la prova del sistema |
Prova el component únic de tot el sistema, és a dir, prova una unitat de forma aïllada. | Prova els components del sistema que treballen junts, és a dir, prova la col·laboració de diverses unitats. |
Més ràpid d’executar | Pot córrer lent |
Sense dependència externa. Qualsevol dependència externa és burlada o eliminada. | Requereix interacció amb dependències externes (per exemple, base de dades, maquinari, etc.) |
simple | Complex |
Conduït pel desenvolupador | Conduït pel provador |
És un tipus de proves de caixes blanques | És un tipus de proves de caixes negres |
Manteniment econòmic | Manteniment car |
Comença a partir de l'especificació del mòdul | Comença a partir de l'especificació de la interfície |
Les proves d’unitats tenen un abast estret, ja que només comprova si cada petit fragment de codi està fent el que es pretén fer. | Té un abast més ampli, ja que cobreix tota l’aplicació |
El resultat de les proves unitàries és la visibilitat detallada del codi | El resultat de les proves d’integració és la visibilitat detallada de l’estructura d’integració |
Descobriu els problemes només dins de la funcionalitat dels mòduls individuals. No exposa errors d'integració ni problemes a tot el sistema. | Descobriu els errors que sorgeixen quan diferents mòduls interactuen entre ells per formar el sistema general |
Proves funcionals
A tècnica de proves de caixa negra , on es prova la funcionalitat de l'aplicació per generar la sortida desitjada en proporcionar una entrada determinada, s'anomena 'Prova funcional'.
En la nostra processos de proves de programari ho fem escrivint casos de prova segons els requisits i escenaris. Per a qualsevol funcionalitat, el nombre de casos de prova escrits pot variar d’un a molts.
Els casos de prova inclouen bàsicament les parts següents:
- Resum de la prova
- Requisits previs (si n’hi ha)
- Passos d'entrada de casos i proves
- Dades de prova (si n'hi ha)
- Sortida esperada
- Notes (si n'hi ha)
'Basat en requisits' i 'Basat en escenaris empresarials' són les dues formes de proves funcionals que es duen a terme.
A les proves basades en requisits, els casos de prova es creen segons el requisit i es proven en conseqüència. En una prova funcional basada en escenaris empresarials, les proves es realitzen tenint en compte tots els escenaris des d’una perspectiva empresarial.
No obstant això, el major desavantatge de les proves funcionals és la probable redundància en les proves i la possibilitat de perdre alguns errors lògics.
Diferència exacta
Vegem les seves diferències.
Aquests són alguns dels principals:
Proves d’unitat | Proves d'integració | Proves funcionals | |
---|---|---|---|
Definició i finalitat | Provant unitats o mòduls més petits de forma individual. | Prova de la integració de dues o més unitats / mòduls combinats per realitzar tasques. | Prova del comportament de l'aplicació segons el requisit. |
Complexitat | No és gens complex, ja que inclou els codis més petits. | Una mica més complex que les proves unitàries. | Més complex en comparació amb les proves d’unitat i d’integració. |
Tècniques de proves | Tècnica de proves de caixa blanca. | Tècnica de proves de caixa blanca i caixa negra. Proves de caixa grisa | Tècnica de proves de caixa negra. |
Major atenció | Mòduls o unitats individuals. | Integració de mòduls o unitats. | Funcionalitat completa de l'aplicació. |
Error / problemes coberts | Les proves unitàries troben problemes que poden aparèixer amb freqüència als mòduls. | Les proves d’integració troben problemes que es poden produir mentre s’integren diferents mòduls. | Les proves funcionals detecten problemes que no permeten a una aplicació realitzar la seva funcionalitat. Això inclou alguns problemes basats en escenaris. |
Problema d'escapament | No hi ha possibilitat d’escapar del problema. | Menys possibilitats d’escapar del problema. | Hi ha més possibilitats d’escapar de problemes, ja que la llista de proves que s’executen sempre és infinita. |
Llegiu també => Què és la prova de funcions
Conclusió
Tots aquests tres tipus de proves estan correlacionats.
Per assolir una cobertura completa, cal tenir proves d’unitat per als camins / línies de codi, proves funcionals i d’integració per garantir que les ‘unitats’ treballen juntes de manera cohesionada.
Espero que aquest article us hagi donat una idea clara sobre les proves de la unitat, la integració i les funcions juntament amb les seves diferències, tot i que hi ha molt més en aquestes formes de proves.
Lectura recomanada
- Les millors eines de prova de programari 2021 (Eines d'automatització de proves de control de qualitat)
- Spock per a la integració i proves funcionals amb seleni
- Proves funcionals contra proves no funcionals
- Prova de descàrrega de llibres electrònics
- Top 10 d'eines de proves d'integració per escriure proves d'integració
- Diferències clau entre la prova de caixa negra i la prova de caixa blanca
- Guia completa de proves funcionals amb els seus tipus i exemples
- Proves funcionals i proves de rendiment: s'hauria de fer simultàniament?