Você está na página 1de 52

1

Testes de Software
Profª Rossana Maria de Castro Andrade
CK0247: Engenharia de Software 2018.1

Copyrigth © GREat 2018


Objetivo
Estes slides fazem parte do material de treinamento produzido pela Célula de Testes
e Qualidade de Software (CTQS) do Grupo de Redes de Computadores, Engenharia
de Software e Sistemas (GREat)

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 2


Qualidade de Software
Segundo o IEEE, o termo “qualidade” pode ser entendido no contexto da Engenharia
de Software como o grau no qual um sistema, componente ou processo satisfaz os
requisitos especificados e as necessidades e expectativas do cliente/usuário.

Fonte : http://beta.ramosdainformatica.com.br
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 3
Como Garantir a Qualidade?
● Aplicação de métodos e ferramentas
● Que auxiliem a qualidade das especificações, do projeto, do código….
● Aplicações de padrões
● Para documentação ou codificação
● Atividades de Verificação
● Objetivo: Assegurar consistência, completude e corretude do produto em cada
fase e entre fases consecutivas
● Estamos desenvolvendo certo o produto?
● Atividades de Validação
● Objetivo: Assegurar que o produto final corresponda aos requisitos do usuário
● Estamos desenvolvendo o produto certo?

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 4


Teste de Software
● É o processo de executar um programa
com a intenção de encontrar erros [Myers
2011]

● Técnica dinâmica de V&V

Fonte: http://br.masternewmedia.org/

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 5


Teste de Software
● “Teste é uma atividade em que um sistema ou componente é executado sob condições
específicas, os resultados são observados ou registrados, e é feita uma avaliação de
algum aspecto do sistema ou componente” [IEEE Standard Glossary 1990]

● “Teste de software consiste em uma verificação dinâmica do comportamento de um


programa com um conjunto finito de casos de testes adequadamente selecionados a
partir do domínio de execuções, geralmente infinito, contra o comportamento
esperado.” [Swebok Guide 2004]

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 6


Por Que Testar um Software?
● Por que errar é humano
● Por que gera Economia, o custo de reparar um
erro é menor que reparar uma falha
● Por que garante a Qualidade, garante que o
software atende todos os requisitos
● Por que da Confiabilidade, verifica o maior
intervalo de tempo em que o software
permanece funcionando sem ocorrer falhas

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 7


Erros na Atualização do Windows 7
Impedem Boot do Sistema
A atualização (KB2823324), para corrigir falhas no Windows 7, liberada pela Microsoft
no dia 09/04/2013, acabou gerando erros que estão impedindo o boot do sistema. O
bug faz com que uma tela azul impeça o boot.

Fonte: http://www.techtudo.com.br/noticias/noticia/2013/04/erros-na-atualizacao-do-windows-7-impedem-boot-do-sistema.html
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 8
Falha em Software Quase
Derrubou Avião da Qantas
Em 7 de outubro de 2008, um Airbus A330 da companhia australiana Qantas fez dois
mergulhos violentos em direção ao chão. O motivo seria uma falha no computador de
bordo. O resultado dessa montanha-russa aérea deixou um saldo de 110 pessoas
feridas.

Fonte: http://info.abril.com.br/noticias/ti/falha-em-software-quase-derrubou-aviao-da-qanta-27122011-4.shl

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 9


Ariane 5 - Erro numérico (overflow)
leva à falha no 1º lançamento
Em 4 de junho de 1996, menos de um minuto após o lançamento, o foguete francês
Ariane 501 se auto-destruiu. A avaliação indica um erro no software de controle como
a origem na falha do lançamento.

Fonte: http://www.dutchspace.nl/pages/products/content.asp?id=143&LangType=1033

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 10


