Por que escrever testes automatizados? | Blog TreinaWeb
Quando se fala de qualidade de software, sabemos que a etapa de testes é imprescindível. O software deve fazer o que o cliente precisa de maneira confiável, segura, eficiente e flexível. Porém, durante o desenvolvimento, é normal aparecerem alguns erros. Por isso, é de extrema importância identificar os possíveis erros antes de colocar a aplicação em produção.
"Prevenir erros é mais fácil do que corrigi-los."
A automação de testes é de grande valia e deve ser considerado em todos os projetos de desenvolvimento de software. E, de fato, para um software ser testado corretamente, esse processo deve ser automatizado com o auxílio de ferramentas com esta finalidade.
Os testes automatizados vêm como uma forma de poupar tempo de detecção de erros e de aumento de confiabilidade com relação aos testes em si. A execução de um teste manual é eficaz, porém, conjuntos maiores de teste com muitas repetições acabam se tornando uma tarefa muito cansativa e com tendência a erros, já que, de maneira inconsciente, as pessoas que testam o software em questão começarão a o utilizar de maneira em que este não falhe. Paralelizar este processo de teste, colocando várias pessoas para executar as rotinas de teste também pode não ser a melhor solução, já que isso pode ser caro e não irá garantir a qualidade do teste. Por estes motivos, testes automatizados vêm se mostrando cada vez mais como uma excelente alternativa para que os ciclos de teste de software possam ser executados de maneira independente do tamanho e da complexidade do software em questão.
Ainda existe mais um ponto que justifica a adoção de testes automatizados. Imagine o seguinte: uma equipe está focada nos testes de forma manual. No final dos testes, um erro foi encontrado. Esse erro deve ser resolvido pelos desenvolvedores. Porém, depois de resolvido, a equipe de testes deverá começar os testes do zero para garantir que a alteração feita não ocasione nenhum erro em outra parte do sistema. Nessa situação, mais uma vez, caímos no ciclo vicioso do teste de software manual: a ocorrência de muitos processos repetitivos e cíclicos, o que vai nos levar novamente à situação onde nós, se começarmos a repetir as coisas em uma carga alta, começaremos a executar estas ações no "automático", prejudicando o processo de teste. E ainda existe a questão da quantidade de tempo gasto nesse processo todo, quantidade esta que certamente é enorme. E já sabemos: "tempo é dinheiro"… Se gastamos tempo "à toa", estamos gastando dinheiro à toa e produzindo um software muito menos competitivo no mercado.
Com testes automatizados, nós podemos pelo menos evitar uma boa parte desse ciclo vicioso dos testes manuais, produzindo resultados com um grau de confiabilidade bem mais alto e em um período de tempo muito mais curto!
Alguns tipos de teste…
Testes de software são de fato um assunto muito sério. Teste de software é algo tão complexo que existe até mesmo uma norma ISO para normatizar os procedimentos de teste: a ISO/IEC 9126. Em cima das métricas pregadas por esta norma ISO, alguns tipos de teste acabaram por surgir. Cada um destes grupos possui um conjunto de ferramentas de automação para atender a avaliação das métricas envolvidas. Os tipos de teste de software mais comuns são:
O teste de unidade verifica a menor parte testável do software - que é chamada de unidade. Neste tipo de teste, essa unidade é testada de forma isolada para garantir que tenha o comportamento esperado. Como esse teste é focado em um trecho específico do software, os erros são encontrados facilmente, diminuindo o tempo gasto com depuração. O conceito de "unidade" de software acaba sendo um pouco subjetivo, mas você pode pensar como sendo um método de uma classe sua, por exemplo. Este método, se puder ter suas entradas, comportamentos e saídas devidamente testados e validados, pode ser considerado como uma unidade de software. Algumas ferramentas que auxiliam no processo de teste de unidade (ou teste unitário) são o jUnit, o xUnit.NET e o PHPUnit.
O teste de integração verifica se uma unidade tem o comportamento esperado quando funciona de maneira integrada a outros elementos de software, como chamada de serviços, APIs e banco de dados. Aqui, a unidade de software em si não é avaliada, mas sim a sua integração com outras unidades. Algumas ferramentas que auxiliam no processo de teste de integração são o Selenium, o Mockito e o MSTests.
Testes e2e (fim-a-fim)
Neste tipo de teste, é feita uma simulação das ações de um usuário real interagindo com o software, como por exemplo, o preenchimento de um cadastro, uma opção que foi selecionada ou um clique do mouse. Como o nome entrega, este tipo de teste visa garantir o fluxo correto dos dados entre todas as camadas que fazem parte da solução de software. Alguns exemplos de ferramentas para testes e2e são o Protactor, o Selenium e o Cypress.
Dessa maneira, podemos notar que todo o tempo destinado na garantia da qualidade do software é válido, pois isso irá garantir a entrega de um software mais robusto e confiável, o que aumenta até mesmo a competitividade da solução em questão no mercado. Com essas noções básicas sobre testes automatizados, você pode se aprofundar mais no assunto em um de nossos cursos e praticar!