Teste de Software · qualidade ou o teste é de baixa qualidade? Tipos de teste: ... conhecimento...

Post on 10-Nov-2018

224 views 0 download

Transcript of Teste de Software · qualidade ou o teste é de baixa qualidade? Tipos de teste: ... conhecimento...

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