Erro, Defeito e Falha
● O erro é considerado uma ação humana, que resulta em um software com defeitos
● Um defeito pode ocorrer devido a omissão de informações, definições de dados ou
comandos/instruções incorretas dentre outros fatores
● De acordo com o padrão IEEE (1983) uma falha ocorre quando um programa não se
comporta conforme o esperado ou apresenta resultados diferentes do planejado

Fonte: http://qabrasil.blogspot.com.br/2010/07/principais-diferencas-entre-erro.html

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 11


Caso de Teste
● Consiste de um conjunto de valores de entrada, pré-condições de execução,
resultados esperados e pós-condições de execução, desenvolvidos para cobrir
certas condições de teste

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 12


Procedimento de Teste
● O procedimento de teste contém a sequência de ações para realização de um
teste (IEEE 1990)

Fonte: Araújo, I. L.; Andrade, R. M. C.; Neto, P. A. S. (2013). Uma Solução para Geração Automática de Casos de Testes para Linhas
de Produto de Software Sensíveis ao Contexto. In WTDG – GREat, Fortaleza, CE

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 13


Processo de Teste Básico
● Processo de Teste do Sommerville

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 14


Processo de Teste Básico
● Consiste das seguintes atividades:
● Planejamento e controle
● Análise e modelagem
● Implementação e execução
● Avaliação dos critérios de saída e relatórios
● Atividades de encerramento de teste
Fonte: http://www.firewalldefender.net/

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 15


Processo de Teste Básico
● Planejamento e Controle de Teste
● O planejamento de teste é a atividade que consiste em definir os objetivos e
especificar as atividades de forma a alcançá-los
● O controle do teste é a constante atividade que compara o progresso atual
com o que foi planejado, reportando o status e os desvios do plano. Agindo
em prol de alcançar a missão e os objetivos do projeto

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 16


Processo de Teste Básico
● Análise e Modelagem do Teste
● São atividades onde os objetivos gerais do teste são transformados em
condições e modelos de teste tangíveis
● São compostas pelas seguintes atividades principais:
● Revisar a base de testes
● Avaliar a testabilidade dos requisitos e do sistema
● Projetar e priorizar os casos de testes de alto nível
● Identificar as necessidades de dados para teste, suportando as
condições e casos de teste

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 17


Processo de Teste Básico
● Análise e Modelagem do Teste
● Identificar e priorizar as condições ou requisitos de testes e dados de testes
baseados na análise dos itens de teste, na especificação, no comportamento
e na estrutura
● Planejar a preparação do ambiente de teste e identificar a infraestrutura e
ferramentas necessárias
● Criar uma rastreabilidade bidirecional entre os requisitos e os casos de teste

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 18


Processo de Teste Básico
● Implementação e Execução de Teste
● É a atividade onde os procedimentos ou os scripts de teste são especificados
pela combinação dos casos de teste em uma ordem particular
● Inclui todas as outras informações necessárias e a preparação do ambiente
para a execução do teste
● São compostas por atividades como verificar se o ambiente está preparado
corretamente e comparar resultados obtidos com os resultados esperados

Fonte: http://msdn.microsoft.com/pt-br/library/
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 19
Processo de Teste Básico
● Avaliação do Critério de Saída e Relatório
● É a atividade onde a execução do teste é avaliada mediante os objetivos
definidos
● Deve ser feita para cada nível de teste
● É composta por atividades como: checar os registros de teste(logs) mediante
o critério de encerramento especificado no planejamento de teste e avaliar se
são necessários testes adicionais ou se o critério de saída especificado deve
ser alterado

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 20


Processo de Teste Básico
● Atividade de Encerramento de Teste

● É a atividade onde são coletados os dados de todas as atividades para


consolidar a experiência, testware, fatos e números
● Atividades principais:
● Finalizar e arquivar o testware, o ambiente de teste e infraestrutura de
teste para o reuso
● Entregar o testware para a manutenção da organização
● Analisar as lições aprendidas para se determinar as mudanças
necessárias para futuros releases e projetos
● Utilizar as informações coletadas para melhorar a maturidade de teste

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 21


