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

Na testabilidade em softwares buscam-se erros cometidos pelos desenvolvedores para que esses sejam corrigidos. Para isso é necessário ter programadores experientes, que já possuam uma grande carga horária nesse ramo e sabiam onde a maioria dos erros em softwares ocorrem, e críticos, pois esses analisam o programa com um olhar critico em busca de erros. 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.

Contudo, é necessário ressaltar que a testabilidade em programas ocorram de forma acessível, pois essa gera muitos gastos com uma equipe qualificada, e dentro do prazo estimulado pelo cliente, pois a maioria desses são grandes empresas que necessitam de um software de qualidade para resolverem os problemas decorrentes de forma mais pratica e eficaz. Assim as técnicas estão mais aprimoradas e engenheiros programadores estao se especializando nessa área.

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.

O primeiro teste é feito analisando a entrada e saídas de dados. Normalmente o programador insere um dado esperado a saída de um resultado já esperando. Contudo, a quantidade de possibilidades de entrada de dados são quase infinitas, assim o programador analisa apenas um subconjunto, normalmente nos limites inferiores e superiores, para maximizar a chance de sucesso do teste.

Para os casos de Teste caixa-branca a analise acontece na linguagem do programa, são analisados casos de coesão e coerência, se a conexão com o banco de dados esta correta, se a ligação com as bibliotecas esta correta, se a sintaxe da linguagem esta correta, entre outros casos decorrente de erros do programador.

Contudo na maioria dos casos os dois teste são feitos, para minimizar as chances de erro no software e futuras frustrações com o programa desenvolvido.

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