Mini aula sobre testes de software descrevendo os conceitos básicos sobre as técnicas utilizadas para testes, verificação e validação no desenvolvimento de software.
2. Apresentação
Wanderlei Silva do Carmo
− Wander.silva@gmail.com
− Twitter: @w3ae
− Youtube: youtube.com/w3ae
Analista e desenvolvedor de sistemas
Formado pelo Universidade Estácio de Sá – RJ
Pós-graduando em Engenharia e Arquitetura de
Software
Especialista Linux
Atuando na área desde 1999 como instrutor em
centros de treinamentos
3. Agenda
Definição de Teste e Depuração
Erro defeito ou falha
Verificação e Validação
Preparação para Teste
Técnicas de Teste de Software
Técnica Funcional,
Técnica estrutural e
Técnica Baseada em erro;
Critério para geração de casos de teste.
4. Erro:
item de informação ou estado de execução inconsistente
Defeito:
deficiência mecânica ou algorítmica que, se ativada, pode levar a uma falha
Falha:
evento notável em que o sistema viola suas especificações
Se houver erros, o software estará com defeito e poderá falhar!
Erro, Defeito e Falha
5. Verificação:
O software está funcionando corretamente (sem erros) ?
Validação:
O software faz o que o cliente pediu?
Verificação e Validação
6. Selecionar os dados de entrada
Determinar a saída esperada
Preparação para o teste
7. Teste:
Processo de execução de um programa com o objetivo de revelar a presença de
erros. Contribuem para aumentar a confiança de que o
Depuração:
Consequência não previsível do teste. Após revelada a presença do erro, este deve
ser encontrado e corrigido. Contribuem para aumentar a confiança de que o software
desempenha as funções especificadas.
Teste e Depuração
8. Técnicas de Software
Técnicas
Técnica é o processo que vai assegurar perfeito funcionamento de alguns
aspectos de software ou de sua unidade.
Segundo a norma IEEE 610.12-1990, as técnicas são procedimentos
técnicos e gerenciais que ajudam a avaliação e a melhoria do processo
9. Técnica Estrutural
O Teste estrutural também conhecido como teste da caixa branca, tem por
objetivo testar o código fonte, testar cada linha de código possível, testar os fluxos
básicos e os alternativos.
Classificam-se em:
Stress: Verifica como o sistema é executado com determinados volumes de dados.
Execução: Se o sistema atinge o nível desejado de eficiência;
Recuperação Contingência: Se o sistema é capaz de retornar o nível anterior
antes da falha.
Operação: Se o sistema opera conforme sua documentação
Compliance: Se o sistema foi desenvolvido conforme padrões e procedimentos.
Segurança: Se o sistema está protegido conforme normas e políticas da
organização.
10. Técnica Funcional
Teste funcional também conhecido como teste da caixa preta, é baseado na
analise funcional do software. Ele garante que os requisitos funcionem conforme
o especificado, ele não se preocupa na forma como ele foi implementado, são
inseridos alguns dados e espera-se na saída o resultado de como foi projetado
os requisitos.
Classificam-se em:
● Requisitos: Se o sistema é efetuado conforme suas especificações
● Regressão: Se o sistema ou alguma parte dele foi afetado por alguma
alteração.
● Tratamento de erros: Se os possíveis erros que possam acontecer tem
tratamento antes de acontecer suas falhas.
● Manual: Interação entre homem e maquina.
● Interfaces de integração: Verifica se o sistema troca informações com outros
sistemas.
● Controle: Verifica se o sistema tem algum controle de dados, validações e
integridade, logs de auditoria.
● Paralelismo: Se a versão nova ou a antiga gera os mesmos resultados.
11. Técnica Baseada em Erro
Os dados de teste são gerados considerando os principais defeitos mais
cometidos pelos desenvolvedores. Por exemplo, o critério Análise de Mutantes
[DEM78];
Análise de Mutantes;
Análise de Mutantes tem por finalidade introduzir pequenos defeitos em um
programa em teste através de operadores de mutação e gerar novos programas
chamados de mutantes. Ela baseia-se em dois pressupostos [DEM78]:
• Hipótese do programador competente:
os programadores fazem programas bem próximo do correto;
• Efeito de acoplamento: um defeito complexo é revelado, revelando-se defeitos
simples. Pequenas modificações são introduzidas no programa através da
aplicação de operadores de mutação (operadores que modificam alguma parte
do código) que geram novos programas chamados mutantes.
São utilizados casos de testes na execução destes mutantes para distingui-los
do programa original
12. Técnica Baseada em Erro
Um mutante é dito “morto” quando um caso de teste conseguir fazer a distinção
entre o programa mutante e o programa original gerando saídas diferentes. Se a
saída do programa original for considerada correta, então este estará livre do
possível defeito descrito pelo programa mutante. Caso contrário, um defeito é
descoberto e o programa deverá ser corrigido. O critério Análise de Mutantes
exige que todos os mutantes sejam mortos [DEM78].
Os casos de teste que matam os mutantes são classificados como eficientes.
Caso após a execução de todos os casos de testes, ainda existam
mutantes que gerem a mesma saída do programa original e se não for possível
gerar um caso de teste cuja saída diferencie o programa original do programa
mutante, os mutantes são considerados equivalentes ao programa original.
13. • Divide o domínio da entrada de um programa em classes de equivalência.
A partir das quais os casos de teste são derivados
• Minimiza o número de casos de teste de cada classe, pois em princípio
todos os elementos de uma classe devem se comportar de maneira
equivalente.
• Classe equivalente representa um conjunto de estados válidos e inválidos
para uma condição de entrada.
Critérios de teste
Particionamento de classes de equivalência
14. • Erros tendem a ocorrer nos limites do domínio de entrada ao invés do
centro.
• Explorar os limites dos valores de cada classe de equivalência para
preparar os casos de teste.
Critérios de teste
Análise de Valor Limite
15. • Verifica o efeito combinado de dados de entrada.
• As causas (condições de entrada) e os efeitos (ações) são identificados
e combinados em um grafo.
Critérios de teste
Grafo de Causa-efeito
16. •Esse critério é baseado em quatro passos:
•Para cada módulo de causa e efeito são relacionados, atribuindo-se um
identificador para cada um.
• O grafo de causa-efeito é elaborado.
• Transforma-se o grafo de causa-efeito numa tabela de decisão.
• As regras da tabela são convertidas em casos de teste.
Critérios de teste
Grafo de Causa-efeito