Baixe o app para aproveitar ainda mais
Prévia do material em texto
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. 3 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. 4 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. 5 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. 6 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. 7 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. 8 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 9 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. 10 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. 11 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á! 12 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). 13 LEMBRANDO: QUEM REALIZA O TESTE? Existem várias responsabilidades e papéis dentro da equipe: 14 Líder do projeto de testes Responsável pela liderança de um projeto de teste, geralmente relacionado a um sistema em desenvolvi- mento, seja um projeto novo ou manutenção. Arquiteto Responsável pela montagem da infraestrutura de teste, monta o ambiente de teste, escolhe as ferramentas de teste e capacita a equipe para executar seu trabalho neste ambiente. Analista do teste Responsável pela modelagem e elaboração dos casos de teste e pelos scripts de teste. Em alguns casos, os scripts podem ser elaborados pelos testadores. Testador Responsável pela execução dos casos de teste e scripts. 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. 15 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. 16 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. 17 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. 18 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. 19 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. 20 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. 21 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. 22 TESTE DE SISTEMA Em vez de se satisfazer com este contrassenso, o engenheiro de software deve antecipar problemas potenciais de interface e: 1. Projetar caminhos de manipulação de erros que testem toda a informação que chega de outros elementos do sistema; 2. Conduzir uma série de testes que simule maus dados ou outros erros em potencial na interface de software; 23 TESTE DE SISTEMA 3. Registrar os resultados dos testes para usá-los como “evidência; 4. Participar do planejamento e projeto de testes de sistema para garantir que o software seja adequadamente testado. 24 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: 25 TESTE DE SISTEMA ✓ Teste de recuperação; ✓ Teste de segurança; ✓ Teste de esforço; ✓ Teste de desempenho; ✓ Teste de disponibilização. 26 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. 27 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. 28 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. 29 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; 30 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. 31 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. 32 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: 33 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. 34 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. 35 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. 36 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. 37 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?” 38 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. 39 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; 40 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. 41 TESTE DE ESFORÇO
Compartilhar