Você está na página 1de 52
Processo de Teste de Software Aula 02 Profa. Cassia Nino cnino@unisinos.br 2015/1

Processo de Teste de Software

Aula 02

Profa. Cassia Nino

cnino@unisinos.br

2015/1

Desenvolvimento de Software

• Segundo estatísticas de mercado, para cada 100 horas realizadas no desenvolvimento de um software, gasta-se em média 30% do tempo em retrabalho

– Depende do nível de maturidade da empresa

gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa
gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa

Desenvolvimentode um software, gasta-se em média 30% do tempo em retrabalho – Depende do nível de

Retrabalhoum software, gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade

gasta-se em média 30% do tempo em retrabalho – Depende do nível de maturidade da empresa

Desenvolvimento de Software

• Perde-se dinheiro quando

– Quando não se sabe o percentual de retrabalho pelo não atendimento aos requisitos e o quanto isso custa

– Quando o produto de software, ou parte dele, tem de ser refeito ou consertado e quanto isso custa

– Quando não se sabe através de métricas claras e precisas quais são as principais áreas de produção que geram retrabalho e reparo

através de métricas claras e precisas quais são as principais áreas de produção que geram retrabalho

Desenvolvimento de Software

• Perde-se dinheiro quando

– Quando a empresa não executa contramedidas para neutrizar tais elementos impactantes do ciclo produtivo

– Quando os colaboradores e funcionários não conhecem os índices de produção

impactantes do ciclo produtivo – Quando os colaboradores e funcionários não conhecem os índices de produção
impactantes do ciclo produtivo – Quando os colaboradores e funcionários não conhecem os índices de produção

Desenvolvimento de Software

• Como determinar o retrabalho?

– Uso de métricas

• Questões importantes

Qual o retrabalho recorrente de levantamento de requisitos? especificações mal feitas? problemas de comunicação?
Qual o retrabalho recorrente de levantamento de requisitos? especificações mal feitas? problemas de comunicação?
Qual o retrabalho recorrente de levantamento de requisitos? especificações mal feitas? problemas de comunicação?

Qual o retrabalho recorrente de

Qual o retrabalho recorrente de levantamento de requisitos? especificações mal feitas? problemas de comunicação?

levantamento de requisitos?

especificações mal feitas?

de levantamento de requisitos? especificações mal feitas? problemas de comunicação? problemas na codificação?
problemas de comunicação? problemas na codificação?
problemas de comunicação? problemas na codificação?
problemas de comunicação? problemas na codificação?

problemas de comunicação?

problemas na codificação?

problemas de comunicação? problemas na codificação?

Desenvolvimento de Software

• De onde vem o retrabalho?

Falta de capacitação

Falta de direcionamento

Falta de planejamento

– Falta de monitoramento do progresso dos trabalhos

– Especificações incompletas ou mal feitas

– Ausência de controle de qualidade

– Ausência de critérios que definam a qualidade e a aceitação

Falta de um processo definido para os trabalhos

– Pouca ou nenhuma padronização

– Baixa ou nenhuma reutilização

Falta de um processo definido para os trabalhos – Pouca ou nenhuma padronização – Baixa ou

Desenvolvimento de Software

• Uso do teste para minimizar o retrabalho

– Erros que são encontrados antes custam menos para serem corrigidos

• Uso do teste para minimizar o retrabalho – Erros que são encontrados antes custam menos
• Uso do teste para minimizar o retrabalho – Erros que são encontrados antes custam menos

Desenvolvimento de Software

• Quem investe em teste

– Reduz em 70% o índice de retrabalho de correções de falhas em produção

– Reduz em 50% o tempo de homologação de uma nova versão

– Aumenta o índice de detecção de falhas em 90% antes da prodção

50% o tempo de homologação de uma nova versão – Aumenta o índice de detecção de

Desenvolvimento de Software

• Quem investe em teste

– Reduz em 70% o índice de retrabalho de correções de falhas em produção

