View
226
Download
0
Category
Preview:
Citation preview
Teste de SoftwareTeste de Software
ApresentaçãoApresentação
Prof Daves MartinsMsc Computação de Alto Desempenho
Email: daves.martins@ifsudestemg.edu.br
Agenda
Teste de Software VV&T e Defeitos de SoftwareInspeção de SoftwareTeste UnitárioAnálise do Valor LimiteTeste com Objetos MockTeste de CoberturaTeste em Banco de DadosTeste de MutaçãoTeste de IntegraçãoTeste FuncionalParticionamento em Classes de EquivalênciaTeste de DesempenhoTeste em Web ServicesDesenvolvimento Dirigido pelo TesteIntegração ContínuaControle de Defeitos
Considerações Importantes
• Disciplina 72h/a
• Faltas - 25% - 18 faltas;
Avaliação
• T1 - Trabalhos: (10 trabalhos práticos) (100 pts)
• TF - Trabalho Final (120 pts)
• S - Seminários (80 pts)
• A - Artigos (10 Artigos) – Leitura e Resumo (10 pts extra)
• Nota Final = (T1 + TF + S )
3
Referências Bibliográficas
DELAMARO, M.E.; MALDONADO, J.C.; JINO, M. Introdução ao Teste de Software. Elsevier Editora, 2007.
MYERS, G., BADGETT, T., THOMAS, T., SANDLER, C., The Art of Software Testing. Wiley; 3rd Edition, ISBN 978-1118031964. 2011.
Metodologia
Aulas teóricas e práticas, idealmente alternadas
Seminários ministrados pelos alunos
Projeto de disciplina
Pensamentos Importantes!!!
Pensamentos Importantes!!!
Teste de Software
“O software sempre será testado. Pode ser testadopor você ou será testado pelo seu cliente/usuário.”
Teste de SoftwareProblemas ocorridos na utilização de produtos de software, percebidos muitas vezes pelo usuário final, podem ser decorrentes de falta de qualidade no processo de desenvolvimento, onde técnicas de inspeção e de testes são fortes aliadas na identificação precoce dos defeitos, melhorando a satisfação do usuário e minimizando os elevados custos associados a manutenções corretivas
Uma das formas de melhorar a qualidade na construção de software é a implementação de procedimentos de teste em todas as fases de seu ciclo de vida
Teste de SoftwareEntretanto, esta é uma prática pouco utilizada nas empresas, pois normalmente necessita de grande mão-de-obra e um esforço desregrado com resultados pouco favoráveis em muitos casos
Isso acontece, pois testes devem ser embasados em fundamentos lógicos, e não simplesmente voltados para execução de funcionalidades aleatoriamente, em tentativas tendenciosas de encontrar defeitos
Teste de SoftwareNão é possível aplicá-los exaustivamentePara aumentar sua eficácia, deve ser executado por equipes independentes
Um bom teste:Possui alta probabilidade de encontrar um defeitoNão é redundanteÉ abrangente o suficientePossui um nível adequado de complexidade
Teste de SoftwareO teste é uma atividade destrutiva, ao contrário do desenvolvimento de software, que é uma atividade construtiva
Inexistência de falhas: o software é de altaqualidade ou o teste é de baixa qualidade?
Tipos de teste: unidade, cobertura, integração,regressão, funcional, desempenho
Teste Homologação (ou de Aceitação): aceitepelo usuário final
Teste de SoftwarePoucos programadores e analistas gostam deTeste
Teste Alfa: executado na instalação do desenvolvedor pelo cliente
Teste Beta: executado na instalação de um ou mais clientes pelo usuário final do software
Casos de Uso devem considerar criticalidade efreqüência (Alta, Média, Baixa) para definir aprioridade do teste
Teste de SoftwareTécnica Funcional (Caixa-Preta): baseia-se na especificação do software para derivar os casosde teste•Particionamento em Classes de Equivalência•Análise do Valor Limite
Técnica Estrutural (Caixa-Branca): baseia-se no conhecimento da estrutura interna da implementação•Complexidade Ciclomática
Teste de Software
Teste de SoftwareDefeitos no Processo de DesenvolvimentoA maior parte é de origem humanaQuanto antes a presença de um defeito for revelada, menor o custo de sua correção e maior a probabilidade de corrigi-lo corretamente
Deve-se introduzir atividades de VV&T(Verificação, Validação e Teste) ao longo de todo o ciclo de desenvolvimento
Teste de Software
Teste de Software
25
:.: O Processo de Testes de Software:.: O Processo de Testes de Software
Estratégia de testes
Testes caixa branca
Testes exploratórios
Testes caixa preta
Testes de vulnerabilidades
Testes de Carga e Stress
Testes Funcionais
Testes baseados em cenários Testes negativos
Inspeção de Artefatos Doc.
Verificação de Diagramas UML
Validação de modelos ER
Validação/Verificação de requisitos
Régua de Avaliação Fornecedores
Testes unitários
A estratégia de testes faz parte da Metodologia dos testes !!!
Testes de regressão
Testes automatizados
26
Slide: 26
• O programa de certificação do Quality Assurance Institute (QAI) é um dos mais aceitos internacionalmente.
• Existem dois tipos de certificação:1. CSTE (“produto”): preparação do ambiente de
testes; planejamento de testes; test design; execução de testes; automação; ferramentas; elaboração de relatórios; etc.
2. CSQA (“processo”): estrutura de modelos de qualidade; definição de padrões de prática e controle de qualidade; construção, implementação e melhoria dos processos de qualidade; métricas.
• Outras instituições outorgantes: International Software Testing Institute e American Society for Quality
:.: Certificação Profissional:.: Certificação Profissional
27
Slide: 27
:.: Papéis & Responsabilidades:.: Papéis & Responsabilidades
Papel Responsabilidades
Gerente, Coordenador ou Líder de testes
Viabiliza os recursos necessários para um esforço de testes; conduz as atividades e as monitora em conformidade com o planejamento; Realoca recursos ao longo do ciclo.
Analistas de Testes Planeja a estratégia e elabora casos de testes, baseando-se nos requisitos de negócio do SUT.
Arquiteto de Testes Prepara toda infra estrutura necessária para se executar a estratégia de testes. Instala ferramenta, gera massa de dados, mede performance, etc.
Executor de Testes Executa tudo o que está planejado. Figura-chave do ciclo de testes pois as ocorrências encontradas por ele são os indicadores da qualidade do produto inspecionado.
Teste de SoftwareOutras categorias de testes em sistemas
Recuperação: força o software a falhar em diversassituações e verifica a capacidade de recuperação doProduto
Segurança: verifica se os mecanismos de proteçãoconstruídos para o sistema irão de fato protegê-lo dealguma utilização ou intrusão imprópria
Stress: executa o sistema de forma a exigir recursosem quantidade, freqüência ou volume anormais
Desempenho: avalia o desempenho do softwarequando integrado ao sistema. Normalmente estáassociado ao teste de Stress
Teste de Software
Teste de Software
Planejamento dos Testes
Objetivo:◦ Planejar e definir o que será feito ao longo dos testes antes quecomece a sua realização efetiva
✔Definir objetivos✔Definir Cronograma✔Alocar Pessoas✔Definir Riscos✔Especificar Casos e Procedimentos de Teste
Planejamento dos Testes
Atividade 1 Planejar Testes
Ponto chave para o sucesso dos testesDeve estar relacionada ao planejamento do projetoEnvolve muitas tomadas de decisões que devem ser analisadasbuscando-se encontrar as melhores opções, dado o contexto deum projetoSub-atividades:
✔Caracterização dos testes (escopo e objetivo)✔Definição dos Itens de Teste e Critérios de Aprovação dos Itens✔Planejar estratégia a ser seguida (técnicas, métodos e ferramentas)✔Planejar Recursos Humanos e necessidade de treinamentos✔Planejar Recursos Físicos✔Definir Cronograma (em conformidade ao cronograma do projeto)✔Estimar Custos✔Identificar Riscos
Artefato - 1 Planejar Testes (IEEE829)
Planejamento dos Testes
Atividade 2 Projetar Testes
Objetivo:◦ Especificar um refinamento da(s) abordagem(ns) de teste definida(s) no planejamento◦ Identificar as características a serem testadas para cada item◦ Projetar seus testes, identificando o conjunto de casos e procedimentos de teste a serem executados
Sub-atividades:◦ Detalhar estratégia de teste para cada item de teste e característica a ser testada◦ Identificar casos de procedimentos de teste◦ Priorizar procedimentos de teste◦ Especificar critérios de aprovação para cada característica/item
Artefato - 2 Projetar Testes (IEEE829)
Planejamento dos Testes
Atividade 3 Especificar caso de TesteUm caso de teste descreve uma condição particular a ser testada e é definido por valores de entrada, restrições de uso e um resultado esperadoNessa atividade, cada caso de anteriormente deve ser especificado
Sub-atividades (para cada caso de teste):✔Caracterizar o caso de teste✔Especificar Entradas e Resultados Esperados✔Definir Recursos para o Caso de Teste✔Especificar Restrições de Uso✔Definir Dependências entre Casos de Teste
Artefato - 3 Especificar Caso de Teste (IEEE829)
Planejamento dos Testes
Atividade 4 Definir procedimento de teste
Um procedimento de teste descreve os passos necessários para a execução de um ou mais casos de teste
Cada procedimento precisa ser caracterizado com informações sobre o seu objetivo e requisitos para a sua execução, além dos passos a serem seguidos durante os testes
Sub-atividades (para cada procedimento de teste)✔Definir objetivos do procedimento de teste✔Definir Requisitos para a Execução do Procedimento✔Descrever Passos✔Construir Procedimento de Teste
Artefato - 4 Definir procedimento de teste (IEEE829)
Teste de Software
Execução dos Testes
Objetivo:
◦ Executar os testes a partir do que foi estabelecido durante oplanejamento◦ Monitorar as atividades realizadas◦ Registrar os incidentes detectados, e◦ Apresentar ao final os resultados dos testes
Planejamento dos Testes
Atividade 5 Execução de testes
Execução dos testes deve incorporar os princípios básicos de experimentação cientifica◦ tudo feito durante os testes deve ser realizado e documentado claramente permitindo que outras pessoas possam repetir os mesmos resultadosOs testes devem ser realizados de acordo com os procedimentos planejados
Sub-atividades:◦ Configurar Ambiente de Teste◦ Executar Procedimentos de Teste◦ Registrar Incidentes de Teste
Artefato – 5.1 Log dos testes
Artefato – 5.1 Log dos testes
Planejamento dos Testes
Atividade 6 Analisar o resultado dos testesOs resultados dos testes devem ser avaliados para determinarse os testes obtiveram “sucesso”◦ Na maioria dos casos, “sucesso” significa que o sistema funcionouconforme o esperado de acordo com os critérios do teste, e nãoapresentou resultados inesperados
Permite a uma organização prover um entendimento sobre os seus processos identificando pontos de falhas durante o desenvolvimento, e consequentemente prover melhorias nos seus processos.
Deve-se obter métricas de teste específicasSub-atividades:◦ Resumir Testes◦ Registrar Dados dos Testes
Artefato – 6 Resultado
Inspeção de Código Fonte
Normalmente associa-se inspeção a código fonte, visando melhorar sua qualidade
Utilizada para verificar:Padrões de codificaçãoEstrutura dos algoritmosPara padrões de codificação, diversas ferramentas podem apoiar essa atividade:
Checkstyle, PMD, FindBugs, Dependency Finder,SQE
Existem plugins para algumas dessas ferramentasem diferentes IDEs
Inspeção de Código Fonte
Inspeção de Requisitos
Tem sido o tipo de revisão de software mais estudado e utilizadoObjetivos•Identificar erros específicos em documentos e em sistemas•Identificar erros sistemáticos no processo de desenvolvimento•Identificar desvios em relação às especificações e padrões
Inspeção de Requisitos
BenefíciosProvê ganhos significativos em relação a prazos e custos. Tende a achar mais defeitos que qualquer outro processo, e a um custo menor
No início, era aplicado apenas a código fonte.
Atualmente são amplamente utilizadas
É um método eficaz para o controle da qualidade eaumento da produtividade
Inspeção de Software
Benefícios e Custo de Inspeções:◦ Inspeções vêm sendo utilizadas há mais de três décadas;◦ Existe evidência experimental de sua usabilidade eadequabilidade;◦ Provêem um bom meio para o gerente do projeto monitorar a qualidade e progresso do projeto;◦ Apresentam baixo custo devido ao fato do revisor não precisar investir muito tempo ou mesmo não demandar ferramentas sofisticadas para realizá-las.
Uma alta taxa de atividades de inspeção ao longo do processo pode representar de 5% a 10% do esforço de desenvolvimento.
Inspeção de Software
Inspeções em requisitos e projeto, conduzidas no JPL– Nasa Jet Propulsion Laboratory (Miller,1990);
Inspeção de Software
Defeitos em Requisitos
Defeitos em Requisitos
Defeitos em Requisitos
Defeitos em Requisitos
Defeitos em Requisitos
Processo de inspeção de software
Inspeção Ad-Hoc
Inspeção com Checklists
Lista de Verificação de Inspeção de Requisitos1)Os requisitos exibem uma clara distinção entre funções e dados?2)Os requisitos definem todas as informações a serem exibidas aos usuários?3)Os requisitos definem as respostas ao sistema e ao usuário às condições de erro?4)É cada requisito indicado claramente, conciso, e não ambíguo?5)É cada requisito testável?6)Há requisitos ambíguos ou inconsistentes?7)Há conflitos de requisitos?8)Existem áreas não identificadas na especificação de requisitos de software que necessitam ser?9)Os requisitos de desempenho (tais como o tempo de resposta, requisitos de armazenamento de dados) são indicados?10)Se os requisitos envolverem complexas cadeias de decisão, estão expressos em um formato que facilite sua compreensão (isto é, tabelas de decisão, árvores da decisão, etc..)?11)Os requisitos para executar melhorias do software foram especificados?12)Há requisitos que contém um nível desnecessário de detalhe do projeto?13)As restrições de tempo real foram especificadas em detalhe suficiente?14)A precisão e a exatidão dos cálculos foram especificadas?15)É possível desenvolver um conjunto completo de testes baseados nas informações contidas nas especificações de requisito do software? Se não, que informação falta?•As suposições e as dependências foram indicadas claramente?1)O documento contém toda a informação identificada no escopo para a especificação de requisitos do software?
Tipos de Defeitos de Inspeção
Relato de Defeitos em Inspeção de Requisitos
Teste Unitário
✔Possibilita o teste de métodos de cada classe✔É uma técnica caixa-branca, onde o conhecimento da estrutura interna do sistema deve ser conhecida✔Necessita de um bom planejamento de testes✔A utilização de ferramentas é fundamental✔A utilização de testes automatizados é pré-requisito para a realização de testes de regressão
OBRIGADO!OBRIGADO!
Base de Consulta:
Slides - Marco Antônio Pereira Araújo, D.Sc
Recommended