13º Workshop de Teses e Dissertações em Engenharia de Software
RBTProcess - Modelo de Processo de Teste de Software
baseado em Riscos
Aluna
Ellen Polliana Ramos Souza
Orientadora
Profª Dra. Cristine Martins Gomes de Gusmão
Mestrado Acadêmico em Engenharia da Computação
Departamento de Sistemas e Computação – Universidade de Pernambuco (UPE)
Rua Benfica, 455 Madalena, 50750-410, Recife, PE – Brasil
{eprs,cristine}@dsc.upe.br
Nível: Mestrado
Ano de Ingresso: Julho de 2006
Previsão de Conclusão: Dezembro de 2008
Aprovação da Proposta: Outubro de 2007
Resumo. A busca pela qualidade de software é um fator crítico que tem
crescido com a complexidade das tecnologias e a competitividade entre as
empresas. O processo de teste exerce um importante papel dentro da garantia
de qualidade de software assegurando que os requisitos satisfazem as
necessidades das partes envolvidas. No entanto, o processo de teste requer
bastante esforço, pois é grande o domínio de entradas e saídas de um
software, bem como são muitas as possibilidades de caminhos possíveis a
serem testados dentro de restrições de custo e prazo. Teste baseado em riscos
(risk-based testing) consiste num conjunto de atividades que favorece a
identificação de fatores de riscos associados aos requisitos do software. Uma
vez identificados, os riscos são priorizados de acordo com a sua
probabilidade de ocorrência e impacto. Os casos de testes, por sua vez, são
projetados com base nas estratégias para tratamento dos fatores de riscos
identificados. O controle da execução dos casos de testes permite uma
mitigação dos fatores de riscos associados. Dessa forma, o uso da abordagem
permite priorizar esforços e alocar recursos para os componentes de software
que necessitam ser testados cuidadosamente. Este trabalho tem como objetivo
a construção de um modelo de processo de teste de software baseado em
riscos com artefatos, guias, métricas e atividades, apoiado por ferramenta e
avaliado através de estudos de casos.
Palavras-chave. Teste de Software, Teste baseado em Riscos, Modelo de
Processo, Riscos Técnicos.
7
13º Workshop de Teses e Dissertações em Engenharia de Software
1. Caracterização do Problema
A atividade de teste de software tem se mostrado fundamental no desenvolvimento de
software evitando, principalmente, que falhas cheguem aos clientes, deixando-os
insatisfeitos e causando prejuízos. No entanto, esta atividade é difícil e custosa de ser
realizada, uma vez que, o domínio de entradas e saídas de um software é diverso, bem
como são muitas as possibilidades de caminhos possíveis a serem testados. Além disso,
segundo Kaner e demais autores (1999), a atividade de teste é bastante cara, chegando a
custar até 45% do valor inicial de um produto em desenvolvimento.
Com relação aos riscos de software é bastante comum projetos enfrentarem
diversos problemas afetados por riscos inesperados, não planejados ou simplesmente
ignorados. Desta forma, à medida que o tamanho e a complexidade dos sistemas
crescem, aumenta a necessidade da utilização de metodologias para gerenciamento de
riscos.
A técnica de teste baseada em análise de riscos Risk-based Testing (RBT) surgiu
como uma abordagem para minimizar alguns dos problemas relacionados ao esforço da
atividade de teste e da gerência de riscos. O teste baseado em riscos, em resumo,
consiste em atividades para identificação, análise e mitigação de fatores de riscos
associados aos requisitos do produto de software, priorizando esforços e alocando
recursos para os componentes de software que necessitam ser testados mais
cuidadosamente. Assim, a atividade de testes é melhorada a partir da gerência dos riscos
técnicos de software que podem ser mitigados através da realização de teste de software.
Apesar da abordagem RBT se mostrar simples, a comunidade de teste de
software ainda encontra dificuldades em aplicá-la na prática [Goldsmith 2006],
principalmente, porque a análise de riscos é algo complexo e necessita de conhecimento
para sua aplicação. Também, não foram encontrados processos com atividades, papéis e
artefatos bem definidos que possam guiar os engenheiros de testes no uso da abordagem
e ferramentas específicas o que, provavelmente, dificulta sua aplicação e disseminação.
Dentro deste contexto, este trabalho apresenta o RBTProcess – Modelo de
Processo de Teste de Software baseado em Riscos. Após esta Seção introdutória, a
Seção 2 apresenta a fundamentação teórica da abordagem RBT. Na Seção 3 é descrito o
modelo de processo proposto, protótipo, simulações e estudos de caso. A Seção 4
apresenta o estado atual do trabalho. Na Seção 5 é apresentada uma comparação das
principais abordagens RBT citadas na Seção 2. Finalmente, na Seção 6, são
apresentados os resultados esperados.
2. Fundamentação Teórica
Ao analisar as abordagens existentes, três atividades distintas foram identificadas: i.
Elaborar uma lista de riscos priorizada; ii. Realizar testes que exploram cada risco e iii.
Acompanhar e controlar os riscos.
A primeira atividade consiste na identificação de requisitos com alto grau de
risco associado. A segunda atividade consiste na criação e execução de testes que
verificam a existência ou não do risco identificado. As abordagens encontradas na
literatura não fornecem metodologias para a atividade de criação dos casos de teste. No
entanto, para a execução, diversas estratégias foram encontradas. Na terceira atividade,
8
13º Workshop de Teses e Dissertações em Engenharia de Software
assim que um risco for eliminado, um novo risco surge e os esforços de testes devem ser
ajustados para que foquem sempre nos riscos mais importantes.
Bach (1999) define duas abordagens baseadas em heurística para a atividade de
identificação dos riscos. Na abordagem “Inside-Out”, o produto é estudado e é
questionado, repetidamente, o que pode dar errado neste produto. Na abordagem
“Outside-In”, uma lista de potenciais riscos é utilizada juntamente com detalhes do
produto. Para cada risco, é identificado se o mesmo se aplica ou não a um determinado
componente. São atribuídos valores através de uma escala de interesse e os riscos com
maior valor são testados primeiramente.
Amland (1999) desenvolveu um conjunto de métricas para a análise de riscos
com o objetivo de subsidiar um processo de teste. Três fontes de análise de riscos são
utilizadas: i. Qualidade da área a ser testada; ii. Conseqüências de uma falha em uma
função do ponto de vista de um cliente em situação de produção e iii. Conseqüências de
uma falha em uma função do ponto de vista do vendedor do serviço.
Besson (2004) define uma abordagem baseada em uso. Segundo o autor,
qualquer atividade de teste implica numa diminuição de riscos. A idéia é investir o
mínimo de esforço em teste possível para maximizar a redução dos riscos. O autor
controla o esforço de teste baseado na utilização do software, seguindo a teoria de
Pareto, que afirma que 20% das funcionalidades permitem ao usuário realizar 80% do
seu trabalho.
Chen (2002) define uma estratégia para execução de testes de regressão baseada
em especificação. A autora define teste de regressão para os componentes que foram
alterados e teste de regressão, baseado em riscos, para os componentes que
“aparentemente” não sofreram modificações.
Rosenberg e demais autores (1999) fornecem uma abordagem para identificação
de classes que estejam mais propensas a erros. Através da aplicação de métricas de
complexidade de software orientado a objetos, pode-se chegar a classes que possuam
maior probabilidade de apresentar falhas.
3. Caracterização da Contribuição
O objetivo geral desse trabalho é a criação de um Modelo de Processo de Testes de
Software baseado em Riscos. A Figura 1 esboça uma visão inicial do modelo de
processo proposto que será, também, apoiado por um protótipo.
3.1. Modelo de Processo
O RBTProcess1 é um modelo de processo baseado no RUP (2003), iterativo, orientado a
riscos, modelado no nível “M1” do Software Process Engineering Metamodel (SPEM2)
e descrito utilizando o Eclipse Process Framework (EPF3). O modelo de processo
possui quatro fases distintas: i. Planejamento: Planejamento inicial dos testes com base
na análise dos riscos. Tem como marco a priorização dos requisitos através da
1 Versão inicial do RBTProcess na web: www.dsc.upe.br/~eprs/rbt/process/
2 SPEM na web: www.omg.org/technology/documents/formal/spem.htm
3 EPF na web: www.eclipse.org/epf/
9
13º Workshop de Teses e Dissertações em Engenharia de Software
identificação e análise dos riscos; ii. Projeto: Os casos de testes planejados são
projetados com base na análise dos riscos. O marco desta fase é a criação de casos de
testes que verificam a existência ou não dos riscos identificados; iii. Execução: Os casos
de testes planejados e projetados são executados e iv. Controle: Os resultados da
execução dos testes são coletados, avaliados e os ricos são controlados.
Figura 1. Proposta do Modelo de Processo de Teste de Software baseado em Riscos
e Relacionamento dos Artefatos em cada Fase.
Os artefatos com borda pontilhada na Figura 1 são originados do processo de
teste baseado em riscos. Os artefatos com sombra fazem parte do processo de teste
padrão. Os demais são alguns dos artefatos criados durante o processo de
desenvolvimento de software.
Os papéis identificados são os mesmos de um processo de testes padrão com
exceção do “Analista de Riscos” que é um papel da gerência de riscos, essencial para
identificação, análise e controle dos riscos.
As atividades “Identificar Riscos”, “Analisar Riscos” e “Controlar Riscos” são
provenientes do gerenciamento de riscos e baseadas no Guia PMBOK (Project
Management Body of Knowledge) (2004) e no CMMI (Capability Maturity Model
Integration) – nível três (2004). As atividades “Elaborar Plano de Teste”, “Projetar
Testes”, “Executar Testes” e “Avaliar Testes” são provenientes de processo de teste
padrão e baseadas no TMM (Test Maturity Model) – nível três (2005) e nos padrões
IEEE 829 e 1012 (1998).
Para identificação dos riscos são utilizadas técnicas como listas de verificação,
reuniões de brainstorm e questionário baseado em taxonomia de riscos adaptado, pela
autora, para teste de software. Para a análise, métricas definidas por Amland (1999) e
utilizadas por Chen (2002) são adotadas com algumas adaptações. O planejamento dos
testes, definição de estratégias e escopo são realizados com base na avaliação de riscos.
Os casos de teste são projetados para mitigar os riscos identificados e também, de
acordo com o grau de exposição ao risco, casos de teste são projetados para explorar os
fluxos principais, alternativos e de exceção. Os casos de testes são executados de acordo
com o cálculo de exposição ao risco e os riscos são avaliados em cada iteração.
10
13º Workshop de Teses e Dissertações em Engenharia de Software
3.2. Protótipo
Além do processo, um protótipo está em desenvolvimento para atender às atividades da
abordagem RBT, auxiliando os engenheiros de testes, principalmente, nas atividades de
identificação, análise e controle dos riscos técnicos de software.
É importante registrar que os requisitos para a construção do protótipo estão
sendo avaliados através das simulações e que se espera realizar os estudos de casos com
o apoio do mesmo, conforme trata a seção a seguir.
3.3. Simulações e Estudos de caso
Simulações estão sendo realizadas com o objetivo de ajustar as atividades, artefatos e
papéis do processo, identificando oportunidades de melhorias.
Estudos de caso estão sendo planejados e servirão para avaliar o uso do
RBTProcess com o propósito de caracterizar o impacto da sua adoção em empresas de
desenvolvimento de software, com respeito ao número de defeitos encontrados e tempo
para realização das atividades definidas no processo.
4. Estado Atual do Trabalho
Nesse momento, a segunda versão do modelo de processo está sendo ajustada de acordo
com os problemas apontados nas primeiras simulações e um protótipo está em
desenvolvimento para fornecer suporte às atividades definidas na abordagem RBT.
Dois estudos de caso serão planejados com o intuito de avaliar o resultado geral
do processo sob o ponto de vista, principalmente, da qualidade do produto final.
Uma pesquisa4 sobre a abordagem RBT foi elaborada com o intuito de capturar,
dentre outras informações, a formação dos engenheiros de testes com relação a riscos,
quem utiliza e formas de utilização.
5. Trabalhos Relacionados (Visão Comparativa)
A Tabela 1 apresenta um resumo das atividades incluídas nas principais abordagens
encontradas na literatura e apresentadas na Seção 2. Com exceção da abordagem de
Rosenberg e demais autores (1999), todas as outras utilizam a abordagem funcional ou
caixa-preta para construção dos casos de testes no nível de sistema. Apenas o
RBTProcess fornece o artefatos, guias, métricas, papéis e fluxos para todas as
atividades.
Tabela 1. Atividades Incluídas nas Abordagens ou Processos RBT.
Abordagens / Processo
Identificar
Riscos
Analisar
Riscos
Planejar
Testes
Projetar
Testes
Executar
Testes
Avaliar
Testes
Controlar
Riscos
SIM
Baseada em Heurística [Bach 1999]
SIM
SIM
NÃO
NÃO
SIM
NÃO
Baseada em Métricas [Amland 1999]
NÃO
SIM
NÃO
NÃO
SIM
NÃO
SIM
Baseada em Uso [Besson 2004]
SIM
NÃO
SIM
NÃO
SIM
NÃO
SIM
Testes de Regressão [Chen 2002]
NÃO
SIM
SIM
SIM
SIM
NÃO
SIM
SIM
SIM
NÃO
NÃO
NÃO
NÃO
NÃO
SIM
SIM
SIM
SIM
SIM
SIM
SIM
Código Fonte Orientado a Objetos
[Rosenberg et al 1999]
Processo de Testes [RBTProcess]
4 Questionário está disponível em: https://spreadsheets.google.com/viewform?key=phStItq91u07jHMuTXTv4dQ&e
11
13º Workshop de Teses e Dissertações em Engenharia de Software
6. Avaliação dos Resultados
Testes tradicionais sempre utilizam a idéia de teste baseado em riscos, mas de uma
forma ad hoc e baseado em julgamento pessoal [Chen 2002]. De acordo com os
resultados das diversas abordagens encontradas na literatura, a técnica de teste baseado
em riscos permite reduzir tempo e esforço para verificar o software, uma vez que o
universo de testes é menor como resultado da priorização dos cenários e, como
conseqüência, minimizar custos da atividade de testes como um todo.
Com relação ao RBTProcess, apoiado pelo protótipo, espera-se confirmar, com a
realização de estudos de casos, que: i. As atividades da gerência de risco não tragam um
esforço maior para o processo de teste padrão já que as atividades de projeto e execução
de testes devem ser realizadas com menor esforço por conta da priorização dos
requisitos e casos de testes; ii. Os esforços sejam alocados para os componentes de
software que necessitam ser, de fato, testados mais cuidadosamente; iii. A qualidade do
produto final seja melhorada como conseqüência de uma atividade de testes bem
planejada.
Referências
Amland, S. (1999) “Risk Based Testing and Metrics: Risk analysis fundamentals and
metrics for software testing”. In 5th International Conference EuroSTAR’99.
Bach, J. (1999) “James Bach on Risk-Based Testing: How to conduct heuristic risk
analysis”. In Software Testing & Quality Engineering Magazine.
Besson, S. (2004) “A Strategy for Risk-Based Testing”. Disponível em <http://www
stickyminds.com>. Acesso em agosto de 2007.
Chen, Y. (2002) “Specification-based Regression Testing Measurement with Risk
Analysis”. Dissertação de mestrado, University of Ottawa, Canada.
CMMI – Capability Maturity Model Integration (2006), Software Engineering Institute,
Carnegie Mellon University. Disponível em <http://www.sei.cmu.edu/cmmi/>.
Acesso em fevereiro de 2008.
Goldsmith, R. (2006) “Early and Effective: The Perks of Risk-based Testing”. In
Software Test & Performance Magazine.
IEEE Std. 829 (1998) “Standard for Software Test Documentation”.
IEEE Std. 1012 (1998) “Standard for Software Verification and Validation”.
Kaner, C., Falk, J., Nguyen, H. Q. (1999) “Testing computer software”, 2a edição.
PMBOK - Project Management Institute (2004) “A Guide to the Project Management
Body of Knowledge”.
Rosenberg, L. H.; Stapko, R.; Gallo, A. (1999) “Risk-based object oriented testing: In
24th Annual Software Engineering Workshop, NASA SEW24.
RUP - Rational Unified Process (2003) Disponível em <http://www.wthreex.com/rup/>.
Acesso em janeiro de 2008.
TMM - Test Maturity Model (2005), Illinois Institute of Technology. Disponível em <
http://www.tmmifoundation.org/>. Acesso em fevereiro de 2008.
12
Download

Modelo de Processo de Teste de Software baseado em Riscos