Os Testes Automatizados
Por: wesleypreres • 25/9/2018 • Resenha • 1.120 Palavras (5 Páginas) • 141 Visualizações
INTRODUÇÃO
Sabemos que durante o desenvolvimento de um software se torna muito fácil desenvolver um código que irá falhar, o problema é que, em muito dos casos, essas falhas passam despercebidas e só serão encontradas pelo usuário. Diante disso entra o teste de software, com o objetivo de reduzir essas falhar, e entregar um produto de software de maior qualidade.
Visando que os testes eram feitos manualmente e por uma equipe própria para teste, a equipe em um certo nível do desenvolvimento ficava “ausente”, pois 100% do seu tempo era dedicado para testes. Os testes automatizados vieram para suprir ausência, pois automatiza os testes repetitivos, que antes eram feitos por pessoas, executando-os por uma maquina, ganhando-se assim tempo no desenvolvimento. Mas o que é o teste automatizado? Como ele funciona? Sempre terá sucesso com os testes automatizados?
O QUE SÃO OS TESTES AUTOMATIZADOS?
Segundo a definição de Cheque e Kon, “Testes automatizados são programas ou scripts simples que exercitam funcionalidades do sistema sendo testado e fazem verificações automáticas nos efeitos colaterais obtidos. A grande vantagem desta abordagem, é que todos os casos de teste podem ser facilmente e rapidamente repetidos a qualquer momento e com pouco esforço”
Basicamente, você usa uma ferramenta cria um teste, independente da abordagem usada para se testar. Nesse teste você irá escrever um código que abrange totalmente o que você quer testar.
Vamos supor que você crie um sistema para calcular o fatorial, e sempre que você fizesse uma alteração no código para tentar corrigir um bug, você tivesse que digitar todos os números possíveis. Não, você iria desenvolver unicamente um teste, e sempre que o código sofresse uma alteração para corrigir um bug, você somente iria executar esse teste, eliminando-se assim todo o trabalho repetitivo do desenvolvedor e passando todo essa trabalho para uma máquina executar.
Na automação de testes, os testes são divididos em três fases: teste de unidade, teste de interação e teste de interface e aceitação, conforme definidor na pirâmide a seguir.
[pic 1]
Na base encontra-se o teste unitário, teste que na grande maioria são escritos pelos próprios programadores. Os códigos de testes são escritos antes mesmo do código do programa principal e ajudam a garantir que as intenções dos programadores, referente ao programa principal, sejam atingidas. Algumas linguagens possuem framework que facilitam o desenvolvimento e execução dos testes de unidades. Como por exemplo, o JUnit, do Java.
No meio encontra-se o teste de integração, responsável por testar, por exemplo, a comunicação entre duas ou mais classes através de um método, ou a comunicação do software com o banco de dados. As ferramentas utilizadas são as mesmas usadas no teste unitário.
No topo encontra-se o teste de interface e aceitação, testes complicados de serem desenvolvidos, pois precisa de toda uma preparação para rodá-los. Esse teste basicamente valida os aspectos da interface. Quando trata-se de um software desenvolvido para web, é importante testar em diversos navegadores, para certificar que todos os aspectos foram atendidos. Um exemplo a ser citado deste teste, são os testes de caixa-preta, que simula o uso de um software pelo usuário, como preenchimento de campos com dados inválidos. Uma ferramenta comumente utilizada para a automação do teste em web é o framework Selenium que atua em vários browsers e em diversas plataformas. O framework ajuda a criar scripts de automação mais complexos e avançados para serem usados em um teste web.
Vale ressaltar que o custo de um projeto varia de acordo com que as falhas são encontradas. Quanto mais alto o nível da pirâmide mais custoso será para corrigir o bug. O custo é medido em tempo, e não em dinheiro em si.
COMO FUNCIONA?
A implementação irá variar muito do nível da pirâmide que está o teste, consequentemente quanto o menor nível da pirâmide, mais básico será o código do teste.
Em cada nível existe ferramentas, para diversas linguagens de programação, que ajudam o desenvolvedor a implementar esses testes, como por exemplo:
Nos testes unitários e de integração: JUnit – Java; PHPUnit – PHP; PyUnit – Python; entre outros.
Nos testes de interface: Selenium – Web; Espresso - Android ; XCode UI Tests – iOS, entre outros.
Nos testes de aceitação: Cucumber – Java; PHPSpec – PHP; Jasmine – JavaScript; Behave – Python; entre outros.
Agora iremos mostrar um trecho de um vídeo do Fabio Kon, onde ele implementa um teste de unidade em Python *executa vídeo*
O SUCESSO É GARANTIDO?
Nem sempre o sucesso é algo garantido, pois depende muito da situação da equipe que está utilizando os testes, há sempre fatores a serem analisado para começar usar os testes automatizados. Em um artigo escrito por Daniel Scaldaferri e publicado no site DevMedia, diz que a automação de testes possui alta propensão para falhas,e o mesmo apresenta uma tabela com os resultados de sucesso e insucesso da automação de testes.
[pic 2]
Melo do teste automatizado e entrevista
CONCLUSÃO
Desenvolvimento de software é uma tarefa complexa que exige conhecimento técnico, organização, atenção, criatividade e muita comunicação. Controlar a qualidade é um grande desafio devido à alta complexidade dos produtos e às inúmeras dificuldades relacionadas ao processo de desenvolvimento, é previsível que, em alguns momentos do desenvolvimento, em algumas dos milhares de linhas de código, alguns destes requisitos falhe, mas é imprevisível o momento no qual eles irão falhar.A execução manual de um caso de teste é rápida e efetiva, mas a execução e repetição de um vasto conjunto de testes manualmente é uma tarefa muito dispendiosa e cansativa. É normal e compreensivo que os testadores não verifiquem novamente todos os casos a cada mudança significativa do código; é deste cenário que surgem os erros de software, trazendo prejuízo para as equipes de desenvolvimento que perdem muito tempo para identificar e corrigir os erros, gerando grandes atrasos.Por isso, é imprescindível que exista uma maneira fácil e ágil de executar todos os testes em qualquer instante, e isso só é viável com o auxílio de testes automatizados.Testes automatizados são programas ou scripts simples que dão segurança à equipe, exercitam funcionalidades do sistema sendo testado e fazem verificações automáticas nos efeitos colaterais obtidos. Nem sempre o sucesso é garantido, pois depende muito da equipe e em qual situação ela está utilizando os testes, há fatores importantes a serem analisados antes de começar a usar os testes automatizados variando de acordo com a necessidade da equipe. A grande vantagem dos testes automatizados é a possibilidade da criação de testes mais elaborados e complexos, que poderão ser repetidos identicamente inúmeras vezes e a qualquer momento diminuindo o tempo gasto com a identificação e correção de erros, já que eles tendem a ser encontrados mais cedo facilitando a organização da equipe evitando atrasos na entrega do software.
...