Você está na página 1de 2

DESENVOLVIMENTO DE SISTEMAS:

TESTES DE APRENDIZAGEM (LEARNING


TESTS)
9 de julho de 2014Andr Luis Celestino Desenvolvimento, Qualidade, Utilidades
COMPARTILHE
inShare22
Implementar testes unitrios para garantir a consistncia da aplicao importante, certo? Claro!
Alm deles, existe tambm uma famlia de testes que pode nos proporcionar uma segurana maior
nos componentes que utilizamos no software, principalmente se estes forem componentes de
terceiros. Estamos falando dos Testes de Aprendizagem!
Qualquer desenvolvedor j teve a necessidade de instalar componentes ou bibliotecas de terceiros,
talvez para tratar regras de negcio especfcas ou simplesmente para aprimorar o visual da
aplicao. comum, por exemplo, encontrar desenvolvedores Delphi que instalam sutes de
componentes especiais, como o JVCL, TMS, FireDAC, Gnostice ou componentes de relatrios.
O que nos passa despercebido, algumas vezes, o fato de que esses componentes tambm
apresentam bugs e esto sujeitos a atualizaes. por isso que novas verses destes
componentes so disponibilizadas periodicamente. Logo, isso nos refete a uma questo: quando
instalamos ou atualizamos estes componentes, como possvel verifcar se eles esto estveis ou
que continuam compatveis com o nosso software?
Uma opo vivel criar Learning Tests, ou Testes de Aprendizagem! Estes testes consistem em
averiguar se o comportamento dos componentes est correto, da mesma forma que validamos as
regras de negcio com testes unitrios. Porm, diferente destes, os Testes de Aprendizagem so
executados apenas quando h uma nova verso do componente em questo.
Como funcionam esses testes?
Para facilitar a compreenso, vou citar um caso real. H alguns anos, tive de desenvolver um
mdulo de comunicao com um WebService referente NFS-e (Nota Fiscal de Servios
Eletrnica). Para isso, instalei um componente de terceiro que facilitaria este trabalho. Antes de
iniciar o desenvolvimento do mdulo, decidi implementar alguns testes para aprender como o
componente funcionava e me certifcar de que ele cumpriria o que era esperado.
Opa, eu disse aprender? Claro, ento por isso que o nome destes testes traz a palavra
aprendizagem! Ao implementar testes no componente, estamos automaticamente adquirindo
conhecimento do seu comportamento e requisitos. Dessa forma, teremos mais facilidades em
utiliz-lo e evitaremos possveis impedimentos, afnal, muito mais fcil utilizar algo que j
conhecemos.

Os testes que implementei eram simples, simulando um ambiente de utilizao do componente para
avaliar o resultado dos mtodos que ele disponibilizava. importante realar que, at ento, esses
testes no tm nenhuma relao com a regra de negcio. Pode-se inclusive dizer que os Testes de
Aprendizagem so de baixo nvel, j que testam uma ferramenta ou recurso que ainda ser utilizada
no projeto.
Pois bem, tomei conhecimento do componente e comecei a utiliz-lo. Porm, no ms seguinte, a
Microsoft liberou uma atualizao de segurana no Windows que inviabilizou os mtodos de
conexo do componente. Ao rodar os Testes de Aprendizagem, eles falhavam. Isso me dava a
certeza de que o problema estava no componente, e no na minha codifcao.
Aps alguns dias, devido essa atualizao do Windows, uma nova verso do componente foi
disponibilizada pelos desenvolvedores. Para que o meu mdulo de NFS-e voltasse a funcionar,
imediatamente baixei a nova verso. Antes de testar diretamente a aplicao, decidi rodar
novamente os Testes de Aprendizagem e, para a minha surpresa, eles ainda estavam falhando!
Aps analis-los, encontrei o motivo: alm de terem ajustado o componente para se adequar
atualizao do Windows, os desenvolvedores tambm reformularam alguns mtodos do
componente envolvendo outras operaes. Devido aos Testes de Aprendizagem, fui capaz de
detectar e corrigir essa incompatibilidade rapidamente.
Mas de qualquer forma voc descobriria esse problema!
Sim, mas no com a mesma prontido proporcionada pelos Testes de Aprendizagem. Se no fosse
por eles, em poucos dias eu receberia uma nova notifcao de erro do usurio. Os Testes de
Aprendizagem me adiantaram em corrigir, ou melhor, ajustar o meu cdigo que utilizava estes
mtodos que foram alterados. Afnal, no se brinca com erros em ambiente de produo, no ?
Em suma, podemos apontar duas grandes vantagens ao implementar Testes de Aprendizagem: a
possibilidade de aprender o funcionamento do componente e a preveno de problemas causados
por atualizaes, como o exemplo citado neste artigo. Alm disso, facilita a integrao do
componente dentro da aplicao e pode ser utilizado como base de conhecimento para novos
desenvolvedores!
Dependendo da complexidade do componente, os Testes de Aprendizagem podem exigir horas de
implementao. A recomendao implement-los somente se no houver prioridades de negcio
pendentes ou, opcionalmente, essa atividade tambm pode ser alocada dentro de uma Sprint.

Você também pode gostar