Metodologia para Planejamento,
Metodologia para Planejamento,
Execução e Controle de Teste de
Execução e Controle de Teste de
Software
Software
Arilo Claudio Dias Neto -
[email protected]Gladys Machado P. S. Lima -
[email protected]Guilherme Horta Travassos -
[email protected]Roteiro
Roteiro
O que é Teste de Software?
Teste de software x Processo de Desenvolvimento
Estágios de Teste de Software: Modelo “V”
• Teste de Unidade, Integração, Sistema, Aceitação e Regressão
Processo de Teste de Software
• Planejamento dos Testes • Execução dos Testes • Controle dos Testes
Metodologia de Teste a ser implantada
• Papéis do Processo de Teste• Artefatos do Processo de Teste • Estratégias de Teste adotadas
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
O que é Teste de Software?
O que é Teste de Software?
Teste de Software:
• O processo de analisar um item de software para detectar a diferença entre as condições desejadas e as condições existentes (ou seja, estado esperado e estado obtido) e avaliar uma
característica/atributo de um item de teste.
• Teste de software é um conjunto de um ou mais casos e procedimentos de teste.
Item de Teste:
• Um item de software que será objeto de teste.
Caso de Teste:
• Descreve uma condição particular a ser testada. É composto por valores de entrada e um resultado esperado.
Procedimento de teste:
• Uma descrição dos passos necessários para executar um caso de teste ou um grupo de casos de teste.
Roteiro
Roteiro
O que é Teste de Software?
Teste de software x Processo de Desenvolvimento
Estágios de Teste de Software: Modelo “V”
• Teste de Unidade, Integração, Sistema, Aceitação e Regressão
Processo de Teste de Software
• Planejamento dos Testes • Execução dos Testes • Controle dos Testes
Metodologia de Teste a ser implantada
• Papéis do Processo de Teste• Artefatos do Processo de Teste • Estratégias de Teste adotadas
Engenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Teste de Software x
Teste de Software x
Processo de Desenvolvimento
Processo de Desenvolvimento
Teste de Software possui características próprias, como:
Objetivos do processo:
• Processo de Desenvolvimento:
o construir um produto que atenda uma necessidade específica.
• Teste de Software
o busca responder questões sobre o produto, incluindo a análise se um produto atende às necessidades para as quais foi idealizado.
Teste de Software x
Teste de Software x
Processo de Desenvolvimento
Processo de Desenvolvimento
Natureza destrutiva e não construtiva:
• Sucesso das atividades de teste indica o insucesso do processo de desenvolvimento.
• Um processo de teste visa ocasionar falhas em um produto e não contribui diretamente para a sua construção, por isso é chamado de “destrutivo”.
• Exemplo:
o O baixo nível de defeitos encontrados indica um fracasso dos testes.
o Por outro lado, um alto nível de defeitos indica o sucesso dos testes, pois atingiu seu objetivo.
Engenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Teste de Software x
Teste de Software x
Processo de Desenvolvimento
Processo de Desenvolvimento
Papéis e responsabilidades específicos:
• Os papéis de desenvolvimento e testes são associados a diferentes pessoas, resultando na necessidade de habilidades e conhecimento distintos entre as pessoas envolvidas nesses processos.
• Equipe de desenvolvimento:
o Preocupados em construir linhas de código para o sistema.
• Equipe de teste:
o Preocupados em desenvolver e executar casos de teste para fazer com que o sistema falhe.
Teste de Software x
Teste de Software x
Processo de Desenvolvimento
Processo de Desenvolvimento
Dependência do processo de desenvolvimento:
• Processo de desenvolvimento:
o Auto-contido, ou seja, tem acesso às informações necessárias à execução de suas atividades.
• Teste de Software:
o Está sempre associado a um, ou mais, processo de desenvolvimento, o que consiste em uma dependência.
• Cada fase do desenvolvimento tem uma atividade de teste associada.
Engenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Teste de Software x
Teste de Software x
Processo de Desenvolvimento
Processo de Desenvolvimento
Ciclos de interação com o processo de desenvolvimento:
• Os processos de teste e de desenvolvimento devem estar separados, porém estão em um ciclo constante.
• O processo de teste tenta identificar falhas originadas no processo de desenvolvimento.
o A partir das falhas detectadas, os desenvolvedores tentam identificar a localização exata do erro ou defeito.
o Com isso, novamente será seguido o processo de desenvolvimento para tentar corrigir a falha identificada, e este ciclo é seguido até a conclusão do produto. Produto desenvolvido Resultados do Teste Processo de Teste Processo de desenvolvimento
Roteiro
Roteiro
O que é Teste de Software?
Teste de software x Processo de Desenvolvimento
Estágios de Teste de Software: Modelo “V”
• Teste de Unidade, Integração, Sistema, Aceitação e Regressão
Processo de Teste de Software
• Planejamento dos Testes • Execução dos Testes • Controle dos Testes
Metodologia de Teste a ser implantada
• Papéis do Processo de Teste• Artefatos do Processo de Teste • Estratégias de Teste adotadas
Engenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Estágios de Teste
Estágios de Teste
Cada fase do processo de desenvolvimento possui uma
atividade de teste associada.
Estágios de Teste
Estágios de Teste
Teste de Unidade:
• Objetivo:o Explorar a menor unidade do projeto procurando identificar erros de lógica e de implementação em cada módulo, separadamente. o O teste de unidade verifica se o módulo ou componente funciona de
forma adequada aos tipos de entradas esperadas.
• Unidade:
o Em sistema OO: classe ou método de uma classe.
Teste de Integração:
• Objetivo:o Verificar se os componentes ou módulos do sistema, juntos, trabalham conforme está descrito nas especificações do sistema e do projeto do programa.
o O teste de integração é realizado após o conjunto de componentes ou módulos já tiver sido testado por unidade.
Engenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Estágios de Teste
Estágios de Teste
Teste de Sistema:
• Objetivo:o Avaliar um sistema integrado de hardware e software para verificar se o sistema satisfaz seus requisitos especificados.
Teste de Aceitação:
• Objetivo:o Conferir com o cliente se o sistema está de acordo com suas expectativas. O teste de aceitação é realizado em conjunto com o cliente e nele o sistema é verificado em comparação com a descrição dos requisitos.
Teste de Regressão:
• Objetivo:o Re-executar os testes para garantir que novos defeitos não sejam introduzidos em módulos do software (modificados ou não-modificados) após o desenvolvimento de uma nova versão do produto.
Estágios de Teste
Estágios de Teste
Dificuldade:
• Realizar todas os estágios de teste é muito custoso (mais essencial em determinados projetos)!
O que pode ser feito:
• Deve-se encontrar um “meio-termo” para garantir a qualidade do produto.
Engenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Roteiro
Roteiro
O que é Teste de Software?
Teste de software x Processo de Desenvolvimento
Estágios de Teste de Software: Modelo “V”
• Teste de Unidade, Integração, Sistema, Aceitação e Regressão
Processo de Teste de Software
• Planejamento dos Testes• Execução dos Testes • Controle dos Testes
Metodologia de Teste a ser implantada
• Papéis do Processo de Teste• Artefatos do Processo de Teste • Estratégias de Teste adotadas
o Caso de Uso Caso(s) de Teste
Processo de Teste de Software
Processo de Teste de Software
Definição:
• “Passos necessários ao planejamento, execução e controle
das atividades de teste de software ao longo do processo de desenvolvimento”.
Um questionamento:
• Uma vez conduzida uma atividade de teste que não
ocasionou a ocorrência de falha indevidas em um produto, o que se pode concluir?
o Que o produto em teste é de boa qualidade? Ele não possui defeitos?
o Ou que a atividade de teste empregada é de baixa qualidade ou foi conduzida sem planejamento, critérios e sem uma sistemática?
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Processo de Teste de Software
Processo de Teste de Software
Definição:
• “Passos necessários ao planejamento, execução e controle
das atividades de teste de software ao longo do processo de desenvolvimento”.
Um questionamento:
• Uma vez conduzida uma atividade de teste que não
ocasionou a ocorrência de falha indevidas em um produto, o que se pode concluir?
o Que o produto em teste é de boa qualidade? Ele não possui defeitos?
o Ou que a atividade de teste empregada é de baixa qualidade ou foi conduzida sem planejamento, critérios e sem uma sistemática?
Processo de Teste de Software
Processo de Teste de Software
Objetivo: Fornecer respostas para as seguintes questões:
• (O QUE?) Quais partes do software serão testadas? Todo os componentes do software serão testado ou somente partes críticas e de alto risco?
• (COMO?) Como os testes serão realizados? Quais os critérios e técnicas para realização dos testes?
• (QUEM?) Quem realizará os testes? Quem será responsável pela execução das atividades de testes?
• (QUANDO?) Quando os testes serão realizados? Em que momento do processo de desenvolvimento os testes serão executados?
• (ONDE?) Onde os testes serão realizados? Qual o ambiente em que os casos e procedimentos de teste serão executados?
• (ATÉ QUANDO?) Qual a quantidade de teste adequada? Como decidir o que testar e quando finalizar os testes considerando os recursos limitados para a atividade?
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Processo de Teste de Software
Processo de Teste de Software
Divide-se em três partes principais e fundamentais:
o Visam responder às questões anteriores.
• Planejamento dos testes:
o “Garantir que os testes sejam preparados antes do fim da implementação do produto”.
• Execução dos Testes
o “Executar os casos e procedimentos de teste especificados e comparar os resultados esperados e obtidos, registrando esses resultados”.
• Controle dos testes:
o “Garantir que os testes planejados sejam executados corretamente e seus resultados possam ser registrados através da sua monitoração constante”.
Processo de Teste de Software
Processo de Teste de Software
Planejamento dos testes:
• Preocupação com a definição dos objetivos e escopo dos
testes;
• Identificação dos itens que serão testados;
• Identificação das características dos itens que serão
avaliadas;
• Escolha das abordagens de teste a serem utilizadas;
• Definição dos recursos humanos e físicos, e custos para os
testes;
• Identificação dos casos e procedimentos de teste, e sua
priorização;
• Identificação de um cronograma para as atividades de teste
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Processo de Teste de Software
Processo de Teste de Software
Execução dos Testes:
• Preparação do ambiente onde os testes serão executados;
• Execução dos casos e procedimentos de teste especificados
durante o planejamento;
• Registro do Log de Teste ao longo da execução dos testes;
• Registro dos incidentes de teste ocorridos durante a
execução, indicando ações tomadas;
Processo de Teste de Software
Processo de Teste de Software
Controle dos Testes:
• Monitoração constante do cronograma, recursos e resultado
dos testes;
• Permite obter um conhecimento maior do processo para ser
utilizado em novos projetos;
• Apoio à documentação das atividades;
• Passo inicial da implantação e obtenção de
padrões/certificados/normas relacionadas à qualidade de software;
o CMMI o MPS Br o ISO 12207
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Processo de Teste de Software
Processo de Teste de Software
Teste de Software é a atividade mais custosa do
processo de desenvolvimento
• Necessidade de recursos adequados
• Necessidade de Planejamento e Gerenciamento
Benefícios do Planejamento e Controle de Teste
de Software para uma organização:
• Papéis e responsabilidades claramente definidos; • Objetivos de teste bem definidos;
• Documentação de teste especificada;
• Facilidade de comunicação entre as equipes de desenvolvimento e de teste;
Processo de Teste de Software
Processo de Teste de Software
Sub-processo de Planejamento Sub-processo de Execução 4. Definir Procedimento de Teste Planejamento de Teste 1. Planejar Teste 2. Projetar Teste 3. Especificar Caso de Teste
Gerente de Teste Engenheiro de Teste Plano de Teste Especificação de Procedimento de Teste Especificação de Caso de Teste Especificação de Projeto de Teste Execução de Teste 5. Executar Testes 6. Analisar Resultados Gerente de Teste Testador Log de Teste Relatório de Incidente de Teste Relatório de Resumo de Teste Atividade Papel Artefatos (Documentos IEEE 829)
Legenda
Dependência entre atividades Construção de ArtefatosEngenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Roteiro
Roteiro
O que é Teste de Software?
Teste de software x Processo de Desenvolvimento
Estágios de Teste de Software: Modelo “V”
• Teste de Unidade, Integração, Sistema, Aceitação e Regressão
Processo de Teste de Software
• Planejamento dos Testes
• Execução dos Testes
• Controle dos Testes
Metodologia de Teste a ser implantada
• Papéis do Processo de Teste• Artefatos do Processo de Teste • Estratégias de Teste adotadas
o Caso de Uso Caso(s) de Teste
Definição dos papéis e responsabilidades dentro do
processo de teste.
• GERENTE DE TESTE:
o Pessoa responsável pelo Planejamentos dos recursos de teste disponíveis (humanos, físicos), escolha das abordagens e critérios de teste.
• ENGENHEIRO DE TESTE:
o Pessoa responsável pela identificação e priorização dos casos e procedimentos de teste.
Aconselha-se não ser o desenvolvedor do item de teste.
• TESTADOR:
o Pessoa responsável pela execução dos casos e procedimentos de teste especificados pelo Engenheiro de Teste.
• Não há objeção para que uma pessoa realize os 3 papéis!
o Embora não seja o ideal!
• Não há objeção para que uma pessoa da equipe de desenvolvimento assuma um papel no processo de teste
o Contando que seja para projetos diferentes!
Metodologia de Teste a ser implantada
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Definição de um conjunto de artefatos a serem produzidos
ao longo do processo de teste de software
o Definição de um modelo (template) para cada documento o Objetivo:
Documentação padronizada das atividades de teste em cada projeto
• Plano de Teste:
o Desenvolvido pelo Gerente de Teste.
• Especificação do Projeto de Teste:
o Desenvolvido pelo Engenheiro de Teste.
• Especificação dos Casos de Teste:
o Desenvolvido pelo Engenheiro de Teste.
• Especificação dos Procedimentos de Teste:
o Desenvolvido pelo Engenheiro de Teste.
• Logde Teste:
o Preenchido pelos Testadores.
• Relatório de Incidentes de Teste:
o Preenchido pelos Testadores.
• Relatório de Resumo dos Testes:
o Desenvolvido pelo Gerente de Teste.
Metodologia de Teste a ser implantada
Metodologia de Teste a ser implantada
Plano de Teste:
• Apresenta o planejamento para execução do teste
o Incluindo a abrangência, abordagem, recursos e cronograma das atividades de teste.
o Identifica os itens e funcionalidades a serem testados, as características dos itens a serem testadas, as tarefas a serem realizadas e os riscos associados com a atividade de teste.
• Desenvolvido pelo Gerente de Teste.
Especificação do Projeto de Teste:
• Refina a abordagem apresentada no Plano de Teste e identifica as funcionalidades e características a serem testadas pelo projeto e pelos seus testes associados.
• Este documento também identifica os casos e os procedimentos de teste, se existirem, e apresenta os critérios de aprovação para esses elementos.
• Desenvolvido pelo Engenheiro de Teste.
Metodologia de Teste a ser implantada
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Especificação dos Casos de Teste:
• Define os casos de teste, incluindo dados de entrada, resultados esperados, ações e condições gerais para a execução do teste. • Desenvolvido pelo Engenheiro de Teste.
Especificação dos Procedimentos de Teste:
• Especifica os passos para executar um conjunto de casos de teste. • Desenvolvido pelo Engenheiro de Teste.
Log de Teste:
• Apresenta registros cronológicos dos detalhes relevantes relacionados com a execução dos testes.
• Preenchido pelos Testadores.
Metodologia de Teste a ser implantada
Metodologia de Teste a ser implantada
Relatório de Incidente de Teste:
• Documenta qualquer evento que ocorra durante a atividade de teste e que requeira análise posterior.
• Preenchido pelos Testadores.
Relatório-Resumo de Teste:
• Apresenta de forma resumida os resultados das atividades de teste associadas com uma ou mais especificações de projeto de teste e provê avaliações baseadas nesses resultados.
• Desenvolvido pelo Gerente de Teste.
Metodologia de Teste a ser implantada
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Metodologia de Teste a ser implantada
Metodologia de Teste a ser implantada
Estratégia de teste a ser adotada:
• Realização de Teste Funcional (Teste Caixa Preta)
o Técnica de teste que adota critérios para a geração dos casos de teste com a finalidade de garantir que os requisitos do software especificados sejam plenamente atendidos.
Ou seja, avaliar o que o sistema tem que fazer, sem saber como ele faz.
Metodologia de Teste a ser implantada
Metodologia de Teste a ser implantada
Estratégia de teste a ser adotada:
• Caso de Uso Caso(s) de Teste
o Um caso de uso resulta em um ou mais casos de teste
• Priorização dos casos de uso para obtenção dos seus casos
de teste
o comunicação com a equipe de desenvolvimento para definição da lista ordenadas de casos de uso.
Caso de Uso
Engenharia de Software Experimental
www.cos.ufrj.br/~ese
Copyrightt 2006
Metodologia de Teste a ser implantada
Metodologia de Teste a ser implantada
Estratégia de teste a ser adotada:
• Matriz de Rastreabilidade
Caso de Uso / Caso de Teste
Caso de Uso 1 Caso de Uso 2 Caso de Uso 3
Caso de Teste 1 Depende de
Caso de Teste 2 Depende de
Caso de Teste 3 Depende de Depende de
Estratégia de teste a ser adotada:
• O planejamento dos testes ocorrerão em paralelo ao
desenvolvimento.
o Utilização de uma equipe específica para realização dos testes
• A execução dos testes deverá ocorrer conforme o que foi
especificado durante o planejamento.
o Em relação ao responsável pela atividade, prazos das atividades, recursos alocados e ordem das atividades. o Execução dos casos de teste logo após o
desenvolvimento do caso de uso.
Metodologia de Teste a ser implantada
Engenharia de Software Experimental www.cos.ufrj.br/~ese Copyrightt 2006
Referências
Referências
Beizer, B., “Software testing techniques”, 2nd ed., Van Nostrand Reinhold Co., New York, 1990.
IEEE Computer Society; IEEE Std 829: Standard for Software Test Documentation; September, 1998.
Mats, L., “The top five software-testing problems and how to avoid them”, EDN Europe, Feb2001, Vol. 46 Issue 2, p37, 3p. Montoni, M., Miranda, R., Rocha, A.R., Travassos, G.H.,
“Knowledge Acquisition and Communities of Practice: An Approach to Convert Individual Knowledge into Multi-organizational Knowledge”,LSO 2004.
O’Neill, D., “What happens when you don’t have a test plan”, IV&V Australia, 1997, available at
http://www.ivvaust.com.au/TestPlanning.pdf
Pfleeger, S.L., Software Engineering; Theory and Practice. Prentice Hall 2001.
Villela, K., “Definição e Construção de Ambientes de
Desenvolvimento de Software Orientados à Organização”, Tese de D. Sc., COPPE/UFRJ, Rio de Janeiro, RJ, Brasil, maio 2004.