Teste de Software Parte 1. Prof. Jonas Potros



Documentos relacionados
c. Técnica de Estrutura de Controle Teste do Caminho Básico

3 Qualidade de Software

Engenharia de Software II

Princípios do teste de software

Introdução ao Teste de Software

Unidade VI. Validação e Verificação de Software Teste de Software. Conteúdo. Técnicas de Teste. Estratégias de Teste

18º Congresso de Iniciação Científica IMPLEMENTAÇÃO DE UM MODELO DE TESTE DE APLICAÇÕES WEB

Conteúdo. Disciplina: INF Engenharia de Software. Monalessa Perini Barcellos

Teste de Software: Um Breve Estudo do Importante Processo no Desenvolvimento de Softwares

White-box test: Também conhecido como teste estrutural, tem por objetivo validar os dados derivados das funções do sistema.

Prof. Me. Marcos Echevarria

Engenharia de Software II

Métodos de Apreciação de Riscos de Máquinas e Equipamentos Usados no Brasil

LISTA DE VERIFICAÇAO DO SISTEMA DE GESTAO DA QUALIDADE

Campus Capivari Análise e Desenvolvimento de Sistemas (ADS) Prof. André Luís Belini prof.andre.luis.belini@gmail.com /

Técnicas de Teste de Software

Administração de Sistemas de Informação Gerenciais

agility made possible

Fundamentos em Teste de Software. Vinicius V. Pessoni

3. Fase de Planejamento dos Ciclos de Construção do Software

Práticas de. Engenharia de Software. Givanaldo Rocha de Souza

Gerenciamento da Integração (PMBoK 5ª ed.)

Aula 2 Revisão 1. Ciclo de Vida. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW. Processo de Desenvolvimento de SW

3 Gerenciamento de Projetos

Gerenciamento de Projetos Modulo III Grupo de Processos

Desenvolvimento de Sistemas Tolerantes a Falhas

Projeto de Sistemas I

6.1 A Simulação Empresarial tem utilização em larga escala nos cursos de Administração, em seus diversos níveis de ensino no Brasil?

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

Engenharia de Software e Gerência de Projetos Prof. Esp. André Luís Belini Bacharel em Sistemas de Informações MBA em Gestão Estratégica de Negócios

Objetivos. Teoria de Filas. Teoria de Filas

PLANEJAMENTO OPERACIONAL - MARKETING E PRODUÇÃO MÓDULO 16 AS QUATRO FASES DO PCP

Administração da Produção I

Processos de gerenciamento de projetos em um projeto

Atividades da Engenharia de Software ATIVIDADES DE APOIO. Atividades da Engenharia de Software. Atividades da Engenharia de Software

Relatório Trabalho Prático 2 : Colônia de Formigas para Otimização e Agrupamento

Resolução da lista de exercícios de casos de uso

Cinco restrições de desenvolvimento/teste que afetam a velocidade, o custo e a qualidade dos seus aplicativos

QUALIDADE DE SOFTWARE

Plano de Continuidade de Negócios

Qualidade de Software

ITIL v3 - Operação de Serviço - Parte 1

Diretrizes para determinação de intervalos de comprovação para equipamentos de medição.

Fundamentos de Teste de Software

Fundamentos de Teste de Software

Administração da Produção I

natureza do projeto e da aplicação métodos e ferramentas a serem usados controles e produtos que precisam ser entregues

Gerenciamento de Projetos Modulo II Clico de Vida e Organização

9 Comandos condicionais

Classificação de Sistemas: Sistemas Empresariais

Disciplina: Técnicas de Racionalização de Processos Líder da Disciplina: Rosely Gaeta NOTA DE AULA 04 O PROJETO DE MELHORIA DOS PROCESSOS

Engenharia de Software II

Processos de Software

Engenharia de Software III

Capítulo 2 Objetivos e benefícios de um Sistema de Informação

Aula 4 Conceitos Básicos de Estatística. Aula 4 Conceitos básicos de estatística

4.1. UML Diagramas de casos de uso

Medição tridimensional

