Anda di halaman 1dari 50

Engenharia de Software

Verificao, Validao e Teste


Curso de Cincia da Computao

Noiza Waltrick Trindade noiza@uems.br

Viso Geral
A Atividade de Teste um ELEMENTO CRTICO para a garantia de qualidade do software
Representa a ltima reviso de especificao, projeto e codificao; Tcnicas que auxiliam no conduo dessa atividade tm sido propostas...

Viso Geral
A Engenharia de Software evoluiu significativamente nas ltimas dcadas procurando estabelecer tcnicas, critrios, mtodos e ferramentas para a produo de software, em consequncia da crescente utilizao de sistemas baseados em computao em praticamente todas as reas da atividade humana.

Viso Geral
Provoca uma crescente demanda por qualidade e produtividade, tanto do ponto de vista do processo de produo como do ponto de vista dos produtos gerados.

Viso de ES
A Engenharia de Software pode ser definida como uma disciplina que aplica os princpios de engenharia com o objetivo de produzir software de alta qualidade a baixo custo.

Introduo
Engenharia de Software
Conjunto de princpios, mtodos e tcnicas que tratam o software como produto de engenharia que requer planejamento, projeto, implementao e manuteno.

Objetivo Principal
Produzir software de alta qualidade e de baixo custo

Introduo
Qualidade de Software
Conformidade com requisitos funcionais e de desempenho, padres de desenvolvimento documentados, e caractersticas implcitas esperadas de todo software profissionalmente desenvolvido.
Corretitude Confiabilidade Testabilidade

Introduo
Garantia de Qualidade de Software
Conjunto de atividades tcnicas aplicadas durante todo o processo de desenvolvimento Objetivo
Garantir que tanto o processo de desenvolvimento quanto o produto de software atinjam os nveis de qualidade especificados

V V&T Verificao, Validao e Teste

Introduo
Garantia de Qualidade de Software
Validao: Assegurar que o produto final corresponda aos requisitos do software Estamos construindo o produto certo? Verificao: Assegurar consistncia, completitude e corretitude do produto em cada fase e entre fases consecutivas do ciclo de vida do software

Estamos construindo corretamente o produto?


Teste: Examina o comportamento do produto atravs de sua execuo

10

Ciclo de Vida Clssico


Engenharia de Sistemas Anlise de Requisitos Projeto

Codificao

Teste Manuteno

11

Projetistas de software experientes dizem: A atividade de teste nunca termina; ela apenas transferida do projetista (voc) para o seu cliente. Toda vez que o seu cliente usa o programa, um teste realizado

12

Viso de ES
O processo de desenvolvimento de software envolve uma srie de atividades nas quais, apesar das tcnicas, mtodos e ferramentas empregados, ERROS no produto ainda podem ocorrer

13

Questes
A atividade de teste deve promover CULPA? A atividade de teste realmente destrutiva?

Resposta: No

14

Padres Tpicos Indstria de Software


Ordem de 10 erros por KDSI (1000 linhas de cdigo fonte liberadas) Softwares de alta qualidade apresentam da ordem de 0.1 erro por KDSI Um observao importante que a maioria desses erros encontra-se em partes do cdigo raramente executadas

15

Garantia da Qualidade de Produto de Software (SQA)


Software Quality Assurance: padro sistemtico e planejado de aes que so exigidas para garantir a qualidade de software. Essas aes englobam: 1) Aplicao de Mtodos Tcnicos: ajudam o analista a conseguir uma especificao de elevada qualidade e o projetista a desenvolver um projeto de elevada qualidade. 2) Realizao de Revises Tcnicas Formais: para avaliar a qualidade da especificao e do projeto. 3) Atividades de Teste de Software: para ajudar a garantir uma deteco de erros efetiva.

16

Garantia da Qualidade de Produto de Software (SQA)


4) Aplicao de Padres e Procedimentos Formais no processo de engenharia de software. 5) Processo de Controle de Mudanas: atividade que faz parte do gerenciamento de configurao de software. 6) Mecanismos de Medio: para ser possvel rastrear a qualidade de software. 7) Anotao e Manuteno de Registros: procedimentos para a coleta e disseminao de informaes de garantia de qualidade de software.

17

Atividades de Garantia de Qualidade de Software


Introduzidas ao longo de todo o processo de desenvolvimento, entre elas atividades de VV&T
Verificao, Validao e Teste, com o objetivo de minimizar a ocorrncia de erros e riscos associados

Dentre as tcnicas de verificao e validao, a Atividade de Teste uma das mais utilizadas

18

Verificao e Validao
Verificao: refere-se ao conjunto de atividades que garante que o software implemente corretamente uma funo especfica. Validao: refere-se ao conjunto de atividades que garante que o software que foi construdo rastrevel s exigncias do cliente. Verificao: Estamos construindo certo o produto. Validao: Estamos construindo o produto certo.

