Transcript of Rede de Laboratórios de Produtividade de...
Rede de Laboratórios de Rede de Laboratórios de Produtividade de Software
Testes Exploratórios
Programa de Capacitação Programa de Capacitação em Testes de Software
O que é Teste Exploratório?
"Simultaneous test design, test execution, and learning“
3Rede de Laboratórios de Produtividade de Software
test execution, and learning“
James Bach
Teste Exploratório é...
Uma atividade sapiente, que exige um pensamento humano para executar.
4Rede de Laboratórios de Produtividade de Software
Teste Exploratório é...
Um trabalho investigativo, onde o investigador deve escolher o que estudar, e como estudar, a fim de revelar as informações mais necessárias.
Teste exploratório é um estilo de teste de software que enfatiza a liberdade individual e responsabilidade do testador, em busca de melhoria continua e otimização do seu trabalho em busca de erros. Relacionando design, execução e interpretação dos resultados com a aprendizagem. “Charles Everton”
ST x ET
Scripted Testing
Exploratory Testing
Contraste das abordagens Na execução de roteiros de testes o testador realiza precisamente o que o script de teste especifica e nada mais, já nos testes exploratórios o testador não tem atividades pré-programadas para executar. A aceitação e utilização de testes exploratórios para algumas empresas ainda é um ponto de grande reflexão, por não terem conhecimento de como aplicá-los ou a dificuldade de visualização de resultados com essa abordagem.
Comparativo
ST ET
É determinado com antecedência
É determinado no momento
É confirmativo É investigativo
Enfatiza a previsibilidade Enfatiza a criatividade
Controle sobre os testes Desafio de melhorar o design dos testes
Vantagens X Desvantagens
Estimula a criatividade Difícil de coordenar
Aumenta a chance de encontrar novos bugs
Não oferece reutilização dos teste
Permite uma rápida Depende das competências e Permite uma rápida avaliação
Depende das competências e conhecimentos de domínio do testador
Flexível e Adaptável Não é adequado para testes de segurança, teste de desempenho
Modelagem�Organização�Interrogatório�Disciplina�Observação�Foco�Colaboração�Geração / Elaboração�Orientação�Ramificação Auto gestão Gravação�Reportagem
Estrutura do ET
A estrutura do ET vem de várias fontes:• Heurísticas• Percepção de risco• O processo de aprendizagem do produto• O processo de aprendizagem do produto• Habilidade• Talentos e interesses do testador• A missão global do teste
Quando os testadores desenvolvem as habilidades de análise e investigação isso lhe dá a confiança para usar a ferramenta de teste mais poderosa que temos à nossa disposição: a mente humana. Heurística:Uma decisão tomada por experiência na função, intuição, bom senso ou outra forma que não seja confirmada por um método matemático, trata-se de confirmação heurística.
Variações dos testes exploratórios
• Freestyle• Session-based Testing Management• Charter
--Freestyle: onde o testador estão mais focados na aprendizagem do software ou funcionalidade que estão testando, abordando os pontos fracos do produto, verificando as regras de negocio e registrando os pontos de falhas. --Testes baseada em Sessão é uma técnica de gestão e controle de testes improvisados. Não é uma estratégia de geração teste, e ao mesmo tempo estabelece um quadro em torno de testes improvisados, não é uma abordagem sistemática cujo objetivo é o controle e alcance preciso. Pelo contrário, é uma técnica que se baseia nos pontos fortes de testes improvisados - velocidade, flexibilidade e escala. --O coração da técnica é a idéia de limites de eficácia. A sessão de teste tem um início bem definido e tempo do fim, limitando a sua duração. Durante uma sessão de teste, um testador se engaja em uma exploração dirigida de uma pequena parte da coisa que está sendo testado. Dentro desses limites, momento a momento, as atividades não são controlados, o julgamento fica a cargo do testador. O testador registra sua atividade - e inclui todas as outras informações que lhe parece relevante, as reações do sistema, os dados utilizados, as condições, o diagnóstico ou idéias. --O charter define uma missão clara para a Sessão, Pode sugerir o que deve ser testado, que problemas procurar, pode se referir a outros documentos ou fontes de informação. Uma charter não é para ser um plano detalhado. Charter proporcionam um melhor foco.
Técnicas de ET permite:
• Avaliar o risco e definir as prioridades• Controlar o escopo dos testes• Controlar o trabalho• Avaliar a cobertura• Avaliar a cobertura
Controlar o escopo com eficiência requer conhecimento e habilidade na busca por erros. --Normalmente, o gerente de testes controla a escolha inicial de pontos de teste, e também atua como o controlador para mudar quando necessário. Seus decisão baseia-se em:�• Disponibilidade de software�• Disponibilidade de recursos de teste�• Tempo necessário para testar versus o tempo disponível �• Testes realizados até agora, e sua cobertura de risco e áreas funcionais�• Plano de testes --Os métodos formais de medição de cobertura não funcionam bem com o teste exploratório, e pode introduzir complexidades para a execução dos testes. Uma medida de cobertura simples para avaliar dá uma boa indicação dos testes que havia sido feito em relação ao que precisava ser feito, a disponibilidade do sistema para viver operação, e as partes do sistema que precisava de mais testes.
Risco
Alto Baixo
Alto 3 2
Baixo 2 1
Custo
Risco
Risco e estabelecimento de prioridades: A equipe de teste precisa ser reativo. Precisam avaliar as novas circunstâncias contra as tarefas existentes de forma rápida e com precisão. Na tomada de decisões sobre a importância e urgência, foi bom ter informações sobre risco e custo. Risco é uma combinação do custo de falha e a probabilidade de fracasso. Para permitir que as avaliações seriam consistentes e repetíveis, precisávamos de um método simples de avaliação do risco. Começamos com possivelmente o mais simples: custo X risco Alto Alto = 3 baixo Baixo = 2 Alto Alto = 2 Baixo baixo = 1 Cada ponto de teste foi avaliado o risco. O trabalho foi atribuído pelo risco, e as métricas foram divididos pelo risco. Nós concluíram que o risco associado a um ponto do ensaio foi facilmente comunicados à empresa, e amplamente correspondência às suas expectativas.
EscopoCHARTER Ex: Testar o módulo de cadastro de pacientes.#AREASOS | Win98Build | 1.2Strategy | Complex | Function & Data Testing
SESSION SHEETTIME: 90 minTIME: 90 minTESTER: Jonathan Bach
TASK BREAKDOWNDURATION: Start: 10/02/2010 5:30pm End: 10/02/2010 7:00pm#TEST DESIGN AND EXECUTION50 min#BUG INVESTIGATION AND REPORTING30 min#SESSION SETUP10 min#CHARTER VS. OPPORTUNITY--Descrever as oportunidades ou observações identificadas durante a execução
ExecuçãoTEST NOTESEx: Teste do módulo de cadastro de pacientes executado por Jonathan Bach.
Session Log______________________________________________________________________________EX: Realização de cadastro de pacientes com variação nos dados de entrada.• Cadastrado paciente sem nome (see BUG 1)• Adicionado caracter inválido no número da carteira do plano de saúde (see BUG 2)
CoberturaFaixa percentual bruto de tempo gastos em:
– Projeto e execução de teste (T)– Investigação e Relato de Erros (B)– Instalação (S)
Estimativa:Estimativa:– Estimativa em termos percentuais de quanto a
funcionalidade foi testada
Avaliar a cobertura do teste em termos de:– Nível 1: Smoke and sanity– Nível 2: Aspectos comuns, o núcleo crítico– Nível 3: complexo, extremo
• Um baixo percentual na estimativa pode indicar uma grande funcionalidade, mas pode indicar pouca habilidade do executor • Muito tempo de B pode significar problemas de qualidade de código, mas pode sugerir ineficiência na comunicação�• Muito tempo de S pode significar problemas de testabilidade ou de configuração para clientes, ou pode significar primeiros dias de testes Medidas simples são as melhores Favorecer a comunicação eficaz sobre a documentação Métricas de imediato permitir o controlo em tempo real Quando dado um feedback adequado, os testadores podem aprender a melhorar as eficácia dos seus testes improvisados, e a precisão das suas estimativas. O Centro desse processo é uma métricas de cobertura repetível e confiável que permite muitas avaliações subjetivas.
Quando Aplicar Teste Exploratório?• Um novo testador entra na equipe• É necessário uma avaliação rápida• Mudanças são descobertas durante a execução dos testes de
roteiro• Possui testadores com alto conhecimento do domínio• Um teste de admissão (também conhecido como teste de • Um teste de admissão (também conhecido como teste de
fumaça) é desejado• Não existe uma base de teste• É um projeto ágil• Você quer isolar e investigar um defeito particular• É uma iteração inicial em que o produto não é estável o
suficiente para ST• Aumentar e diversificar os testes
Como incluir ET no projeto de teste
Processo de teste típico
Um típico processo de testes simples possui as seguintes etapas: • O projeto de teste começa com a preparação e planejamento de atividades onde a abordagem e a estratégia de teste estão definidos, o planejamento de testes é especificado, e os planos de teste são escritos. • Na fase de construção dos teste, as especificações dos testes são documentados e a infra-estrutura de teste é criado. • Os testes que foram elaboradas na etapa anterior são executados, que normalmente consiste de vários ciclos de teste. • Ao final do projeto, o encerramento do projeto de teste acontece: o processo de testes é avaliado, os resultados de teste são consolidadas e a equipe de teste é liberado da tarefa. • Em paralelo com estas atividades, a gestão de teste assegura que o avança do processo aconteça de uma maneira profissional usando o gerenciamento de ferramentas tais como relatórios de acompanhamento, status e de gestão de defeitos. • A Gestão da Qualidade é realizada para gerir, orientar e melhorar execução do projeto e assegurar a qualidade dos produtos. É importante notar que as atividades de gestão dos testes, como: preparação, planejamento e gestão, não pode ser conduzida de uma forma exploratória. Estas atividades precisam do apoio de técnicas tradicionais, tais como planos de documentar, estratégias de testes, o status do teste, e relatórios de resumo de teste.
Processo de ET
Processo de teste exploratório
Na Prática...
Continuamos com a liberação de nossos sistemas (na maioria das vezes) .....– "Um pouco tarde demais"– "Vários defeitos"– "Vários defeitos"– "Os orçamentos são ligeiramente estourados"
Problema 1
• Pergunta: Como ser “bom o suficiente” e “sobreviver” neste cenário?
Rapid Software Testing
O RST tem ênfase no desenvolvimento profissional e métodos heurísticos, através do pensamento crítico e de testes exploratórios. Ele se encaixa na Escola Direcionada pelo Contexto (Context-Driven School), oferecendo desta maneira, um conjunto de práticas que podem ser aplicadas pelo profissional de acordo com o seu contexto e os resultados podem variar conforme o mesmo. O RST está alinhado com a Escola Direcionada pelo Contexto, portanto acredita que o teste deve responder primeiro as necessidades da organização e do projeto, ao invés, das "melhores práticas", afinal as "melhores práticas" podem não ser as melhores para todos contextos. O RST se apóia bastante na habilidades dos profissionais, e principalmente, na capacidade de exploração. O pensamento crítico possui um enfoque na consideração das evidências, no contexto do julgamento, e a relevância do critério para se fazer o julgamento, os métodos e técnicas aplicáveis para formar a opinião, e os construtos teóricos aplicáveis para entender a natureza do problema e da questão. O pensamento crítico emprega não apenas a lógica mas uma grande variedade de critérios intelectuais, como claridade, credibilidade, precisão, relevância, profundidade, significância
Context-Driven Testing School
“A atitude certa e as ferramentas adequadas e que nos permitem desenvolver uma processo eficaz e eficiente”
A definição da Escola de Teste Direcionada pelo Contexto (usarei a sigla ETDC daqui em diante) proposta pelo Brett Pettichord, Cem Kaner e James Bach, é apresentada em sete príncipios básicos, sendo eles: O valor de qualquer prática, depende do contexto que ela é aplicada. Existem boas práticas em um contexto, mas não há melhores práticas. Pessoas trabalhando juntas, são a parte mais importante do contexto de qualquer projeto. Os projetos se desdobram ao longo do tempo, de formas que muitas vezes não são previsíveis. O produto é uma solução.Se o problema não for resolvido, o produto não funciona. Bom teste de software é um processo intelectual desafiador. Somente através do julgamento e habilidade, exercidos de forma cooperativa durante todo o projeto, seremos capazes de fazer as coisas certas nos momentos certos, para efetivamente testar nossos produtos. Testadores Context-driven escolhem os seus objetivos de testes, técnicas e produtos (incluindo a documentação de teste), olhando primeiro para os detalhes da situação específica, incluindo os desejos das partes interessadas que pediu o teste. A essência CDTS é a aplicação do projeto adequado de habilidade e julgamento. Teste direcionado pelo contexto é fazer o melhor que nós podemos, com o que nós temos. Ao invés, de ficar tentando aplicar as "melhores práticas", nós aceitamos que diferentes práticas (até mesmo diferentes definições de termos comuns de teste) irão funcionar melhor em diferentes circunstâncias. Um exemplo clássico, é a busca insistente por templates de documentos, que por si só não tem nenhum problema, principalmente quando é feita buscando conhecer o que já existe e adaptar para a realidade. Porém, muitos buscam templates para adaptar a sua realidade a ele, e não adaptar o template a sua realidade.
Problema 2
Dicas para encontrar bugs
• Aplicar insumos para forçar a ocorrência das mensagens de erro;• Aplicar insumos para forçar o software a (re) estabelecer os valores
padrão;• Explorar um conjuntos admissível de caracteres e tipos de dados;• Estourar o buffers de entrada;• Pesquisar associação de insumos e testar a combinações de seus valores;• Pesquisar associação de insumos e testar a combinações de seus valores;• Repetir a mesma entrada ou uma série de entradas numerosas vezes;• Forçar saídas diferentes para serem geradas para cada entrada;• Forçar a geração de saídas inválidas;
Continuação
• Testar as propriedades ou configurações que modificam a saída;• Forçar a atualização da tela;• Aplicar entradas usando uma variedade de condições iniciais;• Forçar uma estrutura de dados para armazenar muitos ou poucos
valores;• Investigar formas de modificar as restrições de dados internos;• Investigar formas de modificar as restrições de dados internos;• Realizar operações com operadores inválido e combinações de
operador;• Forçar uma função para chamar a si mesma recursivamente;• Investigar os recursos que compartilham dados;
Resumo
ContextoUtilização da abordagem de testes exploratórios
ProblemaExecutar testes de forma rápida, baixo custo e com bom aproveitamento
26Rede de Laboratórios de Produtividade de Software
SoluçãoUtilização de uma abordagem focando quatro fatores chaves: Comunicação, Confiança, Habilidade e o Contexto
Avaliação da SoluçãoAcompanhamento e controle da qualidade do produto e dos custos associados aos testes
Não adianta apenas testar, mas sim testar bem. Os custos cairão, mas inicialmente os investimentos são maiores. Se a área de teste não estiver bem organizada os problemas aparecem num estágio onde os custos são maiores. Precisamos: Reduzir Riscos evitando que erros ocorram Reduzir custo eliminando desperdícios
Referências• www.testexpert.com.br
• Escola de Teste Direcionada pelo Contexto• Rapid Software Testing: Visão Geral
• www.satisfice.com
• Exploratory Testing Explained
27Rede de Laboratórios de Produtividade de Software