A diferenza entre probas unitarias, de integración e funcionais

Unha comparación detallada de probas unitarias, de integración e funcionais:

Para calquera aplicación de software, tanto as probas unitarias como as probas de integración son moi importantes xa que cada unha delas emprega un proceso único para probar unha aplicación de software.

Pero calquera ou nin sequera ambos non poden substituír a proba funcional en ningún momento.

Probas unitarias vs probas de integración vs probas funcionais

Probas unitarias significa probar módulos individuais dunha aplicación de forma illada (sen ningunha interacción con dependencias) para confirmar que o código está facendo as cousas ben.

A proba de integración significa comprobar se os distintos módulos funcionan ben cando se combinan en grupo.

Probas funcionais significa probar unha parte da funcionalidade do sistema (pode interactuar coas dependencias) para confirmar que o código está a facer as cousas correctas.

As probas funcionais están relacionadas coas probas de integración, non obstante, significan que as probas comprobar a funcionalidade de toda a aplicación con todo o código funcionando xunto, case unha proba de super integración.

As probas unitarias consideran comprobar un só compoñente do sistema, mentres que as probas de funcionalidade consideran comprobar o funcionamento dunha aplicación contra o previsto. funcionalidade descrita na especificación dos requisitos do sistema. Por outra banda, as probas de integración consideran a comprobaciónmódulos integrados no sistema.

E, o máis importante, para optimizar o retorno do investimento (ROI), a base de código debería ter tantas probas unitarias como sexa posible, menos probas de integración e o menor número de probas funcionais.

Isto móstrase mellor na seguinte pirámide de proba:

As probas unitarias son máis fáciles de escribir e máis rápidas de executar. O tempo e o esforzo para implementar e manter as probas aumentan desde as probas unitarias ata as probas funcionais, como se mostra na pirámide anterior.

Exemplo:

Imos entender estes tres tipos de probas cun exemplo exagerado.

P.ex. . Para un teléfono móbil funcional, as principais pezas necesarias son a "batería" e a "tarxeta SIM".

Exemplo de probas unitarias : compróbase a duración da batería, a súa capacidade e outros parámetros. Compróbase a súa activación na tarxeta SIM.

Exemplo de proba de integración : a batería e a tarxeta SIM están integradas, é dicir, ensambladas para iniciar o teléfono móbil.

Funcional Exemplo de proba : compróbase a funcionalidade dun teléfono móbil en función das súas características e uso da batería, así como das características da tarxeta SIM.

Vimos un exemplo en termos profanos.

Agora, tomemos un exemplo técnico dunha páxina de inicio de sesión:

Case todas as aplicacións web requiren o seu usuarios/clientes para iniciar sesión. Para iso, cada aplicación debeter unha páxina de "Iniciar sesión" que ten estes elementos:

  • Conta/Nome de usuario
  • Contrasinal
  • Botón de inicio de sesión/inicio de sesión

Para as probas unitarias, os seguintes poden ser os casos de proba:

  • Lonxitude do campo: campos de nome de usuario e contrasinal.
  • Os valores dos campos de entrada deben ser válidos.
  • O botón de inicio de sesión só está habilitado despois de que se introduzan valores válidos (Formato e lonxitudinal) nos dous campos.

Para as probas de integración, os seguintes poden ser os casos de proba:

  • O usuario ve a mensaxe de benvida despois de introducir valores válidos e premer o botón de inicio de sesión.
  • O usuario debe navegar ata a páxina de benvida ou a páxina de inicio despois de introducir valores válidos e facer clic. o botón Iniciar sesión.

Agora, despois de realizar as probas unitarias e de integración, vexamos os casos de proba adicionais que se consideran para probas funcionais:

  1. Compróbase o comportamento esperado, é dicir, o usuario pode iniciar sesión facendo clic no botón de inicio de sesión despois de introducir un nome de usuario e uns valores de contrasinal válidos.
  2. Hai unha mensaxe de benvida que debe aparecer despois de iniciar sesión correctamente?
  3. Hai algunha mensaxe de erro que debería aparecer nun inicio de sesión non válido?
  4. Hai cookies de sitios almacenadas para os campos de inicio de sesión?
  5. Pode iniciar sesión un usuario inactivado?
  6. Hai algunha ligazón de "esquecín o contrasinal" para os usuarios que esqueceron os seus contrasinais?

Hai moitos máis casos deste tipo que chegan aa mente dun probador funcional mentres realiza probas funcionais. Pero un programador non pode asumir todos os casos mentres constrúe casos de proba de unidades e integración.

Por iso, hai moitos escenarios que aínda están por probar mesmo despois das probas de unidades e integración.

Agora é o momento de examinar as probas unitarias, de integración e funcionais unha a unha.

Que son as probas unitarias?

Como o seu nome indica, este nivel implica probar unha "unidade".

Aquí a unidade pode ser a parte máis pequena dunha aplicación que se pode comprobar, xa sexa a función individual máis pequena, método, etc. Os desenvolvedores de software son os que escriben os casos de proba unitaria. O obxectivo aquí é facer coincidir os requisitos e o comportamento esperado da unidade.