19

Objetivos da Atividade de Teste


o processo de executar um PROGRAMA com a inteno de descobrir um ERRO Um bom caso de teste aquele que tem uma elevada probabilidade de revelar um erro ainda no descoberto Um teste bem sucedido aquele que revela um erro ainda no descoberto

20

Objetivos da Atividade de Teste


Afirmao FALSA:
Um teste bem sucedido aquele em que nenhum erro encontrado

A atividade de teste no pode mostrar a ausncia de bugs; ela s pode mostrar se defeitos de software esto presentes

21

Atividade de Teste
Consiste de uma anlise dinmica do produto uma atividade relevante para a identificao e eliminao de erros que persistem O conjunto de informao oriundo da atividade de teste significativo para as atividades de depurao, manuteno e estimativa de confiabilidade de software

22

Terminologia
A IEEE tem realizado vrios esforos de padronizao, entre eles para padronizar a terminologia utilizada no contexto de Engenharia de Software. O padro IEEE diferencia os termos:
defeito (fault) erro (error) falha (failure)

23

Terminologia
Defeito Erro Falha
Defeito: deficincia mecnica ou algortmica que, se ativada, pode levar a uma falha Erro: item de informao ou estado de execuo inconsistente Falha: evento notvel em que o sistema viola suas especificaes

24

Terminologia
Defeito (fault) Passo, processo ou definio de dados incorreto, como por exemplo, uma instruo ou comando incorreto.

Engano (mistake) Ao humana que produz um resultado incorreto, com por exemplo, uma ao incorreta tomada pelo programador.

25

Terminologia
Erro (error) Diferena entre o valor obtido e o valor esperado, ou seja, qualquer estado intermedirio incorreto ou resultado inesperado na execuo do programa constitui um erro. Falha (failure) Produo de uma sada incorreta com relao especificao. Os termos engano, defeito e erro sero referenciados como ERRO (causa) e o termo FALHA (consequncia) a um comportamento incorreto do programa.

26

Classificao
De uma forma geral, os erros so classificados em:
Erros Computacionais o erro provoca uma computao incorreta, mas o caminho executado (sequncias de comandos) igual ao caminho esperado; Erros de domnio o caminho efetivamente executado diferente do caminho esperado, ou seja, um caminho errado selecionado.

27

Defeitos no Processo de Desenvolvimento


A maior parte de origem humana So gerados na comunicao e na transformao de informaes Continuam presentes nos diversos produtos de software produzidos e liberados (10 defeitos a cada 1000 linhas de cdigo) A maioria encontra-se em partes do cdigo raramente executadas

28

Defeitos no Processo de Desenvolvimento


Quanto antes a presena do defeito for revelada, menor o custo de correo do defeito e maior a probabilidade de corrigi-lo corretamente Principal causa: traduo incorreta de informaes Soluo: introduzir atividades de VV&T ao longo de todo o ciclo de desenvolvimento

29

Teste e Depurao
Teste
Processo de executar um programa com o objetivo de revelar a presena de defeitos; ou, falhando nesse objetivo, aumentar a confiana sobre o programa.

Depurao
Conseqncia no previsvel do teste. Aps revelada a presena do defeito, ele deve ser encontrado e corrigido.

30

Teste de Software
Fundamental em todos os ramos de engenharia
Software: produto da Engenharia de Software

Atividade essencial para ascenso ao nvel 3 do Modelo CMM/SEI Atividade relevante para avaliao da caracterstica funcionalidade (ISO 9126,14598-5)

31

Teste de Software
Caso de teste
Especificao de uma entrada para o programa e a correspondente sada esperada
Entrada para o programa: conjunto de dados necessrios para uma execuo do programa Sada esperada: resultado de uma execuo do programa (um orculo esperado)

Um bom caso de teste tem alta probabilidade de revelar um erro ainda no descoberto

32

Teste de Software
Limitaes
No existe um algoritmo de teste de propsito geral para provar a corretitude de um programa Em geral, indecidvel se dois caminhos de um mesmo programa ou de diferentes programas computam a mesma funo indecidvel se existe um dado de entrada que leve execuo de um dado caminho de um programa; isto , indecidvel se um dado caminho executvel ou no

33

Teste de Software
Configurao de Software
Resultados de Teste Avaliao
Atividades de Teste

Erros Depurao

Configurao de Teste

Dados da Taxa de Erros Resultados Esperados


Modelo de Confiabilidade

Correes

Confiabilidade Prevista

34

Teste de Software
O teste de produtos de software envolve basicamente quatro etapas:
Planejamento Projeto de casos de teste Execuo do programa com os casos de teste Anlise de resultados

35

