Quais são as desvantagens dos testes unitários?
Eu respondi a isto: O que é o teste de unidade de software e por que é importante? - Agora vamos dar uma olhada no lado oposto.
"Quais são as desvantagens do teste unitário?"
Falemos primeiro de cozinhar.
P>P>Componha, você quer fazer uma omelete.
(Image source: IHOP)
Um café da manhã, nada chique. Mas você precisa de alguns ingredientes, como ovos, leite, bacon, queijo, tomate, sal..
> E aqui estão algumas coisas que você [muito provavelmente] inspecionaria, avaliaria, verificaria e assim por diante.
- Quantos ovos? Eles são frescos?<
- Que tipo de leite? Quantos? Está estragado?<
- A sua tigela (para mexer) está limpa?
- > a sua frigideira está suficientemente aquecida? Quando você coloca bacon?>li>li>e assim por diante...<
Mas note que você não está testando o produto.
Em teoria, pode-se tentar cozinhar sem dar qualquer atenção ao processo e aos componentes, e provar o produto final - a omelete - depois, após a conclusão.
>Mas há implicações:
>ul>< Certamente leva mais tempo até que os resultados da avaliação;>li> Será tarde demais para tomar ações corretivas;>li>li> ou você será capaz de responder às mudanças;>li>li>alguns problemas (como leite estragado ou tigela suja) não se manifestarão imediatamente após a degustação, mas podem ter sérias conseqüências para a saúde.p> Tudo isso se traduz bem no desenvolvimento de software. Veja também: O que é o teste da caixa branca?Se você quer ser eficaz e eficiente, então o teste da caixa branca é necessário.
Mas se você confiar apenas no teste da unidade - você está em desvantagem. Mesmo um excelente teste de unidade não pode mitigar testes ausentes ou deficientes funcionais [caixa preta]. O último é uma abordagem fora da caixa: O que é o teste da caixa preta?
Teste da caixa preta pode ajudar a evitar falhas levantando questões como estas.
- Estaremos cozinhando a ordem certa? Talvez o cliente quisesse isto em vez disso.
(Image source: IHOP)
- Estaremos a seguir a receita certa? O teste da caixa preta não só verifica os requisitos como ajuda a refiná-los, identificando lacunas e contradições.
- >Há alguma ameaça ao valor e ao sucesso? Incluindo as que não estão explicitamente indicadas. Sabe, algumas pessoas não comem bacon, outras são alérgicas ao leite.
- Há alguma ameaça ao processo? "Sucesso" na prática significa não só "cumprir os requisitos", mas também cumprir o orçamento e o horário. Bons testes ajudam a identificar os problemas que tornam o desenvolvimento mais longo ou mais caro.
Agora, uma pergunta que qualquer pessoa pode fazer - porque não fazer as duas coisas ao longo do processo? E se as mesmas pessoas fazem tanto testes unitários como testes funcionais, há realmente alguma diferença?
E é isso que tem acontecido ultimamente.
Convergência de papéis, evolução de conjuntos de habilidades
Ver como espécies diferentes têm aparência muito semelhante? - Elas estavam evoluindo para se encaixar em ambientes similares.
(Image source: Pinterest * Artis Natura Magistra *)
Aplicações como Agile, DevOps, Lean, e outras colocam ênfase na qualidade ao longo de todo o processo. (É claro que há implementações ruins e implementações erradas.)
Quando bem feitas, os programadores aprendem a testar, e os testadores aprendem a lidar com o código. Os participantes do negócio aprendem a se envolver no processo de engenharia. Toda a equipe assume a responsabilidade pela qualidade em cada etapa do processo.
E enquanto os papéis de "pure-black-box-QA-functional-testing" podem se extinguir como aqueles Icthyosaurus, os testes - pensamento crítico e resolução de problemas - continuarão e prosperarão sendo um ancestral comum de todas as profissões de engenharia.
>p> Obrigado pela leitura!>ul>>li> Se você gostou desta resposta, por favor, atualize e siga-me>li> Se você achou útil, por favor, compartilhe com os outrosli>li>Não concorda ou não gostou? Dê-me um comentário! Tenho certeza que há espaço para melhorias.