Buscar

INF1027_Testes_e_Medidas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 593 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 593 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 593 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

INF1027 Testes e Medidas de Software
Apresentação da Disciplina
Prof. Marcos Kalinowski | LES/DI/PUC-Rio
kalinowski@inf.puc-rio.br | www.inf.puc-rio.br/~kalinowski | @prof_kalinowski
Conteúdo enriquecido com material gentilmente cedido pelo Prof. Arndt von Staa
Apresentações
2020.1 2Marcos Kalinowski © LES/DI/PUC-Rio
• Professor de Engenharia de Software da PUC-Rio
– Orientador de Mestrado e Doutorado
– Coordenar de grupos de pesquisa em Engenharia de
Software do LES (http://www.les.inf.puc-rio.br)
– Co-coordenador da iniciativa ExACTa PUC-Rio de
Transformação Digital (http://www.exacta.inf.puc-rio.br)
– Membro do ISERN (International Software Engineering
Research Network – http://isern.iese.de)
– Principais áreas de atuação:
• Engenharia de Software Experimental
• Qualidade de Software
– Mais informações: http://www.inf.puc-rio.br/~kalinowski
• Quem são vocês?
– Experiência, interesses, ...
Objetivo
1. Habilitar o aluno a aplicar com eficácia conceitos e métodos 
de controle da qualidade de software 
2. Habilitar o aluno a organizar e gerenciar o processo de 
controle e garantia da qualidade de software
3Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Ementa
• Qualidade do Produto de Software
• Gerência da Qualidade de Software
– Medição da Qualidade de Software
• Verificação e Validação de Software
– Conceitos Iniciais
– Revisões de Software
• Revisões aos Pares, Inspeções e Walkthroughs
• Técnicas para Detecção de Defeitos
2020.1 4Marcos Kalinowski © LES/DI/PUC-Rio
Ementa
• Verificação e Validação de Software (cont.)
– Teste de Software
• Princípios, Estratégias e Fases de Teste de Software
• Processo de Teste de Software
• Técnicas de Teste de Software (Critérios Funcionais, Estruturais e 
Baseados em Defeitos)
• Tópicos em Teste de Integração
• Estratégias para Projeto, Execução e Controle dos Testes
• Aspectos Formais de Apoio aos Testes
• Teste Baseado em Modelos e Geração de Casos de Teste
• Automatização de Teste de Software
• Engenharia de Software Experimental e Medição
2020.1 5Marcos Kalinowski © LES/DI/PUC-Rio
Avaliação
• 2 provas, cabe salientar que não comparecer a uma prova resulta na nota 0.
– P1: 30/set – quarta-feira
– P2: 27/nov – quarta-feira
• 2 notas referentes a atuação ao longo do período, isto envolve as presenças, a 
participação ativa em sala e as atividades realizadas em sala.
– A1: Atuação até a P1.
– A2: Atuação entre a P1 e a P2.
• A seguir é apresentada a forma de cálculo dos dois graus e do grau final:
– G1 = ( P1 * 9 + A1 ) / 10.
– G2 = ( P2 * 9 + A2 ) / 10.
– Grau Final = if ( G2 >= 3 ) then ( G1 + G2 ) / 2 else ( G1 + 3 * G2 ) / 4
• Para ser aprovado o aluno deverá alcançar um Grau Final igual ou maior do que 5.
2020.1 6Marcos Kalinowski © LES/DI/PUC-Rio
Bibliografia
• Bibliografia básica:
– WAGNER, S.; "Software Product Quality Control". Springer. 2013.
– DELAMARO, M.E.; MALDONADO, J.C.; JINO, M.; "Introdução ao Teste 
de Software". Elsevier Editora, 2a Edição. 2016.
• Bibliografia complementar:
– MYERS, G.; BADGETT, T.; THOMAS, T.; SANDLER, C.; "The Art of 
Software Testing". Wiley, 3rd Edition, ISBN 978-1118031964. 2012.
– TIAN, J.; “Software Quality Engineering”, Wiley-Interscience, ISBN: 
978-0471713456. 2005.
– FENTON, N.E.; BIEMAN, J. “Software Metrics: A Rigorous and Practical 
Approach”. CRC, 3rd edition, ISBN: 978-1439838228, 2014.
7Marcos Kalinowski © LES/DI/PUC-Rio2020.1
INF1027 Testes e Medidas de Software
Qualidade do Produto de Software
Prof. Marcos Kalinowski | LES/DI/PUC-Rio
kalinowski@inf.puc-rio.br | www.inf.puc-rio.br/~kalinowski | @prof_kalinowski
Mas fazer software não é arte?
• Se o cantor/ator/pintor errar, a audiência fica chateada
• Se o engenheiro civil errar o prédio pode cair
• Se o médico errar o paciente pode morrer
• ...
• Se o desenvolvedor de software errar, o que pode 
acontecer?
Marcos Kalinowski © LES/DI/PUC-Rio2020.1 9
Caso 1: Therac-25
• Máquina de radioterapia controlada 
por computador
– Problema:
• Doses indevidas de radiação emitidas
– Causa:
• Interface com usuário inapropriada
• Documentação deficiente
• Software reutilizado sem ser adaptado 
para o novo hardware
• Software de sensores de falha com defeito
– Conseqüências
• Ao menos 5 mortes entre 1985 e 1987
http://sunnyday.mit.edu/papers/therac.pdf
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 10
Caso 2: Ariane 5
• Foguete lançador de satélites
– Problema:
• O foguete se auto-destruiu após o lançamento
– Causa:
• Software reutilizado sem ser adaptado para o novo 
hardware
• Ausência de testes em solo deste software
• Defeito apresentado em vôo
– Conseqüências
• Prejuízo de mais de US$ 370.000.000,00 em 1996
Dowson, Mark. 1997. The Ariane 5 software failure. 
SIGSOFT Softw. Eng. Notes 22, no. 2. 
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 11
Caso 3: Aeroporto Internacional de Denver
• Aeroporto com sistema automático de 
transporte de bagagens
– Problema: 
• Atraso na inauguração do aeroporto.
– Causa
• Aeroporto pronto no prazo, software de controle 
do sistema automático de transporte de bagagens 
não (com erros no software)!
• Obs: Aeroporto com 94 portões de embarque e 
desembarque, 6 pistas de pouso / decolagem
– Consequências:
• Atraso na abertura do aeroporto com custo total 
estimado em US$360 Milhões (33 Milhões por 
mês, 1200 vôos por dia com 100 mil passageiros 
por dia)
• 86 milhões para consertar o sistema
12
DEMARCO, T.; LISTER, T. (2003) Waltzing with Bears – Managing Risk on Software Projects. Dorset 
House. (ISBN: 978-0932633606).
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Fazer Software Sério não pode ser Arte, 
deve ser Engenharia!
• Atualmente a vida das pessoas depende de 
software em praticamente todos os seus aspectos
– Software precisa ter qualidade
• Deve construído seguindo sólidos princípios de 
engenharia
Marcos Kalinowski © LES/DI/PUC-Rio2020.1 13
 Aumento da qualidade do produto
 Diminuição do retrabalho
 Maior produtividade
 Redução do tempo para atender o mercado
 Maior competitividade
 Maior precisão nas estimativas
Qualidade do processo (Expectativa)
Motivação para a Qualidade de Software
142020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Características
 ad hoc - improvisado
 fortemente dependente dos profissionais
 indisciplinado
Consequências (esperadas)
 pouca produtividade
 qualidade de difícil previsão
 alto custo de manutenção
 risco na adoção de novas tecnologias
 ...
Processo Imaturo
152020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Características
 processo conhecido por todos
 apoio visível da alta administração
 auditagem da fidelidade ao processo
 medidas do produto e do processo
 adoção disciplinada de tecnologias
Consequências (esperadas)
 papéis e responsabilidades claramente definidos
 acompanhamento da qualidade do produto e da 
satisfação do cliente
 expectativas para custos, cronograma, funcionalidades 
e qualidade do produto é usualmente alcançada
 ...
Processo Maduro
162020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Pesquisa iMPS
• Pesquisa realizada anualmente para acompanhar e 
evidenciar resultados de desempenho nas empresas de 
software que adotaram o modelo de referência nacional 
para qualidade de processos de software, MPS-SW da 
iniciativa MPS.BR
• Disponível em http://www.softex.br/mpsbr/
17
Travassos, G.H., Kalinowski, M. “iMPS 2013: Evidências 
Sobre o Desempenho das Empresas que Adotaram o 
Modelo MPS-SW”. Campinas: SOFTEX, 2014 (ISBN: 978-
85-99334-75-1), 102p. 
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Resultados de Desempenho das Empresas que 
Adotaram o MPS-SW
• Tendência a obter:
– Maior satisfação dos seus clientes
– Maior produtividade
– Maior capacidade para tratar projetos grandes
– Retorno do investimento (ROI)
– Melhoras no custo e na qualidade
182020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Resultados de Desempenho das Empresas que 
Adotaram o MPS-SW
• Tendênciaa obter:
– Maior satisfação dos seus clientes
– Maior produtividade
– Maior capacidade para tratar projetos grandes
– Retorno do investimento (ROI)
– Melhoras no custo e na qualidade
192020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Possíveis Ganhos na Evolução nos Níveis de 
Maturidade do MPS-SW
• Tendência a obter:
– Maior número de clientes
– Maior número de projetos
– Maior número de funcionários
– Maior capacidade para tratar projetos grandes
– Maior precisão nas estimativas de prazo
202020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Possíveis Ganhos na Evolução nos Níveis de 
Maturidade do MPS-SW
• Tendência a obter:
– Maior número de clientes
– Maior número de projetos
– Maior número de funcionários
– Maior capacidade para tratar projetos grandes
– Maior precisão nas estimativas de prazo
212020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Motivação
• Investir na melhoria do processo garante a qualidade do 
produto?
2020.1 22Marcos Kalinowski © LES/DI/PUC-Rio
Momento de Reflexão
• Um estudo informal relacionando defeitos em testes de 
aceitação com o nível de maturidade de empresas no CMMI-
Dev indicou tendência de melhora na qualidade do produto 
(Wagner, 2013)
• Resultados da pesquisa iMPS indicam tendência similar para 
o MPS-SW (Travassos e Kalinowski, 2014)
• mas ...
232020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Motivação
• Diversos fatores influenciam a qualidade do produto e ela 
precisa ser avaliada e monitorada também diretamente. 
(Wagner, 2013)
– Requisitos de qualidade de produtos devem ser definidos e seu 
alcance monitorado ao longo da execução do projeto (Tian, 
2005).
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 24
Qualidade do Produto
• Qualidade de Software pode ser definida como o grau em 
que um sistema atende aos requisitos especificados e às 
expectativas dos clientes ou usuários (Wagner, 2013).
• Ou, de forma mais detalhada, a qualidade do produto de 
software pode ser definida como...
• Conjunto de características que devem ser alcançadas em 
determinado grau para que o produto atenda às 
necessidades de seus usuários (Rocha et al., 2001)
2020.1 25Marcos Kalinowski © LES/DI/PUC-Rio
Que características?
• Norma ISO 25010 – Software Product Quality Model
– Sobrepõe a antiga série ISO 9126
– Possui 8 características de qualidade principais para produtos 
de software e suas subcaracterísticas
2020.1 26Marcos Kalinowski © LES/DI/PUC-Rio
Figura retirada de (Mendoza et al., 2019)
Características da ISO 25010
27Marcos Kalinowski © LES/DI/PUC-Rio2020.1
ISO/IEC (2011)
Norma ISO 25010
2020.1 28Marcos Kalinowski © LES/DI/PUC-Rio
Modelo de qualidade do produto da ISO/IEC 25010 (ISO/IEC, 2011)
Norma ISO 25010
2020.1 29Marcos Kalinowski © LES/DI/PUC-Rio
Modelo de qualidade em uso da ISO/IEC 25010 (ISO/IEC, 2011)
A Norma ISO 25010 em Contexto
• Normas SQuaRE (Software product QUality Requirements
and Evaluation)
2020.1 30Marcos Kalinowski © LES/DI/PUC-Rio
Requisitos 
de 
Qualidade
2503n
Modelo de 
Qualidade
2501n
Gerenciamento 
da Qualidade 
2500n
Medições
2502n 
Avaliação
2504n
QPS (Modelo de Referência para Avaliação 
de Produtos de Software)
• Considera quatro dimensões: Engenharia de Software, 
Serviço, Qualidade do Produto e Organizacional
• Apresenta resultados em três níveis de atendimento da 
qualidade: Bronze, Prata e Ouro
• Rocha et al. (2018) descrevem resultados iniciais de sua 
implementação e avaliação em organizações Brasileiras
31Marcos Kalinowski © LES/DI/PUC-Rio2020.1
QPS (Modelo de Referência para Avaliação 
de Produtos de Software)
32Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Modelo QPS para Avaliação de Produtos de Software e sua relação com 
Normas Internacionais (Rocha et al., 2018)
Garantia e Controle da Qualidade de Produtos 
• Garantia da Qualidade
– Tem como propósito assegurar que os produtos de trabalho e a 
execução dos processos estejam em conformidade com os 
planos, procedimentos e padrões estabelecidos.
• Controle da Qualidade
– Verificação e Validação.
33Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Verificação e Validação
• Verificação
– Tem como propósito confirmar que cada serviço e/ou 
produto de trabalho do processo ou do projeto atende 
apropriadamente os requisitos especificados.
• Estamos construindo certo o produto? (Boehm, 1981)
• Validação
– Tem como propósito confirmar que um produto ou 
componente do produto atenderá a seu uso pretendido
quando colocado no ambiente para o qual foi 
desenvolvido.
• Estamos construindo o produto certo? (Boehm, 1981)
34Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
35Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
36Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
37Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
38Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
39Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
40Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
41Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
42Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
43Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
Exercício de Fixação: Associe as Colunas
• Análise Estática
• Testes Unidade
• Testes de Integração
• Testes de Sistema
• Testes de Aceitação
• Revisões de Software
44Marcos Kalinowski © LES/DI/PUC-Rio2020.1
 Verificação
 Validação
45Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• Boehm, B.W., Software Engineering Economics. Prentice-hall, 1981.
• ISO/IEC, ISO 25000 Software Product Quality - ISO/IEC 25010.
http://iso25000.com/index.php/en/iso-25000-standards/iso-25010, Official site 
(2011).
• Mendoza, I., Kalinowski, M., Souza, U., and Felderer, M., Relating Verification and 
Validation Methods to Software Product Quality Characteristics: Results of an 
Expert Survey. In Software Quality Days, 11th International Conference, SWQD 
2019, Vienna, Austria, January 15-18, 2019. 
• Rocha, A.R.C., Travassos, G.H., Santos, G., Reinehr, S., QPS - Modelo para 
Avaliação da Qualidade de Produtos de Software: Resultados 
Iniciais. Simpósio Brasileiro de Qualidade de Software, 2018.
• Rocha, A.R.C., Maldonado, J.C. and Weber, K.C., Qualidade de software: teoria e 
prática. São Paulo: Prentice-hall, 2001.
• Travassos, G.H., Kalinowski, M., iMPS 2013: EvidênciasSobre o Desempenho das 
Empresas que Adotaram o Modelo MPS-SW. Campinas: SOFTEX, 2014 (ISBN: 
978-85-99334-75-1), 102p. 
• Wagner, S., Software Product Quality Control. Springer, 2013.
Leituras Sugeridas
INF1027 Testes e Medidas de Software
Gerência da Qualidade de Software
Prof. Marcos Kalinowski | LES/DI/PUC-Rio
kalinowski@inf.puc-rio.br | www.inf.puc-rio.br/~kalinowski | @prof_kalinowski
Gerência da Qualidade de Software
• Gerência da Qualidade (ISO 25001) 
– Propósito: Gerência da qualidade de produtos com base em 
requisitos de qualidade e avaliação (Wagner, 2013)
– Diretamente alinhada com as definições de Tian (2005) e 
Wagner (2013)
• Ênfase na medição das atividades de garantia da qualidade, 
verificação e validação
47Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
48Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
• Gerenciamento da qualidade envolve (Tian, 2005):
– Definir objetivos específicos de qualidade
– Planejar uma estratégia de qualidade
• Selecionar métodos apropriados de garantia da qualidade, 
verificação e validação (V&V)
• Selecionar medidas apropriadas para permitir a avaliação da 
qualidade
– Avaliar e controlar a qualidade
• Esta abordagem é consistente com a apresentada por 
Wagner (2013), que envolve as seguintes atividades:
– Identificar objetivos; Selecionar e integrar métodos de V&V; 
Acompanhar problemas; Monitorar atividades de V&V; Avaliar e 
controlar a qualidade
49Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
SQuaRE (Software product QUality
Requirements and Evaluation)
• Medidas objetivas referentes à garantia e o controle da qualidade formam 
a base para uma gerência da qualidade efetiva (Tian, 2005)
2020.1 50Marcos Kalinowski © LES/DI/PUC-Rio
Requisitos 
de 
Qualidade
2503n
Modelo de 
Qualidade
2501n
Gerenciamento 
da Qualidade 
2500n
Medições
2502n 
Avaliação
2504n
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
51Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
52Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Garantia da Qualidade
• Avalia a conformidade do processo e do produto
– Visa assegurar que os processos planejados foram 
implementados e que os produtos seguem os padrões pré-
estabelecidos
– Quando não-conformidades são identificadas, elas devem ser 
tratadas e resolvidas no projeto
– Caso não sejam resolvidas no projeto, devem ser escalonadas 
para o nível adequado de gerência
53Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Garantia da Qualidade
• É fundamental que as avaliações sejam objetivas
– A objetividade é crítica para o sucesso do projeto
– A objetividade é conseguida com:
• O avaliador sendo independente do projeto (externo ao projeto)
• A utilização de um conjunto de critérios de avaliação
54Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Garantia da Qualidade
• Recorte de um checklist de garantia da qualidade
55Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
56Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Exercício
• Cite três exemplos de medidas que podem ser utilizadas 
para monitorar o processo de garantia da qualidade
57Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Garantia da Qualidade
• Exemplos de medidas para gerir o processo de garantia da 
qualidade (Rocha et al., 2012):
– Taxa de não conformidades (NCs) em avaliações de qualidade 
no documento X (por exemplo, documento de requisitos)
– Taxa de NCs em avaliações de aderência ao processo X (por 
exemplo, gerência de requisitos)
– Esforço de retrabalho para corrigir NCs identificadas em 
avaliações de qualidade
– Taxa de NCs escalonadas
– Taxa de NCs escalonadas sem resolução
– Número de NCs identificadas na auditoria independente de 
qualidade
58Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
59Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Verificação
• Avalia se o produto definido reflete adequadamente os 
requisitos especificados (incluindo requisitos do cliente, 
produto e componentes do produto):
– Estamos construindo certo o produto?
• Principais métodos: Revisões e Testes
60Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• Definição: Processo ou atividade para leitura de um 
artefato de software visando assegurar que ele cumpre sua 
especificação e atende às necessidades de seus usuários
– Validação e verificação estática de artefatos de software
– Proveem um bom meio para o gerente monitorar a qualidade 
do projeto
• Tipos de Revisão de Software:
– Revisão aos Pares
– Inspeções de Software
– Walkthroughs
Revisões de Software
61Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Revisões de Software
• Quando e em que tipos de artefato aplicar revisões de 
software?
•
Adaptado de Ackerman et al. (1989)
• Um relato simples e compreensível da aplicação de 
inspeções de requisitos em desenvolvimento incremental 
pode ser encontrado em Kalinowski et al. (2007)
62Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Revisão
Teste de Software
63Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Unidade
Integração
Perspectiva dos Projetistas e 
Desenvolvedores
Sistema
Aceitação
Perspectiva dos Clientes e Usuários
Teste de Sistema
• Objetivo:
– Executar o sistema sob ponto de vista de seu usuário final, 
varrendo as funcionalidades em busca de falhas
• Testes executados em condições similares àquelas que um 
usuário utilizará no seu dia-a-dia
• Um sistema divide-se em características:
– Funcionais
– Não-Funcionais
64Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Sistema = Funcional + Não-Funcional
Teste de Sistema
• Exemplos de tipos específicos de Teste de Sistema:
– Recuperação
• Força o software a falhar numa variedade de situações e verifica a 
capacidade de recuperação do produto 
– Segurança
• Verifica se os mecanismos de proteção construídos para o sistema 
irão de fato protegê-lo de alguma utilização ou intrusão imprópria.
– Stress
• Executa o sistema de forma a exigir recursos em quantidade, 
frequência ou volume anormais
– Desempenho
• Avalia o desempenho do software quando integrado ao sistema. 
Normalmente está associado ao teste de stress
65Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
66Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Exercício
• Cite três exemplos de medidas que podem ser utilizadas 
para monitorar o processo de verificação
67Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Verificação
• Exemplos de medidas para gerir o processo de verificação 
(Rocha et al., 2012):
– Densidade de defeitos identificados em revisões por pares
– Esforço para a realização de revisões por pares
– Densidade de defeitos identificados nos testes de software
– Esforço para a realização de testes
– Esforço de retrabalho para a correção de defeitos
– Taxa de defeitos corrigidos
– Taxa de cobertura de funcionalidades dos testes
– Densidade de defeitos identificados após o software entrar em 
produção
– Esforço de retrabalho para a correção de defeitos de produção
– Tempo médio entre falhas
– Tempo médio para a correção de um defeito
68Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
69Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerênciada 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Validação
• Avalia se o produto atende às necessidades de seus 
usuários
– Estamos construindo o produto certo?
• Normalmente envolve o usuário final e demais interessados
• Principais métodos: Revisões e Testes
70Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Validação
• Similaridades e Diferenças com Verificação
– Similaridades:
• Usa abordagens semelhantes (testes, inspeções, demonstrações e 
simulações)
– Diferenças:
• Necessidade de avaliar no ambiente de uso (operacional) do 
sistema ou em ambiente simulado
• Requer a participação do usuário final e demais interessados
• Na validação, a preocupação é garantir que o produto atende ao 
uso esperado, enquanto que na verificação, é garantir que atende 
os requisitos especificados
71Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
72Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Exercício
• Cite três exemplos de medidas que podem ser utilizadas 
para monitorar o processo de validação
73Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Validação
• Exemplos de medidas para gerir o processo de validação 
(Rocha et al., 2012):
– Densidade de defeitos identificados em avaliação de requisitos
– Esforço de retrabalho para correção de defeitos nos requisitos
– Densidade de defeitos identificados nos testes de homologação
– Esforço de retrabalho para a correção de defeitos em testes de 
homologação
74Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software 
• Qualidade no nível tático e operacional
75Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da 
Qualidade
Garantia da 
Qualidade
Verificação Validação
Lembrando: É fundamental alinhar os métodos de V&V e as 
medidas com os requisitos de qualidade do produto!
Gerência da Qualidade de Software
76Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Monitorando Introdução & Detecção
0
0,5
1
1,5
2,0
2,5
3,0
Requirements Design Implementation Integration Acceptance
Testing
Fielded
Estimado
Introdução
Detecção
Real
Introdução
Detecção
D
ef
ei
to
s 
p
o
r 
U
n
id
ad
e 
d
e
 T
am
an
h
o
Gerência da Qualidade e Alta Maturidade
• Nos altos níveis de maturidade a gerência passa a ter um 
enfoque quantitativo (SOFTEX, 2012)
– No MPS-SW nível B a gerência quantitativa deve compreender 
processos críticos para os alcances dos objetivos 
organizacionais
– No CMMI-Dev nível 4 a gerência quantitativa deve se basear 
em requisitos de qualidade e desempenho
• Faz uso de ferramentas estatísticas, como gráficos de 
controle
• Permite a elaboração de modelos de desempenho para 
processos estáveis
77Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade e Alta Maturidade
• Gráficos de Controle
• Modelos de Desempenho
78Marcos Kalinowski © LES/DI/PUC-Rio2020.1
ProblemasAPNormalizado = 0,0502 + 2,55 ProblemasGQNormalizado
Gráfico e modelo de desempenho extraídos de Montoni et al. (2007)
Observation
I
n
d
iv
id
u
a
l 
V
a
lu
e
161412108642
-2
-3
-4
-5
-6
_
X=-3,801
UC L=-1,652
LC L=-5,950
Observation
M
o
v
in
g
 R
a
n
g
e
161412108642
3
2
1
0
__
MR=0,808
UC L=2,640
LC L=0
I-MR Chart of ln(ProblemasGQNormalizado)
Gerência da Qualidade e Alta Maturidade
• Gráficos de controle podem ser utilizados como ferramenta 
gerencial mesmo que não se tenha ainda processos 
estabilizados
• Os gráficos mais indicados para dados de defeitos são os U-
charts (Kalinowski et al., 2012)
– Distribuição de Poisson
• Pontos fora de controle possuem causas atribuíveis e devem 
ser alvo de análise causal visando estabilizar o processo
• No MPS-SW nível A e CMMI-Dev nível 5 análise causal de 
defeitos deve ser aplicada visando melhoria contínua e não 
apenas estabilizar o processo
79Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade: Quem Faz?
• Em empresas menores comumente a gerência da qualidade 
é realizada pelo próprio gerente do projeto
• Para empresas maiores é possível que se tenha um gerente 
dedicado exclusivamente à qualidade, com uma equipe que 
atende a diversos projetos
– Célula de Testes
– Fábrica de Testes
80Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Exercício
• Qual a tendência apresentada neste gráfico de controle do 
tipo U-chart? Este comportamento é positivo?
81Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gráfico extraído de Kalinowski et al. (2014)
Resposta
• Não é possível responder à pergunta somente com a 
informação apresentada (falta informação do esforço 
investido na detecção de defeitos)
82Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gráficos extraído de Kalinowski et al. (2014)
Considerações Finais
• Para uma Gerência da Qualidade efetiva:
– Estabeleça requisitos de qualidade para o produto
– Institucionalize garantia da qualidade
– Institucionalize inspeções de software
– Institucionalize testes
– Realize medições sobre as atividades de garantia e controle da 
qualidade considerando os requisitos de qualidade do produto
– Utilize resultados de medições para subsidiar decisões
– O uso de gráficos de controle e análise causal de defeitos não 
requer alta maturidade
83Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Leituras Sugeridas
• Kalinowski, M., Mendes, E., Travassos, G.H., An Industry Ready Defect Causal Analysis 
Approach Exploring Bayesian Networks. Software Quality Days, 6th International 
Conference, Lecture Notes in Business Information Processing, v. 166, p. 12-33, 2014. 
• Kalinowski, M., Card, D.N., Travassos, G.H., Evidence-Based Guidelines to Defect 
Causal Analysis. IEEE Software, vol. 29, no. 4, pp. 16-18, 2012.
• Kalinowski, M., Spínola, R. O., Dias-Neto, A. C., Bott, A., Travassos, G. H., Inspeções de 
Requisitos de Software em Desenvolvimento Incremental: Uma Experiência
Prática. Simpósio Brasileiro de Qualidade de Software, 2007. 
• Mendoza, I., Kalinowski, M., Souza, U., Felderer, M., Relating Verification and Validation 
Methods to Software Product Quality Characteristics: Results of an Expert Survey. 
In Software Quality Days, 11th International Conference, SWQD 2019, Vienna, Austria, 
January 15-18, 2019.
• Montoni, M., Kalinowski, M., Lupo, P., Abrantes, J. F., Ferreira, A.I.F., Rocha, A.R.C., Uma 
Metodologia para Desenvolvimento de Modelos de Desempenho de Processos para 
Gerência Quantitativa de Projetos de Software. Simpósio Brasileiro de Qualidade de 
Software, 2007.
• Rocha, A.R.C., Souza, G.S., Barcellos, M.P., Medição e Controle Estatístico de 
Processos. MCTi, 2012.
• Tian, J., Software Quality Engineering, IEEE Computer Society Press, 2005.
• Wagner, S., Software Product Quality Control, Springer, 2013.
84Marcos Kalinowski © LES/DI/PUC-Rio2020.1
INF1027 Testes e Medidas de Software
Verificação e Validação
Conceitos Iniciais
Prof. Marcos Kalinowski | LES/DI/PUC-Rio
kalinowski@inf.puc-rio.br | www.inf.puc-rio.br/~kalinowski | @prof_kalinowski
Conteúdo enriquecido com material gentilmente cedido pelo Prof. Arndt von Staa
Verificação e Validação (Relembrando)
• Verificação
– Tem como propósito confirmar que cada serviço e/ou 
produto de trabalho do processo ou do projeto atende 
apropriadamente os requisitos especificados.
• Estamos construindo certo o produto? (Boehm, 1981)
• Validação
– Tem como propósito confirmar que um produto ou 
componente do produto atenderá a seu uso pretendido
quando colocado no ambiente para o qual foi 
desenvolvido.
• Estamos construindo o produto certo? (Boehm, 1981)
86Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Porque Utilizar Métodos de V&V?
• A utilização destes métodos na indústria têm mostrado resultados 
positivos considerando tanto produtividade quanto qualidade
• Resultados de estudos experimentais evidenciam benefícios da 
utilização destes métodos no desenvolvimento de software
• Diversas evidências relacionadasa V&V foram obtidas ao longo dos 
anos de pesquisa em engenharia de software
872020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Curiosidades
• O desenvolvimento de programas de boa qualidade sob a ótica da 
programação modular, provê um dos alicerces para desenvolver 
software correto por construção (von Staa, 2000)
• Prevenção de defeitos é usualmente mais eficaz que a remoção de 
defeitos (Mays, 1990) (Kalinowski et al., 2012)
• Qualidade do processo tende a melhorar a produtividade 
(Travassos e Kalinowski, 2014)
• Inspeções aumentam significativamente a produtividade, 
qualidade e estabilidade dos projetos (Fagan, 1976)
• Inspeções e Testes encontram diferentes tipos de defeitos (Hetzel, 
1976 & Meyer, 1978)
• Testes podem revelar a presença, mas não a ausência de defeitos 
(Dijkstra, 1970)
882020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Curiosidades
• Um desenvolvedor não é indicado para testar seu próprio software 
(Weinberg, 1971)
• Aproximadamente 80% dos defeitos são provenientes de 20% dos 
módulos (Pareto, 1897) (Endres, 1975)
• Usabilidade é quantificável (Nielsen, 1994)
• Corrigir um defeito após a entrega do produto é frequentemente 
100 vezes mais caro do que corrigi-lo durante as atividades de 
requisitos e projeto do sistema (Boehm, Basili, 2001)
892020.1 Marcos Kalinowski © LES/DI/PUC-Rio
Defeitos de Software
• Erro Defeito Falha
– Erro
• Engano durante o desenvolvimento
– Defeito (Falta)
• Algum problema em um artefato de software
– Falha
• Problema encontrado ao executar o software
902020.1 Marcos Kalinowski © LES/DI/PUC-Rio
E Vulnerabilidades?
• Vulnerabilidade é um fragmento de um artefato, que, 
quando usado em condições peculiares, pode gerar uma falha
• ex. 1. proteção mal feita permite acesso a pessoas não autorizadas
• ex. 2. interface do usuário mal organizada induz erros de uso
• ex. 3. dados confidenciais armazenados de forma legível por 
terceiros permitem não autorizados a utilizar dados críticos
– na realidade vulnerabilidades são defeitos
• precisa-se procurar explicitamente por elas -> teste de 
vulnerabilidade 
91Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Confiabilidade e Manutenibilidade: 
Exemplos de Medidas
• MTBF – mean time between failures
– tempo médio entre falhas sucessivas
• MTTRc – mean time to recover
– tempo médio requerido para repor o sistema em 
funcionamento correto (recuperar) após uma falha 
• MTTRp – mean time to repair
– tempo médio requerido do momento em que é observada uma 
falha até versão corrigida do artefato estar disponível
• alternativa: até a versão corrigida estar em uso 
• MTTEv – mean time to evolve
– tempo médio requerido para evoluir ou adaptar o software após 
o registro de uma solicitação de alteração
92Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Na realidade o que interessa mesmo é a distribuição dos tempos, uma vez que tempos médios tendem a 
esconder potenciais problemas sérios -> mínimo , máximo , percentis (25, 50, 75 e 100%)
Defeitos de Software
93Marcos Kalinowski © LES/DI/PUC-Rio2020.1
(IEEE-1044, 2010)
Problema básico
• O desenvolvimento de software é um processo de aquisição 
e detalhamento de conhecimento
– no início o conhecimento é incompleto e abstrato
• do problema a resolver
• da solução proposta dada ao problema
– à medida que vai sendo desenvolvido o conhecimento vai 
sendo completado
• Consequentemente muitas solicitações de alteração ocorrem 
durante o desenvolvimento em virtude de novo 
conhecimento adquirido
94Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Dizeres romanos há bem mais de 2000 anos
• Errare humanum est
– errar é inerente ao ser humano
– Corolário 1: como humanos são falíveis e o 
desenvolvimento de software é intensivo em 
esforço humano, é utópico esperar que software 
não contenha defeitos
• Sed in errore perseverare dementis
– enquanto que perseverar no erro é próprio do louco
– Corolário 2: é sinal de incompetência ou obstinação 
burra não aceitar que erramos, não querer observar 
que erramos, não querer aprender com os erros 
nossos e de outros de modo que evitemos erros 
futuros
95Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Não existe software perfeito
• Não se pode esperar que sistemas não contenham 
defeitos 
– caso um sistema não contenha defeitos, não o 
saberemos
• algumas vezes podemos saber se módulos contêm defeitos 
ou não
– isso implica a necessidade de avaliar a corretude 
(controlar a qualidade) também durante a execução do 
sistema
• torna necessária a instrumentação do código
96Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Propagação de defeitos
• Defeitos podem ser inseridos na especificação, na 
arquitetura, nos projetos, no código, nas suítes de teste, ...
• Defeitos em artefatos antecedentes levam a erros em 
artefatos consequentes
– exemplo de defeitos na especificação: 
• esquecer requisitos relevantes 
– ex. esquecer segurança
– exemplos de defeito propagado para a arquitetura
• software não considera requisitos relevantes durante a definição da 
arquitetura (e.g., proteção dos dados do usuário contra uso 
indevido)
97Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Defeitos de Software
98Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Defeitos de Software
• A maior parte é de origem humana
• São gerados principalmente na comunicação e na 
transformação de informações
• Permanecem presentes nos diversos produtos de 
software produzidos e liberados
• A maioria encontra-se em partes do produto de 
software raramente utilizadas e/ou executadas
99Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Defeitos de Software
• Consequências:
– Estimativas de esforço e prazo deixam de fazer sentido
– Desperdício de recursos
– Produto final não atende as necessidades do usuário
– Corrigir defeitos após a entrega do produto pode ser até 
cem vezes mais caro que corrigi-los nas primeiras fases 
do desenvolvimento (em projetos menores, 5:1)
– Em projetos recentes de software, teríamos um esforço 
de retrabalho entre 40% e 50% do esforço total
(Boehm e Basili, 2001)
100Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Defeitos de Software
• Principal causa: 
– Tradução incorreta de informações
• Quanto antes a presença do defeito for revelada,
menor o custo de correção do defeito e maior a
probabilidade de corrigi-lo corretamente
– Atividades de V&V devem ser inseridas ao longo de todo o ciclo
de desenvolvimento
101Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Controle da qualidade versus evitar defeitos
• Controle da qualidade não leva a sistemas possuindo a 
qualidade desejada
– somente produz um laudo
– a melhoria da qualidade advém da eliminação dos defeitos 
observados
• retrabalho  mais custos 
• se não feito, gera dívida técnica
• Ao invés de fiar-se somente no controle da qualidade, por 
que não desenvolver de modo que se tenha a (quase) 
certeza de não ter introduzido defeitos?
– o mais próximo possível de correto por construção
102Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Defeitos de Software
Natureza do Defeito Definição
Omissão Informação necessária não incluída
Ambiguidade Informação passível de ter múltiplas 
interpretações.
Inconsistência Informações conflitantes
Fato Incorreto Informação que não é verdadeira para as 
condições especificadas.
Informação Estranha Informação desnecessária
103Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• Taxonomia definida por Shull (1998) a partir do padrão 
IEEE (IEEE 830, 1998) para a natureza de defeitos em 
documentos de requisitos:
Natureza dos Defeitos
• Omissão
104Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Natureza dos Defeitos
• Ambiguidade
105Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Natureza dos Defeitos
• Inconsistência
106Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Natureza dos Defeitos
• Fato Incorreto
107Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Natureza dos Defeitos
• Informação Estranha
108Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Defeitos de Software• Taxonomia aplicável também a outros artefatos
109Marcos Kalinowski © LES/DI/PUC-Rio2020.1
(Travassos et al., 2001)
• A taxonomia para natureza de defeitos 
instanciada para projeto OO de alto nível
Natureza do 
Defeito 
Descrição 
Omissão Um ou mais diagramas de projeto que deveria conter algum conceito 
dos requisitos gerais ou do documento de requisitos não contêm uma 
representação para o conceito. 
Fato Incorreto Um diagrama de projeto contêm uma representação errada de um 
conceito descrito nos requisitos gerais ou no documento de requisitos. 
Inconsistência Uma representação de um conceito em um diagrama de projeto não 
concorda com uma representação do mesmo conceito no mesmo ou 
outro diagrama de projeto. 
Ambigüidade Uma representação de um conceito no projeto não está clara, e poderia 
levar o usuário do documento (projetista de baixo nível, desenvolvedor, 
etc.) a interpretar de forma diferente ou não entender o significado do 
conceito. 
Informação 
Estranha 
O projeto inclui informação que, enquanto talvez verdadeira, não se 
aplica a este problema e não deveria estar incluída no projeto. 
 
 
Defeitos de Software
110Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Defeitos de Software
• Considerações sobre documentos de requisitos:
– Primeiro artefato tangível a ser produzido
– Descreve todas as características e as funções que o 
software a ser desenvolvido deve possuir
– Atua como um contrato entre o cliente e o desenvolvedor
– Base para todas as etapas subsequentes do 
desenvolvimento
– Normalmente escrito em linguagem natural
111Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Tipos de Defeitos
• Existem diversas taxonomias para tipos de 
defeitos na literatura (Kalinowski et al., 2012)
• Exemplos de Taxonomias:
– Taxonomia do Padrão IEEE (IEEE-1044, 2010). Contendo 
os seguintes tipos de defeito: dados, interface, lógica, 
descrição, sintaxe, padrões, e outros
• Este padrão ainda complementa os tipos com a natureza (mode) do 
defeito, que pode assumir os seguintes valores: incorreto, omitido, 
e incluído sem ser necessário
112Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Tipos de Defeitos
• Exemplos de Taxonomias (cont.)
– Taxonomia de Orthogonal Defect Classificaton - ODC
(Chillarege et al., 1992), contendo os seguintes tipos de 
defeitos: interface, funcionalidade, empacotamento 
(build/package/merge), inicialização (atribuição), 
documentação, verificação (checking), algoritmo e 
temporal (timing/serialization)
• Além dos tipos de defeito, ODC considera ainda a natureza 
(qualifier) do defeito, de maneira consistente com o padrão IEEE, 
podendo assumir os mesmos valores (incorreto, omitido e incluído 
sem ser necessário)
113Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Informações sobre Defeitos
• Consenso a respeito das informações relevantes a 
serem coletadas sobre de defeitos de software de 
modo a apoiar monitoramento e análise causal de 
defeitos: 
– O momento (ou fase) em que o defeito foi introduzido
– O momento (ou fase) em que o defeito foi detectado
– Tipo de defeito
114Marcos Kalinowski © LES/DI/PUC-Rio2020.1
“Dimensões para classificar defeitos” 
(Card, 1998)
Informações sobre Defeitos
• Outras informações que, dependendo dos 
objetivos, podem também se mostrar úteis:
– Esforço de correção, severidade ou impacto;
– Localização (ou módulo);
– Trigger, que indica como o defeito foi detectado;
– Se o defeito foi introduzido durante o desenvolvimento 
de funcionalidades novas ou durante a manutenção. 
115Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Informações sobre Defeitos
• Um esquema mais completo de informações sobre 
defeitos pode ser encontrado em ODC (Chillarege
et al., 1992) e no padrão IEEE para classificar 
anomalias de software (IEEE-1044, 2010).
116Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• ODC (Chillarege et al., 1992)
• Mais informações:
– Chillarege, R., Bhandari, I., Chaar, J., 
Halliday, M., Moebus, D., Ray, B., Wong, M.Y., 
“Ortogonal Defect Classification – A Concept 
for In-Process Measurement”, In: IEEE 
Trans. on Soft. Engi., vol. 18, pp. 943-956, 
1992.
Orthogonal Defect Classification (IBM)
117Marcos Kalinowski © LES/DI/PUC-Rio2020.1
(IEEE-1044, 2010)
Padrão IEEE para Anomalias de Software
118Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Gerência da Qualidade de Software
119Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Monitorando Introdução & Detecção
0
0,5
1
1,5
2,0
2,5
3,0
Requirements Design Implementation Integration Acceptance
Testing
Fielded
Estimado
Introdução
Detecção
Real
Introdução
Detecção
D
ef
ei
to
s 
p
o
r 
U
n
id
ad
e 
d
e
 T
am
an
h
o
Leituras Sugeridas
• Boehm, B., Basili, V., Software Defect Reduction Top 10 List. IEEE 
Software, 2001.
• Endres A., Rombach D., A Handbook of Software and Systems 
Engineering, Addison Wesley, 2003.
• IBM, Orthogonal Defect Classification v 5.2 for Software Design and 
Code, 2013.
• IEEE, IEEE Standard Classification for Software Anomalies. IEEE Std
1044-2009, C1 -15, 2010.
• Kalinowski, M., Card, D.N., Travassos, G.H., Evidence-Based Guidelines 
to Defect Causal Analysis. IEEE Software, 2012.
• Wagner, S., Software Product Quality Control, Springer, 2013.
120Marcos Kalinowski © LES/DI/PUC-Rio2020.1
INF1027 Testes e Medidas de Software
Revisões de Software
Prof. Marcos Kalinowski | LES/DI/PUC-Rio
kalinowski@inf.puc-rio.br | www.inf.puc-rio.br/~kalinowski | @prof_kalinowski
• Definição: Processo ou atividade para leitura de um artefato 
de software visando assegurar que ele cumpre sua 
especificação e atende às necessidades de seus usuários
• Objetivo:
– Realizar validação e verificação estática de artefatos de software
• Pode ser aplicada a qualquer artefato produzido ao longo do 
processo de desenvolvimento de software
Revisões de Software
122Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Revisões de Software
• Revisões aos pares (peer-reviews) aumentam a 
probabilidade de defeitos serem encontrados, 
quando comparadas com revisões feitas pelo próprio 
autor (desktop checking)
123Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Revisões de Software
• Quando e em que tipos de artefato aplicar revisões de 
software?
•
Adaptado de Ackerman et al. (1989)
• Um relato simples e compreensível da aplicação de 
inspeções de requisitos em desenvolvimento incremental 
pode ser encontrado em Kalinowski et al. (2007)
124Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Revisão
• Utilização na Prática
– Muitas organizações realizam revisões de software.
– Realização pouco sistematizada e potencial raramente é 
explorado
• Tipos de Revisão de Software:
– Revisão aos Pares
– Inspeções de Software
– Walkthroughs
Revisões de Software
125Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Inspeções de Software
• Tipo particular de revisão
• Tem sido o tipo de revisão de software mais estudado e utilizado
• Processo bem definido, introduzido em (Fagan, 1976)
• Evidências Experimentais:
– Redução do Esforço (Conradi et al., 1999)
– Aumento da Produtividade (Gilb, Graham, 1993)
– Redução do Tempo (Gilb, Graham, 1993)
– Redução dos Custos (Laitenberger, Atkinson, 1999)
– Capturam em média 60% dos defeitos (Boehm e Basili, 2001)
126Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Inspeções: um tipo particular de revisão
• Uma revisão é uma leitura crítica do artefato e da 
documentação complementar, anotando:
– os defeitos encontrados
– as omissões
– as dúvidas e dificuldades de compreensão
– as possibilidades de melhoria
• Uma inspeção é uma leitura crítica formalizada do 
artefato e da documentação complementar
– segundo um plano definido
– obedecendo a regras de leitura definidas
– envolvendo uma pequena equipe
– anotando defeitos, omissões, dúvidas e possibilidades de 
melhoria
127Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Inspeções de Software
• Benefícios e Custo de Inspeções:
– Inspeções vêm sendo utilizadas há quase quatro décadas
– Existe evidência experimentalde sua usabilidade e adequabilidade
– Proveem 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
128Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Inspeções de Software: Benefícios
129Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• Identificação de defeitos mais cedo
Inspeções de Software: Benefícios
• Implicação direta: custo de correção reduzido
130Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Inspeções de Software: Benefícios
• Inspeções em requisitos e projeto, conduzidas no JPL – Nasa
Jet Propulsion Laboratory (Miller,1990)
131Marcos Kalinowski © LES/DI/PUC-Rio2020.1
520 520
22 513 535
409 409
4 4
542 513 413 1468
Fase Requisitos
Fase Projeto
Fase Teste Unid.
Fase Teste Sist.
Total
Defeitos 
Req.
Defeitos 
Proj. Outros Total
Inspeções de Software: Benefícios
• Quantitativos:
– Primary Avionics Software System, JPL
• Inspeções em requisitos, projeto, código, plano de testes, 
especificações e procedimentos
• Taxa de Erros reduzidas de 2.25 para 0.08 defeitos/KSLOC
• Qualitativos:
– Aprendizado por experiência:
• Participantes aprendem padrões de defeitos
• Participantes aprendem bons padrões de desenvolvimento 
– No longo prazo ...
• Inspeções convencem os participantes a desenvolver 
software mais fácil de entender e manter
132Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Revisões e inspeções vs. testes
• Revisões e inspeções eliminam defeitos antes que se 
propaguem (poluam) para outros artefatos ou para o 
serviço a ser prestado
– um defeito na especificação provoca um erro ao criar a 
arquitetura (ou projeto), que se manifesta sob a forma de um 
defeito na arquitetura
– um defeito na arquitetura provoca um erro ao criar o projeto, 
que se manifesta sob a forma de um defeito no projeto
– um defeito em um projeto provoca um erro ao redigir o código, 
que se manifesta sob a forma de um defeito no código 
– a execução de um defeito no código pode causar falhas na 
execução
133Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Revisões e inspeções vs. testes
• Revisões devem ser praticadas a partir do primeiro 
momento do desenvolvimento
– reduzem significativamente o retrabalho inútil
• quanto maior a latência do erro, maior a poluição provocada pelo 
erro e mais cara e demorada fica a depuração
– porém não eliminam a possibilidade de defeitos passarem 
despercebidos
• testes serão sempre necessários
134Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Processo de Inspeção
135Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• Processo de inspeção de software (Fagan, 1976)
Processo de Inspeção
• Planejamento
– Responsável: Moderador
– Tarefas:
• Definir contexto da inspeção (descrição da inspeção, como a 
preparação individual deverá ocorrer, documento a ser 
inspecionado, autor do documento, entre outros)
• Selecionar inspetores (recomenda-se utilizar entre 3 e 5 inspetores 
em uma inspeção)
• Distribuir material
• Preparação Individual
– Responsável: Inspetor
– Tarefas:
• Estudar os artefatos
• Fazer anotações sobre os artefatos
136Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• Reunião de Inspeção
– Envolvidos: Moderador, Inspetores e Autor
– Tarefas:
• Leitura do documento, com a equipe discutindo possíveis defeitos 
(Duração recomendada 2 hrs)
• Produzir uma lista de defeitos
• Em casos de discordância a decisão sobre registrar um defeito ou 
não (falso positivo) é do moderador
• Retrabalho
– Responsável: Autor
– Tarefas:
• Corrigir os defeitos encontrados
Processo de Inspeção
137Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Processo de Inspeção
• Continuação
– Responsável: Moderador
– Tarefas:
• Analisar correções do autor e inspeção como um todo
• Reavaliar qualidade do artefato inspecionado
• Decidir sobre a necessidade de uma nova inspeção
138Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Processo de Inspeção de Humphrey
• Variante do processo tradicional de inspeção:
– Foco da Preparação Individual muda de entender o artefato 
para efetivamente encontrar seus defeitos
– Inspetores entregam lista de discrepâncias para o moderador 
antes de a reunião de inspeção se iniciar
– Objetivo da reunião é discutir diretamente as discrepâncias 
para classificá-las como defeito ou falso positivo
139Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Walkthroughs
• Alternativa com um processo menos rigoroso do que o de 
inspeções de software
• Papéis sugeridos:
– Líder, Autor, Escrivão e Revisores
• Procedimento:
– Os participantes são guiados através dos artefatos pelo líder 
(que eventualmente é o próprio autor) em uma reunião. 
Durante esta reunião devem interromper a apresentação caso 
encontrem defeitos
– Muitas vezes condições de entrada e saída e decisões são 
pressupostos pelo líder que segue sua linha de raciocínio 
durante a apresentação
140Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Walkthroughs
• Possuem custo aproximadamente igual ao de inspeções mas 
seus resultados são inferiores (SEI, 2005):
– Não providenciam resultados mensuráveis
– Não fornecem base para a aplicação de controle estatístico de 
processos, desejado para evoluir na maturidade de processos 
de software
• Podem ser utilizados para atividades de brainstorming, para 
explorar alternativas de projeto e resolução de problemas 
– Inspeções são mais focadas em encontrar defeitos
141Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• O perfil dos inspetores selecionados para 
uma determinada inspeção afeta sua 
eficiência (Carver, 2003)
• Somente as discrepâncias encontradas por 
apenas um inspetor devem ser discutidas em 
equipe (Lanubile e Mallardo, 2003)
• O uso de técnicas de leitura apropriadas 
aumenta a eficiência da inspeção (Boehm, 
Basili, 2001)
Evidências
142Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• O número de defeitos presentes no artefato 
pode ser estimado durante uma inspeção 
utilizando métodos de estimativa subjetivos 
(Biffl et al., 2003)
• A eficiência de uma reinspeção pode ser 
estimada a partir da eficiência da inspeção 
atual (Adams, 1999)
Evidências
143Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Dicas para Realizar uma Boa Inspeção
• Independente da abordagem utilizada, lembre-se:
– Revise o produto, nunca o desenvolvedor
– Mostre onde estão os problemas, mas não tente resolvê-los 
durante a inspeção
– Não tente se lembrar, faça anotações sempre
– Aprimore-se: Revise suas revisões anteriores!
144Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Dicas para Realizar uma Boa Inspeção
• Quanto ao processo:
– Defina uma agenda e cumpra-a rigorosamente
– Aloque recursos e tempo para a inspeção
– Limite o número de participantes e motive a preparação 
antecipada da inspeção
– Desenvolva uma lista de tópicos para cada produto que deverá 
ser revisado
– Forneça treinamento adequado a todos os revisores
– Limite o debate e a discussão
– Se for utilizado apoio ferramental, avalie se ele é adequado
145Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Exercício Prático
146Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Exemplo: Requisitos Funcionais (Recorte)
• Escopo: Permitir que os coordenadores de projeto, ou outros 
usuários designados por estes, possam realizar solicitações 
relativas à solicitação de passagens aéreas e de diárias através de 
formulários na web, viabilizando um controle mais efetivo sobre as 
solicitações.
• RF2: O software deve restringir a visibilidade do coordenador e de 
seus substitutos aos projetos associados a ele.
• RF9: O software deve permitir que o coordenador solicite 
Passagem Aérea.
• RF10: O software deve permitir que o coordenador solicite Diárias.
• RF18: O software deve manter um log de todas as solicitações 
realizadas, com os respectivos solicitantese data/hora da 
solicitação.
147Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Objetivo: Permitir ao coordenador agendar uma passagem aérea
Requisitos: RF2, RF9, RF18
Atores: Coordenador, Substituto
Prioridade: Alta
Trigger: O ator aciona a opção de solicitação de passagem aérea
Fluxo Principal: 1. O Sistema apresenta um formulário com as seguintes informações [RN1, RN2]:
- Listas com os projetos e fundos do coordenador
- Nome do passageiro
- Trecho
- Data de embarque
- Data de retorno
- Lista de companhias aéreas
- Código da reserva
2. O ator preenche o formulário.
3. O Sistema critica os dados fornecidos [A1][RN3, RN4], gera um código para a solicitação e a armazena
como “pendente” ou “espera” [RN7]. Em seguida é apresentado o código da solicitação e uma opção para
impressão da mesma [E1].
Fluxo Alternativo: [A1] Dados fornecidos não estão corretos
1. O Sistema mostra uma lista com os erros encontrados seguida do próprio formulário com os dados
previamente fornecidos. Volta para o passo 2 do fluxo principal.
Extensões: [E1] Ator solicita impressão da solicitação
Ver caso de uso “Imprimir Solicitação”
Regras de
negócio:
RN1 – O coordenador só poderá visualizar os projetos/fundos dos quais ele é coordenador. Caso essa
funcionalidade seja acessada por um substituto, deverão ser mostrados somente os projetos/fundos do
coordenador associados ao substituto.
RN2 – A seleção do passageiro poderá ser feita pelo CPF ou Nome das PF´s associadas ao coordenador,
através da digitação dessas informações (passageiro avulso) ou pela busca por CPF/Nome por todo o
conjunto de colaboradores cadastrados.
RN3 – Todos os dados do agendamento de passagem aérea são obrigatórios, com exceção da data de
retorno (retorno em aberto).
RN4 – As datas de embarque e retorno deverão ser maiores que a data corrente.
UC01 - Solicitar Passagem Aérea
Lista de Defeitos do UC01
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 149
UC02 - Solicitar Diárias
Objetivo: Permitir ao coordenador solicitar diárias
Requisitos: RF2, RF10, RF18
Atores:
Prioridade: Alta
Trigger: O ator aciona a opção de solicitação de diárias
Fluxo Principal: 1. O Sistema apresenta um formulário em branco com as seguintes informações [RN1 de UC09, RN1,
RN2, RN3, RN4, RN5, RN6, RN7, RN8, RN9]:
- Lista com os projetos e fundos do coordenador
- Nome do favorecido
- CPF do favorecido
- Trecho
- Tipo de diária (nacional ou internacional)
- Moeda
- Cotação (somente se for moeda estrangeira)
- Número de diárias
- Valor unitário da diária (na moeda selecionada)
- Valor total (em R$)
- Período da viagem (data de início e fim)
- Observações
- Forma de pagamento (cheque ou depósito em CC)
- Dados bancários: número e nome do banco, número e nome da agência, número da conta
corrente, cidade e UF.
- Lista com o local de aquisição da passagem
- Lista com o objetivo da viagem
- Descrição do objetivo da viagem
2. O ator preenche o formulário.
3. O Sistema critica os dados fornecidos [A1], gera um código para a solicitação e a armazena como
“pendente” ou “espera” [RN7]. Em seguida é apresentado o código da solicitação e uma opção para
impressão da mesma [E1].
Fluxo Alternativo:
Extensões: [E1] Ator solicita impressão da solicitação
Ver caso de uso “Imprimir Solicitação”
UC02 - Solicitar Diárias (cont.)
Regras de
negócio:
RN1 – Todos os dados da solicitação de diárias são obrigatórios, com exceção Moeda, Observações e
Dados bancários.
RN2 – Os dados bancários só serão obrigatórios se a forma de pagamento for Depósito em CC.
RN3 – O valor total para viagens nacionais deverá ser calculado como Número de diárias -Valor da
diária.
RN4 – O valor total para viagens internacionais deverá ser calculado como Número de diárias x Valor da
diária x Cotação na data corrente.
RN5 – O campo Moeda só é obrigatório para viagens internacionais.
RN6 – A data de início deve ser maior que a data de fim do período de viagem.
RN7 – A seleção do passageiro poderá ser feita pelo CPF ou Nome das PFs associadas ao coordenador,
através da digitação dessas informações (passageiro avulso) ou pela busca por CPF/Nome por todo o
conjunto de colaboradores cadastrados.
RN8 – Tanto o banco quanto a agência devem ser selecionados de uma lista. Caso a agência não exista
na lista, o solicitante deve fornecer o seu código, nome, cidade e UF. Caso a solicitação seja aprovada,
a agência será automaticamente cadastrada. Qualquer texto sem sentido só pra ver se leu até aqui, se
leu registre uma informação estranha.
RN9 – Caso o objetivo da viagem selecionado na lista seja “OUTROS”, o ator deve preencher a
descrição do objetivo da Viagem. Caso contrário essa informação é ignorada.
Lista de Defeitos do UC02
152Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Técnicas para Detecção de Defeitos
• Ad-hoc
• Checklist
• Técnicas de Leitura
– Exemplos:
• Requisitos
– Perspective Based Reading (PBR)
• Projeto
– Object Oriented Reading Techniques (OORTs)
• Código
– Stepwise Abstraction
– Abstract-driven Reading
• Análise Estática
153Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Ad-hoc
• Inspetor lê o documento de acordo com sua perspectiva.
• Experiência individual afeta o resultado final:
– Foco reside na especialidade do inspetor
– Produtividade individual
– Difícil garantir que inspetor leu o documento de forma 
adequada, pois cada um aplica “sua própria técnica”
• Não existe garantia de cobertura do documento como um 
todo
• Custo/Eficiência (# defeitos/tempo) pode ser adequado 
quando inspetores possuem experiência alta (> custo)
154Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Checklist
• Inspetor segue uma lista de itens com características a 
serem revisadas, mas ainda aplica leitura Ad-hoc para 
identificar os defeitos 
• Resultado final mais direcionado:
– Características de qualidade definidas à priori
– Produtividade individual 
– Difícil garantir que inspetor leu o documento de forma 
adequada, mesmo tendo sido definidas as características de 
qualidade a se procurar
• Cobertura do documento relacionada aos itens do Checklist
• Custo/Eficiência depende do Checklist e dos inspetores
• Checklist pode ser adaptado ou construído para capturar 
uma determinada especificidade
155Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Checklist (Exemplo para Requisitos)
1. Os requisitos exibem a distinção clara entre funções e dados?
2. Os requisitos definem todas as informações a ser apresentada aos usuários?
3. Os requisitos descrevem as respostas do sistema ao usuário devido à condições de erro? 
4. Cada requisito está descrito claramente, é conciso e está apresentado de forma não 
ambígua? 
5. O requisito é testável?
6. Existem requisitos implícitos ou ambíguos?
7. Existem requisitos conflitantes? 
8. Existem áreas não tratadas no documento de requisitos que precisam ser consideradas? 
9. Os requisitos de desempenho (tais como tempo de resposta, armazenamento de dados, 
etc.) foram definidos? 
10. Se os requisitos envolvem a descrição de processos de tomada de decisão complexos, 
eles estão descritos de forma a facilitar sua compreensão (i.e., tabelas de decisão, 
árvores de decisão, etc.)?
11. Os requisitos para executar as atualizações do software foram especificados? 
12. Existem requisitos que contêm algum 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 acurácia dos cálculos foram especificadas? 
15. É possível desenvolver um completo conjunto de casos de teste baseado apenas na 
informação contida na especificação de requisitos? Se não, que informação está faltando? 
16. As restrições e dependências foram claramente descritas? 
17. O documento contém realmente toda a informação prometida em sua introdução? 
156Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Checklist (Real, utilizado para Projeto de 
Software)
157Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Técnicas de Leitura
• Motivação:
– desenvolvedores sãotreinados para escrever artefatos de 
software, mas raramente possuem habilidades para revisá-lo
– desenvolvedores confiam em técnicas ad-hoc e não seguem um 
procedimento bem definido
• Objetivos:
– fornecer um conjunto de instruções a serem seguidas pelos 
revisores para que os defeitos sejam detectados
– introduzir um formalismo que garanta que o procedimento 
possa ser seguido e repetido, possibilitando a melhoria 
contínua do processo de revisão
– reduzir a influência humana nos resultados (aproximar de uma 
atividade de Engenharia)
158Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Técnicas de Leitura
O que é uma técnica de leitura?
Um conjunto de instruções concretas dado ao leitor que diz 
como ler e o que procurar num produto de software
Mais especificamente, leitura de software é:
A análise individual de um artefato de software
ex., requisitos, projeto, código, planos de teste
para alcançar a compreensão necessária para uma 
tarefa em particular.
ex., identificação de defeitos, reutilização, manutenção
159Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Técnicas para Detecção de Defeitos
Técnica Notação Sistemático? Focado? Melhoria 
controlada?
Adaptável
?
Treinamento 
necessário?
Ad-Hoc Qualquer Não Não Não Não Não
Checklist Qualquer Parcialmente Parcialmente Parcialmente Sim Parcialmente
Técnicas 
de Leitura
Linguagem 
Natural
Sim Sim Sim Sim Sim
160Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• Discussão: 
– Ad-hoc X Checklist X Técnica de Leitura
Leitura Baseada em Perspectiva (PBR)
• Se baseia no fato de existirem diferentes papéis durante o 
processo de desenvolvimento do software
• Provê um conjunto de instruções de acordo com o papel do 
“consumidor” de um artefato (usuário, projetista ou 
testador)
161Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Casos 
de 
Teste
SRS
Casos 
de Uso
Projeto
• Procurando Defeitos:
– Documento de requisitos atenderá às 
necessidades de seus futuros 
“consumidores”?
– Informações contidas no documento 
permitem que uma representação correta 
do sistema seja feita?
• Quando isto não acontece, uma discrepância 
é identificada e deve, então, ser categorizada. 
Leitura Baseada em Perspectiva (PBR)
• Fatos:
– inspeções com PBR encontram 35% mais defeitos que revisões 
ad-hoc (BOEHM e BASILI, 2001)
– a técnica ajuda a manter os inspetores focados durante toda a 
fase de identificação de discrepâncias
– PBR evita que os inspetores realizem inspeções superficiais
– a técnica altera (aprimora) o padrão de raciocínio dos 
inspetores
162Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Leitura Baseada em Perspectiva (PBR)
• Cada inspetor recebe um cenário que guia o seu trabalho.
– uma descrição procedural das atividades e questões que guiam 
o inspetor na utilização do documento sendo inspecionado
• Cada cenário consiste de duas partes:
– construir um modelo a partir do documento sendo revisado de 
forma a aumentar o entendimento
– responder questões sobre o modelo criado, focando em 
problemas de interesse para a organização
163Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Leitura Baseada em Perspectiva (PBR)
• Cada inspetor no time de inspeção lê o documento sob uma 
determinada perspectiva
• Benefícios:
– Foca a responsabilidade de cada inspetor
– Minimiza a sobreposição de responsabilidades
– Maximiza a cobertura dos defeitos
164Marcos Kalinowski © LES/DI/PUC-Rio2020.1
• O nível de detalhamento da técnica pode variar:
– Utilização pela primeira vez: baixo nível de detalhe para 
garantir o apoio
• Adaptáveis para níveis de experiência:
– Novatos: mais detalhes
– Especialistas: só precisam da perspectiva geral
• Uso em diferentes modelos de ciclo de vida:
– No modelo espiral, por exemplo, as primeiras iterações teriam 
um nível de detalhe menor já que a informação inicial é 
definida num nível mais alto de abstração
165Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Leitura Baseada em Perspectiva (PBR)
Técnicas de Leitura Orientada a Objetos 
(OORT) (Travassos et al., 1999)
• Aplicam-se à inspeção de projeto Orientado a Objetos:
– Família de técnicas de leitura que pode ser utilizada para ler 
artefatos de projeto OO de alto nível (descritos em UML) 
contra:
• Eles mesmos, garantindo consistência
• Requisitos e casos de uso, garantindo rastreabilidade dentro de um 
domínio com o objetivo de encontrar defeitos entre eles
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 166
Descrição dos 
Requisitos
Casos de Uso
Especificação de 
Requisitos
Projeto de Alto 
Nível
Diagrama 
de Classes
Descrição 
das Classes
Diagrama 
Transição 
de Estados
Diagramas de 
Interação
(Sequência)
Leitura Vertical
Leitura Horizontal
OORT’s: Artefatos Alvo
(Travassos et al., 1999)
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 167
OORT’s: Leitura Horizontal
• Assegura que todos os artefatos de projeto representam o 
mesmo sistema
• Projeto contêm visões complementares da informação 
– Estática (diagrama de classes)
– Dinâmica (diagramas de interação)
– Não é óbvio como comparar estas diferentes perspectivas
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 168
OORTs: Exemplo de leitura horizontal
OORT's – Leitura Horizontal v3.0
Leitura 1 – Diagramas de Seqüência x Classes
Objetivo: Verificar que um diagrama de classes para um sistema descreve as classes e seus 
relacionamentos
de forma que os comportamentos especificados nos diagramas de seqüência estão capturados 
corretamente.
Para fazer isto, você verificará primeiro que as classes e objetos especificados no diagrama de seqüência
aparecem no diagrama de classes. Então, você verificará que o diagrama de classe descreve os
relacionamentos, comportamentos e condições que capturam a dinâmica dos serviços como estão 
descritos
no diagrama de seqüência.
Entradas para o processo:
1. Um diagrama de classes (possivelmente dividido em pacotes) que descreve as classes de um sistema 
e
como elas estão associadas.
2. Diagramas de seqüência que descrevem as classes, objetos, e possivelmente atores de um sistema e
como eles colaboram para capturar os serviços do sistema.
I. Pegue um diagrama de seqüência e leia-o para entender que serviços do sistema estão 
descritos e como o sistema deveria implementar estes serviços.
ENTRADAS: Diagrama de Seqüência (DS).
SAÍDAS: Objetos do Sistema (marcados em azul no DS);
Serviços do Sistema (marcados em verde no DS);
Condições nos serviços (marcadas em amarelo no DS).
A. Para cada diagrama de seqüência, sublinhe os objetos do sistema e classes, e quaisquer atores, com 
uma caneta azul.
B. Sublinhe a informação trocada entre objetos (as setas horizontais) com uma caneta verde. Considere 
se esta informação representa mensagens ou serviços do sistema. Se a informação trocada está 
muito detalhada, para um nível de mensagens, você deverá abstrair várias mensagens juntas para 
entender que serviços elas estão fornecendo em conjunto. O exemplo 2 fornece uma ilustração de 
mensagens sendo abstraídas como serviços. Anote no diagrama de seqüência descrevendo estes 
serviços, e sublinhe-os também em verde. ...
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 169
OORT’s: Leitura Vertical
• Asseguram que os artefatos de projeto representam o 
sistema descrito pelos requisitos e casos de uso
• Podem ser aplicadas como base de atividades de validação
• Comparam documentos de diferentes fases do ciclo de vida
– Nível de abstração e detalhe são diferentes.
– Exploram a rastreabilidade semântica entre os documentos.
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 170
OORTs: Exemplo de leitura vertical
2020.1 Marcos Kalinowski © LES/DI/PUC-Rio 171
Stepwise Abstraction
• Primeira técnica de leitura. Criada por Harlan D. Mills em 1972
• O inspetor lê uma sequência de sentenças de código e as abstrai
em funções que essas sentenças computam
• As funções são então comparadas com a especificação
• Procedimento:
1. Leitura do código linha a linha para um entendimento conceitual de 
fragmentos de código
2. Conectar os fragmentospara obter o entendimento geral das funções
do sistema
3. Comparação das funções implementadas com a especificação
4. Repetir até que todo o código a ser analisado esteja abstraído e 
comparado com a especificação
172Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Leitura de código com stepwise abstraction encontra mais defeitos do 
que teste funcional e estrutural! (Basili e Selby, 1987)
Stepwise Abstraction: Exemplo
• Abstração:
– a=min(samples[])
– b=max(samples[])
173Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Abstract-driven Reading
• Adaptação por Dunsmore et al. (2002) para a leitura de código 
orientado a objetos
• Procedimento:
1. Determinar a ordem de leitura
a. Analisar as classes, identificando as dependências e os acoplamentos no 
sistema OO. Começar pelas classes com o menor número de dependências.
b. Analisar os métodos. Começar pelos métodos com o menor número de 
dependências.
2. Faça a leitura utilizando abstração
a. Para cada método, faça a engenharia reversa de uma especificação para o 
método. Compare a especificação obtida com a especificação da classe.
b. Rastreie e compreenda todas as classes referenciadas durante a leitura. Isto 
inclui ler métodos/classes e abstrações previamente criadas.
174Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Análise Estática
• Análise estática
– Análise estática é o processo de avaliar um sistema ou 
componente com base na sua forma, estrutura, conteúdo ou 
documentação
175Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Classificação de ferramentas de análise estática (Wagner, 2013)
ISO/IEC/IEEE 24765:2010: Systems and software engineering – vocabulary (2010) 
Análise Estática do Código
• Análise estática a partir de propriedades do código
– Exemplos
• a partir do grafo de chamadas envolvendo o programa
– que função ou método chama que outra função ou método?
– que catches podem tratar de um dado throw?
• reorganização de componentes
– existem arestas de corte no grafo de chamadas que permitam separar 
componentes?
• controle de tipos semânticos e unidades de medida
– ex. velocidade em m/s, nome de pessoa em 20 chars
176Marcos Kalinowski © LES/DI/PUC-Rio2020.1
arestas de corte – é um conjunto pequeno ( <= 3?) de arestas de um grafo conexo que, quando retirado 
transforma o grafo em duas ou mais partes desconexas
tipo semântico – informa o significado do dado, não somente a codificação
Análise Estática do Código: Interfaces
• Verifica compatibilidade entre interfaces
• Comumente não dispõe de recursos para controle de tipos 
semânticos
• Mesmo se não dispuser de uma ferramenta de controle de tipos 
semânticos
– sempre especifique, em comentários, a semântica e a unidade de 
medida de todos os parâmetros
– isso facilita muito a inspeção visual do uso das interfaces
– uso incorreto de interfaces é uma das frequentes causas de defeitos 
177Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Análise Estática do Código: Duplicação
• Copiar, colar e alterar código tende a ser nocivo
– duplica código, agora existem dois a serem mantidos
– se o código copiado contiver um defeito, as cópias também 
conterão
• aumenta desnecessariamente o esforço de manutenção
• aumenta o risco de manutenção incorreta
– duplicações também podem acontecer quando dois 
programadores se depararem com problemas similares
• Procure ferramentas de análise do código que procuram por 
duplicações (code clones)
– elimine as duplicações encontradas
• crie um método com parâmetros que implementa as diversas 
variantes do código base
178Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Ferramentas de Análise Estática 
• Ferramentas de análise estática, exemplos
– a primeira delas: lint para UNIX
– findbugs (java)
– cpplint (google c++)
– SonarQube (análise estática contínua)
– Existem inúmeras outras para as mais variadas plataformas 
(https://en.wikipedia.org/wiki/List_of_tools_for_static_code_analysis)
179Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Leituras Sugeridas
• Basili, V.R., Selby, R.W., Comparing the effectiveness of software 
testing techniques. IEEE Transactions on Software Engineering, 1987.
• Dunsmore, A., Roper, M., Wood, M. Further investigations into the 
development and evaluation of reading techniques for object-
oriented code inspection. International Conference on Software 
Engineering (ICSE), 2002.
• Kalinowski, M., Travassos, G.H., Spínola, R.O., Dias-Neto, A.C., Bott, A., 
Inspeções de Requisitos de Software em Desenvolvimento 
Incremental: Uma Experiência Prática, VII Simpósio Brasileiro de 
Qualidade de Software, 2007.
• Kalinowski, M., Travassos, G.H., A Computational Framework for 
Supporting Software Inspections, 19th IEEE International Conference 
on Automated Software Engineering, 2004.
• Shull, F., Rus, I., Basili, V., 2000, How Perspective-Based Reading Can 
Improve Requirements Inspections, July, IEEE Software, pp. 73-79.
• Travassos, G. H., Shull, F., Fredericks, M., Basili, V. R., 1999, Detecting 
Defects in Object Oriented Designs: Using Reading Techniques to 
increase Software Quality, ACM Sigplan Notices. v.34, n.10, p.47 - 56.
• Wagner, S., Software Product Quality Control, Springer, 2013.
180Marcos Kalinowski © LES/DI/PUC-Rio2020.1
INF1027 Testes e Medidas de Software
Teste de Software:
Conceitos e Definições
Prof. Marcos Kalinowski | LES/DI/PUC-Rio
kalinowski@inf.puc-rio.br | www.inf.puc-rio.br/~kalinowski | @prof_kalinowski
Conteúdo enriquecido com material gentilmente cedido pelo Prof. Arndt von Staa
Teste de Software
“O software sempre será testado. Pode ser testado por 
você ou será testado pelo seu cliente/usuário.”
182Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Teste é um experimento controlado visando observar e 
registrar todas as falhas observadas ao executar casos de 
teste
Limitação intrínseca
• Teste somente sinaliza a ocorrência de falhas, nunca a sua 
ausência.
• E.W. Dijkstra
Marcos Kalinowski © LES/DI/PUC-Rio2020.1 183
Conceitos e Definições de Teste de Software
– Conceitos Básicos de Teste de Software
– Elementos do Teste de Software
– Níveis de Teste
– Desenvolvimento x Teste de Software
– Testes de Software em Normas e Modelos de Maturidade 
de Processo
– Processo de Teste de Software
184Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Teste e Depuração
• Teste: 
– Processo de executar um programa ou sistema com o objetivo 
de revelar a presença de falhas; ou, falhando nesse objetivo, 
aumentar a confiança sobre o programa
• Depuração: 
– É uma consequência não previsível do teste. Após revelada a 
presença da falha, o defeito deve ser encontrado e corrigido 
Depuração não é teste!
185Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Elementos do Teste de Software
• Caso de Teste:
– Descreve uma condição particular a ser testada
• Composto por valores de entrada, restrições para a sua execução 
e um resultado ou comportamento esperado
• Procedimento (Roteiro) de Teste:
– Descreve os passos necessários para a execução de um ou 
grupos de casos de teste 
186Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Elementos do Teste de Software
• Critérios de Cobertura dos Testes:
– Permitem a identificação de partes do programa que devem ser 
executadas para garantir a qualidade do software e indicar 
quando o mesmo foi suficientemente testado
• A Cobertura dos Testes determina o percentual de elementos 
testados em um programa
187Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Elementos do Teste de Software
• Rodada (Bateria) de Teste:
– Execução de todos os testes para uma versão do produto em 
um determinado ambiente
• Uma nova rodada de teste deve ser executada caso o critério de 
aceitação do produto não tenha sido atingido
• Incidentes de Teste:
– Evento ou comportamento diferenciado ocorrido durante a 
execução dos testes que requer investigação 
• Não há garantia que todo incidente seja uma falha, pois ainda 
precisa ser analisado
188Marcos Kalinowski © LES/DI/PUC-Rio2020.1
Objetivo dos Testes de Software
• Refutar

Outros materiais