Processos de Gerenciamento de Projetos. Planejamento e Controle de Projetos 5 TADS FSR. Processos

Desenvolvimento de Estratégia para Programação do Futebol de Robôs da Mauá

PMBOK 4ª Edição III. O padrão de gerenciamento de projetos de um projeto

UML & Padrões Aula 3. UML e Padrões - Profª Kelly Christine C. Silva

Requisitos de Software

BSC Balance Score Card

Guia de utilização da notação BPMN

Análise e Projeto de Software

QUALIDADE DE SOFTWARE

Copyright Proibida Reprodução. Prof. Éder Clementino dos Santos

Manual do Teclado de Satisfação Online WebOpinião

ELABORAÇÃO DE PROJETOS

Sumário. 1. Instalando a Chave de Proteção Novas características da versão Instalando o PhotoFacil Álbum 4

Permite a coleta de dados em tempo real dos processos de produção, possuindo, também, interfaces para a transferência dos dados para os sistemas

UNIVERSIDADE FEDERAL DE SANTA MARIA CENTRO DE TECNOLOGIA AULA 14 PROFª BRUNO CALEGARO

Introdução à. Engenharia de Software. Givanaldo Rocha de Souza

Tópicos da Aula. Que é são requisitos? Tipos de Requisitos. Requisitos Funcionais. Classificação de Requisitos. Requisitos de Software.

Casos de uso Objetivo:

Preparação do Trabalho de Pesquisa

Prof. Msc. Fernando Oliveira Boechat

A Ciência e a Arte de Ser Dirigente. Autor: Ader Fernando Alves de Pádua

FMEA (Failure Model and Effect Analysis)

QUALIFICAÇÃO E CERTIFICAÇÃO DE PESSOAL EM CORROSÃO E PROTEÇÃO

Arquivo original em Inglês: Management/Documents/Risk-IT-Brochure.pdf

Gerenciamento do Tempo do Projeto (PMBoK 5ª ed.)

P4-MPS.BR - Prova de Conhecimento do Processo de Aquisição do MPS.BR

MANUAL DE UTILIZAÇÃO. Produtos: Saúde Pró Faturamento Saúde Pró Upload. Versão:

Auditoria como ferramenta de gestão de fornecedores durante o desenvolvimento de produtos

Gerenciamento de Entrada e Saída Hélio Crestana Guardia e Hermes Senger

O Gerenciamento de Documentos Analógico/Digital

PESQUISA EM INFORMÁTICA -ESTILOS DE PESQUISA EM COMPUTAÇÃO. Prof. Angelo Augusto Frozza, M.Sc.

PONTIFÍCIA UNIVERSIDADE CATÓLICA DE GOIÁS Curso Superior de Tecnologia em Análise e Desenvolvimento de Sistemas

Engenharia de Software

Sistema de Gerenciamento de Projetos V 1.01 MANUAL DO COORDENADOR

BACHARELADO EM SISTEMAS DE INFORMAÇÃO EaD UAB/UFSCar Sistemas de Informação - prof. Dr. Hélio Crestana Guardia

DESCRIÇÃO DAS PRÁTICAS DE GESTÃO DA INICIATIVA

ORGANIZAÇÃO DE COMPUTADORES MÓDULO 1

ITECH Instituto de Terapia e Ensino do Comportamento Humano. Abuso e dependência de álcool e substâncias psicoativas. Cristina Belotto da Silva

IMPLEMENTAÇÃO DE UM PROTÓTIPO PARA INFORMATIZAÇÃO DE PROCESSO DE ADEQUAÇÃO DE FÉRIAS

Transcrição:

Teste de Software Parte 1 Prof. Jonas Potros

Cronograma Verificação e Validação Teste de Software: Definição e Conceitos Técnicas de Teste Fases de Teste Processo de Teste Automatização do Processo de Teste

Verificação e Validação O desenvolvimento de software está sujeito a diversos tipos de problemas, os quais acabam resultando na obtenção de um produto diferente daquele que se esperava. Muitos fatores podem ser identificados como causas de tais problemas, mas a maioria deles tem uma única origem: erro humano (Delamaro et al., 2007). As atividades de Verificação e Validação (V&V) visam garantir, respectivamente, que: o software está sendo desenvolvido corretamente, o software que está sendo desenvolvido é o software correto.

