Introdução

A produção de novos softwares é sempre um desafio para os programadores, pois exigem uma concepção muito grande em linguagem de programação e essa deve ser escrita de forma coesa e coerente, para que se evite futuros erros e constrangimento para os usuários desse programa. Por esse motivo existe o teste em softwares, onde o programa é analisado de varias formas, testado para somente depois ser implementado no mercado. Sua importância é tão grande que existem empresas de softwares que gastam cerca de 30% a 40% de seus investimentos em testes. Em casos de produções de software para situações críticas, como voos de aeronovaes ou reatores nucleares, os investimentos em testes é equivalente em três a cinco vezes o gasto total de todas as outras etapas na elaboração do software[Pressman]. Assim o teste é essencial para a qualidade dos softwares, o que é indispensável para o consumidor.

Tópicos em Teste de Software

O guia SWEBOK(Guide to the Software Engineering Body of Knowledge) [SWEBOK] define que o “Teste de Software consiste na verificação dinâmica do comportamento do programa em um conjunto finito de casos de teste, apropriadamente escolhidos em um domínio usualmente infinito de execuções, contra o comportamento esperado.” Ele delimitou em certos tópicos o Teste de Software que facilitam o estudo do engenheiro de software. São seis: Fundamentos em Teste de Software.

Para testar o software é necessário conhecer o que deve ser definido é o que pode ser analisado. Assim deve-se escolher o método mais acessível e que não prejudique a qualidade do teste e garanta o sucesso do programa. No final e necessário saber se o programa se comportou da forma esperada. Abaixo estão listadas algumas forma e etapas de analisar um software.

Níveis de Teste

Este é um dos tópicos mais importantes e trata-se das estratégias do engenheiro de software sobre os testes que serão feitos. Podemos dividir os testes em três estágios principais:

-O teste de unidade, no qual o software é analisado por partes separadas. Nesse teste é analisado a coerência da linguagem, onde são analisados a escrita passo a passo.

-O teste de integração é uma técnica para verificar o funcionamento em conjunto dos componentes do software. Nesse teste é analisado o coesão do programa, onde deve ter uma ligação entre partes do programa o funcionamento ideal desse.

-O teste de sistema é o último estágio e se concentra no teste da ligação entre o software e componentes externos, como o hardware, o local de operação, ferramentas, etc. Além disso, este estágio verifica os requisitos não-funcionais tais como a segurança, a velocidade, etc.

Neste tópico ainda são destacados os objetivos do teste. São várias as formas de se testar um software e apresentaremos aqui apenas as que são mais citadas na literatura sem grandes explicações sobre cada uma. Algumas delas são:

-Teste de aceitação ou qualificação: é analisado se corresponde as expectativas do cliente e se resolve suas problemáticas . -Teste de instalação: são testados nessa etapa a forma de instalação do programa e se ira corresponder adequadamente com o hardware. -Teste Alpha e Beta: Os famosos testes Alpha e Beta são distribuições do software antes de seu lançamento para pequenos grupo, seja internamente à empresa(teste Alpha) ou externamente à empresa(teste Beta).

A lista é extensa, porém todos os títulos de testes são auto-explicativos, como: Teste de Performance, Teste de Segurança, Teste de Estresse(software em máxima operação), Teste de Recuperação, Teste de Configuração, Teste de Interatividade, etc.

Técnicas de Teste

Outro tópico importantíssimo, as técnicas de teste tentam encontrar os erros do programa. Existem várias maneiras de se alcançar estes objetivos. No entanto, não existe uma classificação exata, não são homogêneas na literatura. De qualquer forma, existem algumas técnicas que são padrões e serão explicados mais detalhadamente na seção “Casos de teste”. A base pode vir desde a intuição do engenheiro a técnicas de código.

Medidas de Teste

Enquanto todos os testes são feitos é necessário criar-se uma base de dados quantitativos e qualitativos do processo. O programa está sendo corrigido? O planejamento para o teste está funcionando? Quais são os defeitos e erros da plataforma? A técnica usada está funcionando ou deve-se escolher uma nova? Estas perguntas são todas respondidas com as Medidas de Teste. Análises são feitas para monitorar os testes de acordo com a aceitação do cliente, o tempo disponível de produção e também sobre o investimento.

Processo de Teste

Seguindo as palavras do último tópico, os testes devem ser organizados corretamente e bem planejados para que os investimentos, sejam de tempo, sejam financeiros, tenham sido compridos. Para isso, o Processo de Teste é feito. Nele são feitos guias de teste, documentação dos testes e da produção, gerenciamento de testes, custos e lucros, planejamento, etc. Enfim, o Processo de Teste é a parte empreendedora do teste de software.

Ferramentas de Teste

Como os testes demandam tempo e grande trabalho, devem ser escolhidas ferramentas que auxiliem os engenheiros no desenvolvimento. A escolha destas afeta diretamente na eficiência e na efetividade dos testes. Existem algumas mais conhecidas como geradores de teste, ferramentas de repetição, Oráculo, traços, regressões, etc.

Testabilidade

Apesar de estranho, diz-se que o melhor teste é aquele que encontra um erro ainda não descoberto. É comum imaginarmos que o melhor seria não encontrar qualquer defeito. No entanto, o ser humano não consegue ser um programador perfeito e softwares caem facilmente em erros. Então, um dos caminhos para o teste é desmembrar a plataforma; tentar produzir erros e assim corrigi-los. É importante também que os testes sejam adequados. Ou seja, os testadores devem conseguir fazê-los em um tempo possível à desenvolvedora e com os recursos disponíveis. Para conseguir alcançar o máximo de desempenho no Teste de Software definiu-se a testabilidade de software, que nada é mais é que a facilidade que ele poderá ser testado. Para isso, James Bach divide a testabilidade em sete atributos que facilitam a configuração do software para testes: Operabilidade, Observabilidade, Controlabilidade, Decomponibilidade, Simplicidade, Estabilidade e Compreensibilidade. É bom lembrarmos que, quando criando o software, o engenheiro já deve imaginar o que pode ser testado para que se encontrem erros. Além disso, é mais adequado que não seja esta mesma pessoa quem teste o programa.

Casos de Teste

Para se definir os casos de Teste de Software foram definidas duas maneiras básicas: Teste caixa-preta e Teste caixa-branca. O último tipo é feito através da lógica do software. Tomam-se os caminhos a serem percorridos na execução e tenta-se encontrar erros. Já o primeiro é feito na interface. São verificados se as funções funcionam corretamente. Se as entradas são enviadas de maneira correta, se não há falhas entre software e fonte externa e se a saída é produzida como se desejava. Para os casos de Teste caixa-branca podemos citar o Teste de caminho básico, no qual se usa a Teoria dos Grafos para se encontrar o melhor caminho dentro do código para se encontrar erros e não cair em testes repetitivos. Já para o Teste caixa-preta podemos citar a análise de valor-limite que se baseia em testes que exercem valores limítrofes e pode ser usado tanto em casos para entrada quanto para saída.

Bibliografia

PRESSMAN, Roger S. Engenharia de Software. 5. ed. Rio de Janeiro: Mcgraw Hill, 2002.

https://computer.centraldesktop.com/home/viewfile?guid=36116515206BF043A33CB08E7EA5717ED2D5C8C87&id=21812001