Níveis de Teste
● Alvos do teste
● Módulo único
● Teste de Unidade
● Agrupamento de módulos
● Teste de Integração
● Sistema completo
Fonte: http://www.marketingviewer.com.br/wp-
● Teste de Sistema content/uploads/2013/06/icon-target1.jpg

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 22


Teste de Unidade
● É um trecho de código escrito para testar outro trecho de código
● Características avaliadas:
● Interface, compatibilidade, caminhos de execução, atendimento a erros,
condições de contorno
● Teste de unidade deve ser
● Automático, completo, independente, reproduzível

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 23


Teste de Integração
Top-Down

Fonte: http://sce.uhcl.edu/whiteta/sdp/topDownBottomUpTesting.png

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 24


Teste de Integração
Bottom-Up

● Estratégia de integração incremental:


○ Bottom-Up

Fonte: http://sce.uhcl.edu/whiteta/sdp/topDownBottomUpTesting.png

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 25


Teste de Sistema
● Executar o sistema do ponto de vista do usuário final
● Simulação do ambiente de execução

Fonte: http://newguru99.revolutionventur.netdna-cdn.com/images/what%20do%20check%20in%20system%20testing.png

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 26


Tipos de Teste
● Funcional ● Segurança
● Não-Funcional ● Estresse
● Aceitação ● Usabilidade
● Alfa e Beta ● “Fumaça”
● Regressão ● “Macaco”
● Desempenho

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 27


Teste Funcional
● Verificação da consistência entre o produto implementado e os requisitos
funcionais
● O ideal é ser automático

Fonte: http://www.innovation.lv/ino2/publications/leonardo_manual/en/www.innosupport.net/webhelp/wso/user/firma_3/3_1_black_box_method01.gif
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 28
Teste Não-Funcional
● Teste executado para medir características não-funcionais
● Considera como o sistema trabalha
● Teste de:
● Carga
● Interoperabilidade
● Manutenibilidade
● Confiabilidade
● Portabilidade

Fonte : https://techspirited.com/functional-testing-vs-non-functional-testing

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 29


Teste de Aceitação
● Verifica se o software funciona de acordo com as necessidades do cliente
● Normalmente é executado pela empresa contratante

Fonte: https://blog.smaato.com/getting-started-user-acceptance-tests

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 30


Teste de Aceitação
● Processo de teste pode ser alterado dependendo do tipo de teste executado

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 31


Teste Alfa e Beta
● Alfa: realizado com usuários finais na organização desenvolvedora antes de
liberar uma versão
● Beta: realizado fora da organização, preferencialmente nos locais dos usuários
finais

Fonte: https://www.youtube.com/watch?v=Yo5-0Q0S_ks

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 32


Teste de Regressão
● Repetição de teste num programa já testado, depois de haver modificação
● Descobrir se existe algum defeito que não foi detectado originalmente ou
introduzido na modificação
● Pode ser realizado em todos o níveis de teste

Fonte: https://testlio.com/blog/shouldnt-skip-regression-testing/
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 33
Teste de Desempenho
● Também conhecido como teste de performance
● Executado dentro de um contexto de sistema
● Exemplos:
● Número de usuários simultâneos
● Configuração da máquina

Fonte: http://binish-siddiqui.com/2017/10/24/batch-performance-testing/

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 34


Teste de Segurança
● Elaboração de casos de teste que possam subverter as verificações de
segurança do programa
● Exemplo:
● Formular casos de teste que violem o mecanismo de proteção de um
sistema operacional

Fonte: https://qeworks.com/security-testing/

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 35


Teste de Estresse
● Submeter o sistema a situações anormais
● Execução do sistema exigindo dos recursos mais do que foi projetado para
suportar

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 36


Teste de Usabilidade
● Avaliação do sistema feita por especialistas, a partir da observação e análise do
comportamento do usuário durante a navegação e execução de tarefas
específicas
● Processo:
● Usa-se um pequeno grupo dos
próprios futuros usuários
● Ambiente físico

