quinta-feira, 25 de fevereiro de 2010

Webinar da RBCS: Risk Based Testing

Ontem participei do Webinar sobre Risk Based Testing da RBCS. Discutimos questões como aplicação de RBT em diferentes ciclos de vida, RBT como guia para testes exploratórios e RBT andando junto com a documentação de requisitos. Essas questões só vou responder no final :) Pode dar alguns page downs e verificar as respostas do Rex Black para elas, ou acompanhar o texto que tem algumas referencias bem interessantes.

Segue um pouco do que foi visto no seminário com duração de 1:30 (início 23:30 – fim 01:00)


INTRODUÇÃO

Um sistema nem precisa ser tão complexo para ter infinitas possibilidades de teste. Sistemas complexos poderiam levar uma eternidade para serem testados com uma cobetura de 100%. Dentro das infinitas possibilidades, é preciso escolher um número finito e alcançável de testes, e considerando que não vamos testar tudo, precisamos ser bastante criteriosos na escolha do que testar.


RBT (RISK BASED TESTING)

Risco é a possibilidade de uma coisa ruim/negativa acontecer. A possibilidade de algo bom acontecer é vista como uma oportunidade.

Riscos de qualidade referem-se à possibilidade de algo falhar no sistema afetando sua habilidade em alcançar o nível desejado de operacionalidade e satisfação do cliente.

RBT se utiliza da análise desses riscos de qualidade para alocar e distribuir esforço de teste da maneira mais eficiente possível. Essa análise envolve stakeholders técnicos e de negócio. Quanto mais for explorada a diversidade de conhecimento dentro do projeto, melhor será o resultado da análise.

Riscos de qualidade estão relacionados com o produto: um calculo que falha, baixa performance. São itens que ameaçam a satisfação do cliente ou a rentabilidade da empresa. Riscos de projeto estão relacionados com o andamento do projeto como redução de recursos para o projeto, atrasos de cronograma, falta de ambiente de testes, ou seja, ameaças à condução do projeto como inicialmente planejado.

Devemos acompanhar também os riscos de projeto, mas aqueles que tem relação direta com o que vamos testar são os riscos de qualidade.


BENEFICIOS DE RBT
  • Execução dos testes por ordem de risco provê maior probabilidade de descobrir bugs também em ordem de severidade (“find the scary stuff first”). Uma coisa comum em alguns projetos é ver os testadores começarem pelos testes “mais fáceis”, ou “mais rápidos” que não necessariamente levam a descoberta dos bugs mais importantes. 
  • Alocar esforço em teste com base em riscos é a maneira mais eficiênte de eliminar riscos residuais no release (“pick the right tests out of the infinite cloud of possible tests”). Mesmo que hajam problemas no projeto que limitem a execução dos testes posteriormente, os piores bugs já foram descobertos no início. O que passar no release não terá um impacto tão alto quanto o que ja foi descoberto e corrigido. 
  • Medir os resultados baseado nos riscos permite à organização tomar decisões mais inteligentes sobre o release da aplicação (“release when risk of delay balances risk of dissatisfaction”) . Falar sobre qualidade não é fácil. Como medir qualidade? Como ter idéia de risco associado a atrasos? 
  • Se o cronograma apertar, retirar testes de acordo com o inverso do risco reduz o periodo de testes aumentando o minímo possível dos riscos de qualidade (“give up the tests you worry about the least”). E os cronogramas sempre apertam :) 

ESTUDO DE CASO: CA

A CA é um dos clientes da RBCS e juntos eles realizaram diversos projetos implementando RBT. Durante o seminário, RB falou sobre um dos pilotos aplicados nessa empresa.

O Podcast dessa sessão ainda não está disponível hoje, mas é possível assistir um vídeo de uma outra apresentação que ele fez em Melbourne, Australia, sobre o caso na RBCS Digital Library.

O piloto consistiu nas atividades:
  • Treinamento dos stakeholders chave em RBT 
  • Realizar uma sessão de análise de riscos 
  • Analisar e refinar a análise de riscos 
  • Alinhar os testes com os riscos de qualidade 
  • Guiar os testes baseando-se em riscos 
  • Demonstrar benefícios e aprendizados

TREINAMENTO

O treinamento realizado através de uma apresentação, discussões e exercícios cobriu:
  • Os principios de RBT 
  • Categorias de riscos de qualidade (Sugiro dar uma olhada na lista de riscos de qualidade proposta pelo RB. Há uma adaptação do Managing the Testing Process, Second Edition na biblioteca da RBCS) 
  • Análise de riscos de qualidade 
  • Alinhando testes com níveis de riscos 
  • Documentando riscos de qualidade 
  • Monitorando riscos de qualidade durante execução de testes 
  • Reportando resultados de testes baseados em riscos
