Texto de: Letícia Garcez
Introdução
É comum vermos pessoas que estão ingressando na área de desenvolvimento com muito interesse em trabalhar especificamente com a produção de código, mas neste artigo falaremos um pouco sobre outra parte muito importante do desenvolvimento de software que muitos iniciantes acabam não prestando tanta atenção: testes de software.
Normalmente, as empresas de desenvolvimento possuem uma pessoa, ou um time de pessoas, que tem como responsabilidade a análise de qualidade do produto da empresa. Em outras palavras, as empresas tem times responsáveis por garantir que a aplicação esteja funcionando da maneira correta, e isso é feito a partir de testes.
Apesar de existirem times focados em testes de produtos maiores, a responsabilidade por testar a aplicação não é exclusiva da equipe de qualidade de software, já que a equipe de desenvolvimento também pode (e deve) contribuir com esse quesito quando possível.
Por que testes são importantes?
A resposta para essa pergunta é, inicialmente, simples: porque quem programa gera bugs. É quase impossível implementar um projeto que não tenha bugs ou comportamentos indesejados logo na primeira tentativa, ainda mais em um time de desenvolvimento com várias pessoas envolvidas no mesmo projeto.
Bugs, além de comprometer a experiência de quem está utilizando o software, também podem ter impactos enormes para a aplicação uma vez que ela vá para produção. Por isso, identificar e corrigir os bugs o mais rápido possível é muito importante, sejam estes bugs comportamentos indesejados da aplicação, ou comportamentos que eram esperados, mas que não aconteceram.
Basicamente, o papel do teste é justamente testar a aplicação e verificar se o software está fazendo o que devia fazer e não está fazendo nada que não deveria fazer. Essa verificação permite que problemas sejam encontrados e resolvidos o mais rápido possível, o que consequentemente faz com que o software se torne mais robusto e de maior qualidade.
Agora que você já entendeu a importância dos testes de software, podemos falar sobre alguns tipos de teste de software utilizados no mercado.
Teste unitário
Este tipo de teste visa testar uma unidade do seu programa, um único “pedaço” que mais para frente será integrado com os demais “pedaços”. Se você trabalha com algum framework baseado em componentes, pode entender este tipo de teste como o teste de um único componente, embora nem sempre um teste unitário vá envolver apenas um único componente, ou um componente terá um único teste unitário.
Caso você pense em uma calculadora, podemos identificar que ela tem diversas funcionalidades, como soma, multiplicação, divisão e subtração. Testes unitários desta calculadora iriam testar cada uma das operações separadamente a fim a averiguar o funcionamento individual das unidades que compõem o seu projeto e se estas estão ou não corretas.
Teste de integração
Este é o tipo de teste feito para garantir que as diferentes unidades do seu código funcionarão da maneira correta quando forem unidas. Mesmo que as partes individuais funcionem corretamente, sempre podemos ter problemas quando diferentes partes do projeto são unidas, e se você já desenvolveu uma aplicação onde teve que integrar componentes que foram desenvolvidos separadamente sabe do que estou falando.
Os testes de integração não dispensam o uso de testes unitários e vice-e-versa. Quantos mais testes forem feitos na sua aplicação, menos chances de problemas futuros você terá.
Teste de sistema
Este tipo de teste tem o objetivo de avaliar as funcionalidades da sua aplicação na totalidade, e costuma acontecer em um estágio um pouco mais avançado do desenvolvimento. Enquanto os testes de integração ainda se preocupam com partes menores do projeto, os testes de sistema se preocupam com a visão geral dele.
Teste de regressão
Os testes de regressão podem ser compostos de vários outros tipos de testes, como testes unitários e de integração. Este tipo de teste é responsável por verificar se o código continua funcionando da maneira que é esperada.
Os testes de regressão são particularmente necessários quando uma nova funcionalidade é implementada, já que não é raro que ao alterar algumas partes do código para adicionar uma nova funcionalidade algo do funcionamento original daquele código seja comprometido.
Teste alfa e teste beta
Estes tipos de testes envolvem pessoas além da equipe de teste para fazer a validação da usabilidade da aplicação. Geralmente em testes alfa, algumas pessoas selecionadas, são encarregadas de utilizar a aplicação desenvolvida para testar o seu funcionamento geral. Para estes testes, é importante que as pessoas que utilizem a aplicação a utilizem da mesma maneira que o usuário final a utilizaria.
Os testes beta ainda são testes com usuários, porém com um número maior de usuários. É muito comum vermos jogos em teste beta em diversas plataformas de jogos. Isso significa que o jogo ainda não está pronto, mas você pode jogá-lo para ajudar quem está desenvolvendo o jogo a validar o funcionamento dele.
Considerações finais
Os testes de software são essenciais para identificar e corrigir bugs, melhorar a qualidade do software, evitar problemas para os usuários e criar aplicações mais confiáveis, de forma geral. Existem vários tipos de testes diferentes, e neste artigo conhecemos alguns deles bem como seus objetivos.