Existem muitas definições de teste de software, mas ficamos com o conceito do criador da metodologia, Glenford J. Myers, que escreveu “O teste de software é um processo ou uma série definida de processos, projetados para garantir que o código desenvolvido irá fazer o que foi projetado para fazer, e, inversamente, que ele não faça nada fora desta intenção. Um bom software deve ser previsível e consistente, sem oferecer surpresas ao usuário” – The Art of Software Testing, 3 edição.
Mas é claro que não é bem assim que acontece! O esperado é que muitos erros sejam detectados e corrigidos.
O processo de software testing é muito mais amplo do que rodar programas de teste ou homologar o sistema para encontrar bugs. Além disso, demanda vários tipos de profissionais para realizar o teste: programador, analista de sistemas, analista de testes e o usuário final.
É necessário realizar o processo de validação e verificação de um programa de software e analisar:
- Se o sistema atende aos requisitos técnicos;
- Se todas as regras de negócios que foram especificadas no projeto foram contempladas;
- Se ele pode ser implementado ou não.
Os testes de software são extremamente importantes e garantem o sucesso do projeto quando bem dimensionados e executados. A ideia principal é agregar valor ao projeto aumentando a qualidade do software, de acordo com a norma ISO 9126, que são a funcionalidade, a escalabilidade, a confiabilidade, a usabilidade, a eficiência, a portabilidade e a manutenibilidade. E a melhor forma de subir os índices de qualidade é encontrar o máximo de erros e corrigi-los antes da entrega ao usuário final.
Existem diversas técnicas de teste de software que devem ser escolhidas de acordo com o sistema, linguagem, metodologia de desenvolvimento ou fase do ciclo de vida do sistema. Vamos falar das mais utilizadas:
Teste Estrutural ou Caixa Branca
O código-fonte é analisado e precisa estar de acordo com o Caso de Teste. Esta é a parte mais precisa e lógica de um teste nesta modalidade após elaborar o documento com os casos de teste que contemplem todas as funcionalidades do programa. Mais usado pelos programadores nas fases de manutenção e depuração e para aumentar a confiabilidade do sistema.
Teste Funcional ou Caixa Preta
Imprescindível na fase de desenvolvimento de um sistema, contempla as funcionalidades adequadas às regras de negócio, detecta erros de navegação, comportamento e desempenho. Os resultados esperados que foram detalhados no documento de Caso de Testes devem ser validados no sistema e os resultados devem ser iguais.
Teste Não Funcional
Aqui vale a imaginação, criatividade e experiência do homologador: prever situações que não foram contempladas no projeto e inclusão de erros propositais para ver como o sistema irá se comportar.
Teste de Estresse
Muito usado para avaliar eficiência e alta disponibilidade, principalmente em sistemas mais complexos, o objetivo é carregar o sistemas com muitas condições de saturação e estresse de dados para ver como o sistema se comporta: memória insuficiente, recursos limitados, falha de energia, hardware no máximo de CPU ou carga máxima no banco de dados.
Começar os testes de software desde o início do ciclo de desenvolvimento de um sistema garante um menor número de erros no momento da entrega ao usuário final, assegurando não só a qualidade do software como agregando valor ao negócio. Iremos detalhar mais sobre outros tipos de testes nos próximos posts como os testes integrados, unitários e ponta a ponta. Fique ligado e assine nossa newsletter para saber mais sobre software testing.