A implantação de um processo formal de teste no ciclo produtivo otimiza as relações setoriais
A implantação de um processo
formal de teste no ciclo
produtivo otimiza as relações
setoriais e garante a cadência
do trabalho coorporativo

– Reduz em 50% o tempo de homologação de uma

nova versão

– Aumenta o índice de detecção de falhas em 90%

antes da prodção

50% o tempo de homologação de uma nova versão – Aumenta o índice de detecção de

Verificação, Validação e Teste de SW

Principal causa dos problemas nos softwares

Erro humano

• Solução: uso de ferramentas de Engenharia de Software

– Atividades de verificação, validação e teste de software (VV&T)

Tem como objetivo garantir que tanto o modo como o software está sendo construído quanto o produto gerado estejam de acordo com o especificado.

que tanto o modo como o software está sendo construído quanto o produto gerado estejam de

Verificação, Validação e Teste de SW

Verificação

– Estamos construindo certo o produto?

Validação

– Estamos construindo o produto certo?

Teste

– Executar um programa ou modelo utilizando entradas em particular para ver se seu comportamento está de acordo com o esperado

um programa ou modelo utilizando entradas em particular para ver se seu comportamento está de acordo

Verificação, Validação e Teste de SW

Verificação, Validação e Teste de SW Fonte: Young, Michal & Pezzè, Mauro. Teste e Análise de

Fonte: Young, Michal & Pezzè, Mauro. Teste e Análise de Software. Porto Alegre: Bookman, 2008.

Verificação, Validação e Teste de SW

Casos

– Do que estamos falando abaixo? Verificação, validação ou teste de software?

• Fulano revisou um documento de caso de uso e identificou que uma regra de negócio não foi considerada.

• Ciclano identificou que alguns desenvolvedores não estavam preenchendo o checklist, que garante que todas as atividades sejam realizadas.

• Beltrano acessou uma tela do sistema que está sendo desenvolvido e percebeu que um campo de data está aceitando a data 30/02.

acessou uma tela do sistema que está sendo desenvolvido e percebeu que um campo de data

Verificação, Validação e Teste de SW

Casos

– Do que estamos falando abaixo? Verificação, validação ou teste de software?

• Fulano revisou um documento de caso de uso e identificou que uma regra de negócio não foi considerada. → Validação

• Ciclano identificou que alguns desenvolvedores não estavam preenchendo o checklist, que garante que todas as atividades sejam realizadas. → Verificação

• Beltrano acessou uma tela do sistema que está sendo desenvolvido e percebeu que um campo de data está aceitando a data 30/02. → Teste

uma tela do sistema que está sendo desenvolvido e percebeu que um campo de data está

Verificação, Validação e Teste de SW

• Tipos de atividades

Estáticas

• Não requer a execução ou a existência de um programa ou modelo executável

Dinâmicas

• Baseiam-se na execução de um programa ou modelo

a existência de um programa ou modelo executável – Dinâmicas • Baseiam-se na execução de um

Alguns termos

• Erro, falha e defeito

Erro : ação humana que produz um resultado incorreto Falha : desvio do componente ou
Erro : ação humana que produz um resultado incorreto Falha : desvio do componente ou

Erro: ação humana que produz um resultado incorreto

Falha: desvio do componente ou sistema da entrega, resultado ou serviço esperado

Defeito: falha em um componente ou sistema que pode fazer com que este falhe ao desempenhar sua função, por exemplo, uma sentença incorreta ou uma definição de dados incorreta. Um defeito, se descoberto durante a execução, pode levar a falha do componente ou do sistema.

Alguns termos

• Erro, falha e defeito

– O ser humano comete ERRO (engano) que produz um DEFEITO (dano, bug), no código, em um software, sistema ou documento. Se um defeito no código for executado o sistema pode falhar ao tentar fazer o que devia (ou, algumas vezes, o que não devia) causando uma FALHA. Defeitos no software, sistema ou documentos resultam em falhas, mas nem sempre os defeitos causam falhas.

Syllabus - BSTQB