A continuación móstranse algúns puntos importantes sobre as probas unitarias e os seus beneficios:

  • Probas unitarias realízase antes da proba de integración realizada por desenvolvedores de software mediante técnicas de proba de caixa branca.
  • As probas unitarias non só verifican o comportamento positivo, é dicir, a saída correcta en caso de entrada válida, senón tamén os fallos que se producen con entrada non válida.
  • Atopar problemas/erros nunha fase inicial é moi útil e reduce os custos xerais do proxecto. Como as probas unitarias se realizan antes da integración do código, os problemas atopados nesta fase pódense resolver moi facilmente e o seu impacto tamén é moi menor.
  • Unha proba unitaria proba pequenos fragmentos de código ou individuais.funcións polo que os problemas/erros atopados nestes casos de proba son independentes e non afectan aos outros casos de proba.
  • Outra vantaxe importante é que os casos de proba unitaria simplifican e facilitan a proba do código. Polo tanto, tamén resulta máis fácil resolver os problemas nunha fase posterior, xa que só se probará o último cambio no código.
  • A proba unitaria aforra tempo e custos, e é reutilizable e fácil de manter.

JUnit (marco Java), PHPUnit (marco PHP), NUnit (.Net framework), etc. son ferramentas de proba unitaria populares que se usan en diferentes idiomas.

Que é a proba de integración. ?

As probas de integración consisten en probar a integración de diferentes partes do sistema. Primeiro intégranse dúas partes ou módulos diferentes do sistema e despois realízanse as probas de integración.

O obxectivo das probas de integración é comprobar a funcionalidade, a fiabilidade e o rendemento do sistema cando está integrado.

As probas de integración realízanse nos módulos que se proban primeiro unitariamente e despois as probas de integración definen se a combinación dos módulos dá a saída desexada ou non.

As probas de integración poden ser feito por probadores independentes ou por desenvolvedores tamén.

Hai 3 tipos diferentes de enfoques de proba de integración. Comentemos cada un deles brevemente:

a) Enfoque de integración do Big Bang

Neste enfoque, todos os módulos ou unidades están integrados e probados como un todo ao mesmo tempo. Isto adoita facerse cando todo o sistema está preparado para probar a integración nun único momento.

Non confundas este enfoque de probas de integración con probas do sistema, só se proba a integración de módulos ou unidades e non. todo o sistema tal e como se fai nas probas do sistema.

A vantaxe principal do enfoque do big bang é que todo o integrado se proba á vez.

Unha principal a desvantaxe é que se fai difícil identificar os fallos.

Exemplo: Na figura seguinte, a unidade 1 á unidade 6 intégranse e probábanse mediante o enfoque do Big Bang.

b) Enfoque de arriba abaixo

A integración das unidades/módulos comprobase paso a paso desde os niveis de arriba abaixo.

O a primeira unidade probásese individualmente escribindo STUBS de proba. Despois disto, os niveis inferiores intégranse un por un ata que se reúne e proba o último nivel.

O enfoque de arriba abaixo é unha forma moi orgánica de integrar xa que é coherente con como suceden as cousas no real.

A única preocupación con este enfoque é que a funcionalidade principal se proba ao final.

c) Abaixo- Enfoque ascendente

As unidades/módulos son probados de abaixo a nivel superior, paso a paso, ata que se integren todos os niveis de unidades/módulose probado como unha unidade. Neste enfoque úsanse programas estimuladores chamados DRIVERS . É máis fácil detectar problemas ou erros nos niveis inferiores.

A desvantaxe principal deste enfoque é que os problemas de nivel superior só se poden identificar ao final cando todas as unidades teñan foi integrado.

Probas unitarias vs probas de integración

Despois de ter discutido suficientemente sobre as probas unitarias e as probas de integración, repasemos rapidamente as diferenzas entre ambas. na seguinte táboa:

Probas unitarias Probas de integración
Proba o único compoñente de todo o sistema é dicir, proba unha unidade de xeito illado. Proba os compoñentes do sistema traballando xuntos, é dicir, proba a colaboración de varias unidades.
Máis rápido de executar Pódese executar lento
Sen dependencia externa. Calquera dependencia externa é burlada ou eliminada. Require interacción con dependencias externas (por exemplo, base de datos, hardware, etc.)
Simple Complexo
Realizada polo programador Realizada polo probador
É un tipo de proba de caixa branca É é un tipo de proba de caixa negra
Realizada na fase inicial da proba e despois pódese realizar en calquera momento Debe realizarse despois da proba unitaria e antes da proba do sistema
Baratomantemento Mantemento caro
Comeza a partir da especificación do módulo Comeza a partir da especificación da interface
Unidade as probas teñen un alcance reducido xa que só comproba se cada pequeno fragmento de código está facendo o que se pretende facer. Ten un alcance máis amplo xa que abarca toda a aplicación.
O resultado das probas unitarias é a visibilidade detallada do código. O resultado da integración as probas son a visibilidade detallada da estrutura de integración
Descubre os problemas dentro da funcionalidade de módulos individuais só. Non expón erros de integración nin problemas de todo o sistema. Descubre os erros que xorden cando diferentes módulos interactúan entre si para formar o sistema global

Probas funcionais

Unha técnica de proba de caixa negra, na que se proba a funcionalidade da aplicación para xerar a saída desexada ao proporcionar unha determinada entrada, chámase "Probas funcionais".

Nos nosos procesos de proba de software, facelo escribindo casos de proba segundo os requisitos e escenarios. Para calquera funcionalidade, o número de casos de proba escritos pode variar de un a moitos.

Conclusión

Todos estes tres tipos de probas están correlacionados.

Para acadar unha cobertura total, é necesario Requírese probas unitarias para as rutas/liñas de código, probas funcionais e de integración para asegurar que as "unidades"traballar xuntos de forma cohesionada.

Espero que este artigo che dera unha idea clara sobre as probas unitarias, de integración e funcionais xunto coas súas diferenzas, aínda que hai moito máis nestas formas de probas!!

Lectura recomendada

    Desprazarse arriba