V&V: Estática x Dinâmica As atividades de V&V costumam ser divididas em estáticas e dinâmicas. As estáticas não requerem a execução ou mesmo a existência de um programa ou modelo executável para serem realizadas. As dinâmicas se baseiam na execução de um programa ou modelo (Delamaro et al., 2007).

Teste de Software É o processo de executar um programa com o objetivo de encontrar defeitos (Myers, 1979). É, portanto, uma atividade de V&V dinâmica. Do ponto de vista psicológico, o teste de software é uma atividade com um certo viés destrutivo, ao contrário de outras atividades do processo de software.

Perspectiva de Teste Bons testadores necessitam de um conjunto especial de habilidades. Um testador deve abordar um software com a atitude de questionar tudo sobre ele (McGregor e Sykes, 2001). A perspectiva de teste é, um modo de olhar qualquer produto de desenvolvimento e questionar a sua validade. Habilidades requeridas na perspectiva de teste: Querer prova de qualidade, Não fazer suposições, Não deixar passar áreas importantes, Procurar ser reproduzível.

Perspectiva de Teste A perspectiva de teste requer que um fragmento de software demonstre não apenas que ele executa de acordo com o especificado, mas que executa apenas o especificado (McGregor e Sykes, 2001). O software faz o que deveria fazer e somente isso?

Teste de Software Executa-se um programa ou modelo utilizando algumas entradas em particular e verificar-se se seu comportamento está de acordo com o esperado. Caso a execução apresente algum resultado não especificado, um defeito foi identificado. Os dados da execução podem servir como fonte para a localização e correção de defeitos, mas teste não é depuração (Delamaro et al., 2007).

Conceitos Seja P um programa a ser testado. O domínio de entrada de P (D(P)) é o conjunto de todos os valores possíveis que podem ser utilizados para executar P. Um dado de teste para P é um elemento de D(P). O domínio de saída de P é o conjunto de todos os possíveis resultados produzidos por P.

Conceitos Um caso de teste de P é um par formado por um dado de teste mais o resultado esperado para a execução de P com aquele dado de teste. Ao conjunto de todos os casos de teste usados durante uma determinada atividade de teste dá-se o nome de conjunto de casos de teste ou conjunto de teste (Delamaro et al., 2007).

Cenário Típico da Atividade de Teste Definido um conjunto de casos de teste T, executa-se P com T e verificam-se os resultados obtidos. Se os resultados obtidos coincidem com os resultados esperados, então nenhum defeito foi identificado ( O software passou no teste ). Se, para algum caso de teste, o resultado obtido difere do esperado, então um defeito foi detectado ( O software não passou no teste ). De maneira geral, fica por conta do testador, baseado na especificação do programa, decidir sobre a correção da execução (Delamaro et al., 2007).

Cenário Típico da Atividade de Teste D(P) Espec(P) T P Sucesso ou Falha Entradas corretas