Defeitos no software, sistema ou documentos resultam em falhas, mas nem sempre os defeitos causam falhas.

Alguns termos

Defeito

– O QAI (Quality Assurance Institute) define três categorias de defeitos

Faltante (Missing): ocorre em virtude da falta parcial ou total de um requisito

Errado (Wrong): ocorre porque o requisito foi implementado incorretamente

Acréscimo (Extra): ocorre em virtude de um comportamento que não foi especificado no requisito

incorretamente • Acréscimo ( Extra ): ocorre em virtude de um comportamento que não foi especificado

Alguns termos

• Defeito

Há três tipo de bugs (de forma geral) 1) Quando não está fazendo algo que
Há três tipo de bugs (de forma geral)
1) Quando não está fazendo algo que deveria estar fazendo
2) Quando está fazendo algo que não deveria estar fazendo
3) Quando está fazendo algo que deveria estar fazendo,
mas parece errado
Identifique estes três tipos na figura abaixo

Teste de Software

O que é?

Verificar se o software está fazendo o que deveria fazer, de acordo com os seus requisitos

Processo de executar um programa ou sistema com a intenção de encontrar defeitos.”(teste negativo) [Myers, 1979]

“ Processo de executar um programa ou sistema com a intenção de encontrar defeitos. ”(teste negativo)

Qualquer atividade que a partir da avaliação de um atributo ou capacidade de um programa ou sistema seja possível determinar se ele alcança os resultados desejados.” [Hetzel, 1988]

capacidade de um programa ou sistema seja possível determinar se ele alcança os resultados desejados. ”
capacidade de um programa ou sistema seja possível determinar se ele alcança os resultados desejados. ”

Teste e Qualidade

• O teste auxilia a obtenção de uma medida da qualidade do software em termos de defeitos encontrados por características e requisitos funcionais e não funcionais do software (confiabilidade, usabilidade, eficiência e manutenibilidade) – ISO 9126

funcionais e não funcionais do software (confiabilidade, usabilidade, eficiência e manutenibilidade) – ISO 9126
funcionais e não funcionais do software (confiabilidade, usabilidade, eficiência e manutenibilidade) – ISO 9126

Fatos sobre o Teste de Software

Segundo Pressman (2002)

a) Todos os testes devem ser relacionados aos requisitos do cliente.

b) Os testes devem ser planejados muito antes do início do teste.

c) O Princípio de Pareto se aplica ao teste de software, isto é, 80% de todos os erros descobertos durante o teste vão provavelmente ser relacionados a 20 % de todos os componentes do programa.

todos os erros descobertos durante o teste vão provavelmente ser relacionados a 20 % de todos

Fatos sobre o Teste de Software

Segundo Pressman (2002)

d) O teste deve começar “no varejo”, isto é, nos componentes individuais, para depois progredir até o teste “no atacado”, em todo o sistema.

e) Teste completo não é possível, mas pode-se cobrir adequadamente a lógica do programa e garantir que todas as condições no projeto no que diz respeito ao componente, tenham sido exercitadas.

f) Para ser mais efetivo o teste deve ser realizado por terceiros.

diz respeito ao componente, tenham sido exercitadas. f) Para ser mais efetivo o teste deve ser

Princípios Gerais do Teste de SW

São sete princípios levantados pela comunidade ao longo de décadas de experiência com teste de software

• Os princípios estão documentados no Syllabus da ISTQB (International Software Testing Qualifications Board)

BSTQB: correspondente brasileira

no Syllabus da ISTQB ( International Software Testing Qualifications Board ) – BSTQB: correspondente brasileira

Princípios Gerais do Teste de SW

• Princípio 1 – Teste demonstra a presença de erros

Contudo, não pode provar que eles não existem. O teste reduz a probabilidade que os defeitos permaneçam em um software, mas mesmo se nenhum defeito for encontrado não prova que ele esteja perfeito.

– Desafio: você consegue encontrar o bug no slide seguinte?

