Prévia do material em texto
Avaliação de Software 1 Unidade III: Testes de Validação 3.1. Estratégias de testes 3.1.1 Testes da Caixa Branca 3.1.2 Testes da Caixa Preta 3.2. Abordagem dos testes 3.2.1. Testes baseados na estrutura interna 3.2.2. Testes baseados nos requisitos 3.3. Testes progressivos e Regressivos. 3.4. Categorias dos Testes de Validação 3.4.1. Testes de Funcionalidade, Testes de Usabilidade, Testes de Carga (stress) , Teste de Volume , Testes de Configuração, Testes de compatibilidade, Testes de segurança, Testes de performance, Testes de instalação, Testes de Confiabilidade, Testes de Recuperação e Testes de Contingência 3.5. Métodos Estruturados de Validação 3.5.1. Casos de Testes 3.5.2. Métodos Caixa Preta para obtenção de Casos de Testes 3.5.3. Métodos Caixa Branca para obtenção de Casos de Testes 3.5.4. Métodos de Refinamento de Casos de Uso 3.6. Fases da Validação 3.6.1. Validação da Unidade 3.6.2. Validação da Integração. 3.6.3. Validação do Sistema 3.6.4. Validação do Aceite Avaliação de Software 2 Unidade III: Testes de Validação 3.1 – Testes de Validação - Os testes, além de localizar erros, também são necessários para determinar a confiabilidade, o desempenho e para validar a interface com o usuário. - O teste de validação tem o seu foco na aplicação, uma vez que já existe um produto computacional. - É um processo formal de avaliação de produtos tecnológicos que podem ser aplicados em componentes isolados, em módulos existentes ou mesmo à totalidade do sistema. - Objetivos principais: - identificar o maior número possível de erros e - avaliar a conformidade do software com os requisitos e especificações analisadas e revisadas nas etapas iniciais do projeto. Avaliação de Software 3 Unidade III: Testes de Validação 3.1 – Testes de Validação (cont.) - Uma estratégia para o teste de um projeto descreve a abordagem geral e os objetivos das atividades de teste. Ela inclui os estágios de teste (unidade, integração e sistema) que devem ser abordados e os tipos de teste (de função, desempenho, carga, stress, etc.) que devem ser executados. - A estratégia define: • As ferramentas e técnicas de teste a serem empregadas. • Os critérios de conclusão e êxito do teste a serem usados. - Para definir a estratégia de teste é fundamental definir: • Tipos de teste (de função, stress, volume, desempenho, usabilidade, distribuição, etc.). • Critérios de avaliação usados (cobertura de teste baseada em código, em requisitos, número de defeitos, intervalo entre falhas, etc.). • Técnicas de teste usadas (manuais e automatizadas). Avaliação de Software 4 Unidade III: Testes de Validação 3.1 – Testes de Validação (cont.) - Existem basicamente duas estratégias utilizadas para conduzir o processo de validação de software: testes de caixa branca e testes de caixa preta. - O Teste caixa-branca, conhecido como teste estrutural é aquele em que o analista tem total acesso à estrutura interna da entidade sendo analisada e permite, por exemplo, que o analista escolha partes específicas de um componente para serem testadas. - São projetados em função da estrutura do componente e podem permitir verificação mais precisa de comportamento do produto. - Ele permite ao avaliador concentrar a atenção nos pontos mais importantes ou “perigosos” do código, de uma maneira mais precisa do que no caso do teste caixa-preta. - Há, entretanto, um elemento comum entre os testes caixa-preta e caixa-branca: em ambos os casos, o avaliador não sabe qual será o comportamento produto em uma determinada situação. Avaliação de Software 5 Unidade III: Testes de Validação 3.1 – Testes de Validação (cont.) - O Teste de Caixa-Preta ou Teste Funcional, também é usado na engenharia, no problema de identificação de sistemas, e advém do fato de que ao analisar o comportamento de um objeto, ignora-se totalmente sua construção interna. - O teste de caixa-preta é baseado nos requisitos funcionais do software. Como não há conhecimento sobre a operação interna do programa, o avaliador se concentra nas funções que o software deve desempenhar. - O teste é particularmente útil para revelar problemas, tais como: • funções incorretas ou omitidas; • erros de interface; • erros de comportamento ou desempenho; • erros de iniciação e término. Avaliação de Software 6 Unidade III: Testes de Validação 3.2 – Abordagens dos Testes. - Abordagens de teste dizem respeito à profundidade da análise a ser realizada. Ela define se o que interessa são apenas as respostas geradas pelo item em teste ou se o seu comportamento interno também deve ser levado em conta. - Segundo Bartié (2002), o direcionamento dos testes baseia-se exclusivamente em requisitos da solução tecnológica a ser desenvolvida (teste de caixa-preta) ou na estrutura interna do código-fonte a ser desenvolvido (teste de caixa-branca). A figura abaixo esquematiza essas abordagens dos testes. Avaliação de Software 7 Unidade III: Testes de Validação 3.3 – Testes Progressivos e Regressivos. - Os testes progressivos são testes elaborados de acordo com a criação de novas funcionalidades do software. Nesta abordagem é necessário testar somente as inovações do software, assumindo que nenhum erro foi introduzido após seu processo de desenvolvimento. Nesta categoria, as funcionalidades já existentes não são testadas e considera-se que as novas alterações no código não impactaram na estrutura existente anteriormente. - Já os testes regressivos são uma abordagem que reexecutam um subconjunto (total ou parcial) de testes previamente executados. Seu objetivo é garantir que uma alteração ou criação de funcionalidade não causou impactos nas estruturas já existentes. Toda nova versão do produto deveria ser submetida a uma nova sessão de testes, a fim de assegurar que estes novos segmentos não afetaram outras partes do produto. Avaliação de Software 8 Unidade III: Testes de Validação 3.4 – Categorias dos Testes de Validação - A realização de todas estas categorias demandaria um esforço muito grande, então se faz necessário selecionar as categorias a utilizar conforme o perfil do produto: a) Testes de Funcionalidade. O direcionamento destes testes deve ser realizado com base nos documentos de especificação funcional, que descreve o comportamento da aplicação nos diversos cenários existentes para cada requisito de negócio. - A principal característica desta categoria de testes é o grande foco nos negócios, com isso, garante- se que não exista diferença entre os requisitos funcionais e o comportamento do software construído. b) Testes de Usabilidade. Têm como meta simular as condições de uso da aplicação sob a perspectiva do usuário, ou seja, tem como foco verificar a facilidade de navegação entre as telas da aplicação, a clareza dos textos e das mensagens apresentadas ao usuário, o volume reduzido de interações para realizar uma determinada função, o padrão visual e etc. Avaliação de Software 9 Unidade III: Testes de Validação 3.4 – Categorias dos Testes de Validação (cont.) c) Testes de Carga. Servem basicamente para avaliar como uma aplicação e toda sua infraestrutura se comportam quando se aplica um volume de transações superiores aos volumes máximos previstos para esta aplicação e quando se aplica variações bruscas de transações. d) Testes de Volume. São caracterizados por determinar os limites de processamento e a carga da aplicação e de toda a sua infra-estrutura. Este tipo de teste é conduzido de forma contínua, aumentando o volume das operações realizadas com a aplicação, até que se atinja o limite máximo. O objetivo deste teste é conhecer os limites da solução e avaliar se estão de acordo com as especificações. e) Testes de Configuração. Têm por finalidade executar o software sobre inúmeras configurações de softwarebásico e de hardware. A meta deste teste é garantir que a solução funcione corretamente sobre os diversos ambientes previstos nas fases de levantamento de requisitos. Avaliação de Software 10 Unidade III: Testes de Validação 3.4 – Categorias dos Testes de Validação (cont.) f) Testes de Compatibilidade. Buscam executar a aplicação interagindo com as versões anteriores de outras aplicações ou dispositivos físicos. O objetivo deste teste é garantir que as novas versões de um software estão suportando antigas versões. g) Testes de Segurança. Tem como objetivo encontrar as falhas de segurança que podem comprometer a confidencialidade e a integridade das informações, provocar perdas de dados ou interrupções de processamento. h) Testes de Desempenho. Tem por finalidade determinar se o desempenho da aplicação está coerente com os requisitos definidos, quando se obtém situações em que o pico máximo de acesso e concorrência é atingido. Avaliação de Software 11 Unidade III: Testes de Validação 3.4 – Categorias dos Testes de Validação (cont.) i) Testes de Confiabilidade e Disponibilidade. A principal característica deste teste é monitorar uma aplicação por um determinado tempo e avaliar o nível de confiabilidade da arquitetura da solução. Este tipo de teste pode ser executado da seguinte maneira: monitorando a execução da aplicação; identificando todas as interrupções do ambiente; e identificando o tempo de interrupção do ambiente. j) Testes de Recuperação. Tem por finalidade avaliar como se comporta a aplicação após a ocorrência de um erro e verificar sua recuperação. Esses testes podem ser realizados da seguinte forma: interrompendo o acesso à rede por alguns instantes e por um longo período; interrompendo o processamento, desligando o micro e o servidor; e gerando arquivos e posteriormente cancelando o processamento. Avaliação de Software 12 Unidade III: Testes de Validação 3.4 – Categorias dos Testes de Validação (cont.) k) Testes de Instalação. Tem como objetivo validar o procedimento de instalação da aplicação, de forma que esta atenda a todas as necessidades apresentadas nos requisitos. É recomendado que este teste seja realizado pelo próprio usuário. l) Teste de Regressão. Teste repetido de um programa que sofreu alguma mudança após uma etapa de testes, tem como objetivo descobrir a existência de algum defeito introduzido ou não identificado originalmente como resultado da mudança, sendo realizado quando o software ou o ambiente são modificados. O teste de regressão é uma atividade que ajuda a garantir que as modificações no produto de software não introduzam um comportamento indesejável ou erros. Avaliação de Software 13 Unidade III: Testes de Validação 3.5 – Métodos e Estruturas de Validação 3.5.1 – Casos de Testes Apesar de existir um padrão internacional para a especificação de casos e procedimentos de teste publicado no padrão IEEE-Std-829 (roteiro de documentos para a atividade de teste em geral), ele serve apenas como um roteiro e normalmente é customizado pelas empresas. Na verdade, o padrão IEEE-Std-829 foi proposto exatamente com o intuito de servir como base para que empresas de software pudessem definir o seu roteiro de documentos para as atividades de teste de software. Avaliação de Software 14 Unidade III: Testes de Validação 3.5.2 – Métodos de caixa preta para obtenção de casos de testes - Os testes de caixa preta são uma abordagem complementar aos testes de caixa branca e, possuem a finalidade de identificar um conjunto de situações que serão empregadas em forma de testes para a identificação de erros. - Quanto maior a variedade de cenários maior será o conjunto de soluções que serão avaliadas e comparadas com os requisitos. Os principais métodos de testes de caixa-preta para a obtenção de casos de teste são: Métodos de decomposição de requisitos e Métodos de análise de documentos. Avaliação de Software 15 Unidade III: Testes de Validação 3.5.2 – Métodos de caixa preta para obtenção de casos de testes (cont.) - Os requisitos são extremamente importantes no processo de teste de software. A decomposição de um requisito em cenário é fundamental para obtermos todas as possibilidade envolvidas na dinâmica do software. É importante explorar todos os cenários possíveis para cada requisito especificado. - Destacam-se os três tipos de cenários que podem estar contidos nos requisitos: primário, alternativo e de exceção. Avaliação de Software 16 Unidade III: Testes de Validação 3.5.2 – Métodos de caixa branca para obtenção de casos de testes - Esses métodos baseiam-se em um estudo detalhado das linhas de código. Os principais métodos de caixa branca para obtenção dos casos de teste são: Avaliação de Software 17 Unidade III: Testes de Validação 3.6 – Fases da Validação 3.6.1 – Validação da Unidade - Essa é a primeira etapa do processo de validação e, tem por objetivo testar componentes individuais de uma aplicação. - Esse estágio de teste, também chamado de Teste Unitário é definido como a focalização do esforço da verificação na menor unidade de projeto do software – o componente ou módulo do software. - Também é possível resumir esse conceito como “Teste em nível e componente ou classe”. - Os testes unitários devem ser projetados visando à cobertura de código nos objetos, realizando testes em todas as operações do mesmo, além de verificar seus atributos e simular os mais diversos eventos que causem alguma mudança nesse objeto, utilizando diferentes entradas para atingir tal objetivo. - Sempre que possível, deve-se automatizar os testes unitários. Avaliação de Software 18 Unidade III: Testes de Validação 3.6 – Fases da Validação (cont.) 3.6.2 – Validação da Integração - A validação de integração é uma continuação natural dos testes unitários. O principal objetivo é validar a compatibilidade entre os diversos componentes do software. Testes de integração ou testes de componentes, são uma técnica sistemática para construir a arquitetura de software ao mesmo tempo que conduz testes para descobrir erros associados com as interfaces. - O teste de integração garante que um ou mais componentes combinados (ou unidades) funcionam corretamente. - Os testes de integração possuem duas abordagens: sequência de execução e baseado no uso. A primeira utiliza todas as classes que respondem a uma entrada ou evento do software, sendo que cada uma dessas classes precisam ser integradas e testadas de forma individual. Já, os testes baseados em uso começam pelas classes que podem possuir poucas classes dependentes ou nenhuma, sendo que ao final desses testes, as classes que as utilizam irão sendo testadas até que todo o sistema esteja construído, sendo isso realizado de forma incremental. Avaliação de Software 19 Unidade III: Testes de Validação 3.6 – Fases da Validação (cont.) 3.6.3 – Validação do Sistema - Quando se chega nessa fase é necessário que a maior parte das falhas de funcionalidade tenham sido detectadas pelos testes unitários e os testes de integração. - Os testes de sistema caracterizam-se por uma série de diferentes testes cuja finalidade primária é exercitar totalmente o sistema. Da mesma forma que o teste unitário e o de integração, o teste de sistema é focado principalmente na descoberta de falhas, mas ao contrário das atividades de teste de nível de granularidade mais fino, se concentra nas propriedades do nível do sistema. - Alguns dos tipos de testes que são realizados nesse estágio podem ser testes de funcionalidade, testes de recuperação, testes de segurança, testes de desempenho e testes de disponibilidade. - Os testes de sistema são mais difíceis de automatizar do que testes de unidade e integração, uma vez que a verificação pode ser dificultada pela necessidade da geraçãode grandes volumes de dados, dificultando os casos de teste que precisam comparar a saída do sistema com a saída ideal do teste. Avaliação de Software 20 Unidade III: Testes de Validação 3.6 – Fases da Validação (cont.) 3.6.4 – Validação do Aceite - Teste de aceitação é exploratório voltado para validar aquilo que o usuário deseja, tendo um objetivo claro: dar o aceite ou não. São divididos em dois estágios: o teste alfa e o teste beta. - Teste alfa: É caracterizado pelos testes realizados pelos usuários em um ambiente simulado, podendo este estar localizado dentro da empresa criadora do software. Tem como objetivo observar a naturalidade com que o sistema é utilizado pelos usuários finais, não sendo muito rigoroso em relação aos procedimentos mais críticos a serem validados. - Teste beta: tem como característica a execução do sistema na própria infraestrutura da empresa que vai utilizar o software. Esse estágio de teste serve para que os usuários possam ter segurança em utilizar essa versão em produção, contando com o apoio da equipe de desenvolvimento para correção de qualquer problema que possa prejudicar o seu o uso. Avaliação de Software 21 Unidade III: Testes de Validação LEITURA RECOMENDADA Capítulos 2 e 3 do Livro Proprietário; Slide 1 Slide 2 Slide 3 Slide 4 Slide 5 Slide 6 Slide 7 Slide 8 Slide 9 Slide 10 Slide 11 Slide 12 Slide 13 Slide 14 Slide 15 Slide 16 Slide 17 Slide 18 Slide 19 Slide 20 Slide 21