Um sistema que apresenta uma série de erros durante sua execução ou não atende inteiramente as necessidades do usuário possui grandes chances de não obter sucesso. Por isso, os testes de software são indispensáveis para que o produto final apresente o máximo de conformidade possível com os requisitos identificados no início do projeto e atinja um elevado grau de qualidade e confiabilidade.
Erros e falhas (BOX 1) podem ser identificados com um menor esforço por parte dos desenvolvedores, ou da equipe responsável pelos testes, ao fazer a escolha por uma estratégia adequada para a execução dos testes de software. Essa deve ser capaz de projetar quando, como e quais testes serão realizados, em cada fase ou etapa do desenvolvimento do software.
BOX 1. Erros e falhas
Apesar de serem muitas vezes utilizados como sinônimos, esses termos podem ser diferenciados, simplificadamente, da seguinte forma: erro é um problema interno no software e se deve normalmente a falhas humanas (como código incorreto) e resultados inesperados (como valores nulos); falha é o comportamento inadequado do sistema, fugindo do que era esperado para ele, e se dá em decorrência de um erro. Ou seja, enquanto erro é um problema interno do software, a falha é o reflexo externo deste.
A criação e a realização dos testes paralelamente com o desenvolvimento do software contribuem para que os erros sejam encontrados o mais breve possível. Isso faz com que não seja necessário esperar que a construção de todo o código-fonte esteja concluída para que se iniciem os testes no software, o que tornaria muito mais complicada a depuração dos erros cometidos na fase de desenvolvimento.
Portanto, é imprescindível que a própria equipe de desenvolvimento tenha consciência da importância de realizar os testes de software simultaneamente com a sua criação, através da execução dos testes unitários, com o objetivo de validar individualmente as menores unidades do código-fonte.
Esta atividade colabora diretamente para que o sistema se torne totalmente testável, ou seja, apresente todas as características que facilitam a execução dos testes em todas as suas etapas. Além disso, possibilita a detecção do maior número possível de erros com o mínimo de esforço, reduzindo o custo e o tempo empregado na sua correção, contribuindo para que o resultado final seja um produto que não apresente situações que possam afetar a sua utilização e comprometer sua segurança, eficácia e confiabilidade.
Para que se possa aderir a essas práticas, no entanto, é fundamental a compreensão de conceitos básicos sobre testes de software, que serão apresentados a seguir.
O que são os Testes de SoftwareOs Testes de Software consistem de uma série de atividades que são realizadas com o intuito de detectar o maior número possível de erros cometidos durante o desenvolvimento de um software, com o objetivo de corrigi-los a fim de garantir que o seu comportamento esteja de acordo com os seus requisitos e funcionalidades definidos durante a concepção do projeto.
Através da elaboração de uma estratégia de testes eficaz e coerente os responsáveis pelo seu planejamento podem determinar a maneira adequada com que os testes de software deverão ser conduzidos. O planejamento dos testes deve utilizar-se de métodos e técnicas de testes eficientes para a criação dos casos de testes apropriados para cada circunstância definida, de forma que os testes possam ser executados com sucesso. Um teste somente será considerado como bem-sucedido quando localizar um erro que ainda não havia sido encontrado, possibilitando assim sua correção.
Nas próximas seções conheceremos alguns conceitos importantes relacionados a testes de software, cujo conhecimento é fundamental para que se possa aproveitar ao máximo dessas práticas durante o desenvolvimento dos projetos.
Etapas do Teste de SoftwareExistem diferentes formas para identificar cada uma das etapas percorridas no decorrer da atividade de testes de software. A forma mais habitual, que é utilizada pela maioria dos especialistas no assunto, apresenta quatro etapas distintas:
· Testes unitários (ou testes de unidade): esta etapa tem como foco as menores unidades ou componentes de um sistema. Sua finalidade é testar estas unidades individualmente e de forma paralela ao desenvolvimento;
· Testes de integração: devem ser realizados durante a integração das unidades. Têm como objetivo analisar se estas operam em conjunto de maneira correta, tal como operam de maneira individual;
· Testes de validação: são iniciados depois que as unidades estiverem totalmente testadas e integradas. Visam às operações voltadas para o usuário final, a fim de confirmar a concordância com os requisitos do software;
· Testes de sistema: são um conjunto de testes que tem como objetivo testar o sistema como um todo, considerando não só o software em si, mas seu comportamento em conjunto com todos os elementos que formam o ambiente de execução do software, como hardware, banco de dados, redes, etc., e avaliar, sobretudo, seu desempenho e segurança, levando em consideração todos estes fatores externos.
Em cada uma dessas etapas, técnicas específicas podem ser utilizadas para garantir a eficiência dos procedimentos.
Técnicas de testes de softwareNos processos de validação do sistema e identificação de problemas, destacam-se algumas técnicas amplamente utilizadas e extremamente eficientes: os testes caixa-preta e os testes caixa-branca.
Nos testes caixa-preta, o responsável pelos testes não precisa ter conhecimento do comportamento interno do software, ou seja, não necessita visualizar os aspectos estruturais do sistema. Neste caso, o foco é encontrar os pontos em que o sistema está em discordância com suas es ...