defeito for encontrado não prova que ele esteja perfeito. – Desafio: você consegue encontrar o bug
defeito for encontrado não prova que ele esteja perfeito. – Desafio: você consegue encontrar o bug

Princípios Gerais do Teste de SW

• Princípio 2 – Teste exaustivo é impossível

– Testar tudo (todas as combinações de entrada e condições) não e viável, exceto para casos triviais

– Em vez de teste exaustivo, riscos e prioridades são levados em consideração para dar foco aos esforços de teste

– Em vez de teste exaustivo, riscos e prioridades são levados em consideração para dar foco

Princípios Gerais do Teste de SW

Princípios Gerais do Teste de SW
Princípios Gerais do Teste de SW

Princípios Gerais do Teste de SW

• Princípio 3 – Teste antecipado

– O teste deve começar o mais breve possível no ciclo de desenvolvimento do software ou sistema e deve ser focado em objetivos definidos

– Regra 10 de Myers

no ciclo de desenvolvimento do software ou sistema e deve ser focado em objetivos definidos –
no ciclo de desenvolvimento do software ou sistema e deve ser focado em objetivos definidos –

Princípios Gerais do Teste de SW

• Princípio 3 – Teste antecipado

Princípios Gerais do Teste de SW • Princípio 3 – Teste antecipado

Princípios Gerais do Teste de SW

• Princípio 4 – Agrupamento de defeitos

– Um número pequeno de módulos contém a maioria dos defeitos descobertos durante o teste antes de sua entrega ou exibe a maioria das falhas operacionais

– Princípio de Pareto

• Análise da causa raiz

teste antes de sua entrega ou exibe a maioria das falhas operacionais – Princípio de Pareto
teste antes de sua entrega ou exibe a maioria das falhas operacionais – Princípio de Pareto

Princípios Gerais do Teste de SW

• Princípio 5 – Paradoxo do pesticida

– Pode ocorrer de um mesmo conjunto de testes que são repetidos várias vezes não encontrarem novos defeitos após um determinado momento. Para superar este paradoxo, os casos de teste necessitam ser frequentemente revisados e atualizados.

determinado momento. Para superar este paradoxo, os casos de teste necessitam ser frequentemente revisados e atualizados.
determinado momento. Para superar este paradoxo, os casos de teste necessitam ser frequentemente revisados e atualizados.

Princípios Gerais do Teste de SW

• Princípio 6 – Teste depende do contexto

– Testes são realizados de forma diferente conforme o contexto. Exemplo: softwares de segurança criítica são testados diferentemente de um software de comércio eletrônico. O ambiente ao qual o teste está sendo realizado impacta em sua execução.

de um software de comércio eletrônico. O ambiente ao qual o teste está sendo realizado impacta

Princípios Gerais do Teste de SW

• Princípio 6 – Teste depende do contexto

– Exemplo

• Disse o menino para o pai: “Pai, essa tal de Ferrari é um carro vermelho com um cavalinho?”.

• O pai: “Sim.”

• Filho: “Então, acho que vi uma.”

tal de Ferrari é um carro vermelho com um cavalinho?”. • O pai: “Sim.” • Filho:

Princípios Gerais do Teste de SW

• Princípio 6 – Teste depende do contexto

Princípios Gerais do Teste de SW • Princípio 6 – Teste depende do contexto
Princípios Gerais do Teste de SW • Princípio 6 – Teste depende do contexto

Princípios Gerais do Teste de SW

• Princípio 7 – A ilusão da ausência de erros

– Encontrar e consertar defeitos não ajuda se o sistema construído não atende às expectativas e necessidades do usuário.

e consertar defeitos não ajuda se o sistema construído não atende às expectativas e necessidades do

Testabilidade

• O que é?

– Facilidade com que um programa pode ser testado

• Características para um sistema “testável”

Operabilidade

Simplicidade

Estabilidade

Observabilidade

Decomponibilidade

Controlabilidade Compreensibilidade
Controlabilidade Compreensibilidade

Controlabilidade

