Baixe o app para aproveitar ainda mais
Prévia do material em texto
Engenharia de Software Jackson. F. Magnabosco | Teyson Lorenzon | Pedro.A.Guerra Estratégias de teste de Software Estratégias de teste de software. • Objetivos. • Tempos passados. • Realizando uma boa estratégia de testes. • Organização. • Conclusão. Estratégias de teste de software. • V&V (Verificação e Validação). • Software Convencional. • Software Orientado a Objetos. Teste de unidade x Teste de integração • Teste de unidade a. Nível de componente b. Quais os erros devem ser encontrados. c. Lógica • Teste de integração a. Objetivo b. Integração não-incremental c. Testes em pequenos incrementos Defeitos e falhas de software • Mais conhecimento a. Defeito b. Erro c. Falha • Defeitos no desenvolvimento do software. Ferramentas automatizadas de teste. ● Segundo Maldonado (2007), a técnica de automação é voltada principalmente para melhoria da qualidade do software. Ferramentas automatizadas de teste. ● Os testes automatizados tendem a ter uma maior produtividade, onde é necessário um esforço inicial que é compensando na execução a longo prazo. ● O teste manual não pode ser eliminado, deve sim, ser reduzido ao máximo possível e focado naquilo que é muito caro automatizar. Ferramentas automatizadas de teste. ● Com o objetivo de melhorar a qualidade da análise e o tempo de execução dos testes, foram criados os testes automatizados. ● Testes automatizados estão fortemente relacionados com as principais práticas de métodos ágeis. Testes Automatizados ● Os Testes Automatizados são desenvolvidos como programas ou scripts que têm como principal objetivo exercitar o sistema, testando as funcionalidades e verificando se estão de acordo com as especificações dos requisitos do sistema e os objetivos esperados (BERNARDO, 2008). Testes Automatizados (Vantagens) Existem diversas vantagens para a utilização dos testes automatizados, dentre elas destacam-se: ● Menor tempo na execução dos testes; ● Verificação do sistema durante o processo de desenvolvimento; ● Alcançar melhor qualidade do software; ● Casos de testes mais elaborados. ● O grande crescimento das aplicações e sistemas; ● O elevado grau de complexidade dos sistemas. Testes Automatizados (Vantagens) ● Relatórios de bugs são padrão em ferramentas de teste de software automatizadas. ● Os dados de teste de cada teste pode ser salvo como scripts de teste e planos de teste. ● Máquinas de teste de software pode ser executado durante a noite ou nos finais de semana, sem aumentar os custos de trabalho com horas extras. Testes Automatizados (Vantagens) ● A grande vantagem dos testes automatizados é que podem ser repetidos a qualquer momento, seja em uma nova funcionalidade ou alguma modificação em uma funcionalidade específica. Sua implementação reduz os esforços e o tempo gasto, garantindo que não ocorrerá falha humana na execução dos testes (BERNARDO, 2008). Testes Automatizados (Desvantagens) ● O desenvolvimento de testes de software automatizado pode ser demorado. Pode não ser economicamente viável para aplicações de software de pequeno e raramente utilizados. ● Durante a gravação de uma série de operações para o futuro dos testes de software, o testador deve seguir todos os passos perfeitamente e as faixas têm de ser erros. Testes Automatizados (Desvantagens) ● Scripts de testes automatizados precisam ser atualizados à medida que novas funcionalidades são adicionadas ao aplicativo; caso contrário, a nova funcionalidade não será testado durante a execução de testes automatizados, e não registrar a falta de testes de novos recursos, como um defeito. Testes Automatizados (Desvantagens) ● Ao usar o teste de software automatizado, é importante ter certeza de que todo mundo está usando a mesma versão de testes de software e testes de scripts. Esta é uma tarefa muitas vezes esquecido pela gerência de configuração. Testes Automatizados ● Atualmente o analista que desenvolve os testes automatizados, depende da necessidade de entender a programação do sistema desenvolvido e a sua lógica de implementação, sendo antes necessário somente aos programadores do sistema. Há também a necessidade do conhecimento e as características da ferramenta a utilizar na automatização, que muitas vezes possuem linguagens próprias para o seu desenvolvimento (MOLINARI, 2008). Tipos de Ferramentas de Automatização de Testes ● A classificação dos tipos de ferramentas de automatização de Testes é criada de acordo com cada profissional da área de teste. Abaixo serão demonstradas algumas ferramentas de automatização que terão diversas visões, mostrando o lado de cada profissional, ou seja, visão acadêmica e de mercado (MOLINARI, 2008). Tipos de Ferramentas de Automatização de Testes Algumas ferramentas de acordo com o mercado, segundo Molinari: ● Pytest: è uma função que cria casos de testes na linguagem Python. ● Planejamento de Testes: Projeção de testes, criação de requisitos e casos de testes; Tipos de Ferramentas de Automatização de Testes ● Test Data Generators: Geração de massa de dados para testes; ● Test Management: Gerenciamento e planejamento de teste. Tipos de Ferramentas de Automatização de Testes As ferramentas de automatização de testes existem para diversos fins necessários para a criação de teste, os testers verificam a sua necessidade de acordo com os testes que serão executados e qual ferramenta ou ferramentas devem ser utilizadas na sua elaboração e execução dos testes. Critérios de avaliações para a escolha de uma boa ferramenta de automatização de testes • Grau de complexidade da ferramenta; • Custo da ferramenta; • Custo de treinamentos e a aprendizagem da aplicação; • Reutilização do código automatizado do teste; • Tipo de plataformas a serem utilizadas; Critérios de avaliações para a escolha de uma boa ferramenta de automatização de testes Portanto os critérios de avaliações para uma boa ferramenta de testes devem ser observados de acordo com as características dos projetos empregados nos testes automatizados e de acordo com as características demonstradas. Dificuldades no Processo de Automatização As dificuldades na automação de testes ocorrem como em todos os processos para a construção de uma aplicação e sistema, que podem ser levando em consideração uma equipe despreparada ou sem experiência, altos custos iniciais e mão de obra não especializada, dificuldade no entendimento dos casos de testes e da lógica de programação da aplicação ou do sistema, que tem grande importância na automatização. Dificuldades no Processo de Automatização Inicialmente nas empresas a sua principal dificuldade é o processo de implantação dos testes automatizados, pois a automatização dos testes inicialmente tem um elevado custo, devido à compra de ferramentas apropriadas para a criação e execução dos testes, treinamento da equipe, contratação de pessoas qualificadas, e entre outros, sendo que algumas empresas possuem medo de uma grande implantação e gastos com pouco retorno. Dificuldades no Processo de Automatização Essas empresas que possuem este pensamento devem levar em consideração que inicialmente não terão tanto retorno, devido à necessidade de criação dos scripts para os casos de testes e treinamentos, mas em longo prazo obterá grandes retornos, como melhor qualidade em menor tempo, sendo uma característica muito importante para o mercado atual. Dificuldades no Processo de Automatização Às vezes a pessoa conhece o sistema ou aplicação, mas não conhece o processo de automatização ou vice versa, sendo assim necessário treinamento para uma melhor qualidade e benefícios futuros. Motivos para implantar testes na sua empresa ● Quando um produto não é testado, há uma grande chance deste produto possuir erros ou defeitos, assim este produto não vai satisfazer as necessidades o cliente. ● O clientequando não está satisfeito com o produto dificilmente irá contratar novamente a empresa. ● Quando não há qualidade no produto, a empresa fica com imagem negativa, logo é necessário mais investimento em marketing. ● Se os erros são encontrados pelo cliente, o custo para corrigir estes erros é muito maior do que quando o sistema ainda está em desenvolvimento. ● Quando não há uma equipe para testar o sistema, o gerente exige dos programadores um sistema com qualidade, mas isso difícil, pois nem sempre conseguimos ver os próprios erros cometidos. Motivos para implantar testes na sua empresa ● Com os testes, é possível ter uma maior garantia de que o sistema não possui erros críticos, os quais, quando existem, podem causar grandes prejuízos para o cliente. ● Com os testes, novos clientes ficarão interessados em seus sistemas devido à recomendações. ● Com os testes, os programadores, apesar de parecer que não, ficam bem satisfeitos e motivados com os elogios ao sistema feitos pelo cliente, já que ele não encontra muitos bugs. ● Com os testes, minimiza-se a necessidade de atender telefones para ajudar os usuários a utilizarem o sistema, logo, menor custo com mão-de-obra para helpdesk. Motivos para implantar testes na sua empresa ● Quando há uma equipe de teste para testar o sistema, todos saem ganhando: o dono da empresa (menos gasto com marketing e mais prestígio para a empresa), o cliente (satisfação e confiança no sistema), os usuários (conseguem usar o sistema de forma útil e correta), os programadores (motivação por criar sistemas com qualidade) e os testadores (mais empregos). Motivações para trabalhar na área de teste de software ● Em uma pesquisa rapida no web site vagas.com foram identificadas mais de 100 vagas publicadas em menos de 15 dias. ● Os requisitos são poucos, as empresas pedem curso técnico na área ou superior, bons conhecimentos no pacote office, principalmente no excel e conhecimento em testes de software. ● Progressão rápida na carreira, começando como testador em um ano e meio ou dois anos você já pode se tornar analista de testes ou líder de testes ou automatizador de testes e pode se especializar em teste de performance ou teste de segurança. Motivações para trabalhar na área de teste de software ● Em uma pesquisa rápida no web site indeed foi identificado que o salário Testador de software pode variar de R$ 700,00 a R$ 5.400,00, tendo um salário médio bruto mensal de R$ 2.532,00 Motivações para trabalhar na área de teste de software ● Em uma pesquisa rápida no web site lovemondays foi identificado que o salário Analista de software pode variar de R$ 1.816,00 a R$ 7.507,00, tendo um salário médio bruto mensal de R$ 4.085,00 Motivações para trabalhar na área de teste de software ● Empresas pagam para pesquisadores encontrarem falhas em seus sistemas, a google recompensou um pesquisador com R$80.000,00 por encontrar uma falha no sistema Chrome Os. ● A Microsoft anunciou que está disposta a pagar até $100.000,00 para quem encontrar falha no sistema Windows. ● Nos últimos 3 anos a Google pagou cerca de $580.000,00 em recompensas e a Mozilla pagou outros $570.00,00. ● Basicamente são três as partes envolvidas nos testes de software: A empresa, a equipe responsável pelo teste e os testadores. Após receber a demanda, a equipe organiza o projeto, a equipe que vai participar recebe as falhas, faz a validação e informa o resultado ao cliente. O projeto é realizado em um intervalo pré-definido, em que a empresa contratada disponibiliza uma equipe para dar suporte aos participantes, acompanhando o registro de falhas e a comunicação entre os envolvidos. Todo o ambiente é controlado e a infraestrutura de funcionamento é testada, de forma que as falhas registradas são classificadas conforme o grau de complexidade. Como Funciona um Teste de Software Testes de um Software ● Instantâneo Os resultado são gerados em curto prazo de tempo, em poucas horas de trabalho é possível levantar dados de falhas, as quais são reportadas ao sistema a quase instantaneamente. ● Teste com usuários Os testes com usuários permitem obter impressões similares às encontradas por usuários a quem o sistema é destinado. Dessa forma, será possível realizar os ajustes necessários para atender as demandas reais do mercado. Testes de um Software ● Flexibilidade Os testes podem ser feitos a qualquer hora do dia, durante 24 horas por dia e 7 dias por semana. Trata-se de um ponto fundamental quando o prazo para validação é curto ou há grandes volumes de dados para testar. ● Multiplataforma Os testes podem ser feitos em uma ampla variedade de dispositivos e sistemas operacionais, assim o software é testado em um ambiente similar ao real. Testes de um Software ● Maior Custo e Benefício Um teste de software pode ser encarado como um investimento e não um custo, o qual é feito diretamente no resultado, tendo um custo menor do que a correção das falhas após a identificação por um usuário, por exemplo. Além disso, é mais interessante para a relação entre a empresa e o consumidor não apresentar falhas ao invés de se desculpar por erros durante o uso. Vale ressaltar que nem sempre o desenvolvedor se atenta a problemas, pois confia no seu trabalho e isso acaba tornando-o negligente com suas falhas. Ninguém melhor que terceiros a par da operação para verificar o seu funcionamento. Importância de Testes em Softwares Muitos Softwares sem testes apresentam grande taxa de erros ao decorrer do tempo, por isso é muito importante a fase de testes de um software, não reduz 100% das falhas, mas sim conseguimos chegar a um software mais próximo do completo para o usuário que o pediu , assim reduzindo consideravelmente o processo de manutenção de um software, e criando uma aplicação 100% funcional com pouca taxa de bugs e travamentos que teríamos com softwares sem testes, gerando satisfação do usuário e grande mérito a o software feito e toda sua equipe. Tipos de Testes de um Software ● Teste Caixa Branca São feitos com conhecimento da operação interna, onde o testador pode desenvolver códigos para realizar os testes de todas as aplicações de cada componente. ● Teste Caixa Preta São realizados sem conhecimento da operação interna (código) do software, é feito analisando o resultado obtido, geralmente tomando por base casos de uso e especificações de requisitos. Ciclo de Vida do Processo de Testes ● Procedimentos iniciais Nesta etapa deverá ser aprofundado um estudo dos requisitos do negócio que dará origem ao sistema de informação a ser testado, de modo a garantir que o mesmo esteja completo e sem nenhuma ambiguidade. No final desta etapa é elaborado o GOT – Guia Operacional de Teste Ciclo de Vida do Processo de Testes ● Planejamento Consiste em elaborar a Estratégia de Teste e o Plano de Teste a ser utilizados de modo a minimizar os principais riscos do negócio e fornecer os caminhos para as próximas etapas. ● Preparação Nesta etapa, o objetivo básico é preparar o ambiente de teste (equipamentos, pessoal, ferramentas de automação, hardware e software), para que os testes sejam executados corretamente. Ciclo de Vida do Processo de Testes ● Especificação É elaborado e revisado os casos de teste e os de roteiros teste. Os casos de teste e os roteiros de teste devem ser elaborados dinamicamente durante o decorrer do projeto de teste. ● Execução Os testes deverão ser executados de acordo com os casos de teste e os roteiros de teste. Devem ser usados scripts de teste, caso seja empregada alguma ferramenta de automação de testes. Ciclo de Vida do Processo de Testes ● Entrega Esta fase é onde acontece a entrega do software depois de ter passado por todas as fases, com objetivo de minimizar todas as chances possível de erros (bugs). Planejamento de Testes Cada etapa do processo de teste deve ser planejada. O processo de teste tem vida própria no ciclo dedesenvolvimento e pode ser realizado em paralelo com muitas outras atividades de desenvolvimento. Especificamente, devemos planejar cada uma dessas etapas de teste: ● Estabelecendo os objetivos do teste ● Projetando os casos de teste ● Escrevendo casos de teste ● Testando os casos de teste ● Executando os testes ● Avaliando os resultados dos testes Proposta de Teste Utilizamos um plano de testes para organizar as atividades de teste. O plano de testes leva em conta os objetivos do teste e incorpora qualquer cronograma estabelecido pela estratégia de testes ou pelos prazos do projeto. O ciclo de desenvolvimento do sistema requer vários níveis de teste, começando com o de unidade e de integração, e prosseguindo para demonstrar a funcionalidade do sistema completo. Conteudo do Plano Um plano de testes começa com os objetivos do teste, abordando cada tipo, desde o de unidades, passando pelos funcionais, de aceitação e de instalação. Logo, o plano de testes dos sistemas é, na verdade, uma série de planos de testes, um para cada tipo a ser administrado. Em seguida, o plano aborda como serão executados e quais os critérios utilizados para determinar quando o teste está completo. Teste de Configuração Testa se o software funciona no hardware a ser instalado. Teste de Instalação Testa se o software instala como planejado, em diferentes hardwares e sob diferentes condições, como pouco espaço de memória, interrupções de rede, interrupções na instalação etc. Principais técnicas de teste de software Teste de Segurança Testa se o sistema e os dados são acessados de maneira segura, apenas pelo autor das ações. Teste Funcional Testa os requisitos funcionais, as funções e os casos de uso. “A aplicação faz o que deveria fazer?” Principais técnicas de teste de software Teste de Integridade Testa a resistência do software à falhas (robustez). Teste de Unidade Testa um componente isolado ou classe do sistema. Principais técnicas de teste de software Teste de Integridade Testa a resistência do software à falhas (robustez). Teste de Unidade Testa um componente isolado ou classe do sistema. Principais técnicas de teste de software Teste de Integração Testa se um ou mais componentes combinados funcionam de maneira satisfatória. Há quem diga que o teste de integração é composto por vários testes de unidade. Teste de Volume Testa o comportamento do sistema operando com o volume “normal” de dados e transações envolvendo o banco de dados durante um longo período de tempo. Principais técnicas de teste de software Teste de Performance O teste de performance se divide em 3 tipos: Teste de carga: Testa o software sob as condições normais de uso. Ex.: tempo de resposta, número de transações por minuto, usuários simultâneos etc. Teste de stress Testa o software sob condições extremas de uso. Grande volume de transações e usuários simultâneos. Picos excessivos de carga em curtos períodos de tempo. Principais técnicas de teste de software Teste de Usabilidade Teste focado na experiência do usuário, consistência da interface, layout, acesso às funcionalidades etc. Testes de Caixa Branca e Caixa Preta Basicamente, teste de caixa branca envolve o código e o de caixa-preta, não. Principais técnicas de teste de software Teste de Regressão Reteste de um sistema ou componente para verificar se alguma modificação recente causou algum efeito indesejado, além de, certificar se o sistema ainda atende os requisitos. Teste de Manutenção Testa se a mudança de ambiente não interferiu no funcionamento do sistema. Principais técnicas de teste de software
Compartilhar