Fonte: https://www.youtube.com/watch?v=BrVnBdW6_rE
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 37
Teste da “Fumaça”
● Também conhecido como Build Verification Testing
● Comprime um conjunto de testes não exaustivos, garantindo que as principais
funcionalidades funcionem

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 38


Teste do “Macaco”
● Teste executado sem um planejamento prévio.
● Geralmente feito por ferramentas automatizadas.
● Ações randômicas.

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 39


Teste e Depuração
● Teste
● Testes podem demonstrar falhas que são causadas por defeitos.
● Depuração
● É a atividade de desenvolvimento que identifica a causa de um defeito,
repara o código e checa se os defeitos foram corrigidos corretamente.

Fonte: http://smcufmg.wordpress.com/2009/09/12/teste-de-sw/
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 40
Testes de Aplicações Móveis
● Dispositivo Móvel
● É um dispositivo capaz de executar aplicações baseadas em rede sobre um
link de dados do celular ou satélite [Myers 2011]
● Um computador portátil que o usuário pode carregar e que se comunica
através de uma tecnologia sem fio [Dantas 2009]

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 41


Testes de Aplicações Móveis
● Aplicação Móvel
● Programa baseado em rede que executa em um dispositivo móvel [Myers
2011]
● É uma aplicação que executa em um dispositivo móvel [Dantas 2009]

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 42


Testes de Aplicações Móveis
• Alguns desafios para o teste de aplicações móveis [Santos et al. 2012]
Categoria Problemas / Desafios
Custos elevados
Geral
Falta de formalismo

Dinamicidade e heterogeneidade

Tecnologia móvel Mobilidade

Restrições dos dispositivos móveis

Teste em laboratório Pouco realistas

Teste em campo Alto custo

Configuração e captura dos dados


Teste de usabilidade
Dificuldade na coleta de dados

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 43


Testes de Aplicações Móveis
● Diversidade de Dispositivos Móveis
● “Mais dispositivos significam mais itens para serem considerados nos
testes” [Myers 2011]
● Diversidade de:
● Sistemas operacionais
● Navegadores
● Resolução de tela
● Interfaces de usuário
● Tamanho de tela

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 44


Teste de Aplicações Móveis
Emulador vs Dispositivo Real [Myers 2011]

Abordagem Desvantagens Vantagens


● Identificação de bugs especificos do
● Disponibilidade de rede
Dispositivo Real dispositivo
● Caro
● Inspeção visual da aplicação

● Incapacidade de detectar bugs ● Mais acessível


inerentes do dispositivo ● Fácil de gerenciar
Emulador
● Pode mascarar a performance ● Suporte a múltiplos dispositivos com um
da aplicação único emulador

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 45


Teste de Aplicações Móveis
Laboratório vs Teste em Campo [Dantas 2009]
Teste em Laboratório Teste em Campo

Emulador e/ou dispositivo móvel Dispositivo móvel

Ambiente controlado Ambiente pode ser controlado e/ou não

O usuário fica sentado de frente para o O usuário pode estar em movimento, em pé/
computador ou segurando o dispositivo ou com sentado, em casa/escritório, com silêncio/barulho, no
o dispositivo apoiado na mesa claro/escuro)

Adequado para aplicações que não necessitam Ideal para testar recursos específicos do contexto
se conectar a rede móvel (e.g., conectividade, mobilidade e interrupção)

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 46


Teste de Aplicações Móveis
Categorias

Categoria de Teste Descrição


Garantir que o usuário pode corretamente instalar e completamente
Instalação Desinstalação desinstalar sua aplicação

Verificar como a aplicação responde no caso de perda de rede, restauração


Infraestrutura de rede de rede e sinal de rede fraco

Verificar o quanto o usuário pode aceitar chamadas ou mensagens de texto