Controlabilidade Compreensibilidade

Compreensibilidade

Controlabilidade Compreensibilidade

Testabilidade

Operabilidade

– Quanto melhor funciona, mais eficiente pode ser testado

Testabilidade • Operabilidade – Quanto melhor funciona, mais eficiente pode ser testado

Testabilidade

Observabilidade

– O que você vê é o que você testa

– Saída distinta é gerada para cada entrada

– Estados e variáveis do sistema são visíveis ou consultáveis durante a execução

– Todos os fatores que afetam a saída são visíveis

– Saída incorreta é facilmente identificada

– Erros internos facilmente detectados

– Código fonte acessível

– Saída incorreta é facilmente identificada – Erros internos facilmente detectados – Código fonte acessível

Testabilidade

Controlabilidade

– Quanto mais você pode controlar o software, mais o teste pode ser automatizado e otimizado

– Todas as saídas possíveis podem ser geradas por alguma combinação de entradas

– Todo código é executável através de alguma combinação das entradas

– Estados e variáveis podem ser controladas diretamente

é executável através de alguma combinação das entradas – Estados e variáveis podem ser controladas diretamente

Testabilidade

Decomponibilidade

– Controlando o escopo do teste, podemos isolar problemas mais rapidamente e realizar re- testagem mais racionalmente

– O sistema é construído a partir de módulos independentes

– Módulos podem ser testados independentemente

– O sistema é construído a partir de módulos independentes – Módulos podem ser testados independentemente

Testabilidade

Simplicidade

– Quanto menos há a testar, mais rapidamente podemos testá-lo

– Simplicidade funcional

• O conjunto de características é o mínimo necessário para satisfazer os requisitos

– Simplicidade estrutural

• Arquitetura modularizada para evitar propagação de defeitos

– Simplicidade do código

• Padrão para facilitar inspeção e manutenção

para evitar propagação de defeitos – Simplicidade do código • Padrão para facilitar inspeção e manutenção

Testabilidade

Estabilidade

– Quanto menos modificações, menos interrupções no teste

Testabilidade • Estabilidade – Quanto menos modificações, menos interrupções no teste

Testabilidade

Compreensibilidade

– Quanto mais informações temos, mais racionalmente vamos testar

– O projeto é bem compreendido

– As dependências entre componentes internos, externos e compartilhados são bem compreendidos

– Modificações no projeto são informadas

– Documentação técnica acessível, bem organizada, específica e detalhada

Modificações no projeto são informadas – Documentação técnica acessível, bem organizada, específica e detalhada

Processo de Teste de Software

• Visão comum

– Consiste apenas da fase de execução

• Na verdade

– Antes e depois da fase de execução

• Planejamento e controle, escolha das condições de teste, modelagem de casos de teste, checagem dos resultados, avaliação do critério de conclusão, geração de relatórios sobre o processo de teste e sobre sistema alvo e encerramento.

do critério de conclusão, geração de relatórios sobre o processo de teste e sobre sistema alvo

Processo de Teste de Software

• Vários objetivos

– Encontrar defeitos

– Ganhar confiança sobre o nível de qualidade

– Prover informações

– Prevenir defeitos

– Encontrar defeitos – Ganhar confiança sobre o nível de qualidade – Prover informações – Prevenir
– Encontrar defeitos – Ganhar confiança sobre o nível de qualidade – Prover informações – Prevenir

Processo de Teste de Software

• A estratégia de testes faz parte da metodologia dos testes

Processo de Teste de Software • A estratégia de testes faz parte da metodologia dos testes

Processo de Teste de Software

• Macro atividades

Processo de Teste de Software • Macro atividades

Processo de Teste de Software

• Artefatos do processo de testes de software

Processo de Teste de Software • Artefatos do processo de testes de software
Processo de Teste de Software Aula 02 Profa. Cassia Nino cnino@unisinos.br 2015/1

Processo de Teste de Software

Aula 02

Profa. Cassia Nino

cnino@unisinos.br

2015/1