Dessa sessão, já foi possível sair com uma lista de riscos de qualidade para serem trabalhados. É importante dar um tempo aos participantes para assimilarem esses conceitos e descansar um pouco antes de continuar com as atividades. Não é bom que os próximos passos sejam afetados por fatores como fadiga.


COMO LEVANTAR RISCOS DE QUALIDADE?

Uma maneira é fazendo entrevistas individuais com os stakeholders e depois criar uma listagem única para validar com todos. Outra maneira é realizar uma sessão de brainstorm que pode ser um pouco mais complicada de arranjar devido a questões de alocação do time, mas pode ser mais produtiva. Se tiver um quadro branco para explorar, use-o. Fica bem mais fácil quando os participantes podem ter uma visão do todo e refletir emcima dos riscos ja levantados também.


COMO DEFINIR NÍVEIS DE RISCOS?

Depois de levantados os riscos, serão atribuidos números de prioridade para esses riscos. Esse número (RPN – Risk Priority Number) é calculado multiplicando a probabilidade (likelihood) do risco pelo impacto que causará se for descoberto apenas após o release.

É necessário definir uma escala tanto para o impacto quanto para a probabilidade. RB sugeriu uma escala de 5, ou seja, o RPN varia de 1 a 25, sendo 1 os riscos mais altos e 25 os mais baixos.


AVALIANDO A DEFINIÇÃO DE NÍVEIS COM HISTOGRAMAS

Falei acima da fadiga como um item que pode impactar a análise. Fora ela, vários outros, inclusive uma tendência pela discussão levantada durante a reunião de atribuição de níveis, podem impactar na avaliação dos níveis dos riscos.

Ao final da primeira reunião, nesse projeto, o time alcançou o seguinte historgrama:


Na coordenada x, os níveis de risco e na coordenada y, a quantidade de riscos no nível x.

Perceba que há muitos riscos classificados como 6. Está saindo bastante da curva esperada. Claro, não necessariamente o comportamento do gráfico final será 100% na curva, mas ao menos podemos alcançar um resultado mais condizente.

Analisando os dados que levaram a construção desse histograma, foram apresentados os seguintes valores:

Probabilidade - Qtd
1 – 5
2 – 9
3 – 25
4 – 39
5 – 26

Por se tratar de um sistema de manutenção, esses números parecem aceitáveis. Em sistemas novos, o número de riscos nos primeiros níveis provavelmente seria maior.

Impacto - Qtd
1 – 10
2 – 52
3 – 32
4 – 8
5 – 2

Agora sim achamos um problema. Houve uma tendência muito forte a indicar o nível 2 de impacto. Pode ter ocorrido um desvio de análise dos stakeholders durante a reunião devido a influências de discussões. As vezes por alguem ter levantado um issue classificado com um alto impacto, um outro participante fez associações similares levando a um aumento significativo nesse nível.

Para corrigir esse desnível, foi realizada uma reformulação dos conceitos do que é nível 1, 2 e 3 para reavaliação de impacto e foi alcançado o seguinte gráfico:


ALINHANDO TESTES COM RISCOS DE QUALIDADE

Feita a análise dos riscos, é hora de alinhá-los com os testes. É possível construir a seguinte rastreabilidade:
  • Riscos de qualidade x Itens de especificação (requisitos, design, o que houver) 
  • Riscos de qualidade x Casos de Teste 
Também é hora de avaliar e alocar (ou realocar) o esforço de teste baseando-se nos riscos e priorizar os testes a serem executados.


ALOCAÇÃO DE ESFORÇO

RB na sua apresentação sugeriu a seguinte aplicação de esforço em teste de acordo com o RPN.
  • 1-12 Extensivamente
    Executar um grande número de testes de forma abrangente e profunda, exercitando diversas combinações e variações de condições
  • 13-16 Abrangentemente
    Executar um número médio de testes que exercitem várias condições diferentes
  • 17-20 Rapidamente
    Executar um pequeno número de testes que sirvam como amostra para as condições mais interessantes
  • 21-25 Oportunamente
    Reserve um tempo para executar uma ou outra condição, mas apenas se levar pouco tempo. 

CONCLUSÃO: BENEFICIOS E PONTOS CHAVE

O projeto piloto teve os seguintes benefícios:
  • Alocação inteligente dentro das restrições 
  • Bugs prioritários descobertos primeiro, otimizando a janela para correção de bugs 
  • Flexibilidade na redução de tempo e recursos 
  • Otimização da qualidade dentro das restrições do teste focado 
Pontos chave
  • Inclusão dos usuarios de negócio e mesmo clientes em potencial na análise
  • Início da análise no início do ciclo de vida

PERGUNTAS E RESPOSTAS (com adições de comentários meus)

. Como se dá a aplicação de RBT nos diferentes ciclos de vida?

