1. Início
  2. QA
  3. Provando a qualidade do seu projeto com teste de software!

Provando a qualidade do seu projeto com teste de software!

Botão de teste de software

Em primeira análise, teste de software pode parecer simples e sem muita importância. Afinal, o importante mesmo é ser uma ótima pessoa desenvolvedora e codar de maneira lógica e limpa que tudo vai dar certo.

Certo? Errado.

Testes de software não servem apenas para quando a gente está um pouco inseguro em relação a uma aplicação, eles são poderoso para economizar tempo e dinheiro.

Dá uma olhada nos conteúdos que você vai aprender hoje:

O que são os testes de software

Pessoa Desenvolvedora olhando para a tela de um computador realizando teste de software
Entenda o que são, quais os tipos, como é feito e como aprender a realizar teste de software!

Resumidamente, testar um software é o processo de encontrar erros no produto desenvolvido. Na testagem também se verifica se os resultados reais correspondem aos resultados esperados.

Eles ajudam a identificar defeitos, requisitos ausentes ou lacunas no código.

Então, se a testagem serve para encontrar bugs e outros problemas, podemos dizer que os testes de software são uma ferramenta para aumentar a qualidade e a segurança do produto final.

Idealmente, a testagem deve começar o quanto antes, mas dependendo do modelo do software esse pode ser um dos últimos passos antes de realmente lançar um produto.

Afinal, imagine a tristeza (e o mico) de lançar um produto no qual sua equipe se dedicou por meses (ou até anos) e descobrir, no dia do lançamento, que ele é um fiasco.

O produto está cheio de bugs que atrapalham sua usabilidade.

Bom, o que poderia ter sido feito? Uma bela bateria de testes. Abaixo, vamos falar sobre os tipos de testes de software.

Testes de software não eram muito populares no começo da história da programação, mas tem se tornado cada vez mais importantes de 1979 para cá, quando Glenford Myers publicou o livro The art of software testing.

Essa publicação é considerada o “aniversário do teste”, e nesse cenário, Glen se tornou o pai uma profissão nova dentro de TI: a do Testador de Softwares.

Quais são os tipos de teste de software

Como dissemos, este não é um assunto simples. Existem diversos tipos de testes de software. Eles se classificam de maneiras diferentes dependendo do tipo de critério que for levado em consideração.

Por exemplo, podemos categorizar as testagens entre manual ou automatizada, se envolve código ou não envolve código, se é hibrida, entre testes funcionais e não funcionais e, finalmente, em relação aos aspectos internos ou externos do programa.

Aqui vamos observar alguns tipos de testes, organizando-os principalmente entre funcionais e não funcionais.

Sugiro olhar a norma ISO 9126 e ver como ela define e classifica o que precisa ser testado em um software.

Testes funcionais

Testes funcionais focam no comportamento do software, não no seu código. Cada teste segue uma série de requisitos para verificar se uma aplicação está funcionando de acordo com o esperado.

Em geral, eles respondem perguntas como “será que isso está funcionando?”

Teste de unidade: aqui, um componente específico é testado (ou cada componente separadamente). É um teste detalhado que pode te ajudar a encontrar errinhos escondidos mesmo quando parece que o software está funcionando normalmente.

Teste de integração: testa a comunicação entre as unidades. Afinal, para tudo funcionar direitinho, elas precisam estar em sintonia. Se houver algum problema de contato, o teste deve acusar.

Teste de sistema: testa um sistema já completamente integrado, de ponta a ponta, para verificar como ele se sai (por exemplo, desde o login de um usuário, sua utilização das funcionalidades do sistema, até o logoff).

Teste de regressão: há quem acredite que este é um dos testes mais importantes, pois verifica não apenas se as mudanças implementadas no sistema estão ok, mas se elas não causaram algum problema nas outras funcionalidades.

Teste beta (ou teste de aceitação): teste manual, em que os próprios usuários testam o produto e dão feedback sobre ele.

Testes não funcionais

Testes não funcionais costumam ser focados em aspectos mais amplos do sistema, por isso não estão necessariamente relacionados a uma função específica do software.

Eles verificam aspectos como segurança, escalabilidade, estabilidade, performance etc.

Teste de instalação: verifica se o software é instalado com sucesso sob diferentes condições e em diferentes tipos de máquina.

Teste de segurança: testa o quão protegidas estão as informações sigilosas do usuário e do software em relação a invasores. Apenas o usuário deve ser capaz de logar na própria conta.

Teste de performance: verifica quais os limites de usabilidade do software em relação ao volume de trabalho dentro das condições esperadas (teste de carga), dentro de condições extremas (teste de stress) e se ele continua a funcionar nas condições esperadas por um determinado período de tempo (teste de estabilidade).

Como é feito o teste de software

Como qualquer outro processo, o teste de software passa por algumas fases, sendo que o conjunto dessas fases pode ser chamado de Ciclo de Vida dos Testes de Software (ou STLC, na sigla em inglês).

Idealmente, a testagem deve começar o quanto antes para reduzir ao máximo o custo do produto, pois assim se reduz a quantidade de retrabalho até o alcance do software final que pode ser entregue ao cliente.

No entanto, no Ciclo de Vida de Desenvolvimento de Software (ou SDLC, na sigla em inglês), o momento em que a testagem começa depende do modelo de desenvolvimento que está sendo usado.