Teste Exaustivo Para se poder garantir que P não contém defeitos, P deveria ser executado com todos os elementos de D(P). Seja um programa exp com a seguinte especificação: exp(int x, int y)=x y D(exp) = todos os pares de números inteiros (x,y) passíveis de representação. Cardinalidade (#) de D(exp) = 2 n * 2 n, onde n = número de bits usado para representar um inteiro. Em uma arquitetura de 32 bits, #(D(exp)) = 2 64 Se cada teste puder ser executado em 1 milissegundo, seriam necessários aproximadamente 5,85 milhões de séculos para executar todos os testes. Logo, em geral, teste exaustivo não é viável.

Teste de Software Ao se testar P, devem-se selecionar alguns pontos específicos de D(P) para executar. Portanto, testes podem mostrar apenas a presença de defeitos, mas não a ausência deles. Um aspecto crucial para o sucesso na atividade de teste é a escolha correta dos casos de teste. Um teste bem-sucedido identifica defeitos que ainda não foram detectados. Um bom caso de teste é aquele que tem alta probabilidade de encontrar um defeito ainda não descoberto.

Teste de Software A escolha de casos de teste passa pela identificação de subdomínios de teste. Um subdomínio de teste é um subconjunto de D(P) que contém dados de teste semelhantes, ou seja, que se comportam do mesmo modo; por isso, basta executar P com um deles. Fazendo-se isso com todos os subdomínios de D(P), consegue-se um conjunto de teste T bastante reduzido em relação a D(P), mas que, de certa maneira, representa cada um de seus elementos (Delamaro et al., 2007).

Teste de Software Existem duas maneiras de se selecionar elementos de cada um dos subdomínios de teste (Delamaro et al., 2007): Teste Aleatório: um grande número de casos de teste é selecionado aleatoriamente, de modo que, probabilisticamente, se tenha uma boa chance de ter todos os subdomínios representados em T. Teste de Subdomínios ou Teste de Partição: procura-se estabelecer quais são os subdomínios a serem utilizados e, então, selecionam-se os casos de teste em cada subdomínio.

Teste de Subdomínios A identificação dos subdomínios é feita com base em critérios de teste. Dependendo dos critérios estabelecidos, são obtidos subdomínios diferentes. Tipos principais de critérios de teste: Funcionais Estruturais Baseados em Modelos Baseados em Defeitos O que diferencia cada um deles é o tipo de informação utilizada para estabelecer os subdomínios (Delamaro et al., 2007) Técnicas de Teste.

Teste Funcional ou Caixa-Preta Técnica de projeto de casos de teste na qual o programa ou sistema é considerado uma caixapreta. Para testá-lo, são fornecidas entradas e avaliadas as saídas geradas para verificar se estão em conformidade com os objetivos especificados. Os detalhes de implementação não são considerados. O software é avaliado segundo o ponto de vista do usuário (Delamaro et al., 2007).

Teste Estrutural ou Caixa Branca Estabelece os requisitos de teste com base em uma dada implementação, requerendo a execução de partes ou componentes elementares de um programa. Baseia-se no conhecimento da estrutura interna do programa. Caminhos lógicos são testados, estabelecendo casos de teste que põem à prova condições, laços, definições e usos de variáveis. Em geral, a maioria dos critérios estruturais utiliza uma representação de Grafo de Fluxo de Controle (Delamaro et al., 2007).

Teste Estrutural Blocos disjuntos de comandos são considerados nós. A execução do primeiro comando do bloco acarreta a execução de todos os outros comandos desse bloco, na ordem dada. Todos os comandos em um bloco têm um único predecessor (possivelmente com exceção do primeiro) e um único sucessor (possivelmente com exceção do último) (Delamaro et al., 2007).

Teste Estrutural Limitação: se um programa não implementa uma função, não existirá um caminho que corresponda a ela e nenhum dado de teste será requerido para exercitá-la. Essa técnica é vista como complementar às demais, uma vez que cobre classes distintas de defeitos. As informações obtidas pela aplicação de critérios estruturais são muito úteis para as atividades de depuração e manutenção (Delamaro et al., 2007).

Teste Baseado em Modelos Boa parte do tempo despendido na atividade de teste é gasta buscando-se identificar o que o sistema deveria saber. Antes de se perguntar se o resultado está correto, deve-se saber qual seria o resultado correto. Um modelo é muito útil para tal, servindo tanto como oráculo (instrumento que decide se a saída obtida coincide com a saída esperada) quanto como base para a definição de casos de teste. Existem diversas técnicas baseadas em Máquinas de Transições de Estados (Delamaro et al., 2007).

Teste Baseado em Defeito ou Teste de Mutação Defeitos típicos do processo de implementação são utilizados como critérios de teste. O programa que está sendo testado é alterado diversas vezes, criando-se um conjunto de programas mutantes, inserindo defeitos no programa original. O trabalho do testador é escolher casos de teste que mostrem a diferença de comportamento entre o programa original e os programas mutantes. Cada mutante determina um subdomínio de teste relacionado com um defeito específico (Delamaro et al., 2007).

Fases de Teste A atividade de teste é dividida em fases com objetivos distintos. De uma forma geral, pode-se estabelecer como fases (Delamaro et al., 2007): Teste de Unidade Teste de Integração Teste de Sistema

Teste de Unidade Tem como foco as menores unidades de um programa. Uma unidade é um componente de software que não pode ser subdividido. Nesta fase esperam-se encontrar defeitos relacionados a algoritmos incorretos ou mal implementados, estruturas de dados incorretas ou simples erros de programação. Pode ser aplicado à medida que ocorre a implementação das unidades e pode ser realizado pelo próprio desenvolvedor (Delamaro et al., 2007).

Teste de Unidade Durante os testes de unidade, é necessária a implementação de drivers e stubs. Um driver é um programa que coordena o teste de uma unidade U, sendo responsável por ler os dados fornecidos pelo testador, repassar esses dados na forma de parâmetros para U, coletar os resultados produzidos por U e apresentá-los para o testador. Um stub é um programa que substitui, na hora do teste, uma unidade chamada por U, simulando o comportamento dessa unidade com o mínimo de computação ou manipulação de dados (Delamaro et al., 2007).

Teste de Unidade Todas as técnicas de teste se aplicam ao teste de unidade. Teste de Mutação é voltado principalmente para o teste de unidade, ainda que haja adaptações para outras fases. Por exemplo, mutação de interfaces teste de integração.

Teste de Integração Deve ser realizado após serem testadas as unidades individualmente. A ênfase é colocada na construção da estrutura do sistema. Deve-se verificar se as partes, quando colocadas para trabalhar juntas, não conduzem a erros. Requer grande conhecimento das estruturas internas do sistema e, por isso, geralmente é executado pela própria equipe de desenvolvimento (Delamaro et al., 2007). Todas as técnicas de teste se aplicam, com destaque para o teste funcional.

Teste de Sistema Uma vez integradas todas as partes, inicia-se o teste de sistema. Quando realizado por uma equipe de teste, o objetivo é verificar se as funcionalidades especificadas na especificação de requisitos foram corretamente implementadas. Quando realizado por usuários, o objetivo é validar o sistema (Teste de Aceitação). É uma boa prática que essa fase seja realizada por testadores independentes. Tipicamente, aplica-se teste funcional.

Processo de Teste O processo de teste pode ser definido como um processo separado, mas intimamente ligado, ao processo de desenvolvimento. Isso porque eles têm metas e medidas de sucesso diferentes. Por exemplo, quanto menor a taxa de defeitos (razão entre o n o de casos de teste que falham pelo total de casos de teste), mais bem sucedido é considerado o processo de desenvolvimento. Por outro lado, quanto maior a taxa de defeitos, considera-se mais bem sucedido o processo de teste (McGregor e Sykes, 2001).

Processo de Teste Independentemente da fase de teste, o processo de teste inclui as seguintes atividades: Planejamento Análise de Requisitos de Teste Projeto de Casos de Teste Implementação de Casos de Teste Execução Análise

Automatização do Processo de Teste É um ponto importante para o sucesso no teste de um software. O processo de teste tende a ser extremamente dispendioso e é muito importante utilizar ferramentas de apoio ao teste para buscar aumentar a produtividade. Há diversos tipos de ferramentas de teste. Ainda assim, muito trabalho humano é necessário para criar os casos de teste adequados ao critério utilizado (Delamaro et al., 2007).

Referências Delamaro, M.E., Maldonado, J.C., Jino, M., Introdução ao Teste de Software, Série Campus SBC, Editora Campus, 2007. Koscianski, A., Soares, M.S., Qualidade de Software, Editora Novatec, 2006. Myers, G.J., The Art of Software Testing, 2nd edition, John Wiley & Sons, 2004. McGregor, J.D., Sykes, D.A., A Practical Guide to Testing Object-Oriented Software, Addison-Wesley, 2001. Pressman, R.S., Engenharia de Software. 6a edição, McGrawHill, 2006.