No caso do modelo incremental, a primeira análise de risco fica como um draft. Periodicamente (pode ser, por exemplo, a cada aprovação de documento) o analista insere novas informações e o resultado da análise dessas novas informações ao seu planejamento.

No modelo iterativo, a análise se dá por iterações. A cada iteração é feita uma análise de acordo com o escopo. É bem menos esforço do que fazer tudo de uma vez.

No modelo ágil, a análise pode ser feita sempre no início de uma sprint.


. Há desvantagens na aplicação de RBT?

A idéia da aplicação de RBT não é ser um processo oneroso. Muito pelo contrário. Não é um processo que demande tanto esforço. O processo de Failure Mode and Effect Analysis é muitas vezes mais demorado. É possível entretanto, burocratizar demasiadamente o processo com o preenchimento de pilhas e pilhas de planilhas. Se o processo é muito burocratizado não cumpre um de seus objetivos que é otimização de esforço.

Também há casos, especialmente quando se trata de outsourcing, nos quais o cliente define exatamente o set a ser testado, sem precisar de uma análise prévia. No máximo a equipe pode perguntar ao cliente se há uma ordem preferencial para execução dos testes, que podem inclusive já estar prontos. Talvez o próprio cliente já tenha feito essa análise de riscos antes.

A falta de tempo para preparar a análise não é uma desculpa tão acetável, já no caso que o RB apresentou, por exemplo, os testes foram escritos concomitantemente à execução.

RBT não é perda de tempo. Ao contrário, é uma optimização e melhor direcionamento de esforço.

. Como aplicar RBT se estamos caminhando lado a lado com a escrita de requisitos e não temos todos eles definidos ainda?

Para aplicar RBT você pode ou não ter um documento de requisitos como guia. Se você não tiver o documento, contará com a visão compartilhada dos stakeholders do que é o projeto, do que ele deve atingir. Talvez essa visão seja ainda melhor que seguir fielmente um documento de requisitos.

Quando baseamos a criação de test cases em requisitos, podemos testar errado se os requisitos estiverem errados, ou deixar gaps nos nossos testes devido a gaps na documentação. Requisitos também não nos ajudam a alocar esforço ou definir prioridades. Dificilmente eles estão classificados corretamente em termos de impacto. Requisitos também não vão nos ajudar a fazer uma triagem de casos de teste.

Então, a aplicação de RBT pode acontecer independentemente da definição do documen to de requisitos.

. É possível agrupar logicamente os riscos para alcançar maior eficiência nos testes?

Sim. Muitas vezes temos uma ordem ideal para executar um caso de teste. Mas é preciso tomar cuidado com esse projeto para não incorrermos no desperdício de tempo testando riscos de menor proporção mais vezes devido a esse link com riscos de maior proporção.

Também é necessário ter em mente que aplicar uma ordem de execução muito rígida com relação aos riscos pode acobertar erros nas áreas que definimos como riscos de menor proporção. O ideal é fazer um mix de áreas testando exaustivamente os riscos maiores e minimamente (mas sem deixar de testar) os riscos de menores proporções.

. Podemos guiar testes exploratórios com base na análise de riscos indicando áreas de maior risco para os testadores verificarem?

Na verdade o diferencial dos testes exploratórios são o conhecimento, a intuição, o julgamento e a experiência do testador. Se moldarmos isso, estaremos perdendo o pontecial dos testes exploratórios, então não é bom fazer isso.

Esse tipo de testes acontecendo em paralelo aos testes baseados na análise de risco podem trazer benefícios como a descoberta de um número elevado de bugs em áreas consideradas de baixo risco, ou o contrário, poucos bugs onde se esperava encontrar mais, ou ainda a mesma fórmula para imapcto: bugs de alto impacto onde se esperava serem de baixo, e bugs de baixo impacto onde se esperava encontrar de alto impacto. Ainda há a possibilidade de alguns riscos de qualidade não terem sido previstos. Tudo isso leva a uma análise da própria análise. Esse tipo de teste pode revelar problemas e sugerir um replanejamento.


Webinars RBCS

A RBCS realiza um Webinar aberto por mês onde qualquer um pode se registrar e participar. Cada sessão consiste em uma apresentação e um espaço final para perguntas. Há dois horários para escolher de qual participar.

Os próximos Webinars serão falando sobre técnias de testes. Confiram a agenda completa.

RBT na biblioteca da RBCS

Há várias referencias sobre RBT na biblioteca da RBCS. Muitos artigos e vídeos. É um verdadeiro arsenal para entender como aplicar RBT. Vale a pena conferir.

Um comentário:

  1. Obrigado, Sarah!
    Muito legal teu resumo.

    Quase que nos "encontramos" no webinar :)... me anotei mas nao pude comparecer :) -- mais um motivo pra eu me alegrar com teu artigo.

    Bom, nos vemos no proximo! :)

    ResponderExcluir