SlideShare uma empresa Scribd logo
1 de 68
Baixar para ler offline
1
ENGENHARIA DE SOFTWARE - AULA 07
INTRODUÇÃO À QUALIDADE E
TESTES (ÁGEIS) DE SOFTWARE
PROF. DRA. CLAUDIA MELO
09/Mai/2018
@claudia_melo claudiamelo.org
ALGUMAS PERGUNTAS QUE MOTIVAM ESTA AULA
•Como podemos avaliar se um produto está PRONTO?
•Como sei que um produto digital tem qualidade? Se é suficientemente
BOM?
•Como podemos controlar a qualidade de entregas sucessivas de software?
•Como o próprio processo de desenvolvimento pode ser melhorado?
•Quando as atividades de garantia e controle da qualidade começam?
Quando estão completas?
•Quais técnicas específicas devem ser aplicadas durante o desenvolvimento?
2
3
O QUE É QUALIDADE
(DE SOFTWARE)?
O QUE É QUALIDADE DE SOFTWARE?
•“Um produto de software apresenta qualidade dependendo do
grau de satisfação das necessidades dos clientes sob todos os
aspectos do produto” [Sanders,1994].
•“Qualidade de software é a conformidade a requisitos
funcionais e de desempenho que foram explicitamente
declarados, a padrões de desenvolvimento claramente
documentados, e a características implícitas que são esperadas
de todo software desenvolvido por profissionais” [Pressman,
1994].
4
IMPORTÂNCIA DA QUALIDADE
• Seres humanos erram,
por isso, introduzimos
defeitos que geram
inúmeras consequências
negativas, de
desconfortos nos
usuários até catástrofes.
5
http://csfieldguide.org.nz/releases/2.4.1/en/chapters/software-engineering.html
SOBRE DEFEITOS/ERROS ICÔNICOS DA HISTÓRIA
6
Leia mais:
hYps://www.computerworld.com/ar[cle/2515483/
enterprise-applica[ons/epic-failures--11-infamous-
soaware-bugs.html
hYp://www.cse.psu.edu/~gxt29/bug/soawarebug.html
hYp://news.bbc.co.uk/2/hi/science/nature/
2570053.stm
hYps://spectrum.ieee.org/tech-history/heroic-failures/
the-space-shuYle-a-case-of-subjec[ve-engineering
CUSTO DE NÃO TESTAR CEDO
7http://www.abeacha.com/NIST_press_release_bugs_cost.htm
VERIFICAÇÃO E VALIDAÇÃO DE SOFTWARE
•V & V é considerada uma disciplina coerente: "V & V é uma
disciplina de engenharia de sistemas que avalia o software
em um contexto de sistemas, relativo a todos os elementos
do sistema de hardware, usuários e outros softwares”.
•(from Software Verification and Validation: Its Role in
Computer Assurance and Its Relationship with Software
Project Management Standards, by Dolores R. Wallace and
Roger U. Fujii, NIST Special Publication 500-165)
8
https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
V&V: TIPOS DE ATIVIDADES
9
http://www.easterbrook.ca/steve/2010/11/the-difference-between-verification-and-validation/
V&V: PECULIARIDADES DO SOFTWARE
•O software possui algumas características que tornam o V & V particularmente difícil:
• Muitos requisitos de qualidade diferentes
• Evolução (e deterioração) da estrutura
• Não-linearidade inerente
• Distribuição irregular de falhas
•Exemplo
• Se um elevador puder transportar com segurança uma carga de 1000 kg, ele também pode transportar
com segurança qualquer carga menor;
• Se um procedimento classificar corretamente um conjunto de 256 elementos, ele poderá falhar em um
conjunto de 255 ou 53 ou 12 elementos, bem como em 257 ou 1023
10
https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
QUALIDADE DE SOFTWARE: ANÁLISES ESTÁTICA E DINÂMICA
•Qualidade de Software é intimamente ligada às atividades de
Verificação e Validação (Anderson, 2008).
•Atividades de analise estática e dinâmica podem ser empregadas
conjuntamente para maximizar a detecção de defeitos em
produtos de software.
• Análise estática: Processo de avaliar um sistema ou componente com
base em sua forma, estrutura, conteúdo ou documentação.
• Análise dinâmica: Processo de avaliar um sistema ou componente com
base em seu comportamento durante a execução".
11
Anderson, P. The use and limitations of static-analysis tools to improve software quality. CROSSTALK The Journal of Defense Software Engineering, v. 21, n. 6, p.
18{21, 2008.
Auri Marcelo Rizzo Vincenzi, Marcio Eduardo Delamaro e Jose Carlos Maldonado. Análise Estática e Métricas: Ênfase em Qualidade de Produto. ICMC USP e UFG.
ANÁLISE ESTÁTICA
• Realizada sem a execução do
programa;
• Utilizada na avaliação de artefatos
como documento de requisitos,
diagramas, código fonte e outros;
• Em geral, também não é possível
provar a correção do artefato por
meio de técnicas de analise estática.
12
Auri Marcelo Rizzo Vincenzi, Marcio Eduardo Delamaro e Jose Carlos Maldonado. Analise Estática e Métricas: Ênfase em
Qualidade de Produto. ICMC USP e UFG
•Dentre as principais atividades de análise
estática estão (ISO/IEC/IEEE, 2010):
•Inspeção;
•Revisão Informal;
•Leitura Baseada em Perspectiva (Basili et al., 1996)
•Walk-through;
•Desk checking.
•Em geral, também não é possível provar a
correção do artefato por meio de técnicas de
analise estática.
DEFEITO, ERRO E FALHA
•Defeito (fault): um passo,
processo ou definição de
dados incorreto
•Erro (error): se caracteriza
por um estado inconsistente
ou inesperado
•Falha (failure): um
comportamento que difere
do comportamento
esperado.
13
SSC 0721 – Teste e Validação de Software – ICMC/USP – p. 15
DEFEITOS (BUGS)
14https://www.urbandictionary.com/define.php?term=It%27s%20not%20a%20bug%2C%20it%27s%20a%20feature
ABORDAGEM DE GESTÃO DA QUALIDADE
•A equipe deve:
• escolher e realizar a combinação certa de técnicas para:
• alcançar o nível de qualidade exigido
• dentro de restrições de custo
• projetar uma solução específica que atenda:
• o problema
• os requisitos
• o ambiente de desenvolvimento
15https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
16
QUALIDADE É MISSÃO DE TODOS.
QUALIDADE NÃO É UMA FASE DO SEU PROJETO.
17
EVOLUÇÃO DE SOFTWARE
>
MANUTENÇÃO
ATIVIDADES DE V&V
•Não podemos revelar e remover todas as falhas
•Não podem durar indefinidamente: queremos
saber se os produtos atendem aos requisitos de
qualidade
18https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
V&V NO LONGO PRAZO
•Atividades de “manutenção”/evolução incluem:
• análise de mudanças e extensões
• geração de novos conjuntos de testes para as funcionalidades
adicionadas
• re-execuções de testes para verificar a não regressão de software
• funcionalidades após mudanças e extensões
• rastreamento e análise de falhas
19https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
20
TIPOS DE TESTE
TIPOS DE TESTE (VISÃO GERAL)
21
Caixa-preta (Funcional)





Caixa-branca (Estrutural)





Caixa-cinza
TIPOS DE TESTE
• Unidade
• Integração
• Interface de
Usuário
• Aceitação
22
• Mutação
• Desempenho
• Estresse
• Segurança
23
TESTES DE UNIDADE
ESTRUTURA DE UMA CLASSE DE TESTES
•Os testes devem ser independentes:
• Uns dos outros
• Obs: padrão Chained Tests
• Do número de vezes que é executado
• De fatores externos
•Set Up: Prepara o ambiente para a execução do teste
•Tear Down: Limpa / Remove o ambiente
24
TESTES DE UNIDADE
•Unidade: módulo/classe ou função/
método
•Teste básico e muito importante
• Encontra muitos erros
•Não deve se preocupar com as
responsabilidades de outras unidades
•Caixa-branca
• Focando na funcionalidade
25
FRAMEWORKS PARA TESTES AUTOMATIZADOS
26https://selenium-by-arun.blogspot.com.br/2017/08/a-brief-overview-on-selenium-test.html
QUANDO ESCREVER TESTES
•Antes de escrever o código (Test First)
•Durante a implementação
•Antes de uma refatoração
•Quando um erro for encontrado: Escreva um teste que simule o erro e depois
corrija-o
•Quando um teste de aceitação falha, pode ser um sinal que testes de unidade estão
faltando
•Quando um usuário ou cliente encontra um erro, é um sinal que estão faltando
testes de unidade e de aceitação
27http://www.martinfowler.com/articles/continuousIntegration.html
QUANDO EXECUTAR TESTES
•A execução deve ser ágil
•Sempre que uma nova porção de código é criada
•À noite ou em uma máquina dedicada
•Assim que alterações são detectadas no repositório
•Lembre-se: é melhor escrever e executar testes
incompletos do que não executar testes completos
28http://www.martinfowler.com/articles/continuousIntegration.html
TESTES COM BANCOS DE DADOS
•DAOs, ORM, Queries, Stored
Procedures, Triggers
•BDs de desenvolvimento/teste
• Sujeira no BD:
• Transaction Rollback Teardown
• Table Truncation Teardown
• Concorrência: Database Sandbox
•BDs em memória
29
•Set Up e Tear Down são importantes:
•Setup do teste: coloque sua base de dados
em um estado conhecido antes de rodar os
testes sobre ela.
•Rode o teste: como em qualquer outro teste,
mas agora com o apoio de alguma database
regression testing tool
•Cheque o resultado: é preciso ser possível
obter os “dumps" das tabelas para que se
compare os resultados reais com os
esperados.
EX: DATABASE SANDBOX
30
http://xunitpatterns.com/Database%20Sandbox.html
P: Como desenvolvemos e testamos
software que depende de um banco
de dados?
R: Fornecemos um banco de dados de
teste separado para cada
desenvolvedor ou testador.
QUER SABER MAIS SOBRE TESTES EM BANCO DE DADOS?
31
SITES/LITERATURA RECOMENDADA:
http://www.agiledata.org/essays/databaseTesting.html
DICAS
•Particionamento de domínios
•Valores Limites:
• Números: 0, -1, 1, muito pequenos, muito grandes
• Strings: nula, vazia, pequenas, grandes
• Coleções: nula, vazia, cheia
•Testes aleatórios
•Em geral, não testamos get/set (muito triviais)
32
DICAS (2)
•Internas: Testar a classe que usa é
suficiente
•Abstratas: Instanciar uma subclasse e
chamar os métodos da classe mãe
•Classes simples de armazenamento de
dados não precisam ser testadas
33
34
OUTROS TIPOS DE TESTE
TESTES DE SOFTWARE
•Teste de Software:
• Executar o programa a ser testado com alguma entrada e conferir visualmente os resultados
obtidos

•Teste Automatizado:
• Programa ou script executável que roda o programa a ser testado e faz verificações
automáticas em cima dos efeitos colaterais obtidos.

•Testar NÃO é depurar
• Testar é verificar a presença de erros
• Depurar é seguir o fluxo para identificar um erro conhecido
35Fonte: Curso Agilcoop Testes Automatizados IME-USP
TESTES DE INTEGRAÇÃO
•Testa a integração entre
unidades ou componentes

•Duas unidades podem
funcionar perfeitamente
individualmente, mas podem
haver falhas quando elas se
comunicam
36
TESTES DE INTERFACE
•Simula eventos do usuário e verifica o
estado da interface (FEST e FITNESSE)
•Módulos distintos e isolados podem
alterar o estado da interface
• Estado pode ficar inconsistente
• Sujeira na tela
•Integração ou Aceitação
37
TESTES DE ACEITAÇÃO E ATDD
•Testa as funcionalidades do sistema a partir do
ponto de vista do cliente
•Caixa-preta
•Data-Driven Test
•Teste de alto nível
•“Prova” para o cliente de que o software
funciona
•O cliente pode especificar os testes e os
desenvolvedores os implementam
38
TESTES DE REGRESSÃO
•Mesmo após liberado o software precisa ser
testado
•A cada manutenção é preciso verificar se o
software mantém suas características
•Se nenhum efeito colateral foi introduzido
•Técnicas de teste de regressão reutilizam
subconjuntos do conjunto de teste existente
•Ao longo do tempo, muito mais viáveis se
automatizados
39
TESTES FUMAÇA (SMOKE TESTS)
•Testes superficiais e abrangentes
•Realizados após a instalação do software
•Exemplo 1:
• Acesse uma página Web e verifique que não aparece
o número 404
40
TESTES DE DESEMPENHO
•Otimizar somente quando necessário
•Código claro traz mais benefícios do que
milésimos de segundo de otimização
•Começar pelos gargalos da aplicação
•Utilizar Profilers para detectar os
gargalos
• Arcabouços mostram o tempo de duração
dos testes
41
TESTES DE ESTRESSE
•Testar com grandes quantidades de dados gerados
automaticamente (ex: JMeter)
•Simulação de muitos usuários simultâneos
•Erros comuns:
• Overflow
• Falta de memória
•Alguns benefícios:
• Encontrar vazamento de memória
• Avaliar a capacidade de um ambiente
42
TESTES DE SEGURANÇA
•Útil principalmente para aplicações Web
• Aplicações expostas a usuários mal-intencionados
•Testar valores inesperados:
• Null
• Grande quantidade de dados
• Tipos de dados não esperados. Ex: string em um campo que
espera um inteiro
•Testes de estresse para lidar com ataques de negação de
serviço (DoS)
•Leia mais sobre testes de segurança no contexto Web na
OWASP (OWASP TOP 10 - você precisa estudar isso!)
43
44
AUTOMAÇÃO DE TESTES:
POR QUE ISSO IMPORTA
TANTO?
POR QUE AUTOMAÇÃO IMPORTA EM AGILE?
•Entre as práticas mais importantes
•A mais importante em muitos contextos
•Muitas das práticas dependem de testes automatizados:
• Refatoração
• Integração Contínua
• Propriedade Coletiva do Código
• Ainda: Design Simples, Releases Pequenos
45
O QUANTO TESTAR? O QUANTO AUTOMATIZAR?
•De maneira simplista e didática,
começamos pela pirâmide de
testes (Conceito do Mike Cohn).
•O importante é manter em
mente: 1) escreva muitos
pequenos testes de unidade e 2)
escreva alguns testes de
granularidade mediana e 3)
escreva poucos testes de alto
nível que teste o sistema de
ponta a ponta.
46https://martinfowler.com/articles/practical-test-pyramid.html
ALGUNS TIMES CAEM NO ANTI-PADRÃO CONE DE SORVETE
•Pesadelo para qualquer
time ágil
• Impossível confiar na
estabilidade da sua base
de código (com inúmeros
commits e refactorings) sem
uma malha considerável de
teste automatizável)
47https://martinfowler.com/articles/practical-test-pyramid.html
48
MÉTRICAS E TESTES
MÉTRICAS (ISO/IEC/IEEE, 2010)
•Métrica: medida quantitativa do grau em que um sistema, um
componente, ou processo possui um determinado atributo.
•Métrica de Produto: "Métrica usada para medir uma característica
de qualquer produto intermediário ou nal resultante do processo
de desenvolvimento de software".
•Métrica de Processo: "Métrica usada para medir características de
métodos, técnicas e ferramentas empregadas no desenvolvimento,
implementação e manutenção de sistemas de software".
49
Auri Marcelo Rizzo Vincenzi, Marcio Eduardo Delamaro e Jose Carlos Maldonado. Analise Estática e Métricas: Ênfase em
Qualidade de Produto. ICMC USP e UFG
AUTOMAÇÃO DE MÉTRICAS
•Existem iniciativas de automação da coleta de diferentes tipos
de métricas.
•Maioria destinada à coleta de métricas de produto a partir do
código fonte.
• Uma dessas iniciativas e o projeto Mezuro (http://mezuro.org/)
(Meirelles, 2013)
• Outra ferramenta bastante conhecida (métricas estáticas e dinâmicas)
em um mesmo ambiente: SonarQube (http://www.sonarqube.org/).
50
Meirelles, P. Monitoramento de métricas de código-fonte em projetos de software livre. Tese de doutoramento, 2013. Instituto de Matemática e
Estatística Universidade de São Paulo, São Paulo, SP, disponível em: http://www.teses.usp.br/teses/disponiveis/45/45134/
tde-27082013-090242/pt-br.php.
AUTOMAÇÃO DE ANÁLISE ESTÁTICA
•Eficaz para:
• Verificações rápidas e baratas de propriedades simples
• Exemplo: análises de fluxo de dados simples podem identificar padrões
anômalos
• Verificações caras necessárias para propriedades críticas
• Exemplo: ferramenta de verificação de estado finito para encontrar
falhas de sincronização
51
MÉTRICA E FERRAMENTA: COBERTURA DE CÓDIGO
•Métrica Cobertura de Código (code coverage)
•Útil para guiar que testes fazer e os que não fazer
52
EXEMPLO DE ANÁLISE DE COBERTURA
53Figura: https://engenharia.elo7.com.br/cobertura-de-testes/
•Verde: linha de código testada
por algum teste automaQzado;
•Amarela: um cenário não foi
testado (ex: uma condição de
um if);
•Vermelha: código foi testado
por testes automaQzados.
OUTRAS MÉTRICAS
•Defeitos nos testes
•Defeitos após liberação
•Problemas abertos
•Questões abertas
•Tempo gasto corrigindo defeitos
•Defeitos incluídos após correção
•Cobertura de código
•Complexidade de código
•Custo do retrabalho
54
Leia mais sobre métricas de código na tese do Paulo Meirelles: http://www.teses.usp.br/teses/disponiveis/45/45134/
tde-27082013-090242/pt-br.php
EFEITO DISFUNCIONAIS DE MÉTRICAS
• Ao se criar uma métrica, é comum seres humanos se esquecerem do
objetivo original e passarem a perseguir um certo número/alvo: efeito
disfuncional de métricas.
• Este fenômeno também é conhecido como You Get What You Measure
(YGWYM) e Vanity Metrics (métricas que servem à vaidade)
• Exemplo: perseguir cobertura de testes de 95% —> programadores/as começam a codificar testes
sem assertion (!!!) apenas para ver o número aumentar —> péssima qualidade de código! —>
oposto do desejado com a métrica.
• Leia mais em: http://www.claudiamelo.org/wp-content/uploads/
2016/10/9maneirasdefalharcomKPIS.pdf
55
https://martinfowler.com/bliki/AssertionFreeTesting.html
MÉTRICAS ACIONÁVEIS VS MÉTRICAS DE VAIDADE
• Uma boa métrica conduz ação, conduz mudança positiva no time.
• Quando a métrica deixar de dirigir mudança, está na hora de
deixá-la.
• Métricas acionáveis também podem se tornar disfuncionais ao
longo do tempo, observar e evoluir a forma de medição.
• Há muito debate sobre esse tema, busque actionable and vanity
metrics para manter-se atualizada/o!
56
57
PADRÕES, ANTI-PADRÕES,
BOAS PRÁTICAS
PADRÕES DE TESTES DE UNIDADE
•Data-Driven Tests
•Generated Value
•Testcase Class
•Testcase Class per Class
•Testcase Class per Feature
•Unfinished Test Assertion
•...
58
http://xunitpatterns.com/
ANTI-PADRÕES DE TESTES
•Código dos Testes:
• Testes Obscuros
• Código Complexo: condições
• Difícil de testar
• Replicação de código de testes
• Lógica de testes em produção

59
• Cheiros de comportamento:
• Testes frágeis
• Intervenções manuais
• Testes lentos
http://xunitpatterns.com/
60
GESTÃO DA QUALIDADE
61
QUALIDADE É MISSÃO DE TODOS.
QUALIDADE NÃO É UMA FASE DO SEU PROJETO.
QUALIDADE AO LONGO DO DESENVOLVIMENTO
62
BACKLOG
• História INVEST foi
priorizada
KICK-OFF DA HISTÓRIA
• BAs DEVs QAs
DURANTE O
DESENVOLVIMENTO:
• DEVs
• QAs
DESK CHECKING
• BAs DEVs QAs checam
se a história está
pronta para QA
QUANDO UM DEFEITO/ERRO/FALHA FOR IDENTIFICADO
63
ENCONTREI DURANTE O
DESENVOLVIMENTO:
• resolva aqui mesmo,
não precisa “registrar"
um bug
• volte a história para
DEV
• se for um bug mais
simples e o cliente
concordar, pode ser
registrado e deixado
para depois.
• registre o defeito e
gerencie
ENCONTREI DURANTE
TESTES/QA:
ENCONTREI DEPOIS DE
PRONTO:
GERÊNCIA DE DEFEITOS
• Registro:
• Unique identifier (generated automatically by
the tool)
• Product / project name
• Defect description
• Priority
• Type / classification
• State
• Name of the author of this entry
• Product version
• Classificação
• Requirements incorrect or misinterpreted
• A Design error
• An Implementation error
• Misunderstanding of external environment
• Error due to previous miscorrection of an error
64
• Acompanhamento
(Tracking)
• Priorização
• Visibilidade aos interessados
• Foco em entregar
FERRAMENTAS PARA GERÊNCIA DE DEFEITOS
• Apóiam o registro e o
tracking
• Possibilitam a geração de
métricas para melhoria de
processo
• Exemplos:
65
REFERÊNCIAS
•Tech Talk ministrada na UnB (2018/01): COMO EU APRENDI QUE TESTAR É IMPORTANTE? Prof.
Dr. Maurício Aniche, TU Delft. www.mauricioaniche.com/talks/2018/unb.html
•Lisa Crispin, Janet Gregory. Agile Testing, "Agile Testing: A Practical Guide for Testers and Agile
Teams”, Addison-Wesley Signature Series (Cohn), 2008.
•Gerard Meszaros, “xUnit Test Patterns, Refactoring Test Code”, Addison-Wesley, 2007.
•Authors Mauro Pezzè, Michal Young. "Software testing and analysis: process, principles, and
techniques". Wiley, 2008. Livro online: http://ix.cs.uoregon.edu/~michal/book/
•Robert V. Binder, “Testing Object-Oriented Systems”, Addison-Wesley Professional, 1999.
•L. Crispin, T. House, “Testing Extreme Programming”, Addison-Wesley, 2005.
•R. Mugridge, W. Cunningham, “Fit for Developing Software”, Prentice Hall, 2006.
•M. Delamaro, J. Maldonado, M. Jino, “Introdução ao Teste de Software”, Campus, 2007.
66
MAIS MATERIAIS SOBRE CODE REVIEW/INSPEÇÃO
•Examples of Code Review Checklists and Guides https://medium.com/@andreigridnev/examples-of-code-
review-checklists-and-guides-2dfed082a86d
•How We Do Code Review https://blogs.msdn.microsoft.com/vsappcenter/how-the-visual-studio-mobile-
center-team-does-code-review/
•Characteristics of Useful Code Reviews: An Empirical Study at Microsoft https://www.microsoft.com/en-
us/research/publication/characteristics-of-useful-code-reviews-an-empirical-study-at-microsoft/
• Veja também a apresentação: https://www.slideshare.net/mgreiler/on-to-code-review-lessons-learned-at-microsoft
•Exemplo de Desk Check: https://sites.google.com/a/campioncollege.com/it_eveningschoool/problem-
solving-and-programming/desk-check-guide
•Inspeção de Fagan: M. E. Fagan, "Design and code inspections to reduce errors in program development,"
in IBM Systems Journal, vol. 38, no. 2.3, pp. 258-287, 1999
•Exemplo de checklist de inspeção: http://teaching.csse.uwa.edu.au/units/CITS2220/readings/
JavaInspectionCheckList.pdf
67
CLAUDIA MELOPEOPLE TECHNOLOGY RESEARCHER
@claudia_melo
claudiamelo.org @claudiameloblog
/claudiamelo

Mais conteúdo relacionado

Mais procurados

Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville minastestingconference
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizadoselliando dias
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de SoftwareLeinylson Fontinele
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação webCentro Paula Souza
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareRonney Moreira de Castro
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitoselliando dias
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoSandy Maciel
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geralpaulo peres
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Camilo Ribeiro
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de ConfiguraçãoWagner Zaparoli
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de SoftwareCloves da Rocha
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilElias Nogueira
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais okMarcos Morais de Sousa
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScriptBruno Catão
 
Aula 3 técnicas de teste de software1
Aula 3   técnicas de teste de software1Aula 3   técnicas de teste de software1
Aula 3 técnicas de teste de software1Tiago Vizoto
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraTaís Dall'Oca
 

Mais procurados (20)

Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville Implantação de um Processo de Teste de Software - Randerson Melville
Implantação de um Processo de Teste de Software - Randerson Melville
 
Introdução a Testes Automatizados
Introdução a Testes AutomatizadosIntrodução a Testes Automatizados
Introdução a Testes Automatizados
 
Aula 1 - Introdução a Engenharia de Software
Aula 1 -  Introdução a Engenharia de SoftwareAula 1 -  Introdução a Engenharia de Software
Aula 1 - Introdução a Engenharia de Software
 
01 Introdução à programação web
01 Introdução à programação web01 Introdução à programação web
01 Introdução à programação web
 
Conceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de softwareConceitos de básicos de qualidade de software
Conceitos de básicos de qualidade de software
 
Analise de Requisitos
Analise de RequisitosAnalise de Requisitos
Analise de Requisitos
 
Noções em teste de software e introdução a automação
Noções em teste de software e introdução a automaçãoNoções em teste de software e introdução a automação
Noções em teste de software e introdução a automação
 
Teste de Software
Teste de SoftwareTeste de Software
Teste de Software
 
Testes De Software - Uma Visão Geral
Testes De Software - Uma Visão GeralTestes De Software - Uma Visão Geral
Testes De Software - Uma Visão Geral
 
Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade Teste de Software Introdução à Qualidade
Teste de Software Introdução à Qualidade
 
Gerência de Configuração
Gerência de ConfiguraçãoGerência de Configuração
Gerência de Configuração
 
Introdução à Qualidade de Software
Introdução à Qualidade de SoftwareIntrodução à Qualidade de Software
Introdução à Qualidade de Software
 
Papel do QA na Transformação Ágil
Papel do QA na Transformação ÁgilPapel do QA na Transformação Ágil
Papel do QA na Transformação Ágil
 
1 requisitos funcionais e não funcionais ok
1  requisitos funcionais e não funcionais ok1  requisitos funcionais e não funcionais ok
1 requisitos funcionais e não funcionais ok
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Introdução a JavaScript
Introdução a JavaScriptIntrodução a JavaScript
Introdução a JavaScript
 
Aula 3 técnicas de teste de software1
Aula 3   técnicas de teste de software1Aula 3   técnicas de teste de software1
Aula 3 técnicas de teste de software1
 
Palestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreiraPalestra Teste de Software: princípios, ferramentas e carreira
Palestra Teste de Software: princípios, ferramentas e carreira
 
Exemplo de Plano de testes
Exemplo de Plano de testes Exemplo de Plano de testes
Exemplo de Plano de testes
 
Qualidade de software
Qualidade de softwareQualidade de software
Qualidade de software
 

Semelhante a Introdução à Qualidade e Testes Ágeis de Software

Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoJoeldson Costa Damasceno
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IJoão Lourenço
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxRoberto Nunes
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de TestesUFPA
 
Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Lorena Caldas
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixCris Fidelix
 
Integrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareIntegrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareConviso Application Security
 
Ciclo de vida de testes implementado v2
Ciclo de vida de testes implementado   v2Ciclo de vida de testes implementado   v2
Ciclo de vida de testes implementado v2douglasdc7m
 
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...SegInfo
 
Testar é tão fácil que até minha mãe testaria!
Testar é tão fácil que até minha mãe testaria!Testar é tão fácil que até minha mãe testaria!
Testar é tão fácil que até minha mãe testaria!Laís Camargo
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptxAnaKlyssia1
 
Introdução aos fundamentos de teste de software 3
Introdução aos fundamentos de teste de software 3Introdução aos fundamentos de teste de software 3
Introdução aos fundamentos de teste de software 3Alain Ageev, SFPC
 

Semelhante a Introdução à Qualidade e Testes Ágeis de Software (20)

Teste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e ValidaçãoTeste de software - Processo de Verificação e Validação
Teste de software - Processo de Verificação e Validação
 
Introdução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade IIntrodução a Testes de Software - Unidade I
Introdução a Testes de Software - Unidade I
 
O que é Teste de Software?
O que é Teste de Software?O que é Teste de Software?
O que é Teste de Software?
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Teste de software
Teste de software Teste de software
Teste de software
 
Aula - Teste de Software
Aula - Teste de SoftwareAula - Teste de Software
Aula - Teste de Software
 
Automação de Testes - How to do It Right
Automação de Testes - How to do It RightAutomação de Testes - How to do It Right
Automação de Testes - How to do It Right
 
Gerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptxGerenciamento da Qualidade de Software 4.pptx
Gerenciamento da Qualidade de Software 4.pptx
 
Engenharia de Testes
Engenharia de TestesEngenharia de Testes
Engenharia de Testes
 
Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1Estratégias e Técnicas de Testes - Parte1
Estratégias e Técnicas de Testes - Parte1
 
Teste de software
Teste de softwareTeste de software
Teste de software
 
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane FidelixIntrodução a Engenharia de Software - Prof.ª Cristiane Fidelix
Introdução a Engenharia de Software - Prof.ª Cristiane Fidelix
 
Integrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de softwareIntegrando testes de segurança ao processo de desenvolvimento de software
Integrando testes de segurança ao processo de desenvolvimento de software
 
Brisa Qualidade e Testes de software
Brisa   Qualidade e Testes de softwareBrisa   Qualidade e Testes de software
Brisa Qualidade e Testes de software
 
Apresentação testes white box
Apresentação testes white boxApresentação testes white box
Apresentação testes white box
 
Ciclo de vida de testes implementado v2
Ciclo de vida de testes implementado   v2Ciclo de vida de testes implementado   v2
Ciclo de vida de testes implementado v2
 
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
Utilizando padroes abertos para coleta de informacoes e assessment em ativos ...
 
Testar é tão fácil que até minha mãe testaria!
Testar é tão fácil que até minha mãe testaria!Testar é tão fácil que até minha mãe testaria!
Testar é tão fácil que até minha mãe testaria!
 
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx01 UNIDADE I -  Princípios, pilares e modelos de teste de software.pptx
01 UNIDADE I - Princípios, pilares e modelos de teste de software.pptx
 
Introdução aos fundamentos de teste de software 3
Introdução aos fundamentos de teste de software 3Introdução aos fundamentos de teste de software 3
Introdução aos fundamentos de teste de software 3
 

Mais de Claudia Melo

Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...Claudia Melo
 
Introdução a Métodos Ágeis
Introdução a Métodos ÁgeisIntrodução a Métodos Ágeis
Introdução a Métodos ÁgeisClaudia Melo
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágilClaudia Melo
 
Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1Claudia Melo
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Claudia Melo
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de SoftwareClaudia Melo
 
O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0Claudia Melo
 
O papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, ScopusO papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, ScopusClaudia Melo
 
Diálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação DigitalDiálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação DigitalClaudia Melo
 
Ethics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and EntrepreneursEthics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and EntrepreneursClaudia Melo
 
A Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development TechnologiesA Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development TechnologiesClaudia Melo
 
CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação Claudia Melo
 
Ethics and sustainability for techies
Ethics and sustainability for techiesEthics and sustainability for techies
Ethics and sustainability for techiesClaudia Melo
 
Princípios da Gestão Ágil
Princípios da Gestão ÁgilPrincípios da Gestão Ágil
Princípios da Gestão ÁgilClaudia Melo
 
Exploring the frontiers of Agile Development in the Digital Era
 Exploring the frontiers of Agile Development in the Digital Era Exploring the frontiers of Agile Development in the Digital Era
Exploring the frontiers of Agile Development in the Digital EraClaudia Melo
 
The Web of Gendered Innovations
The Web of Gendered InnovationsThe Web of Gendered Innovations
The Web of Gendered InnovationsClaudia Melo
 
9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIs9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIsClaudia Melo
 
Ser ágil no mundo de tecnologia
Ser ágil no mundo de tecnologiaSer ágil no mundo de tecnologia
Ser ágil no mundo de tecnologiaClaudia Melo
 
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...Claudia Melo
 
Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software LeanMinicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software LeanClaudia Melo
 

Mais de Claudia Melo (20)

Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
Ethical Decisions in a Wicked World: The Role of Technologists, Entrepreneurs...
 
Introdução a Métodos Ágeis
Introdução a Métodos ÁgeisIntrodução a Métodos Ágeis
Introdução a Métodos Ágeis
 
Gerência de configuração ágil
Gerência de configuração ágilGerência de configuração ágil
Gerência de configuração ágil
 
Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1Requisitos ágeis - Parte 1
Requisitos ágeis - Parte 1
 
Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)Introdução à Programação Extrema (Extreme Programming - XP)
Introdução à Programação Extrema (Extreme Programming - XP)
 
Introdução à Engenharia de Software
Introdução à Engenharia de SoftwareIntrodução à Engenharia de Software
Introdução à Engenharia de Software
 
O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0O ideal feminino e a computação v2.0
O ideal feminino e a computação v2.0
 
O papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, ScopusO papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
O papel da Agilidade na Economia Digital Descrição, Agile Day, Scopus
 
Diálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação DigitalDiálogo TCU: Governos em Transformação Digital
Diálogo TCU: Governos em Transformação Digital
 
Ethics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and EntrepreneursEthics and Sustainability for Techies and Entrepreneurs
Ethics and Sustainability for Techies and Entrepreneurs
 
A Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development TechnologiesA Method for Evaluating End-User Development Technologies
A Method for Evaluating End-User Development Technologies
 
CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação CSBC'2017 - Diversidade de Gênero na Computação
CSBC'2017 - Diversidade de Gênero na Computação
 
Ethics and sustainability for techies
Ethics and sustainability for techiesEthics and sustainability for techies
Ethics and sustainability for techies
 
Princípios da Gestão Ágil
Princípios da Gestão ÁgilPrincípios da Gestão Ágil
Princípios da Gestão Ágil
 
Exploring the frontiers of Agile Development in the Digital Era
 Exploring the frontiers of Agile Development in the Digital Era Exploring the frontiers of Agile Development in the Digital Era
Exploring the frontiers of Agile Development in the Digital Era
 
The Web of Gendered Innovations
The Web of Gendered InnovationsThe Web of Gendered Innovations
The Web of Gendered Innovations
 
9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIs9 Maneiras de Falhar com KPIs
9 Maneiras de Falhar com KPIs
 
Ser ágil no mundo de tecnologia
Ser ágil no mundo de tecnologiaSer ágil no mundo de tecnologia
Ser ágil no mundo de tecnologia
 
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
Governos em transformação digital: novas tecnologias e métodos, velhos desafi...
 
Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software LeanMinicurso: Uma Introdução ao Desenvolvimento de Software Lean
Minicurso: Uma Introdução ao Desenvolvimento de Software Lean
 

Introdução à Qualidade e Testes Ágeis de Software

  • 1. 1 ENGENHARIA DE SOFTWARE - AULA 07 INTRODUÇÃO À QUALIDADE E TESTES (ÁGEIS) DE SOFTWARE PROF. DRA. CLAUDIA MELO 09/Mai/2018 @claudia_melo claudiamelo.org
  • 2. ALGUMAS PERGUNTAS QUE MOTIVAM ESTA AULA •Como podemos avaliar se um produto está PRONTO? •Como sei que um produto digital tem qualidade? Se é suficientemente BOM? •Como podemos controlar a qualidade de entregas sucessivas de software? •Como o próprio processo de desenvolvimento pode ser melhorado? •Quando as atividades de garantia e controle da qualidade começam? Quando estão completas? •Quais técnicas específicas devem ser aplicadas durante o desenvolvimento? 2
  • 3. 3 O QUE É QUALIDADE (DE SOFTWARE)?
  • 4. O QUE É QUALIDADE DE SOFTWARE? •“Um produto de software apresenta qualidade dependendo do grau de satisfação das necessidades dos clientes sob todos os aspectos do produto” [Sanders,1994]. •“Qualidade de software é a conformidade a requisitos funcionais e de desempenho que foram explicitamente declarados, a padrões de desenvolvimento claramente documentados, e a características implícitas que são esperadas de todo software desenvolvido por profissionais” [Pressman, 1994]. 4
  • 5. IMPORTÂNCIA DA QUALIDADE • Seres humanos erram, por isso, introduzimos defeitos que geram inúmeras consequências negativas, de desconfortos nos usuários até catástrofes. 5 http://csfieldguide.org.nz/releases/2.4.1/en/chapters/software-engineering.html
  • 6. SOBRE DEFEITOS/ERROS ICÔNICOS DA HISTÓRIA 6 Leia mais: hYps://www.computerworld.com/ar[cle/2515483/ enterprise-applica[ons/epic-failures--11-infamous- soaware-bugs.html hYp://www.cse.psu.edu/~gxt29/bug/soawarebug.html hYp://news.bbc.co.uk/2/hi/science/nature/ 2570053.stm hYps://spectrum.ieee.org/tech-history/heroic-failures/ the-space-shuYle-a-case-of-subjec[ve-engineering
  • 7. CUSTO DE NÃO TESTAR CEDO 7http://www.abeacha.com/NIST_press_release_bugs_cost.htm
  • 8. VERIFICAÇÃO E VALIDAÇÃO DE SOFTWARE •V & V é considerada uma disciplina coerente: "V & V é uma disciplina de engenharia de sistemas que avalia o software em um contexto de sistemas, relativo a todos os elementos do sistema de hardware, usuários e outros softwares”. •(from Software Verification and Validation: Its Role in Computer Assurance and Its Relationship with Software Project Management Standards, by Dolores R. Wallace and Roger U. Fujii, NIST Special Publication 500-165) 8 https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
  • 9. V&V: TIPOS DE ATIVIDADES 9 http://www.easterbrook.ca/steve/2010/11/the-difference-between-verification-and-validation/
  • 10. V&V: PECULIARIDADES DO SOFTWARE •O software possui algumas características que tornam o V & V particularmente difícil: • Muitos requisitos de qualidade diferentes • Evolução (e deterioração) da estrutura • Não-linearidade inerente • Distribuição irregular de falhas •Exemplo • Se um elevador puder transportar com segurança uma carga de 1000 kg, ele também pode transportar com segurança qualquer carga menor; • Se um procedimento classificar corretamente um conjunto de 256 elementos, ele poderá falhar em um conjunto de 255 ou 53 ou 12 elementos, bem como em 257 ou 1023 10 https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
  • 11. QUALIDADE DE SOFTWARE: ANÁLISES ESTÁTICA E DINÂMICA •Qualidade de Software é intimamente ligada às atividades de Verificação e Validação (Anderson, 2008). •Atividades de analise estática e dinâmica podem ser empregadas conjuntamente para maximizar a detecção de defeitos em produtos de software. • Análise estática: Processo de avaliar um sistema ou componente com base em sua forma, estrutura, conteúdo ou documentação. • Análise dinâmica: Processo de avaliar um sistema ou componente com base em seu comportamento durante a execução". 11 Anderson, P. The use and limitations of static-analysis tools to improve software quality. CROSSTALK The Journal of Defense Software Engineering, v. 21, n. 6, p. 18{21, 2008. Auri Marcelo Rizzo Vincenzi, Marcio Eduardo Delamaro e Jose Carlos Maldonado. Análise Estática e Métricas: Ênfase em Qualidade de Produto. ICMC USP e UFG.
  • 12. ANÁLISE ESTÁTICA • Realizada sem a execução do programa; • Utilizada na avaliação de artefatos como documento de requisitos, diagramas, código fonte e outros; • Em geral, também não é possível provar a correção do artefato por meio de técnicas de analise estática. 12 Auri Marcelo Rizzo Vincenzi, Marcio Eduardo Delamaro e Jose Carlos Maldonado. Analise Estática e Métricas: Ênfase em Qualidade de Produto. ICMC USP e UFG •Dentre as principais atividades de análise estática estão (ISO/IEC/IEEE, 2010): •Inspeção; •Revisão Informal; •Leitura Baseada em Perspectiva (Basili et al., 1996) •Walk-through; •Desk checking. •Em geral, também não é possível provar a correção do artefato por meio de técnicas de analise estática.
  • 13. DEFEITO, ERRO E FALHA •Defeito (fault): um passo, processo ou definição de dados incorreto •Erro (error): se caracteriza por um estado inconsistente ou inesperado •Falha (failure): um comportamento que difere do comportamento esperado. 13 SSC 0721 – Teste e Validação de Software – ICMC/USP – p. 15
  • 15. ABORDAGEM DE GESTÃO DA QUALIDADE •A equipe deve: • escolher e realizar a combinação certa de técnicas para: • alcançar o nível de qualidade exigido • dentro de restrições de custo • projetar uma solução específica que atenda: • o problema • os requisitos • o ambiente de desenvolvimento 15https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
  • 16. 16 QUALIDADE É MISSÃO DE TODOS. QUALIDADE NÃO É UMA FASE DO SEU PROJETO.
  • 18. ATIVIDADES DE V&V •Não podemos revelar e remover todas as falhas •Não podem durar indefinidamente: queremos saber se os produtos atendem aos requisitos de qualidade 18https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
  • 19. V&V NO LONGO PRAZO •Atividades de “manutenção”/evolução incluem: • análise de mudanças e extensões • geração de novos conjuntos de testes para as funcionalidades adicionadas • re-execuções de testes para verificar a não regressão de software • funcionalidades após mudanças e extensões • rastreamento e análise de falhas 19https://www.st.cs.uni-saarland.de/edu/automatedtestingverification12/slides/01-IntroductionToSoftwareTesting.pdf
  • 21. TIPOS DE TESTE (VISÃO GERAL) 21 Caixa-preta (Funcional)
 
 
 Caixa-branca (Estrutural)
 
 
 Caixa-cinza
  • 22. TIPOS DE TESTE • Unidade • Integração • Interface de Usuário • Aceitação 22 • Mutação • Desempenho • Estresse • Segurança
  • 24. ESTRUTURA DE UMA CLASSE DE TESTES •Os testes devem ser independentes: • Uns dos outros • Obs: padrão Chained Tests • Do número de vezes que é executado • De fatores externos •Set Up: Prepara o ambiente para a execução do teste •Tear Down: Limpa / Remove o ambiente 24
  • 25. TESTES DE UNIDADE •Unidade: módulo/classe ou função/ método •Teste básico e muito importante • Encontra muitos erros •Não deve se preocupar com as responsabilidades de outras unidades •Caixa-branca • Focando na funcionalidade 25
  • 26. FRAMEWORKS PARA TESTES AUTOMATIZADOS 26https://selenium-by-arun.blogspot.com.br/2017/08/a-brief-overview-on-selenium-test.html
  • 27. QUANDO ESCREVER TESTES •Antes de escrever o código (Test First) •Durante a implementação •Antes de uma refatoração •Quando um erro for encontrado: Escreva um teste que simule o erro e depois corrija-o •Quando um teste de aceitação falha, pode ser um sinal que testes de unidade estão faltando •Quando um usuário ou cliente encontra um erro, é um sinal que estão faltando testes de unidade e de aceitação 27http://www.martinfowler.com/articles/continuousIntegration.html
  • 28. QUANDO EXECUTAR TESTES •A execução deve ser ágil •Sempre que uma nova porção de código é criada •À noite ou em uma máquina dedicada •Assim que alterações são detectadas no repositório •Lembre-se: é melhor escrever e executar testes incompletos do que não executar testes completos 28http://www.martinfowler.com/articles/continuousIntegration.html
  • 29. TESTES COM BANCOS DE DADOS •DAOs, ORM, Queries, Stored Procedures, Triggers •BDs de desenvolvimento/teste • Sujeira no BD: • Transaction Rollback Teardown • Table Truncation Teardown • Concorrência: Database Sandbox •BDs em memória 29 •Set Up e Tear Down são importantes: •Setup do teste: coloque sua base de dados em um estado conhecido antes de rodar os testes sobre ela. •Rode o teste: como em qualquer outro teste, mas agora com o apoio de alguma database regression testing tool •Cheque o resultado: é preciso ser possível obter os “dumps" das tabelas para que se compare os resultados reais com os esperados.
  • 30. EX: DATABASE SANDBOX 30 http://xunitpatterns.com/Database%20Sandbox.html P: Como desenvolvemos e testamos software que depende de um banco de dados? R: Fornecemos um banco de dados de teste separado para cada desenvolvedor ou testador.
  • 31. QUER SABER MAIS SOBRE TESTES EM BANCO DE DADOS? 31 SITES/LITERATURA RECOMENDADA: http://www.agiledata.org/essays/databaseTesting.html
  • 32. DICAS •Particionamento de domínios •Valores Limites: • Números: 0, -1, 1, muito pequenos, muito grandes • Strings: nula, vazia, pequenas, grandes • Coleções: nula, vazia, cheia •Testes aleatórios •Em geral, não testamos get/set (muito triviais) 32
  • 33. DICAS (2) •Internas: Testar a classe que usa é suficiente •Abstratas: Instanciar uma subclasse e chamar os métodos da classe mãe •Classes simples de armazenamento de dados não precisam ser testadas 33
  • 35. TESTES DE SOFTWARE •Teste de Software: • Executar o programa a ser testado com alguma entrada e conferir visualmente os resultados obtidos
 •Teste Automatizado: • Programa ou script executável que roda o programa a ser testado e faz verificações automáticas em cima dos efeitos colaterais obtidos.
 •Testar NÃO é depurar • Testar é verificar a presença de erros • Depurar é seguir o fluxo para identificar um erro conhecido 35Fonte: Curso Agilcoop Testes Automatizados IME-USP
  • 36. TESTES DE INTEGRAÇÃO •Testa a integração entre unidades ou componentes
 •Duas unidades podem funcionar perfeitamente individualmente, mas podem haver falhas quando elas se comunicam 36
  • 37. TESTES DE INTERFACE •Simula eventos do usuário e verifica o estado da interface (FEST e FITNESSE) •Módulos distintos e isolados podem alterar o estado da interface • Estado pode ficar inconsistente • Sujeira na tela •Integração ou Aceitação 37
  • 38. TESTES DE ACEITAÇÃO E ATDD •Testa as funcionalidades do sistema a partir do ponto de vista do cliente •Caixa-preta •Data-Driven Test •Teste de alto nível •“Prova” para o cliente de que o software funciona •O cliente pode especificar os testes e os desenvolvedores os implementam 38
  • 39. TESTES DE REGRESSÃO •Mesmo após liberado o software precisa ser testado •A cada manutenção é preciso verificar se o software mantém suas características •Se nenhum efeito colateral foi introduzido •Técnicas de teste de regressão reutilizam subconjuntos do conjunto de teste existente •Ao longo do tempo, muito mais viáveis se automatizados 39
  • 40. TESTES FUMAÇA (SMOKE TESTS) •Testes superficiais e abrangentes •Realizados após a instalação do software •Exemplo 1: • Acesse uma página Web e verifique que não aparece o número 404 40
  • 41. TESTES DE DESEMPENHO •Otimizar somente quando necessário •Código claro traz mais benefícios do que milésimos de segundo de otimização •Começar pelos gargalos da aplicação •Utilizar Profilers para detectar os gargalos • Arcabouços mostram o tempo de duração dos testes 41
  • 42. TESTES DE ESTRESSE •Testar com grandes quantidades de dados gerados automaticamente (ex: JMeter) •Simulação de muitos usuários simultâneos •Erros comuns: • Overflow • Falta de memória •Alguns benefícios: • Encontrar vazamento de memória • Avaliar a capacidade de um ambiente 42
  • 43. TESTES DE SEGURANÇA •Útil principalmente para aplicações Web • Aplicações expostas a usuários mal-intencionados •Testar valores inesperados: • Null • Grande quantidade de dados • Tipos de dados não esperados. Ex: string em um campo que espera um inteiro •Testes de estresse para lidar com ataques de negação de serviço (DoS) •Leia mais sobre testes de segurança no contexto Web na OWASP (OWASP TOP 10 - você precisa estudar isso!) 43
  • 44. 44 AUTOMAÇÃO DE TESTES: POR QUE ISSO IMPORTA TANTO?
  • 45. POR QUE AUTOMAÇÃO IMPORTA EM AGILE? •Entre as práticas mais importantes •A mais importante em muitos contextos •Muitas das práticas dependem de testes automatizados: • Refatoração • Integração Contínua • Propriedade Coletiva do Código • Ainda: Design Simples, Releases Pequenos 45
  • 46. O QUANTO TESTAR? O QUANTO AUTOMATIZAR? •De maneira simplista e didática, começamos pela pirâmide de testes (Conceito do Mike Cohn). •O importante é manter em mente: 1) escreva muitos pequenos testes de unidade e 2) escreva alguns testes de granularidade mediana e 3) escreva poucos testes de alto nível que teste o sistema de ponta a ponta. 46https://martinfowler.com/articles/practical-test-pyramid.html
  • 47. ALGUNS TIMES CAEM NO ANTI-PADRÃO CONE DE SORVETE •Pesadelo para qualquer time ágil • Impossível confiar na estabilidade da sua base de código (com inúmeros commits e refactorings) sem uma malha considerável de teste automatizável) 47https://martinfowler.com/articles/practical-test-pyramid.html
  • 49. MÉTRICAS (ISO/IEC/IEEE, 2010) •Métrica: medida quantitativa do grau em que um sistema, um componente, ou processo possui um determinado atributo. •Métrica de Produto: "Métrica usada para medir uma característica de qualquer produto intermediário ou nal resultante do processo de desenvolvimento de software". •Métrica de Processo: "Métrica usada para medir características de métodos, técnicas e ferramentas empregadas no desenvolvimento, implementação e manutenção de sistemas de software". 49 Auri Marcelo Rizzo Vincenzi, Marcio Eduardo Delamaro e Jose Carlos Maldonado. Analise Estática e Métricas: Ênfase em Qualidade de Produto. ICMC USP e UFG
  • 50. AUTOMAÇÃO DE MÉTRICAS •Existem iniciativas de automação da coleta de diferentes tipos de métricas. •Maioria destinada à coleta de métricas de produto a partir do código fonte. • Uma dessas iniciativas e o projeto Mezuro (http://mezuro.org/) (Meirelles, 2013) • Outra ferramenta bastante conhecida (métricas estáticas e dinâmicas) em um mesmo ambiente: SonarQube (http://www.sonarqube.org/). 50 Meirelles, P. Monitoramento de métricas de código-fonte em projetos de software livre. Tese de doutoramento, 2013. Instituto de Matemática e Estatística Universidade de São Paulo, São Paulo, SP, disponível em: http://www.teses.usp.br/teses/disponiveis/45/45134/ tde-27082013-090242/pt-br.php.
  • 51. AUTOMAÇÃO DE ANÁLISE ESTÁTICA •Eficaz para: • Verificações rápidas e baratas de propriedades simples • Exemplo: análises de fluxo de dados simples podem identificar padrões anômalos • Verificações caras necessárias para propriedades críticas • Exemplo: ferramenta de verificação de estado finito para encontrar falhas de sincronização 51
  • 52. MÉTRICA E FERRAMENTA: COBERTURA DE CÓDIGO •Métrica Cobertura de Código (code coverage) •Útil para guiar que testes fazer e os que não fazer 52
  • 53. EXEMPLO DE ANÁLISE DE COBERTURA 53Figura: https://engenharia.elo7.com.br/cobertura-de-testes/ •Verde: linha de código testada por algum teste automaQzado; •Amarela: um cenário não foi testado (ex: uma condição de um if); •Vermelha: código foi testado por testes automaQzados.
  • 54. OUTRAS MÉTRICAS •Defeitos nos testes •Defeitos após liberação •Problemas abertos •Questões abertas •Tempo gasto corrigindo defeitos •Defeitos incluídos após correção •Cobertura de código •Complexidade de código •Custo do retrabalho 54 Leia mais sobre métricas de código na tese do Paulo Meirelles: http://www.teses.usp.br/teses/disponiveis/45/45134/ tde-27082013-090242/pt-br.php
  • 55. EFEITO DISFUNCIONAIS DE MÉTRICAS • Ao se criar uma métrica, é comum seres humanos se esquecerem do objetivo original e passarem a perseguir um certo número/alvo: efeito disfuncional de métricas. • Este fenômeno também é conhecido como You Get What You Measure (YGWYM) e Vanity Metrics (métricas que servem à vaidade) • Exemplo: perseguir cobertura de testes de 95% —> programadores/as começam a codificar testes sem assertion (!!!) apenas para ver o número aumentar —> péssima qualidade de código! —> oposto do desejado com a métrica. • Leia mais em: http://www.claudiamelo.org/wp-content/uploads/ 2016/10/9maneirasdefalharcomKPIS.pdf 55 https://martinfowler.com/bliki/AssertionFreeTesting.html
  • 56. MÉTRICAS ACIONÁVEIS VS MÉTRICAS DE VAIDADE • Uma boa métrica conduz ação, conduz mudança positiva no time. • Quando a métrica deixar de dirigir mudança, está na hora de deixá-la. • Métricas acionáveis também podem se tornar disfuncionais ao longo do tempo, observar e evoluir a forma de medição. • Há muito debate sobre esse tema, busque actionable and vanity metrics para manter-se atualizada/o! 56
  • 58. PADRÕES DE TESTES DE UNIDADE •Data-Driven Tests •Generated Value •Testcase Class •Testcase Class per Class •Testcase Class per Feature •Unfinished Test Assertion •... 58 http://xunitpatterns.com/
  • 59. ANTI-PADRÕES DE TESTES •Código dos Testes: • Testes Obscuros • Código Complexo: condições • Difícil de testar • Replicação de código de testes • Lógica de testes em produção
 59 • Cheiros de comportamento: • Testes frágeis • Intervenções manuais • Testes lentos http://xunitpatterns.com/
  • 61. 61 QUALIDADE É MISSÃO DE TODOS. QUALIDADE NÃO É UMA FASE DO SEU PROJETO.
  • 62. QUALIDADE AO LONGO DO DESENVOLVIMENTO 62 BACKLOG • História INVEST foi priorizada KICK-OFF DA HISTÓRIA • BAs DEVs QAs DURANTE O DESENVOLVIMENTO: • DEVs • QAs DESK CHECKING • BAs DEVs QAs checam se a história está pronta para QA
  • 63. QUANDO UM DEFEITO/ERRO/FALHA FOR IDENTIFICADO 63 ENCONTREI DURANTE O DESENVOLVIMENTO: • resolva aqui mesmo, não precisa “registrar" um bug • volte a história para DEV • se for um bug mais simples e o cliente concordar, pode ser registrado e deixado para depois. • registre o defeito e gerencie ENCONTREI DURANTE TESTES/QA: ENCONTREI DEPOIS DE PRONTO:
  • 64. GERÊNCIA DE DEFEITOS • Registro: • Unique identifier (generated automatically by the tool) • Product / project name • Defect description • Priority • Type / classification • State • Name of the author of this entry • Product version • Classificação • Requirements incorrect or misinterpreted • A Design error • An Implementation error • Misunderstanding of external environment • Error due to previous miscorrection of an error 64 • Acompanhamento (Tracking) • Priorização • Visibilidade aos interessados • Foco em entregar
  • 65. FERRAMENTAS PARA GERÊNCIA DE DEFEITOS • Apóiam o registro e o tracking • Possibilitam a geração de métricas para melhoria de processo • Exemplos: 65
  • 66. REFERÊNCIAS •Tech Talk ministrada na UnB (2018/01): COMO EU APRENDI QUE TESTAR É IMPORTANTE? Prof. Dr. Maurício Aniche, TU Delft. www.mauricioaniche.com/talks/2018/unb.html •Lisa Crispin, Janet Gregory. Agile Testing, "Agile Testing: A Practical Guide for Testers and Agile Teams”, Addison-Wesley Signature Series (Cohn), 2008. •Gerard Meszaros, “xUnit Test Patterns, Refactoring Test Code”, Addison-Wesley, 2007. •Authors Mauro Pezzè, Michal Young. "Software testing and analysis: process, principles, and techniques". Wiley, 2008. Livro online: http://ix.cs.uoregon.edu/~michal/book/ •Robert V. Binder, “Testing Object-Oriented Systems”, Addison-Wesley Professional, 1999. •L. Crispin, T. House, “Testing Extreme Programming”, Addison-Wesley, 2005. •R. Mugridge, W. Cunningham, “Fit for Developing Software”, Prentice Hall, 2006. •M. Delamaro, J. Maldonado, M. Jino, “Introdução ao Teste de Software”, Campus, 2007. 66
  • 67. MAIS MATERIAIS SOBRE CODE REVIEW/INSPEÇÃO •Examples of Code Review Checklists and Guides https://medium.com/@andreigridnev/examples-of-code- review-checklists-and-guides-2dfed082a86d •How We Do Code Review https://blogs.msdn.microsoft.com/vsappcenter/how-the-visual-studio-mobile- center-team-does-code-review/ •Characteristics of Useful Code Reviews: An Empirical Study at Microsoft https://www.microsoft.com/en- us/research/publication/characteristics-of-useful-code-reviews-an-empirical-study-at-microsoft/ • Veja também a apresentação: https://www.slideshare.net/mgreiler/on-to-code-review-lessons-learned-at-microsoft •Exemplo de Desk Check: https://sites.google.com/a/campioncollege.com/it_eveningschoool/problem- solving-and-programming/desk-check-guide •Inspeção de Fagan: M. E. Fagan, "Design and code inspections to reduce errors in program development," in IBM Systems Journal, vol. 38, no. 2.3, pp. 258-287, 1999 •Exemplo de checklist de inspeção: http://teaching.csse.uwa.edu.au/units/CITS2220/readings/ JavaInspectionCheckList.pdf 67
  • 68. CLAUDIA MELOPEOPLE TECHNOLOGY RESEARCHER @claudia_melo claudiamelo.org @claudiameloblog /claudiamelo