Ligações e Mensagens enquanto executa a aplicação

Garantir que a aplicação trabalha como especificado no modo de


Carregamento carregamento

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 47


Teste de Aplicações Móveis

Fonte : http://aprendablogando.com
CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 48
Teste de Aplicações Móveis
● Teste de Emulador vs Dispositivo Real [Myers 2011]

Abordagem Desvantagens Vantagens


Identificação de bugs especificos
Disponibilidade de rede
Dispositivo do dispositivo
Real
Caro
Inspeção visual da aplicação
Mais acessível
Incapacidade de detectar
bugs inerentes do dispositivo
Fácil de gerenciar
Emulador
Pode mascarar a
Suporte a múltiplos dispositivos
performance da aplicação
com um único emulador

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 49


Teste de Aplicações Móveis
● Teste em Laboratório vs Teste em Campo [Dantas 2009]

Teste em Laboratório Teste em Campo

Emulador e/ou dispositivo móvel Dispositivo móvel

Ambiente controlado Ambiente pode ser controlado e/ou não


O usuário fica sentado de frente para
O usuário pode estar em movimento, em
o computador ou segurando o
pé/ sentado, em casa/escritório, com
dispositivo ou com o dispositivo
silencio/barulho, no claro/escuro)
apoiado na mesa
Ideal para testar recursos específicos do
Adequado para aplicações que não
contexto móvel (e.g., conectividade,
necessitam se conectar a rede
mobilidade e interrupção)

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 50


Teste de Aplicações Móveis
● Algumas categorias de teste [Myers 2011]

Categoria de Teste Descrição


Instalação Garantir que o usuário pode corretamente instalar e
Desistalação completamente desistalar sua aplicação

Insfraestrutura de Verificar como a aplicação responde no caso de perca


rede de rede, restauração de rede e sinal de rede fraco

Ligações e Verificar o quanto o usuário pode aceitar chamadas ou


Mensagens mensagens de texto enquanto executa a aplicação

Garantir que a aplicação trabalha como especificado no


Carregamento modo de carregamento

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 51


Referências
Araújo, I. L.; Andrade, R. M. C.; Neto, P. A. S. (2013). Uma Solução para Geração Automática de Casos de Testes para Linhas de
Produto de Software Sensíveis ao Contexto. In WTDG – GREat, Fortaleza, CE
Dantas, V. L. L. (2009). Requisitos para testes de aplicações móveis. Dissertação de Mestrado, Universidade Federal do Ceará.
Dey, A. K. (2001) Understanding and using context. Personal Ubiquitous Comput., Springer-Verlag, London, UK, UK, v. 5, n. 1, p.
4–7, ISSN 1617-4909
IEEE Computer Society (2004) Guide to the Software Engineering Body of Knowledge (SWEBOK), California, EUA.
IEEE Computer Society (1990) Standard Glossary of Software Engineering Terminology. NY, USA
ISTQB (2007). Base de Conhecimento para Certificação em Teste, Foundation Level Syllabus, Versão 2007br
Lu, H. (2009) A software testing framework for context-aware applications in pervasive computing. Tese de doutorado,
Universidade de Hong Kong.
Myers, G.; Sandler, C. e Badgett, T. (2011). The Art of Software Testing, ITPro collection, Wiley.
Santos, I. S.; Dantas, V. L. L.; Santos, R. M.; Andrade, R. M. C. (2012) Testes de aplicações móveis : uma análise das pesquisas
científicas via revisão sistemática. Em anais do Simpósio Brasileiro de Qualidade de Software, Fortaleza, CE.
Araújo, I. L.; Andrade, R. M. C.; Neto, P. A. S. (2013). Uma Solução para Geração Automática de Casos de Testes para Linhas de
Produto de Software Sensíveis ao Contexto. In WTDG – GREat, Fortaleza, CE

CK0247: Engenharia de Software - Prof. Rossana M. C. Andrade 52

Você também pode gostar