Como desenvolver
Essas atividades devem ser desenvolvidas ao longo do prprio processo de desenvolvimento de software, e em geral, concretizam-se em trs fases de teste:
Teste de Unidade Teste de Integrao Teste de Sistema

36

Teste de Unidade
Concentra esforos na menor unidade do projeto de software, ou seja, procura identificar erros de lgica e de implementao em cada mdulo do software, separadamente.

37

Teste de Integrao
uma atividade sistemtica aplicada durante a integrao da estrutura do programa visando descobrir erros associados s interfaces entre os mdulos; O objetivo , a partir dos mdulos testados no nvel de unidade, construir a estrutura de programa que foi determinada pelo projeto; Identificar erros de integrao entre as unidades j testadas individualmente, ou seja, erros associados s interfaces entre os mdulos do software.

38

Teste de Sistema
O teste de sistema, realizado aps a integrao do sistema, visa a identificar erros de funes e caractersticas de desempenho que no estejam de acordo com a especificao e se todos os elementos do sistema combinam-se adequadamente; Atender as exigncias Funcionais, Comportamentais e de Desempenho descritas na ESPECIFICAO.

39

Casos de Teste: Ponto Crucial


Independentemente da fase, o projeto e/ou a avaliao da qualidade de um determinado conjunto de casos de teste T utilizado para o teste de um produto P, dado que, em geral, impraticvel utilizar todo o domnio de dados de entrada para avaliar os aspectos funcionais e operacionais de um produto em teste.

40

Casos de Teste: Ponto Crucial


O objetivo utilizar casos de teste que tenham alta probabilidade de encontrar a maioria dos defeitos com um mnimo de tempo e esforo, por questes de produtividade.

41

Teste: Encontrar Erros


O principal objetivo do teste de software revelar a presena de erros no produto; Portanto, o teste bem sucedido aquele que consegue determinar casos de teste para os quais o programa em teste falhe; Tem-se observado que a prpria atividade de projeto de casos de teste bastante efetiva em evidenciar a presena de defeitos de software.

42

Tcnicas
Qualquer produto trabalhado por engenharia pode ser testado de duas maneiras: (1) conhecendo a funo especfica que um produto projetado deve executar, testes podem ser realizados para demonstrar que cada funo totalmente operacional.

43

Tcnicas
(2) conhecendo-se o funcionamento interno de um produto, testes podem ser realizados para garantir que todas as engrenagens se encaixam, ou seja, que a operao interna do produto tenha um desempenho de acordo com as especificaes.

44

Tcnicas de Teste
Em geral, os critrios de teste de software so estabelecidos, basicamente, a partir de trs tcnicas:
Funcional (caixa preta) Estrutural (caixa branca) Baseada em erros

45

Tcnicas de Teste
Tcnica Funcional: os critrios e requisitos de teste so estabelecidos a partir da funo de especificao do software (ESPECIFICAO) Interface Estrutural: os critrios e requisitos so derivados essencialmente a partir das caractersticas de uma particular implementao do software (IMPLEMENTAO) Baseada em Erros: os critrios e requisitos de teste so oriundos do conhecimento sobre erros tpicos/comuns que podem ocorrer durante o processo de desenvolvimento de software

46

Tcnicas e Critrios de Teste


Tcnica Funcional
Requisitos funcionais do software
Critrio Particionamento em Classes de Equivalncia

Tcnica Estrutural
Estrutura interna do programa
Critrios Baseados em Fluxo de Dados

Tcnica Baseada em Erros


Erros mais frequentes cometidos durante o processo de desenvolvimento de software
Critrio Anlise de Mutantes

47

Tcnicas de Teste
Nenhuma dessas Tcnicas de Teste completa, devendo ser aplicadas em conjunto para tentar assegurar um teste de melhor qualidade.

48

Automatizao da Atividade de Teste


Ferramentas de Teste
Para a aplicao efetiva de um critrio de teste faz-se necessrio o uso de ferramentas automatizadas que apiem a aplicao desse critrio.

Contribuem para reduzir as falhas produzidas pela interveno humana

Facilitam a conduo de estudos comparativos entre critrios

Aumento da qualidade e produtividade da atividade de teste Aumento da confiabilidade do software

49

Automatizao da Atividade de Teste


Critrios Estruturais: Fluxo de Dados
Asset, Proteste programas em Pascal xSuds (Atac) programas em C e C++ Poke-Tool programas em C, Cobol e Fortran

Critrios Baseados em Mutao


Mothra programas em Fortran Proteum programas em C Proteum/IM programas em C Proteum/RS especificaes

50

Automatizao da Atividade de Teste


xSuds (Software Understanding & Diagnosis System)
xAtac: teste xSlice: depurao xVue: manuteno xProf: melhoria de performance xDiff: comparao de cdigo

Anda mungkin juga menyukai