Baixe o app para aproveitar ainda mais
Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original
* TESTES DE SOFTWARE – AULA 7 Rio de Janeiro, 21 de agosto de 2011 ESTRATÉGIA DE TESTE DE SOFTWARE TESTE DE SISTEMA * 1) Compreender as técnicas de teste de sistema em ambiente de produção ou do usuário; 2) Definir estratégia de testes de sistema em ambiente de produção e do usuário; 3) Implementar testes de sistema em ambiente de produção e do usuário; 4) Avaliar testes de sistema em ambiente de produção e do usuário. * OBJETIVOS DESTA AULA * O software é testado para revelar erros cometidos inadvertidamente quando projetado é construído. Neste sentido torna-se necessária a definição de uma estratégia de teste de software de forma a orientar os desenvolvedores e as equipes independentes de testes, os passos a serem seguidos, o tempo de trabalho e os recursos necessários. * LEMBRANDO * “O processo de desenvolvimento de sistemas pode ser visto como uma espiral com suas etapas movimentando-se para dentro enquanto que a estratégia de teste pode ser vista movimentando-se para fora. * LEMBRANDO * Considerando de um ponto de vista procedimental, o teste no contexto da Engenharia de Software é uma série de quatro passos, que são implementados sequencialmente. * LEMBRANDO * Serão compreendidas as técnicas de teste de sistema em ambiente de produção ou do usuário. Serão abordadas as estratégias de testes, implementação e avaliação de sistema em ambiente de produção e do usuário. O teste de sistema é na realidade uma série de diferentes testes cuja finalidade primária é exercitar totalmente o sistema. Estes diferentes tipos de testes apesar de terem finalidades diferentes, funcionam no sentido de verificar se os elementos do sistema foram integrados. * INTRODUÇÃO * As etapas executadas durante o projeto de software e o teste podem aumentar muito a probabilidade de uma integração de software bem-sucedida em um sistema maior. O software uma vez validado deve ser combinado com outros elementos do sistema, por exemplo, hardware, pessoas e bases de dados e assim validado se todos os elementos se combinam corretamente e se a função e o desempenho global do sistema são conseguidos. * INTRODUÇÃO * O teste de sistema se refere ao comportamento de todo o produto definido pelo escopo de um projeto em desenvol-vimento. Agora, ambiente de teste deve corresponder o máximo possível ao ambiente de produção, para minimizar que os riscos de falhas específicas de ambiente não serem encontradas durante o teste. “Não é apenas uma configuração de hardware, mas toda estrutura onde o teste será executado”. Fonte: Base de conhecimento em teste de software * TESTE DE SISTEMA * O objetivo do teste de sistema é realizar a execução do sistema como um todo, dentro de um ambiente operacional controlado, para validar a exatidão e perfeição na execução de suas funções, acompanhando cenários sistêmicos elaborados pelo profissional de requisitos do projeto e devem retratar os requisitos funcionais e não-funcionais do sistema. * TESTE DE SISTEMA * Normalmente este tipo de teste é realizado por uma equipe de teste independente, onde o analista de teste irá elaborar os casos de testes, normalmente em conjunto com os desenvolvedores e executando os testes em um ambiente controlado, no caso o ambiente de teste. * TESTE DE SISTEMA * Do ponto de vista psicológico, as atividades de análise e projeto, junto com a programação, são tarefas construtivas. Por outro lado, a atividade de teste pode ser vista, psicologicamente, como uma tarefa destrutiva. Por esse motivo, é comum o desenvolvedor “pisar leve”, projetando e executando testes que demonstrem que o sistema funciona, em vez de descobrir erros. Se o Engenheiro de Software não o encontrar, o cliente o fará! * LEMBRANDO: QUEM REALIZA O TESTE? * Normalmente para que o processo de teste transcorra de forma íntegra é comum a utilização de um grupo independente de teste, já que as pessoas que criaram o software não devem ser as que irão realizar os testes. Seria um conflito de interesses pois foram elas que o “criaram”. Este grupo trabalha de forma conjunta e existem testes que somente serão conduzidos pelos desenvolvedores, como o teste de unidade (já discutido). * LEMBRANDO: QUEM REALIZA O TESTE? * Existem várias responsabilidades e papéis dentro da equipe: * Fonte: Rios.E & Moreira,T. Testes de Software. Rio de Janeiro. Alta Books, 2003 LEMBRANDO: QUEM REALIZA O TESTE? * Interpretações Erradas: 1 - De modo algum o desenvolvedor deve testar. ele é sempre responsável por testar as unidades individuais (componentes) do programa. Em muitos casos também realiza o teste de integração (teste da estrutura completa do programa). Só depois é que um Grupo Independente de Teste se envolve. * LEMBRANDO: QUEM REALIZA O TESTE? * Interpretações Erradas (cont.): 2 - O software deve ser “jogado” aos “estranhos” do ITG. os dois grupos trabalham estreitamente unidos ao longo do projeto de software. O desenvolvedor deve também estar à disposição para corrigir erros que sejam descobertos. * LEMBRANDO: QUEM REALIZA O TESTE? * Interpretações Erradas (cont.): 3 - O ITG se envolverá com o projeto somente quando o teste começar. O ITG faz parte da equipe de desenvolvimento de software, ou seja, se torna envolvido a partir do processo de especificação ao longo de um grande projeto. * LEMBRANDO: QUEM REALIZA O TESTE? * O papel do ITG é remover os problemas inerentes ao fato de deixar que o construtor teste o que foi construído, de forma a suprimir o conflito de interesses. Em muitos casos o ITG pertence ao grupo de GQS, conseguindo assim um grau de independência maior. * LEMBRANDO: QUEM REALIZA O TESTE? * Os testes podem ser baseados em: Especificação de riscos e/ou de requisitos, Processos de negócios, Casos de uso. * TESTE DE SISTEMA * Ainda no começo das nossas aulas, nós reforçamos o fato de que o software é apenas um elemento de um sistema maior baseado em computador. Em última análise, o software é incorporado aos outros elementos do sistema, (exemplo: hardware, pessoal e informação) e uma série de testes de integração e validação do sistema é conduzida. * TESTE DE SISTEMA * Estes testes saem do escopo do processo de software e não são conduzidos somente por engenheiros de software. No entanto, passos tomados durante o projeto e o teste de software podem melhorar muito a probabilidade de integração de software bem sucedida no sistema maior. * TESTE DE SISTEMA * Um problema clássico do teste de Sistema é o de ser “dedo-duro”. Isso ocorre quando um erro é descoberto, e cada desenvolvedor de um elemento do sistema culpa o outro pelo problema. * TESTE DE SISTEMA * Em vez de se satisfazer com este contrassenso, o engenheiro de software deve antecipar problemas potenciais de interface e: Projetar caminhos de manipulação de erros que testem toda a informação que chega de outros elementos do sistema; Conduzir uma série de testes que simule maus dados ou outros erros em potencial na interface de software; * TESTE DE SISTEMA * Registrar os resultados dos testes para usá-los como “evidência; Participar do planejamento e projeto de testes de sistema para garantir que o software seja adequadamente testado. * TESTE DE SISTEMA * O teste de sistema é na realidade uma série de diferentes testes cuja finalidade primária é exercitar totalmente o sistema e que apesar de terem finalidades diferentes, todos funcionam no sentido de verificar se os elementos do sistema foram integrados adequadamente e executam as suas funções corretamente: * TESTE DE SISTEMA * Teste de recuperação; Teste de segurança; Teste de esforço; Teste de desempenho; Teste de disponibilização. * TESTE DE SISTEMA * O teste de recuperação é um teste de sistema que força o software a falhar de várias formas e verifica se a recuperação é executada corretamente. Se a recuperação for automática, a reinicialização, os mecanismos de verificação, recuperação de dados e reinício são avaliados quanto à correção. Caso a recuperação requeira a intervenção humana , é avaliado o tempo médio de reparo (mean-time-to repair – MTTR) para determinar se está dentro dos limites aceitáveis. * TESTE DE RECUPERAÇÃO * O teste de segurança tenta verificar se os mecanismos de proteção incorporados ao sistema vão de fato protegê-lo contra acesso indevido. A principal meta do teste de segurança é garantir que os dados ou funções de um sistema possam ser acessados apenas por atores autorizados a acessá-las. * TESTE DE SEGURANÇA * Durante o teste de segurança, o testador faz o papel do indivíduo que quer invadir o sistema o sistema e desta forma tentará, por exemplo, obter senhas por meios externos, sobrecarregar o sistema ou ainda causar erros propositadamente. Todas as formas de ataque de acesso indevido devem ser simuladas. * TESTE DE SEGURANÇA * Os principais objetivos a serem alcançados com este tipo de teste são: Assegurar que os mecanismos de controle contra acessos indevidos foram corretamente implementados; Analisar as ameaças e vulnerabilidades, tanto físicas quanto lógicas; * TESTE DE SEGURANÇA * Os principais objetivos a serem alcançados com este tipo de teste são (cont.): Garantir que os dados do sistema estão protegidos adequadamente; Assegurar que todos os riscos que envolvem os acessos indevidos foram identificados. * TESTE DE SEGURANÇA * O teste de desempenho ou performance, como também é conhecido, mede e avalia o tempo de resposta, o número de transações e outros requisitos sensíveis ao tempo de resposta do sistema. Este tipo de teste é feito em todas as etapas no processo de teste, inclusive em nível de unidade, já que o desempenho de um módulo individual pode ser avaliado durante o teste. * TESTE DE DESEMPENHO * Entretanto o desempenho de um sistema só pode ser avaliado depois que todos os elementos do sistema estiverem totalmente integrado. Os principais objetivos a serem alcançados com este tipo de teste são: * TESTE DE DESEMPENHO * Os principais objetivos a serem alcançados com este tipo de teste são: Determinar o tempo de resposta das transações; Verificar se os critérios de desempenho estabelecidos estão sendo atendidos; Identificar pontos de gargalo no sistema; Verificar o nível de utilização do hardware e software. * TESTE DE DESEMPENHO * Normalmente este tipo de teste requer instrumentação de hardware e software, tendo em vista a necessidade da medição dos recursos utilizados de forma precisa. Nas próximas aulas estudaremos sobre estas ferramentas automatizadas de teste. * TESTE DE DESEMPENHO * O teste de disponibilização também conhecido como teste de configuração, exercita o software em cada ambiente no qual deve operar, tendo em vista que muitos softwares operam em uma variedade de plataformas e sob mais de um ambiente de sistema operacional. * TESTE DE DIPONIBILIZAÇÃO * Este tipo de teste examina todos os procedimentos de instalação e software de instalação que serão utilizados pelos clientes e toda a documentação que será usada para fornecer o software para os usuários finais. Pode inclusive abranger combinações de navegadores com vários sistemas operacionais diferentes. * TESTE DE DIPONIBILIZAÇÃO * O teste de esforço também conhecido como teste de estresse colocam os programas em situações anormais. “Até onde podemos forçar o sistema até que falhe?” * TESTE DE ESFORÇO * A principal meta do teste de esforço é entender o comportamento do sistema durante condições-limite de execução ou fora da tolerância esperada. Tipicamente envolve a execução do sistema com baixos recursos de hardware e software, ou a concorrência por estes recursos. * TESTE DE ESFORÇO * Os principais objetivos a serem alcançados neste tipo de teste são: Determinar a que condições-limite de recursos o software é capaz de ser executado; Determinar quais volumes de transação, normais e acima dos normais, podem ser processados num período de tempo esperado; * TESTE DE ESFORÇO * Os principais objetivos a serem alcançados neste tipo de teste são (cont.): Verificar se o sistema é capaz de garantir tempos adequados de resposta sendo executado em condições-limite; Verificar se há restrições quanto ao ambiente em que o software vai operar. * TESTE DE ESFORÇO *
Compartilhar