teste de software baseado em risco

Transcrição

teste de software baseado em risco
Fernando Schiavo Cardoso
RA 0502032 – 8º Semestre
TESTE DE SOFTWARE BASEADO EM RISCO
Jaguariúna
2008
Fernando Schiavo Cardoso
RA 0502032 – 8º Semestre
TESTE DE SOFTWARE BASEADO EM RISCO
Monografia apresentada à disciplina Trabalho
de Graduação III, do curso de Ciências da
Computação da Faculdade de Jaguariúna, sob
orientação do Prof. Ms. FERNANDO AUGUSTO
ZANCHETA como exigência para conclusão do
curso de graduação.
Jaguariúna
2008
2
CARDOSO, Fernando Schiavo. Teste de Software Baseado em Risco. Monografia
defendida e aprovada na FAJ em 20 de novembro de 2008 pela banca examinadora
constituída pelos professores:
__________________________________________________________________________
Prof. Fernando Augusto Zancheta –
FAJ – orientador
__________________________________________________________________________
Prof.
FAJ
__________________________________________________________________________
Prof.
FAJ
3
AGRADECIMENTOS
Antes de tudo, agradeço a Deus por me fortalecer nas horas em que eu mais
precisava.
A toda a minha família, especialmente aos meus pais Natércia e Hermínio e aos
meus avós Jatenete e Antonio por terem sido tão maravilhosamente dedicados e amorosos,
sempre me guiando pelos melhores caminhos da vida.
Agradecimentos especiais devem ser feitos também ao professor Fernando Augusto
Zancheta, que, nos momentos em que se ausentou como orientador foi para se apresentar
como amigo. A todos os demais que contribuíram para este trabalho, muito obrigado!
4
CARDOSO, Fernando Schiavo. Teste de Software Baseado em Risco. 2008. Monografia
(Bacharelado em Ciências da Computação) – Curso de Ciências da Computação da
Faculdade de Jaguariúna, Jaguariúna.
RESUMO
Este trabalho apresenta um estudo acadêmico sobre um método de teste de
software que está constantemente sendo alvo de estudos por parte dos profissionais da
área de teste. O teste de software baseado em risco é aplicado no planejamento dos testes
associados aos requisitos do produto de software. Conhecido pelo termo em inglês risk –
based testing, esse método consiste em identificar, priorizar e criar casos de teste que
exploram os riscos. O objetivo desse trabalho é abordar as principais vantagens e limitações
defendidas pelos autores aqui citados.
Palavra chave: Teste de Software, Risco.
5
ABSTRACT
This body of work presents an academic study of a software testing method which is
constantly being the target of studies by professionals who specialise in this area of testing.
the software test based on risk, is applied in the planning of tests associated with the
requirements of a software product. known by the english term "risk based testing", this
method consists of identifying, prioritising and creating tests cases that explore risk.
The objetive of this study is to tackle the principal advantages and limitations which are
defended by the authors stated within.
Keywords: Test Software, Risk.
6
SUMÁRIO
LISTA DE FIGURAS.................................................................................................. 09
LISTA DE TABELAS...................................................................................................10
LISTA DE ABREVIATURAS E SILGAS......................................................................11
1. INTRODUÇÃO........................................................................................................12
2. QUALIDADE DE SOFTWARE ...............................................................................13
3. TESTE DE SOFTWARE.........................................................................................14
3.1 Validação e verificação.............................................................................15
3.1.1 Verificação..................................................................................16
3.1.2 Validação....................................................................................16
3.2 Classificação; Erro, Defeito e Falha..........................................................17
3.3 Técnicas de teste de software...................................................................17
3.1.1 Teste estrutural ou teste de caixa – branca...............................17
3.1.2 Teste funcional ou teste de caixa – preta...................................18
3.4 Caso de teste............................................................................................18
4. PROCESSO DE TESTE DE SOFTWARE..............................................................19
4.1 Definição...................................................................................................19
4.2 Ciclo de vida do processo de teste de software........................................21
4.3 Modelo de teste de software.....................................................................22
5. RISCOS DE SOFTWARE.......................................................................................26
5.1 Análise de risco.........................................................................................27
5.2 Classificação.............................................................................................28
6. TESTE DE SOFTWARE BASEADO EM RISCO...................................................28
6.1 Definição de teste de software baseado em risco.....................................29
7
7. ANÁLISE DE RISCO BASEADO EM HEURÍSTICA..............................................31
7.1 De fora para dentro...................................................................................31
7.1.1 Lista de observação de risco......................................................33
7.1.2 Matriz risco/tarefa.......................................................................33
7.2 De dentro para fora...................................................................................33
7.2.1 Aplicação da abordagem “de fora para dentro”......................................33
8. VANTAGENS E RESTRIÇÕES DO TESTE DE SOFTWARE BASEADO EM
RISCOS......................................................................................................................41
8.1 Vantagens.................................................................................................41
8.2 Restrições.................................................................................................41
8.3 Conclusão.................................................................................................41
9. BIBLIOGRAFIA.....................................................................................................43
8
LISTA DE FIGURAS
Figura 1 –
Conceito 3P3E.
Figura 2 -
Integração entre os processos de desenvolvimento e teste.
Figura 3 -
Modelo de Karolak
Figura 4 -
Os 11 passos do Processo de Teste de Software.
Figura 5 –
Fluxo Funcional da aplicação: (Manutenção na Faixa Salarial).
Figura 6 –
Página 1 Exibição das Faixas Cadastradas.
Figura 7 –
Página 3 Alteração das Faixas Salariais.
Figura 8 –
Página 4 Exclusão das Faixas Salariais.
Figura 9 -
Matriz de Componente x Risco Bach(1999).
9
LISTA DE TABELAS
Tabela 1 –
Testes que exploram os riscos analisados.
Tabela 2 –
Testes que exploram os riscos analisados.
10
LISTA DE ABREVIATURAS E SILGAS
(V&V) –
Validação e Verificação.
MPS.BR –
Melhora de Processo do Software Brasileiro.
11
1
INTRODUÇÃO
Quando os sistemas informatizados começaram a ganhar âmbito comercial, os
testes eram executados dentro do processo de desenvolvimento de software, ministrados
apenas pelos próprios desenvolvedores e em alguns casos os próprios usuários eram
envolvidos no processo para ajudar a criar os dados de teste e a aprovação do sistema final.
Porém, esse teste tinha uma cobertura muito restrita, e conseqüentemente gerava
uma grande incidência de defeitos, que geralmente eram corrigidos em outras versões do
sistema.
Segundo Rios (2008, p.91) no final da década de 1990 e início do ano 2000, “houve
a explosão da internet e o surgimento de novas tecnologias, isso passou a expor a imagem
das empresas em um cenário de grande veiculação no mercado”, fato que levou as
organizações a investirem em testes mais elaborados a fim de garantir que os seus
negócios não fossem prejudicados, transformando o teste de software em um processo
independente e fundamental na garantia de qualidade dos sistemas.
Para atender esse cenário, segundo Rios e Moreira (2008, p. 45) “o processo de
teste de software passou a ser executado em paralelo ao processo de desenvolvimento,
onde ganhou planejamento e organização sendo conduzido por técnicos treinados e
qualificados.” Os resultados foram imediatos, as empresas preocupadas com a sua imagem
no mercado e na redução dos custos de desenvolvimento, passaram a investir
continuamente em teste de software, porém junto com essa demanda, veio também à
necessidade de investimento, que agregava custos e tempo para a realização do processo
de teste, onde muitas vezes o tempo de teste era maior que o tempo de planejamento e
codificação do próprio software.
Devido à grande concorrência e aos prazos cada vez mais escassos na produção
dos softwares, não há tempo o suficiente para uma perfeita execução do processo de teste,
em muitos casos, o sistema acaba saindo para produção com pouca cobertura de teste,
deixando passar erros graves e conseqüentemente prejudicando a empresa e os
respectivos clientes.
Nesse cenário, o teste de software baseado em riscos tem se mostrado de grande
utilidade, aproveitando melhor os recursos e o tempo do teste, perfazendo um processo que
aborde as áreas de maior risco do sistema e garantindo que o negócio não saía prejudicado.
12
Este trabalho tem o objetivo de apresentar um estudo acadêmico sobre o teste de
software baseado em riscos, focando os ganhos e restrições da utilização dessa técnica,
com base nas obras literárias e artigos disponíveis no meio eletrônico.
2
QUALIDADE DE SOFTWARE
A busca pela qualidade não é uma novidade entre diversas empresas de diversos
seguimentos. Quando alguns fatos são considerados, fica evidente a grande necessidade
da busca desse conceito. No caso dos softwares o surgimento da internet expondo a
imagem das empresas para um grande público, a grande concorrência no mercado de
desenvolvimento de software, a demanda e a crescente complexidade das aplicações são
fatores que levaram as organizações a melhorarem a qualidade dos softwares
desenvolvidos. Rios (2007, p.17).
Porém a busca desse conceito não é tão fácil como aparenta, muito pelo contrário,
qualidade não é um termo tão trivial e de acordo com Koscianski e Soares (2007, p.17):
A idéia de qualidade é aparentemente indutiva; contudo,
quando examinamos mais longamente, o conceito se revela
complexo. Definir qualidade para estabelecer objetivos é,
assim, uma tarefa menos trivial do que aparenta a principio.
O software é construído por pessoas, e cada uma delas tem um conceito de
qualidade diferente, e por esse fato, qualidade de software deve ser buscada principalmente
com o correto emprego de boas metodologias pelo grupo de desenvolvimento. Pressman
(2007, p.724), define a garantia de qualidade de software da seguinte maneira:
Conformidade a requisitos funcionais e de desempenho
explicitamente declarados, a padrões de desenvolvimento
claramente documentados e a características implícitas que
são esperadas de todo software profissionalmente
desenvolvido.
Para Pressman (2007, p.724) qualidade em software pode ser definida objetivamente
da seguinte forma:
•
Qualidade é estar em conformidade com os requisitos do cliente;
•
Qualidade é antecipar e satisfazer os requisitos dos clientes;
•
Qualidade é escrever tudo o que se deve fazer e fazer tudo o que foi escrito.
13
O conceito de qualidade de software pode ser resumido como uma série de
atividades que tem o objetivo de garantir que o software seja construído de forma correta,
eficiente e que seu resultado atenda as expectativas do cliente.
Para o início dos testes, segundo Rios (2007, p.11), há três dimensões de qualidade
que precisam ser consideradas:
•
Confiança: o sistema é resistente a falhas;
•
Funcionalidade: suas funcionalidades seguem os requisitos;
•
Performance: o sistema quando submetido a um volume de processamento próximo
ao real, tem um tempo de resposta aceitável.
O sistema tem que realizar o objetivo pretendido pelo usuário, ou seja, o sistema tem
que estar livre de falhas durante a sua execução, as regras de negócio tem que estar de perfeita
conformidade com os requisitos e por fim o sistema tem que ter um tempo de resposta
aceitável.
3
TESTE DE SOFTWARE
Diversas definições sobre teste de software são encontradas na literatura
especializada, abaixo segue alguns exemplos:
•
Para Rios (2007, p. 109) testar é:
Verificar se o software está fazendo o que deveria fazer, de
acordo com seus requisitos, e se na está fazendo o que não
deveria fazer.
•
A norma ANSI/IEEE Standard (1983, p. 729), refere-se a teste como:
... o processo de avaliar um sistema ou um componente de
um sistema por meios manuais ou automáticos para verificar
se ele satisfaz os requisitos especificados ou identificar
diferenças entre resultados esperados e obtidos.
•
Para Myers (2004), teste de software é o:
...processo de executar um programa com o objetivo de
encontrar erros...
14
Um bom caso de teste é aquele que tem uma elevada
probabilidade de revelar um erro ainda não descoberto.
Um teste bem sucedido é aquele que revela um erro ainda
não descoberto.
De modo geral, teste de software se caracteriza como:
•
Atividade de encontrar erros e defeitos ainda não descobertos antes da fase
de homologação;
•
Assegurar que os requisitos especificados na fase de requisitos foram
realmente atendidos;
•
Garantir que os riscos para o negócio foram minimizados;
•
Certificar que as necessidades do cliente foram atendidas.
Segundo Delamaro, Maldonado e Jino (2007, p. 1) “a construção de software não é
uma tarefa simples. Pelo contrário, pode se tornar bastante complexa dependendo das
características e dimensões do sistema a ser criado.” Devido a esse fato, está sujeita a
diversos tipos de problemas que acabam resultando na obtenção de um produto diferente
daquele que se esperava.
Para que esses problemas possam ser descobertos antes que o software chegue ao
cliente, é de suma importância que ele passe por um processo de revisão, a fim de garantir
que os requisitos estejam conforme especificados pelo cliente. Esse processo de revisão é
representado pela atividade de teste de software, onde segundo Pressman(2007, p. 786)
essa atividade é um elemento crítico da garantia da qualidade final do sistema.
3.1 Validação e verificação
A atividade de teste é dividida em duas grandes áreas chamadas de verificação e
validação (V&V). Essas áreas são responsáveis por assegurar que o software cumpra com
suas especificações e atenda às necessidades dos usuários. Para Koscianski e Soares
(2007, p.332) essas áreas constituem em uma serie de atividades que tem início com as
revisões dos requisitos, passando pelas revisões das análises e do projeto de software e as
inspeções do código até chegar aos testes. Pressman (2007, pg. 836) coloca duas questões
para expor a diferença entre (V&V):
15
•
Verificação: “Estamos construindo certo o produto?”
•
Validação: “Estamos construindo o produto certo?”
3.1.1
Verificação
É um conjunto de atividades que determinam se os requisitos especificados foram
efetivamente atendidos no sistema, ou seja, certificar-se que software cumpre com as suas
especificações.
3.1.2
Validação
É um conjunto de atividades que confirmam se a especificação de uma fase ou do
sistema completo é apropriada e consiste com os requisitos do cliente. O software deve
estar de acordo com o que os usuários desejam.
Para citar alguns exemplos das atividades de (V&V) segundo Rios (2007, p.30):
•
Atividades de Verificação: revisões de requisitos, revisões de modelos, revisões
de código e inspeções técnicas em geral.
•
Atividades de Validação; teste unitário, teste integração, teste de sistemas, teste
de aceitação e teste de homologação.
As atividades de (V&V) estão distribuídas por todas as etapas do processo de teste,
cada atividade apresenta duas características distintas: “testes estáticos” e “testes
dinâmicos”.
A atividade de verificação é executada antes da atividade de validação, os
documentos são verificados antes da execução dos testes, por essa razão suas atividades
têm a característica de testes estáticos já que nessa atividade o software não é executado.
Por outro lado, a atividade de validação é realizada depois da atividade de verificação, as
técnicas utilizadas nessa fase utilizam à execução do software e são caracterizadas como
testes dinâmicos.
16
3.2 Classificações: Erro, Defeito e Falha.
Para que se possa ter um perfeito entendimento sobre a área de teste de software, é
muito importante que os três conceitos relacionados abaixo estejam bem esclarecidos.
Segundo a terminologia padrão para Engenharia de Software do IEEE – Institute of
Electrical and Electronics Engineers – (1990, p. 610),
•
Erro: engano, alguma coisa feita por humanos. Como por exemplo, um
desenvolvedor que entendeu mal os requisitos de uma aplicação.
•
Defeito: o resultado de um erro. O desenvolvedor criou uma aplicação com os
requisitos diferentes do especificado.
•
Falha: diferença indesejável entre o observado e o esperado, software diferente
do esperado pelo usuário. (Defeito encontrado). O usuário ao executar a
aplicação, percebeu que os resultados esperados não batem com os resultados
retornados.
3.3 Técnicas de teste de software
Os resultados dos testes de software devem refletir as ações tomadas para descobrir
erros introduzidos no planejamento das funcionalidades definidas nas especificações dos
programas e outros erros inseridos durante a codificação do programa. Segundo Rios (2007,
p. 48) os tipos e técnicas de testes podem ser classificados em:
3.3.1
Teste estrutural ou teste de caixa-branca
Essa técnica avalia o comportamento interno do componente de software, ou seja,
trabalha diretamente sobre o código-fonte. Seu objetivo é garantir que a estrutura do
sistema esteja sólida e que funcione corretamente. Os tipos de testes utilizados por essa
técnica buscam determinar se a tecnologia foi utilizada corretamente e se os componentes
do sistema estão funcionando de forma coesa.
A escolha dessa técnica depende de uma análise dos requisitos e o nível de
complexidade do sistema já que geralmente essa técnica tendem a tomar muito tempo do
projeto de teste, por isso, o momento para que essas decisões sejam tomadas é no
momento da criação dos requisitos de teste e do planejamento.
17
Essa técnica é recomendada para as fases de Teste da Unidade e Teste da
Integração, cuja responsabilidade principal fica a cargo dos desenvolvedores do software,
que por sua vez conhecem bem o código-fonte produzido.
Um exemplo prático desta técnica de teste é o uso de ferramenta de teste livre como
o JUnit para desenvolvimento de casos de teste (test cases) para testar classes ou métodos
desenvolvidos em linguagem Java. Também se enquadram nessa técnica testes manuais
ou testes efetuados com apoio de ferramentas para verificação de aderência a boas
práticas.
3.3.2
Teste funcional ou teste de caixa-preta
Essa técnica de teste foca as regras de negócio do sistema através dos requisitos e
funcionalidades do software. Ao contrário dos testes estruturais descritos a cima, essa
técnica não avalia a parte interna do sistema e sim a saída das informações do mesmo.
Segundo Pressman (2007, p. 816) ”os testes de caixa-preta procuram descobrir erros
nas seguintes categorias: (1) funções incorretas ou ausentes; (2) erros de interface; (3) erros
nas estruturas de dados ou acesso a banco de dados externos; (4) erros de desempenho; e (5)
erros de inicialização e término.”
Para Rios (2007, p. 31) os testes funcionais são executados nas últimas etapas do
processo da atividade. Para realizar esses testes, o sistema tem que estar codificado e
logicamente desenvolvido.
3.4 Caso de Teste
A aplicação dessa técnica é realizada através de um conjunto de dados de teste bem
planejados que têm o objetivo de avaliar as saídas do sistema para cada dado inserido.
Após o término da listagem de requisitos de teste, casos de teste são elaborados
procurando dar cobertura aos requisitos do sistema listados nos requisitos de teste.
Para Rios (2007, p.110) existem algumas técnicas principais que são utilizadas nos
testes funcionais, abaixo segue dois exemplos:
18
•
Classe de Equivalência: é grupo de valores de entrada que representam o
universo de teste. Por exemplo, para um intervalo de (x) os valores limites estão
especificados como: (10 <= x => 20). Nesse caso a classe de teste de
equivalência contém três valores ou situações: (9), (15) e (21). O primeiro e o
último valor nesse caso estão fora do intervalo, ou seja, geraria um caso de
defeito, e o segundo valor que está dentro do intervalo, geraria um caso de
sucesso.
•
Análise de Valor Limite: é um grupo de valores de entrada que toma como
base os limites de cada campo. No caso do exemplo da classe de equivalência
acima, os valores ou situações seriam: (9) e (11) para testar o limite inferior, (10)
e (20) para testar o limite igual e (19) e (21) para testar o limite superior.
Além desses dois exemplos acima, Rio (2007) também descreve com algumas das
técnicas de teste funcional as técnicas de: Combinação de dados, tabela de decisão, teste
de interface entre outros.
4
PROCESSO DE TESTE DE SOFTWARE
Conforme já comentado na introdução de trabalho, os resultados mais expressivos
das atividades de testes só começaram a aparecer depois que a atividade de teste começou
a ser tratada como um processo.
4.1 Definição do processo de teste
Para Molinari (2008, p. 74) um processo de engenharia de software é definido como
um conjunto de passos parcialmente ordenados, cujo o objetivo é atingir uma meta para
entregar um produto de software de maneira eficiente, previsível e que vá ao encontro das
necessidades de negócio.
Para a MPS.BR (2007) um processo de teste tem o objetivo de alcançar as seguintes
definições:
•
Aumento da qualidade do produto;
•
Diminuição do retrabalho;
19
•
Maior produtividade;
•
Redução do tempo para atender o mercado;
•
Maior competitividade;
•
Maior precisão nas estimativas;
•
Acompanhamento da satisfação do cliente.
Os testes passaram a ser tratados não como uma atividade dentro do processo de
desenvolvimento mais sim como um processo próprio. Os testes passaram a ter uma
metodologia própria a ser executados junto com o início do processo de desenvolvimento.
Quanto antes os testes comecem a ser executados, mais barato fica a correção dos defeitos
encontrados.
Figura 1 - Integração entre os processos de desenvolvimento e teste
Fonte: Rios,Emerson; Análise de Risco em Projeto de Teste, 2007. Pág.102.
20
•
Desenho lógico é físico: Nessa fase os testes de verificação asseguram que o
desenho do sistema esteja de acordo com os requisitos especificados.
•
Construção: Os testes unitários são executados em paralelo a codificação do
sistema. Os componentes desenvolvidos podem ser testados através dos testes
unitários.
•
Implementação: Nessa fase o sistema já está codificado e suas funcionalidades
lógicas já estão funcionando. Os testes de sistema e de integração são
executados.
•
Entrega: Os testes de aceitação são planejados e executados em conjunto com
o cliente.
4.2 Ciclo de vida do processo de teste
O ciclo de vida do processo de testes, conforme mostrado na Figura 1.2, é composto
por diversas etapas ou fases, sendo quatro delas seqüenciais ou em cascata e duas
paralelas.
Planejamento
Procedimentos
Iniciais
Especificação
Execução
Entrega
Preparação
Figura 2 – Conceito 3P3E
Fonte: Rios, Emerson; Moreira, T. Testes de Software, 2003. Pág. 9.
21
•
Procedimentos iniciais: Os objetivos do processo de software são definidos;
Requisitos do negócio, Atividades a serem executadas, Recursos humanos
e Recursos de ambiente.
•
Planejamento: Criação e revisão da estratégia e plano de testes.
•
Preparação: Preparação do ambiente de testes, rede, equipamentos,
pessoal, software, ferramentas.
•
Especificação: Criação dos Casos de testes e roteiros de testes.
•
Execução: Executar os casos de teste.
•
Entrega: Finalização do processo de testes com a entrega do sistema.
4.3 Modelo de teste
Um modelo de teste é um conjunto de técnicas que representam as dimensões do
teste, ou seja, em que fase do desenvolvimento se aplica um determinado teste.
Para Rios (2007, p. 146) as principais técnicas de teste são:
•
Teste de Unidade: essa técnica de teste costuma ser executada pelos
próprios desenvolvedores a fim de testar os componentes do software
visando garantir que as unidades de código atendam especificações do
sistema.
•
Teste de Integração: vida garantir que um ou mais componentes do sistema
funcionam corretamente.
•
Teste de Sistema: execução do sistema como um todo, teste voltado para
validar a exatidão e a perfeição na execução das funções do sistema.
•
Teste de aceitação: última ação de teste antes da implementação do
software, sua execução é de responsabilidade do cliente. O objetivo desse
teste é verificar se o sistema está conforme o cliente solicitou.
O modelo de teste em “V” segundo Molinari (2008, p. 68) “é o mais popular entre
todos existentes, pois se trata de um conceito simples e muito prático.” Do lado esquerdo do
“V” fica o ciclo de desenvolvimento do software e ao lado direito fica a parte do processo de
teste que segundo Bastos e Rios (2006) são:
22
•
Acesso ao Plano de Desenvolvimento: Pré-requisito para a construção do Plano de
Testes. Nessa fase é feita uma verificação do plano de desenvolvimento e é possível
estimar os recursos necessários para a realização dos testes.
•
Desenvolvimento do Plano de Testes: segue os mesmos padrões do plano de
desenvolvimento, sua estrutura varia conforme os riscos associados com o software
que está sendo desenvolvido.
•
Inspeção ou Teste dos Requisitos do Software: Através da técnica de verificação, os
requisitos do software são avaliados. Essa fase dos testes é de grande importância.
Requisitos
mal
analisados
representam
a
maioria
dos
insucessos
do
desenvolvimento do software.
•
Inspeção ou Teste do Desenho do Software: Através da técnica de verificação, o
desenho do software é verificado a fim de garantir que o objetivo dos requisitos foi
alcançado no desenho do software.
•
Inspeção ou Teste da Construção do Software: A partir do desenho do sistema é
determinado o tipo e a extensão dos testes que serão necessários. Quanto mais a
construção se torna automatizada, menos testes serão requeridos durante esta fase.
•
Execução dos testes: O código do sistema é testado dinamicamente, as abordagens
e ferramentas especificadas no plano de teste serão usadas para validar se os
requisitos do desenho do sistema foi realmente implementados.
•
Teste de Aceitação: fase de validação do software pelos usuários. Além dos
requisitos documentados, os usuários geralmente testam outras funções não
documentadas. Nessa fase, é necessário analisar os possíveis erros encontrados
pelo usuário já que esses erros podem ser tratados como mudanças e não como
erro.
•
Informação dos Resultados dos Testes: Os resultados do teste devem ser
armazenados em um documento ou relatório de teste que contenha os defeitos
encontrados no processo. Esse documento deve ser informado aos setores
envolvidos o mais rápido possível, de forma que as correções sejam feitas com o
menor custo possível.
•
Teste da Instalação do Software: Visam verificar a compatibilidade do sistema
operacional com os procedimentos operacionais do software. O resultado vai
23
determinar se o software está em condições de ser implantado no ambiente de
produção ou não.
•
Teste das Mudanças no Software: Essa fase cobre as mudanças durante o processo
de implementação e aquelas que irão ocorrer após o software estar implantado.
•
Avaliação da Eficácia dos Testes: Após o término dos testes, deve ser feito uma
avaliação da eficácia dos mesmos. Esse processo tem que ser realizado pelos
testadores, porém os desenvolvedores, usuários e outros profissionais podem ser
envolvidos.
24
PASSO 1
Acesso ao Plano de
Desenvolvimento e
Situação
DEFINIÇÃO DOS
REQUERIMENTOS
DE SOFTWARE
PASSO 2
Desenvolvimento do
Plano de Testes
PASSO 3
Testes dos Requisitos
do Software
CONSTRUÇÃO DO
SOFTWARE
PASSO 4
Teste do Desenho do
Software
PASSO 5
Teste de Construção
do Software
PASSO 6
Execução e Registro
dos Testes
INSTALAÇÃO DO
SOFTWARE
PASSO 7
Teste de Aceitação
PASSO 8
Informação dos
Resultados dos
Testes
OPERAÇÃO E
MANUTENÇÃO
DO SOFTWARE
PASSO 9
Instalação do
Software
PASSO 10
Teste das Mudanças
do Software
PASSO 11
Avaliação da Eficácia
dos Testes
Figura 3 – Os 11 passos do Processo de Teste de Software
Fonte: Bastos, Anderson; Rios, Emerson; Cristalli, Ricardo; Moreira, Trayahu. Base de
conhecimento em teste de software, 2006. Pág. 66.
25
5
RISCOS DE SOFTWARE
Segundo o “Aurélio”: Risco “1. Perigo ou possibilidade de perigo. 2. Possibilidade
de perda ou de responsabilidade por danos”.
Risco é a possibilidade de sofrer uma perda, um impacto na qualidade do produto
final, um atraso do cronograma, um aumento nos custos ou falha do projeto. (SEI – Software
Engineering Institute).
Um risco nunca é uma certeza de ocorrência. Se alguma coisa vai realmente
ocorrer com probabilidade de 100%, então isso é um problema e não um risco. Um risco
pode ser tratado preventivamente, o que não o corre com um problema.
Rios. Emerson (2007, p.37) define o risco como;
Risco é um evento no futuro cuja ocorrência poderá causar
algum tipo de problema, no caso, o projeto, o produto ou o
negócio.
Não há uma certeza de que o evento vai ocorrer, porém, caso ocorra, uma perda
poderá trazer sérios problemas. Para o teste de software, um problema seria deixar passar
um erro no software por não ter testado um módulo importante.
Para citar um exemplo, um avião sempre corre o risco de cair, mais a perda só
existirá se isso ocorrer! É dever das empresas aéreas, realizarem todas as manutenções
necessárias em suas aeronaves, para que o risco de que um problema venha causar a
queda de um avião seja sempre o mais baixo possível.
No caso do software, ao realizar um processo de análise de risco, os esforços de
teste vão ser priorizados nas áreas em que um erro possa representar um grande impacto
para o cliente ou para o negócio, dessa forma, como citado no exemplo do avião, acima, o
objetivo é reduzir ao máximo possível a ocorrência de um erro que possa causar um grave
impacto ao negócio.
26
5.1 Análise de risco
A atividade de teste de software está bastante ligada ao risco. Quando um testador
por motivo de tempo ou por qualquer outro motivo, deixa de testar uma parte do sistema, ele
está assumindo um risco já que uma parte do sistema não será testada. Se esse risco vier a
se materializar, ou seja, essa parte do sistema que não foi testada conter um erro, a
empresa poderá sofrer uma grave perda financeira.
O gerenciamento de risco é um processo que tem o intuito de reduzir a
probabilidade da ocorrência de eventos que poderiam ter um impacto negativo no produto
final.
Segundo Rios (2007. p. 93) o risco é um dos elementos mais importantes a ser
trabalhado no momento de elaborar um projeto de teste de uma aplicação.
Para fazer uma análise de risco segundo Rios(2007. p 94) é preciso avaliar o
seguinte:
•
Probabilidade da ocorrência do risco;
•
O impacto se houver uma perda associada ao risco.
Ao planejar os testes, esses dois elementos devem ser levados em conta,
Risco
=
Probabilidade
(possibilidade de falha)
X
Impacto
(prejuízo causado pela falha)
Risco para teste de software é definido como a possibilidade de um erro em uma
aplicação vezes o prejuízo caso esse erro se materialize como uma falha.
Os riscos têm que ser analisados principalmente pelos seguintes motivos abaixo:
•
Para avaliar as conseqüências em caso de falha do produto;
•
Para decidir as ações certas e necessárias antes e depois de o risco se materializar;
•
Prevenir os impactos negativos;
•
Proteger as vítimas (clientes e usuários);
•
Para priorizar os riscos;
•
Para ter critério e direção (bússola) antes e durante a execução dos testes;
27
•
Para fazer o melhor uso dos recursos investidos (materiais, humanos e tempo);
•
Conhecer as áreas que precisam de maior atenção;
•
Conhecer com antecedência o que pode dar errado (Testes pró-ativos).
De um modo geral, ao analisar os riscos no software, é possível obter um
embasamento importante sobre as áreas e recursos que serão suficientes para conduzir um
bom teste no software, evitando desperdício de recursos dando mais ênfase na parte do
sistema mais crítico para o sucesso do sistema.
5.2 Classificação
Os principais riscos em um projeto de teste de software segundo Rios (2008, p. 92) são:
•
Riscos de projeto: são riscos ligados diretamente ao projeto. Exemplo:
problemas com orçamento, cronograma, pessoal, recursos, cliente e requisitos.
•
Riscos técnicos: são riscos relacionados à qualidade do software a ser
desenvolvido Exemplo: defeitos no software, problemas com implementação,
interface, ambigüidade de especificação.
•
Riscos para o negócio do cliente: afetam as organizações envolvidas no negócio
seja por mudanças no orçamento, prazo de desenvolvimento ou problemas de
mercado.
Nesse trabalho de monografia, será abordado somente os “Riscos Técnicos”, ou
seja, riscos que podem se materializar como falha no software.
6
TESTE DE SOFTWARE BASEADO EM RISCOS
James Bach em 1995 publicou um artigo chamado: The Challenge of Good Enough
na revista American Programmer. Nesse artigo, Bach apresentou uma nova abordagem de
teste, que foi intitulada de teste baseado em risco (risk-based testing). Essa abordagem
28
consiste em um conjunto de atividades que favorecem a identificação de fatores de riscos
associados aos requisitos do produto de software.
Para materializar o conceito de (risk-based testing) segundo Molinari (2008, p. 79) é
importante levar em conta três situações:
•
É impossível ou inviável testar todas as funcionalidades de um sistema; Para essa
situação é muito importante que o teste seja bem planejado, ou seja, criar um plano
de teste que contenha a cobertura que será explorada no teste e as condições de
início e final do processo de teste.
•
Na grande maioria das vezes, os prazos para o desenvolvimento dos softwares não
são cumpridos; Para essa situação é necessário que as partes mais importantes do
sistema sejam priorizadas.
•
Para o sucesso na execução dessa abordagem é muito importante que o testador
tenha um bom conhecimento da aplicação; A análise de risco não é algo trivial, muito
pelo contrário, é algo bem abstrato. Para ser bem feito, é muito importante que o
profissional de teste, tenha um bom conhecimento sobre o sistema a ser testado.
A partir do momento em que os riscos são priorizados, são gerados os casos de
testes baseados nas estratégias de tratamento e acompanhamento dos fatores de riscos
que foram previamente identificados.
A abordagem dos testes baseados em riscos segundo Bach(1999) foca fazer
julgamento sobre:
•
Cobertura de teste;
•
O número de testes a ser conduzido;
•
Escolhas dos tipos de testes e de revisões;
•
Uso e balanceamento entre testes, revisões e inspeções, dentre outros
problemas;
•
Priorização dos testes (planejamento e execução).
6.1 Definições de teste de software baseado em risco
Em Bach(1999) é utilizada a definição das etapas e atividades do processo de teste
baseado em risco da seguinte forma:
29
1 – Elaborar uma lista de riscos com suas prioridades: Identificação e análise dos riscos do
software.
2 - Realizar testes que explora cada risco: Criação e execução dos testes que verificam a
existência dos riscos identificados.
3 – Gerenciar os riscos: Assim que um risco for eliminado, um novo risco surge e os
esforços de testes devem ser reajustados para que foquem sempre nos riscos mais
importantes.
Apesar de simples, essa definição consegue abordar a idéia principal da
abordagem de teste de software baseada em risco.
Essa abordagem se concentra em analisar software e criar um plano teste baseado
nas áreas que possuam a maior probabilidade de apresentarem problemas que teriam o
maior impacto sobre o mesmo. (MCMAHOM,1998 apud ROSENBERG;STAPKO;GALLO
,1999).
Ao avaliar os riscos de um projeto, o analista de teste busca aqueles fatos cujas
ocorrências poderão acarretar em perdas para a empresa. Nesta abordagem um produto é
analisado utilizando-se as seguintes perdas:
•
Vulnerabilidade: Quais franquezas ou possíveis falhas existentes neste
componente?
•
Ameaça: Que entradas ou situações poderiam existir que podem explorar uma
vulnerabilidade e disparar uma falha neste componente?
•
Vítimas: Quem ou o quê poderia ser impactado por uma possível falha e quão
ruim isto seria?
Após o levantamento dessas informações, o analista de teste tem os subsídios
necessários para criar os casos de testes específicos que ira abordar o sistema em sua
parte mais vulnerável. Assim é possível concluir se será necessário escrever um caso de
teste para determinada situação.
De forma geral o processo de teste de software baseado em riscos seria descrito de
tal maneira; “processo de identificar os riscos de um sistema, analisar esses riscos, priorizálos, criar casos de teste que mitiga os riscos identificados e gerenciar sua execução.”
30
7. ANÁLISE DE RISCO BASEADO EM HEURÍSTICA
Bach (1999) descreve dois métodos de análise para identificar os riscos;
7.1 De fora para dentro
É feito uma análise geral e predefine riscos baseados na experiência em sistemas
semelhantes. Em geral usa-se para essa abordagem fontes como: riscos de qualidade, listas
gerais de risco e até mesmo catálogo de riscos conhecidos e pré-documentados.
Bach (1999) sugere o uso de três tipos de listas;
1.
Lista de critérios e categorias de qualidade desenvolvida a partir dos critérios
da norma ISO/IEC 9126:
•
Capacitação; Ele pode desempenhar as funções necessárias?
•
Confiabilidade; Será que vai funcionar bem e resistir aos defeitos em todas as
situações exigidas?
•
Usabilidade; O usuário conseguirá realizar com sucesso as tarefas pretendidas
pelo sistema?
•
Performance; O sistema terá uma resposta aceitável pelo usuário nas
realizações de suas funções?
•
Instalabilidade; O sistema pode ser instalado facilmente nas principais
plataformas existentes no mercado?
•
Compatibilidade; O sistema é compatível com componentes externos ou
outras configurações?
•
Suportabilidade; O suporte aos usuários do sistema está dentro do
orçamento do projeto?
•
Testabilidade; Como o produto pode efetivamente ser testado?
•
Manutenibilidade; a tarefa de construir, corrigir ou melhorar o produto não
será mais onerosa que o planejado?
•
Portabilidade; a tecnologia utilizada para a elaboração do sistema poderá
ser utilizada para outros produtos?
•
Localizabilidade; a tarefa de publicar o sistema para outras línguas não será
uma tarefa mais onerosa que o planejado?
31
2.
Na lista de riscos genéricos, são relacionados os riscos universais para
qualquer sistema. Para Rios (2008, p. 34) os maiores riscos de encontrar um
defeito são:
•
Funções muito complexas;
•
Funções completamente novos;
•
Funções freqüentemente alteradas;
•
Funções onde uma determinada ferramenta foi usada pela primeira vez no seu
desenvolvimento;
•
Funções que forem transferidas de um desenvolvedor para outro durante o
desenvolvimento do software;
3.
•
Funções que foram construídas sob pressão;
•
Funções que sofrem muita otimização – mais do que a média;
•
Funções onde muitos defeitos foram encontrados;
•
Funções com muitas interfaces.
Lista de catalogo de risco é caracterizada como um esboço de riscos que
pertencem a um determinado domínio. Segue abaixo uma versão resumida do
que seria um catálogo de riscos:
• Escolher qual o componente ou função se pretende analisar;
• Determinar a escala de preocupação;
• Recolher informações sobre as coisas que vão ser analisadas;
•
Analise cada área de risco de cada lista e determine a sua importância;
•
Caso ocorra algum risco que não está listado, refaça a lista e re agrupe os
riscos;
•
Confira a distribuição dos riscos.
32
7 .1.1 Lista de observação de risco
Segundo Bach(1999) esta é a maneira mais simples de organizar os riscos. É uma
lista de riscos que o testador periodicamente a revisa e pergunta a si mesmo, o que a
atividade de teste revelou sobre os riscos.
7.1.2 Matriz Risco/Tarefa
A relação matriz risco/tarefa segundo Bach(1999) consiste de uma tabela com duas
colunas. À esquerda está uma lista de riscos, a direita está uma lista de tarefas de redução
dos riscos associados a cada risco. Ordene os riscos por sua importância no topo da tabela.
Componente
Risco
Heurística
Impressão
Normal
Distribuído, popular
Geração de relatórios
Alto
Novo,
estratégico,
terceirizado e critico.
Instalação
Baixo
Popular,
Usabilidade
e
modificado.
Bibliotecas de imagens
Baixo
Complexo
Tabela 1 - Matriz de Componente x Risco Bach(1999).
7.2 De dentro para fora
Após um estudo das principais funcionalidades do produto, é feita uma pergunta; O
que pode dar errado aqui? Mais especificamente, para cada parte do produto é avaliado as
vulnerabilidades do sistema, as ameaças e as vitimas.
A abordagem de teste “de dentro para fora” será aplicada no sistema abaixo.
Inicialmente será apresentado um fluxo funcional da aplicação bem como uma
listagem com os requisitos desse sistema.
7.2.1 Aplicação da abordagem de fora para dentro
Para o melhor entendimento da abordagem “de dentro para fora”, as técnicas e
fases desse teste serão aplicadas em uma aplicação real.
33
A aplicação abaixo faz parte do sistema de informação da empresa Cheque-pre.com
Tecnologia da Informação / ProScore no site www.proscore.com.br. Todos os seus direitos
são reservados a empresa citada que gentilmente cedeu para fins de estudo e pesquisa a
utilização de sua imagem.
•
Objetivo do sistema: O sistema “Manutenção na Faixa Salarial” tem o
objetivo de possibilitar que o usuário tenha acesso a manutenção e cadastro da
faixa salarial.
•
Requisitos
Os requisitos listados abaixo têm o objetivo de auxiliar no entendimento das
funcionalidades do sistema, ficando livre de normas ou outros artifícios técnicos de
modelagem de dados.
Página 1:
1. Conter os botões de navegação (Serviço e Abandonar).
2. Layout padrão do sistema ProScore (Nome do Serviço em fonte azul,
Rodapé contendo o texto de versão do sistema, direitos autorais e nome
do responsável pelo acesso).
3. Exibir as faixas salariais cadastradas para o contrato do usuário, dividida
pelos campos; (código, Valor Inicial, Valor Final e Descrição da Faixa).
4. Conter os botões de navegação (Serviço e Abandonar).
5. Layout padrão do sistema ProScore (Nome do Serviço em fonte azul,
Rodapé contendo o texto de versão do sistema, direitos autorais e nome
do responsável pelo acesso).
6. Conter as opções (Incluir, alterar e excluir).
7. Caso não tenha nenhuma faixa salarial cadastrada para o contrato do
usuário, exibir uma mensagem na cor azul descrevendo que não há faixas
cadastradas.
Página 2:
1. Conter os botões de navegação (Serviço e Abandonar).
2. Layout padrão do sistema ProScore (Nome do Serviço em fonte azul,
Rodapé contendo o texto de versão do sistema, direitos autorais e nome
do responsável pelo acesso).
3. Exibir as opções de cadastro:
34
3.1 Código; apenas valores numéricos.
3.2 Descrição da Faixa; apenas valores alfa decimal.
3.3 Última faixa; Opção sim ou não.
3.4 Valor Inicial; apenas valores numéricos.
3.5 Valor Final; apenas valores numéricos.
3.6 Todos os campos são obrigatórios.
4. O valor do campo Valor Inicial não pode ser menor que o Valor Final.
5. Botões:
5.1 Cadastrar; enviar os dados do formulário para o banco de dados.
5.2 Desfazer; limpar o campo de cadastro do formulário.
Página 3:
1. Exibir os dados já cadastrados no banco para a faixa a ser alterada.
2. Conter os botões de navegação (Serviço e Abandonar).
3. Layout padrão do sistema ProScore (Nome do Serviço em fonte azul,
Rodapé contendo o texto de versão do sistema, direitos autorais e nome
do responsável pelo acesso).
4. Exibir as opções de cadastro:
4.1 – Código; apenas valores numéricos.
4.2 - Descrição da Faixa; apenas valores alfa decimal.
4.3 - Última faixa; Opção sim ou não.
4.4 - Valor Inicial; apenas valores numéricos.
4.5 - Valor Final; apenas valores numéricos.
4.6– Todos os campos são obrigatórios.
5 - O valor do campo Valor Inicial não pode ser menor que o Valor Final.
6 - Botões:
6.1 Cadastrar; enviar os dados do formulário para o banco de dados.
6.2 Desfazer; limpar o campo de cadastro do formulário.
Página 4:
1. Exibir uma mensagem de validação no final do processo de exclusão da faixa
salarial.
a.
Se a exclusão da faixa salarial for realizada com sucesso, exibir uma
mensagem na cor verde descrevendo o sucesso da operação.
b.
Se a exclusão da faixa não for concluída com sucesso, exibir uma
mensagem de validação na cor vermelha descrevendo problema
encontrado.
35
Fluxo Funcional
Esse fluxo mostra de forma macro o processo funcional do sistema.
Figura 5 – Fluxo Funcional da aplicação: (Manutenção na Faixa Salarial).
36
Figura 6 – Página 1 Exibição das Faixas Cadastradas
Figura 7 – Página 2 Cadastro das Faixas Salariais
37
Figura 8 – Página 3 Alteração das Faixas Salariais
Figura 9 – Página 4 Exclusão das Faixas Salariais
38
Após analisados os requisitos do sistema, é iniciado o processo de identificação
dos riscos pertinentes as ameaças, vulnerabilidade e vítimas.
Vulnerabilidades:
1
- Interface do sistema não funciona para os principais navegadores do
mercado.
2
– Layout da aplicação não está em conformidade com os padrões do
sistema da ProScore.
3
– Dificuldade de interação do usuário com o sistema.
4
– Desempenho entre às entradas e saídas de informações.
5
– Validação dos campos de cadastro.
6
– Inserção das informações de cadastro no banco de dados.
7
– Recuperação das informações inseridas no banco de dados.
8
– Os links podem levar a páginas erradas.
Ameaça:
1 - O usuário pode estar utilizando um navegador de internet em uma versão
muito antiga, ou qualquer outro navegador diferente do utilizado para o teste
da aplicação (Essa ameaça dispara a situação 1 e 2).
2 - O sistema pode estar com o layout fora dos padrões da empresa (Essa
ameaça dispara a situação 2 e 3).
3 – O Sistema está lento (Essa ameaça dispara a situação 3, 4, 5, 6 e 7).
4 - O usuário tem dificuldades em entender as mensagens de validação do
sistema (Essa ameaça dispara a situação 1, 2, 3, 5 e 6).
5 – Existe um erro na validação dos dados de cadastro. (Essa ameaça
dispara a situação 3, 5 e 6).
6 - Existe um erro na inserção dos dados de cadastro no banco de dados
(Essa ameaça dispara a situação 3 e 6).
7 – Existe um erro na seleção dos dados cadastrados no banco de dados
(Essa ameaça dispara a situação 3 e 7).
8 – Os links das páginas do sistema estão desconexos (Essa ameaça dispara
a situação 3, 4, 6, 7 e 8).
Vítimas:
1 - O usuário não consegue cadastrar um faixa salarial.
2 – O usuário não consegue ver as faixas cadastradas para o seu contrato.
39
3 – Informações não validadas são inseridas no banco de dados. A empresa
perde com dados inválidos em sua base.
4 – Com o layout fora dos padrões, a empresa pode perder credibilidade
perante os seus usuários.
Após a identificação das vulnerabilidades do sistema, é possível partir para a
criação dos casos de teste que exploram as situações listadas acima. Na tabela abaixo
estão listados os casos de teste baseados nas vulnerabilidades, ameaças e vitimas.
Situação
1
2
Teste
Testar a aplicação nos navegadores mais usados no mercado. Exemplo:
Internet Explorer, Firefox e Flock
Verificar o layout da página do sistema através do documento de padrões do
sistema da empresa.
3
Realizar os testes funcionais.
4
Realizar os testes de performance
5
Realizar os testes funcionais e estruturais com as fases de classe de
equivalência, valores limítrofes e Erro imaginário
Após a inserção dos dados de cadastro, verificar as informações inseridas no
6
banco de dados para certificar que o cadastro foi realmente realizado com
sucesso.
7
8
Verificar a condição de seleção do banco de dados na exibição das faixas
cadastradas para o contrato do usuário.
Com posse no fluxo funcional da aplicação, explorar as iterações do sistema
com outras páginas e certificar que todos os links levam a pagina correta.
Tabela 2 – Testes que exploram os riscos analisados.
40
8. VANTAGENS E RESTRIÇÕES DO TESTE DE SOFTWARE BASEADO EM RISCOS
8.1 Vantagens
Agilidade no processo de teste; com o conhecimento dos riscos do
•
sistema, é possível distribuir os esforços de teste nas áreas de maior nível
crítico, perfazendo um processo de teste mais ágil.
Proteger as vítimas; ao mitigar os riscos do sistema, estamos também
•
protegendo as vítimas de possíveis erros.
Priorizar os esforços de teste; direcionar os esforços de teste para as áreas
•
mais criticas.
Fazer melhor uso dos recursos de teste; otimizar o processo de teste.
•
8.2 Restrições
•
Processo de análise de risco não é uma tarefa trivial: o processo de
análise dos riscos depende do nível de complexidade e do conhecimento do
profissional de teste em relação ao sistema. Tratando-se de sistemas muito
complexos, esse processo se torna muito difícil e pouco viável, nesses
casos, abordagens mais formais de teste, se encaixam melhor.
8.3 Conclusão
A abordagem de teste de software baseada em risco tem fatores positivos e fatores
restritivos. Sua grande vantagem sem dúvida está relacionada ao ganho de custo e prazo no
processo de teste.
Outro ponto positivo nessa abordagem é o fato que ao conhecer os riscos de um
sistema e priorizá-lo através de seu nível crítico, as possíveis vítimas de possíveis erros no
sistema estão sendo protegidas.
As partes restritivas dessa abordagem se da ao fato que o processo de análise de
risco não é uma tarefa simples, o sucesso desse processo depende do conhecimento do
analista em relação ao sistema e ao nível de complexidade que esta embutida no mesmo.
41
Essa abordagem de teste segundo o seu criador James Bach tem mais sucesso em
aplicações de nível de complexidade mais baixa, e em sistemas em que as possíveis
vítimas a erros não tenham grande perda tanto financeira como risco à vida humana.
Para exemplificar esse contexto, no caso de um software que controle um avião ou
um banco de sangue, essa abordagem não é a mais indica já que um erro poderia causar
sérios prejuízos, tanto financeiros como de vida humana.
42
9. REFERÊNCIAS BIBLIOGRÁFICAS
PRESSMAN, ROGER S. “Engenharia de Software”. São Paulo: Pearson Makron Books,
2007. 1056p.
KOSCIANSKI, ANDRÉ., SOARES, MICHEL DOS SANTOS. “Qualidade de Software”. 2ª
São Paulo: Novatec, 2007. 395p.
DELAMARO, MARCIO EDUARDO,. MALDONADO, JOSÉ CARLOS,. JINO, MARIO.
“Introdução ao Teste de Software”. Rio de Janeiro, 2007. 394p.
BASTOS. ADERSON,. RIOS EMERSON., CIRSTALLI, RICARDO,. MOREIRA TRAYAHÚ.
“Base de Conhecimento de Teste de Software”. 2ª Ed. São Paulo: Martins, 2007. 263p.
RIOS, EMERSON. “Análise de Riscos em Projetos de Teste de Software”. Castelo Rio de
Janeiro: Alta Books, 2008, 131p.
MOLINARI, LEONARDO. ”Testes Funcionais de Software”. Santa Catarina: Visual Books,
2008. 214p.
RICK D. CRAIG,. STEFAN P. JASKIEL. “Systematic Software Testing”. Artech House,
2002, 536p.
BACH, JAMES; James Bach on Risk-Based Testing: How to conduct heuristic risk
analysis; Software Testing & Quality Engineering Magazine; p. 23-28, nov. de 1999.
Disponível via URL em: http://www.cswit/htm/literatura. Acesso em: 20 de novembro. de
2008.
AMLAND, S. Risk Based Testing and Metrics: Risk analysis fundamentals and metrics
for software testing including a financial application case study. (1995)
BACH J. James Bach on Risk-Based Testing: How to conduct heuristic risk analysis
(1999).
MPS.BR “Melhoria do Processo de Software Brasileiro”. Disponível em:
www.heurys.com.br/gxpsites/agxppdwn.aspx?2,9,265,O,P,0,211%3BP%3B1%3B53-. Acesso
em 20 de novembro de 2008.
43

Documentos relacionados