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
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
10
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
15
16
17
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
20
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
28
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
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
40
41
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
Tcnica Estrutural
Estrutura interna do programa
Critrios Baseados em Fluxo de Dados
47
Tcnicas de Teste
Nenhuma dessas Tcnicas de Teste completa, devendo ser aplicadas em conjunto para tentar assegurar um teste de melhor qualidade.
48
49
50