O desenvolvimento e os testes podem ser executados de forma paralela, ou os testes podem começar bem mais pro final da etapa de desenvolvimento (uma prática considerada ineficiente, mas que ainda acontece).

Outra coisa importante: os testes individuais passam pelas mesmas fase. Por exemplo, um teste de segurança possui 6 fases, um teste de unidade possui suas próprias 6 fases e assim por diante. Já já vai ficar claro o porquê.

As fases de um STLC são as seguintes (descritas de maneira bem resumida):

Tela mostrando um ciclo de teste de software
Esse é o ciclo de vida do teste de software, iniciando em “Requirement Analysis”. Fonte: softwaretestingmaterial.com

Análise de Requisitos

Fase em que a equipe responsável pelo teste procura compreender o que é que precisa ser testado, que é testável e definir prioridades. Nessa fase, é necessário que a equipe de qualidade (ou QA, na sigla em inglês) entre em contato com as partes interessadas para definir, por exemplo, se o teste precisa ser funcional ou não.

Aqui já deve dar pra começar a perceber por que cada necessidade de teste vai precisar de um ciclo próprio, certo?

Fase de planejamento

Esta é uma etapa que também envolve aspectos burocráticos, como a entrega de uma estimativa de custo, um cronograma de teste, a definição das tarefas de cada membro da equipe, mas principalmente, o plano de teste, uma documentação detalhada sobre os objetivos e atividades previstas.

Integração dos casos de teste

Casos de teste são cenários hipotéticos (de ações que realmente podem ou vão ocorrer com o software) que a equipe vai desenvolver para poder efetivamente testar o sistema. Quanto mais abrangentes os casos de teste forem, melhor.

Ambiente de teste de instalação

Nessa fase são definidas as condições de software, hardware, servidor etc., para executar os casos de teste. Essas condições são chamadas de ambiente de teste.

Fase de implementação

Esta é a fase em que os casos de teste são executados, ou implementados. Pode-se dizer que é a fase do teste propriamente dito.

Aqui a equipe registra quais são os bugs e quaisquer defeitos encontrados, além de comparar a expectativa e a realidade dos resultados.

Depois que os bugs forem consertados, os casos de teste devem ser implementados novamente para verificar se tudo deu certo.

Encerramento do Ciclo de Teste

Neste ponto é feito um relatório de conclusão da testagem tanto para a equipe que encomendou o teste quanto uma avaliação dos processos internos da equipe de QA e se existe alguma maneira de melhorá-los.

Cada uma das fases acima possui critérios de entrada e de saída, ou seja, critérios para que a fase seja inicializada e terminada. Idealmente, uma fase só começa quando todos os critérios de saída da fase anterior foram completados, mas na prática nem sempre funciona assim.

Uma outra maneira de praticar testes de software em um produto em desenvolvimento é por meio do uso do Scrum.

Quando posso parar de testar um software

Um software, bem como qualquer outro produto, nunca estará 100% livre de falhas.

Então não é possível continuar testando até que ele esteja perfeito, ou seu produto nunca será lançado.

Via de regra, os testes param ou diminuem quando o software estiver respondendo de acordo com os critérios de qualidade esperados (aqueles que foram definidos nas duas primeiras fases).

Como aprender a fazer testes de software

Livro "The Art of Software Testing" de Glenford J. Myers
Livro “The Art of Software Testing” de Glenford J. Myers

Primeiramente, existem algumas habilidades importantíssimas para um bom testador de software ou analista de testes, além do conhecimento técnico e teórico em testagem de softwares. São elas:

  • Raciocínio lógico
  • Ótima comunicação (oral e escrita)
  • Detalhista
  • Pensamento analítico
  • Postura pragmática
  • Foco no usuário
  • Estar em constante atualização

Se você se encaixa nesse perfil, só falta começar a estudar. Existem vários caminhos possíveis a se tomar. Se seu interesse é fazer uma graduação, a de ciência da computação é a mais indicada.

Outra possibilidade, que na verdade corre em paralelo com uma graduação ou um curso, é ler livros nessa área, como The art of software testing (apenas em inglês), do Glenford Myers (editora Wiley) e Introdução ao teste de software, do Márcio Delamaro (editora GEN LTC).

Um ponto negativo dos livros em uma área que evolui tão rápido quanto a de tecnologia, é que por conta dos processos de escrita, edição e publicação (além de atualização) serem todos demorados, isso pode levar um livro a ficar obsoleto ou desatualizado muito rápido.

Então sempre tenha a internet como sua amiga e procure por fontes confiáveis para se atualizar!

Por exemplo, o próprio Márcio Delamaro é professor da USP e oferece um curso gratuito de Introdução ao teste de software pelo Coursera.

E como a gente sempre diz aqui, se essa é uma carreira que te interessa, uma ótima maneira de se preparar é estar de olho nos requisitos solicitados por pessoas recrutadoras nos anúncios de vaga para testador de software, como os aqui da GeekHunter, para saber onde aplicar a sua energia.

Bons estudos e boa sorte!

Categorias

Leituras Recomendadas

Quer receber conteúdos incríveis como esses?

Assine nossa newsletter para ficar por dentro de todas as novidades do universo de TI e carreiras tech.