Bugs

Por que escrever testes automatizados?

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!

Selenium - Testes Automatizados com TestNG
Curso de Selenium - Testes Automatizados com TestNG
CONHEÇA O CURSO

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:

Teste de Unidade

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.

Teste de Integração

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.

JavaScript - Testes automatizados com Jasmine
Curso de JavaScript - Testes automatizados com Jasmine
CONHEÇA O CURSO

Concluindo…

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!

Até a próxima 😊

Por que desprezar o teste do seu software pode ser uma auto-sabotagem?

O teste de software é umas das áreas de TI que muitas vezes não recebe o devido valor, mas que é fundamental para a entrega de um software com qualidade.

Sempre que adquirimos um produto, esperamos que ele tenha qualidade, ainda mais se tivermos investido um valor considerável nele. Por que então não podemos esperar a qualidade de um software? Veja nesse artigo, o por que você não deve se auto sabotar pulando as etapas de teste.

PMP/CAPM - Fundamentos da Gestão de Projetos
Curso de PMP/CAPM - Fundamentos da Gestão de Projetos
CONHEÇA O CURSO

Porque é importante testar?

A qualidade está diretamente ligada à satisfação do cliente. Quanto mais ele atende as expectativas, melhor é o grau de satisfação do cliente. Aliás, nenhum cliente gosta de receber um software que sempre dá erros ou não funciona.

A qualidade do software também implica, mesmo que indiretamente, na quantidade de usuários e clientes. Quando algo é muito bom, provavelmente seu cliente pode indicar para outras pessoas. Além disso, este cliente se tornará fidelizado. Por isso, o teste é super importante para o sucesso do negócio.

O que ele pode evitar?

O teste visa garantir que todos os requisitos estão sendo atendidos, que todas as funcionalidades estão sendo desempenhadas corretamente, que operações mais complexas estão sendo suportadas e que, obviamente, que não existe nenhum problema na aplicação.

Imagine que, depois da entrega do software, o cliente aponta um erro no sistema, que várias coisas não funcionaram como deveriam ou que até mesmo uma mensagem de erro apareceu. Com o teste de software adequado, você conseguiria verificar esta situação incorreta antes mesmo do cliente – o que é muito importante.

Por isso o teste deve acompanhar todo o ciclo de vida do software, desde sua concepção até sua manutenção.

Esse é um ponto importante para se levar em consideração. Quando esses bugs aparecerem, certamente será necessário reservar um tempo para a correção deste problema. Mas aqui é onde encontramos a armadilha: certamente, em um processo de desenvolvimento de software onde a etapa de teste não é algo “natural”, não existe tempo reservado para a correção de problemas.

O que acaba acontecendo, na maioria das vezes, é que o tempo que seria destinado para o desenvolvimento de funcionalidades acaba tendo que ser compartilhado com o tempo de correção do problema.

Com essa divisão, é fatal que uma situação incômoda ocorra: pelo pouco tempo, nem a correção do problema, nem o desenvolvimento das novas funcionalidades, serão desenvolvidos com a qualidade necessária, provocando uma cadeia sem fim de problemas e defeitos em geral no projeto de software em questão.

O mais interessante é que estes problemas que surgem não são simplesmente de ordem técnica: uma equipe que tem que estar sempre “correndo atrás do prejuízo” certamente será uma equipe estressada, instável e com alta rotatividade. Veja a bola de neve que pode acontecer pelo simples fato do desprezo pela etapa de teste de software.

“É melhor prevenir do que remediar”

É fato que, muitas vezes, o tempo é curto e você precisa entregar o mais rápido possível. Às vezes você até realiza a entrega consciente de que tem coisas para arrumar, mas que pelo menos cumpriu o prazo da entrega no dia certo e assim o cliente não irá reclamar. Aí, certamente você pensa: “na próxima entrega eu arrumo”. Mas isso muitas vezes acaba virando uma bola de neve, como vimos anteriormente: você tem que implementar novas funcionalidades, mas também tem que arrumar o que ficou pra trás na última entrega.

Por isso, não adianta simplesmente disponibilizar um pouquinho do tempo ou até aumentar os prazos de entrega para que você consiga verificar se o software está funcionando bem e com boa performance. É preciso que o processo de teste de software esteja integrado e fundido com o processo de desenvolvimento em geral. O teste de software precisa ser algo cultural.

Não sabe como realizar os testes no seu software? Aqui na TreinaWeb temos vários cursos desse segmento com muita prática. Então agora você não tem desculpas para não testar seu software, rs 😊

PMP/CAPM - Gestão dos Riscos
Curso de PMP/CAPM - Gestão dos Riscos
CONHEÇA O CURSO