Académique Documents
Professionnel Documents
Culture Documents
Fundamentos
1
Sumário
Software ...................................................................................................... 8
O que é Software ...................................................................................... 8
Modelos Prescritivos de Software .................................................................. 9
Modelo Cascata ......................................................................................... 9
Modelo Incremental ................................................................................. 11
Modelo Evolucionário ............................................................................... 12
Prototipagem ....................................................................................... 13
Modelo espiral ...................................................................................... 14
Modelos Especializado de Processo ........................................................... 15
Desenvolvimento baseado em componentes .......................................... 15
Modelo de métodos formais .................................................................. 16
Processo Unificado .................................................................................. 17
Desenvolvimento Ágil de Software ............................................................... 21
Premissas do Desenvolvimento Ágil ....................................................... 22
EXTREME PROGRAMMING ....................................................................... 23
As boas práticas do XP ......................................................................... 24
SCRUM ................................................................................................... 26
Histórico .............................................................................................. 26
Definição ............................................................................................. 26
Pilares ................................................................................................. 27
Como Funciona?................................................................................... 27
Sprints ................................................................................................. 27
Product Sprint Backlog.......................................................................... 27
Kanban (Quadro de Trabalho) ............................................................... 28
........................................................................................................... 28
Daily Scrum ......................................................................................... 28
Sprint Review Meeting .......................................................................... 28
Burn Down Chart ................................................................................. 28
Papéis e Responsabilidades ................................................................... 29
Product Owner ..................................................................................... 29
Scrum Master ....................................................................................... 29
2
Scrum Team ........................................................................................ 29
Teste de software ...................................................................................... 30
O que é teste de software? ...................................................................... 30
De onde surgiram os Testes de Software? ................................................ 30
História do primeiro BUG... ...................................................................... 31
Porque investir em Testes de Software? ................................................... 32
Formas de condução dos Testes............................................................... 33
Custos .................................................................................................... 33
Regra 10 de Meyers ................................................................................... 34
Ciclo de desenvolvimento em V ................................................................... 35
Ciclo de desenvolvimento em W .................................................................. 36
Validação e Verificação ............................................................................... 36
Níveis de Teste .......................................................................................... 37
Objetivos do Teste .................................................................................. 37
Principais causas do fracasso em Teste ..................................................... 38
Até quando devemos testar? .................................................................... 38
Defeito, erro e falha ................................................................................ 39
Cargos comuns na área de Teste de Software .............................................. 40
Analista de Teste ..................................................................................... 40
Responsabilidades: ............................................................................... 40
Diferenciais: ......................................................................................... 40
Testador de Software .............................................................................. 40
Responsabilidades: ............................................................................... 40
Diferenciais: ......................................................................................... 40
Automatizador de Teste ........................................................................... 40
Responsabilidades: ............................................................................... 40
Diferenciais: ......................................................................................... 40
Técnico de Teste de software................................................................... 41
Responsabilidades: ............................................................................... 41
Diferenciais: ......................................................................................... 41
Líder de Teste ......................................................................................... 41
Responsabilidades: ............................................................................... 41
3
Diferenciais: ......................................................................................... 41
Arquiteto de Teste ................................................................................... 41
Responsabilidades: ............................................................................... 41
Diferenciais: ......................................................................................... 42
Engenheiro de Teste................................................................................ 42
Responsabilidades: ............................................................................... 42
Diferenciais: ......................................................................................... 42
Gerente de Teste - Coordenador de Teste................................................. 42
Responsabilidades: ............................................................................... 42
Consultor em Teste ................................................................................. 43
Responsabilidades: ............................................................................... 43
Diferenciais: ......................................................................................... 43
Perfil dos profissionais ............................................................................. 43
Certificações da área de Teste de Software ............................................... 43
O que é Qualidade? .................................................................................... 45
Porque as empresas buscam a qualidade? ................................................ 46
O que é Qualidade de Software? ................................................................. 46
Qualidade do Produto ................................................................................. 47
Qualidade do Processo................................................................................ 47
Certificação da Qualidade ........................................................................ 47
O Sistema de Certificação ..................................................................... 48
Quais são as vantagens da certificação? ................................................ 49
ISO/IEC 9126 ............................................................................................. 49
Modelo de Qualidade de Software ............................................................ 50
Atributos de Qualidade ............................................................................ 50
Funcionalidade ..................................................................................... 51
Confiabilidade ...................................................................................... 52
Usabilidade .......................................................................................... 52
Eficiência ............................................................................................. 53
Manutenibilidade .................................................................................. 53
Portabilidade ........................................................................................ 54
Modelo de qualidade em uso .................................................................... 54
4
Efetividade ........................................................................................... 55
Produtividade ....................................................................................... 55
Segurança ........................................................................................... 56
Satisfação ............................................................................................ 56
O que é o CMMI®? .................................................................................... 56
Histórico ................................................................................................. 57
Sobre o CMMI ......................................................................................... 58
Dimensões: .......................................................................................... 58
Formas de representação......................................................................... 60
Componentes das Áreas de Processo ........................................................ 60
O que é uma área de processo? ............................................................ 61
Quais são as áreas de processos do CMMI? ........................................... 61
NÍVEL 2 – Gerenciado.............................................................................. 61
Áreas de processos do nível 2 – Gerenciado ........................................... 61
NÍVEL 3 – Definido .................................................................................. 62
Áreas de processos do nível 3 – Definido ............................................... 62
NÍVEL 4 – Gerenciado Quantitativamente ................................................. 63
Áreas de processos do nível 4 – Gerenciado Quantitativamente ............. 63
NÍVEL 5 – Em Otimização ........................................................................ 63
Áreas de processos do nível 5 – Em Otimização ..................................... 63
Níveis de Capacidade ............................................................................ 64
Níveis de Maturidade ............................................................................ 65
Áreas de Processos e Categorias ........................................................... 66
Níveis e Áreas de Processos .................................................................. 67
MPSBr ....................................................................................................... 67
Introdução .............................................................................................. 67
Quem é a SOFTEX? ................................................................................. 67
O Projeto MPs-BR .................................................................................... 68
Metas do programa a médio e longo prazo ............................................ 68
MPS.BR em números ............................................................................ 69
MPS Software ......................................................................................... 70
Norma ISO/IEC 12207 .......................................................................... 72
5
Norma ISO/IEC 15504 .......................................................................... 73
O Modelo de Referência ........................................................................... 73
Processos ............................................................................................ 74
Métodos de Avaliação .............................................................................. 76
MPS Serviços .......................................................................................... 77
Tipos de Teste ........................................................................................... 78
Técnicas de Teste (Funcional x Estrutural) ................................................... 79
Técnicas de Testes Funcionais ................................................................. 80
Teste de Requisitos (Teste Funcional) ................................................... 80
Regressão ............................................................................................ 81
Testes de Tratamento de Erros ............................................................. 82
Testes de Suporte Manual..................................................................... 82
Testes de Interconexão ........................................................................ 83
Testes de Controle ............................................................................... 84
Testes Paralelos ................................................................................... 84
Técnicas de Testes Estruturais ................................................................. 84
Teste de Estresse ou Carga................................................................... 85
Performance (Desempenho ou Execução) .............................................. 85
Recuperação ........................................................................................ 86
Operação ............................................................................................. 88
Teste de Conformidade......................................................................... 89
Testes de Segurança ............................................................................ 89
Testes de manutenção: ........................................................................... 91
Estratégias de teste de software.................................................................. 92
Caixa preta : ........................................................................................... 92
Caixa branca: .......................................................................................... 92
Técnicas de Teste de Caixa Preta: ............................................................ 92
Particionamento de equivalência ........................................................... 93
Análise de valor limite........................................................................... 95
Gráfico Causa Efeito ............................................................................. 96
Fluxo de Dados .................................................................................... 97
Pair Wise ............................................................................................ 104
6
Técnicas de Teste de Caixa Branca .......................................................... 105
Revisão formal .................................................................................... 105
Teste do caminho básico ..................................................................... 106
Ambientes de Teste ................................................................................... 107
Definição: .............................................................................................. 107
Preparação do ambiente de teste ............................................................ 108
Uso de ambientes virtuais ....................................................................... 109
Bibliografia ................................................................................................ 110
7
Software
O que é Software
O termo inglês "software" foi usado pela primeira vez em 1958 em um artigo escrito
pelo cientista americano John Wilder Tukey.
Existe também o conceito de software livre, que remete para um programa que dá
liberdade ao utilizador, permitindo que ele o estude, modifique e compartilhe com
outras pessoas. Para isso, é preciso que o utilizador possa aceder o código-fonte, para
mudá-lo conforme as suas necessidades.
8
Hoje o software assume um duplo papel: é o produto e ao mesmo tempo é o veículo
que entrega o produto. Como produto ele disponibiliza o potencial de computação
presente no hardware do computador ou, mais amplamente, por uma rede de
computadores acessível pelo hardware local. Quer seja em um celular ou em um
computador de grande porte o software é um transformador de informações –
produzindo, gerindo, adquirindo, modificando, exibindo ou transmitindo informações,
desde as mais simples até as mais complexas. Como veículo usado para entrega do
produto, o software age como base para o controle do computador (sistemas
operacionais), para a comunicação da informação (redes) e para a criação e controle
de outros programas (ferramentas e ambiente de software).
Modelo Cascata
9
Figura 1 – Modelo Cascata
10
mudanças podem provocar bastante confusão na medida em que a equipe de projeto
prossegue.
É muito raro e difícil para o cliente saber e estabelecer explicitamente todas as suas
necessidades. O modelo cascata é muito fortemente baseado nisso e tem dificuldade
para adequar a incerteza natural que existem no inicio dos projetos.
O cliente precisa ter muita paciência, o que raramente acontece. Uma versão
operacional (pronta para ser executada no cliente) não estará disponível até estarmos
próximo ao final do projeto.
Se tivermos um erro grave nas etapas iniciais, como uma especificação mal
compreendida e mal especificada, podemos ter um resultado desastroso.
Outro grande problema que temos com os projetos que usam modelos cascata é o
bloqueio que existe em alguns membros da equipe que precisam esperar que os outros
completem as suas tarefas para que eles possam dar sequência ao trabalho.
Modelo Incremental
11
O modelo de processo incremental combina elementos do modelo em cascata aplicado
de forma iterativa à medida que o tempo for avançando. Cada uma das sequencias
lineares gera um incremento do software. Esses incrementos são entregáveis e prontos
para o cliente. Podemos citar um exemplo de processo incremental em um software de
Business Inteligence que em um primeiro momento emitiria relatórios pré-formatados.
Em um segundo incremento o software poderia adicionar funções de seleção de
períodos e no próximo incremento o software poderia adicionar o acréscimo de um
segundo filtro e assim sucessivamente.
Modelo Evolucionário
12
Prototipagem
Figura 3 – Prototipagem
13
Modelo espiral
O famoso modelo espiral foi proposto por Boehm. Esse é um modelo de processo de
software evolucionário que também é iterativo como a prototipagem, porém com
aspectos sistemáticos e controlados do modelo cascata. O modelo espiral fornece um
grande potencial para que possamos ter rápido desenvolvimento de versão cada vez
mais completas.
Podemos notar que diferente de outros modelos que terminam quando o software é
entregue, o modelo espiral pode ser adaptado a cada entrega. O projeto finaliza
quando o cliente fica satisfeito, quando o software é retirado de operação ou uma data
encerra definitivamente o projeto.
14
Modelos Especializado de Processo
Este tipo de desenvolvimento auxilia bastante a manutenção dos sistemas, visto que
ele foca na integração de novos componentes já prontos ou então a atualização dos
componentes já existentes. Dessa forma, essa abordagem enfatiza a criação ou
adaptação de componentes para que sejam utilizados em diversos sistemas. Com isso,
temos como resultado a reutilização que busca flexibilizar o desenvolvimento.
15
Diversos produtos baseados em componentes existentes no mercado são pesquisados
e avaliados.
Os métodos formais ainda podem ser empregados em três diferentes níveis, são eles:
Nível 0, em que o software é descrito através de uma especificação formal que será
usada como base para a implementação do sistema. Esse nível é considerado uma
opção de menor custo-benefício;
Nível 2, em que provadores de teoremas podem ser utilizados afim de conduzir teste
completos das propriedades de um sistema de forma mais automatizada. Este nível é
mais apropriado em sistemas que o custo provocado por erros é extremamente alto.
16
descobertos e corrigidos mais facilmente com a aplicação da análise matemática. Nos
outros paradigmas eliminamos esses problemas por meio de uma revisão local, o que
de certa forma é menos eficaz. Os métodos formais, quando utilizados durante o
projeto, servem para verificar a programação, possibilitando assim a descoberta e a
correção de erros que poderiam passar despercebidos.
Processo Unificado
Direcionado por casos de uso: O início do processo deve ser marcado pela utilização
dos casos de uso, a fim de se definir uma linguagem entre os usuários e o sistema,
facilitando a especificação dos requisitos.
17
Processo Unificado é um modelo configurável, ou seja, deve ser ajustado de acordo
com os tipos de projeto que se necessita desenvolver.
Concepção ou iniciação: Essa fase tem como objetivo verificar a viabilidade do projeto,
bem como os riscos e um dos fatores não menos importantes: definir os casos de uso
mais críticos obtendo as funções chave do sistema. É através do tipo do projeto, dos
casos de uso e consequentemente dos requisitos, que se realizará o ajuste de quantas
iterações o processo terá. De acordo com os casos de uso, pode-se definir também
quais as etapas exigirão maior cuidado.
Elaboração: Durante essa fase, a maioria dos casos de uso são especificados e
detalhados. A arquitetura do sistema é projetada utilizando artefatos que podem ser
estáticos ou dinâmicos. Neste instante são apresentados, o Baseline completo do
projeto, os componentes que formarão a equipe de desenvolvimento, etc. No final
dessa fase os envolvidos devem estar aptos a planejar a fase de construção em
detalhes.
Transição: O objetivo dessa fase é garantir que todos os requisitos do projeto foram
atendidos e implementados corretamente. O produto final pode ser liberado em uma
versão beta. Existem ainda outras atividades que, de acordo com o projeto, podem
ocorrer de maneira paralela, por exemplo, a preparação do ambiente, a conclusão do
manual do usuário, identificação e correção de defeitos. No final dessa fase deve-se
tirar uma conclusão geral do projeto, obtendo os pontos positivos e negativos os quais
devem ser utilizados durante a concepção de projetos futuros.
18
Modelo do negócio: O objetivo principal desse fluxo é que o fornecedor entenda muito
bem o problema a ser resolvido, elaborando se necessário uma análise de risco e de
viabilidade para o projeto como um todo. Neste momento, existe uma grande
interação entre o fornecedor e o cliente. A fim de que possam ser gerados os casos de
uso e consequentemente a extração dos requisitos. Entender o modelo de negócio do
cliente é peça fundamental antes que um requisito possa ser definido.
Testes: Neste fluxo, um plano de teste deve ser elaborado, definindo e identificando
qual procedimento e quais tipos de testes serão realizados. Esse plano poderá ser
alterado de acordo com a melhor definição dos requisitos do sistema. Ele também
poderá ser utilizado durante todo o projeto, sendo modificado a cada iteração,
mostrando a situação do executável que foi entregue ao cliente. Nas fases de
concepção e de elaboração têm-se os testes de módulos e na fase de construção têm-
se os testes de integração. O número de testes de integração poderá se repetir de
acordo com a quantidade de alterações nos requisitos do sistema.
19
artefato de forma a reduzir mais tarde, o número de erros de instalação e
consequentemente o tempo de testes. No final da fase de construção, inicia-se a
migração do sistema para o ambiente de testes do cliente. Posteriormente, no final da
fase de transição, já se pode observar a completa migração e configuração do sistema
no ambiente de produção do cliente.
20
Desenvolvimento Ágil de Software
Desenvolver softwares é uma atividade difícil e arriscada. Segundo as estatísticas,
entre os maiores riscos estão: gastos que superam o orçamento, consumo de tempo
que supera o cronograma, funcionalidades que não resolvem os problemas dos
usuários, baixa qualidade dos sistemas desenvolvidos e cancelamento do projeto por
inviabilidade.
Embora cada envolvido tivesse suas próprias práticas e teorias preferidas, todos
concordavam que, em suas experiências prévias, os projetos de sucesso tinham em
comum um pequeno conjunto de princípios. Com base nisso eles criaram o Manifesto
para o Desenvolvimento Ágil de Software, ou apenas Manifesto Ágil. Este identifica
metodologias de desenvolvimento que adotam os princípios do manifesto ágil. Estes
princípios são os seguintes:
21
Figura 6 - Desenvolvimento iterativo em espiral
22
Figura 7 - Custo de alterações no desenvolvimento ágil e no desenvolvimento
tradicional.
EXTREME PROGRAMMING
XP é um apelido carinhoso de uma nova metodologia de desenvolvimento designada
Extreme Programming, com foco em agilidade de equipes e qualidade de projetos,
apoiada em valores como simplicidade, comunicação, feedback e coragem que nos
submetem ao reconhecimento de que XP é uma metodologia baseada em
comportamentos e atitudes. Dessa forma, ela propicia que o projeto seja executado
dentro do prazo e do orçamento, fazendo então com que o cliente esteja satisfeito e a
equipe de desenvolvimento não fique maluca por causa do projeto.
Vale lembrar, que ao contrário do que se pensa, XP pode ser aplicada em projetos de
vários portes, pois seu dinamismo é tão latente, que permite seu uso por equipes
criativas em qualquer projeto.
É importante lembrar também que os valores citados acima, alicerçam a metodologia,
pelos seguintes motivos:
23
E a coragem para saber dizer NÃO quando necessário, ou então para dizer que
o projeto vai demorar além do estimado, pois os novos requisitos precisam ser
codificados ou o código já em funcionamento precisa ser refatorado.
As boas práticas do XP
O cliente sempre disponível: Constante disponibilidade do cliente para colaborar em
dúvidas, alterações, e prioridades em um escopo, ou seja, dando um dinamismo ativo
ao projeto.
Essa prática é fundamental para elaborar a estratégia das interações, que é a forma
como se trabalha o "cronograma" de um projeto com XP, onde basicamente define-se
um tempo padrão para as interações e especifica-se quais e quantas estórias podem
ser implementadas em uma interação.
Exemplo: digamos que seja definido o tempo padrão de 2 semanas para cada
interação e que temos 60 estórias a serem implementadas. Em seguida, iremos
analisar os requisitos (estórias) e priorizá-las junto ao cliente. Após esse processo,
definimos que iremos implementar 4 estórias por interação, fazendo com que as 60
estórias sejam implementadas em 15 interações (60/4), chegando a um total estimado
de 30 semanas (15*2) para que se implemente todas as estórias.
Claro que esse exemplo é bem genérico, pois nem sempre é possível estabelecer uma
organização tão exata na implementação das estórias, até mesmo porque existe uma
variação na necessidade de esforço que cada estória exige para ser implementada. É
comum que uma única estória necessite de mais uma interação ou que existam
estórias tão pequenas que devam ser agrupas em uma só interação.
24
aquilo que está sendo implementado. Isto também permite que mais cedo possam ser
detectadas necessidades de alterações de requisitos no software.
Testes de Aceitação: São definidos pelo usuário na fase inicial do projeto e são os
critérios de aceitação do software conforme a estratégia de entrega e representa
exatamente a métrica de aderência do software desenvolvido/implantado ao universo
do cliente.
25
no código, erros de lógica e produção de um código fora dos padrões
estabelecidos pela equipe.
SCRUM
Histórico
A primeira referência são Takeuchi e Nonaka na Harvard Business Review de 1986, o
artigo “The New New Product Development Game” apresentou iterações, valor, times
pequenos, multifuncionais e auto-organizados.
O termo Scrum vem do Ruby, é aquela jogada em que ficam todos juntos, frente a
frente ao time adversário, sempre que a bola para ou sai de campo, forçando cada
time a reagrupar, reorganizar-se e reiniciar o jogo.
Definição
O Scrum é um processo de desenvolvimento iterativo e incremental para
gerenciamento de projetos e desenvolvimento ágil de software. É utilizado para
trabalhos complexos nos quais é impossível predizer tudo o que irá ocorrer.
26
Pilares
O Scrum possui 3 pilares:
Como funciona?
Sprints
No Scrum, os projetos são divididos em ciclos (tipicamente mensais) chamados de
Sprints. O Sprint representa um tempo definido dentro do qual um conjunto de
atividades deve ser executado. Metodologias ágeis de desenvolvimento de software
são iterativas, ou seja, o trabalho é dividido em iterações, que no Scrum são chamadas
de Sprints e geralmente duram de 2 a 4 semanas.
27
Kanban (Quadro de Trabalho)
O time também pode possuir um “quadro de trabalho”, também chamado de Kanban,
para organizar as atividades dos itens de Backlog da Sprint, separando-as em
basicamente em quatro estados (isso pode variar de projeto a projeto): A fazer, em
andamento, Em Testes e Concluído. Esse “quadro” é muito produtivo, pois basta olhar
para ele para realizar a leitura do progresso da Sprint.
Figura 8 – Kanban
Daily Scrum
Diariamente, em uma Sprint, a equipe faz uma breve reunião de no máximo 15
minutos com todos os participantes em pé, chamada Daily Scrum. O objetivo é cada
integrante dizer o que fez no dia anterior, o que pretende fazer no dia que se inicia e
se existe algum impedimento que está atrapalhando o seu trabalho.
28
Figura 9 – Burn Down Chart
Papéis e Responsabilidades
Product Owner
Define os requisitos do produto, decide a data de release e o que deve conter
nela.
É responsável pelo retorno financeiro (ROI) do produto.
Prioriza os requisitos de acordo com o seu valor de mercado.
Pode mudar os requisitos e prioridades a cada Sprint.
Aceita ou rejeita o resultado de cada Sprint.
Scrum Master
Garante que o time esteja totalmente funcional e produtivo.
Facilita a colaboração entre as funções e áreas e elimina os impedimentos do
time.
Protege o time de interferências externas.
Garante que o processo está sendo seguindo. Participando das reuniões diárias,
revisão da Sprint, e planejamento.
Scrum Team
Multifuncional, entre 5-9 membros.
Seleciona, entre os itens priorizados, os que irão ser executados durante a
Sprint.
Tem todo o direito de realizar o que quiser dentro da Sprint
29
Teste de software
O que é teste de software?
O teste de software pode ser visto como uma parte do processo de qualidade de
software. A qualidade da aplicação pode e, normalmente, varia bastante de sistema
para sistema.
Não se pode garantir que todo software funcione perfeitamente, sem a presença de
erros, visto que os softwares muitas vezes possuem um grande número de processos
com fórmulas, atividades e algoritmos complexos. O tamanho do projeto a ser
desenvolvido e a quantidade de pessoas envolvidas no processo aumentam ainda mais
a complexidade.
Falhas podem ser originadas por diversos motivos. Por exemplo, a especificação pode
estar errada ou incompleta, ou pode conter requisitos impossíveis de
serem implementados, devido a limitações de hardware ou software. A implementação
também pode estar errada ou incompleta, como um erro de um algoritmo. Portanto,
uma falha é o resultado de um ou mais defeitos em algum aspecto do sistema.
Verificar que o software está fazendo o que deveria fazer, de acordo com os
seus requisitos, e não está fazendo o que não deveria fazer;
Processo de executar um programa ou sistema com a intenção de encontrar
defeitos
30
Os modelos prescritivos de desenvolvimento de software surgiram na década de 80.
Estes modelos, cascata, espiral, entre outros foram criados para organizar e inserir
padrões no processo de desenvolvimento de software. São compostos por vários
processos genéricos: comunicação, planejamento, modelagem, construção e
implantação.
A primeira certificação brasileira de testes foi criada pela ALATS e no ano de 2006
surgiram os primeiros profissionais certificados com a Certificação Brasileira de Testes
de Software (CBTS).
Thomas Edison teve problemas de leitura em seu fonógrafo com um inseto em 1878 e
em todos os defeitos industriais passou a denominá-los como bug. Já o primeiro bug
em computadores foi encontrado em 1945, os engenheiros que trabalhavam com a
máquina Harvard Mark I, encontraram um inseto nos circuitos. Este inseto estava
causando um erro nos cálculos da máquina. Ao ser encontrado, o inseto foi retirado e
31
colado no livro de registro com a intenção de registrá-lo como o primeiro bug
encontrado.
Nas últimas décadas, a qualidade de Software tem vindo a tornar-se numa área cada
vez mais importante para o mundo da informática. A criticidade e complexidade cada
vez maior dos sistemas de informação no mundo empresarial explicam a necessidade
de melhorar a sua qualidade.
Muitos dos aviões que usamos para deslocamento (senão todos) são controlados por
softwares, o carro que utilizamos tem softwares, sistemas de pagamentos de contas,
sistemas bancários, enfim, uma afinidade de softwares doa quais todos nós
dependemos. Um erro pode colocar a vida de pessoas em risco, perdas de negócio e
produtividade, prejuízos financeiros, comprometimento da reputação da empresa, etc.
Vemos seguidamente notícias de empresas prejudicadas devido a erros em softwares
e, certamente nem todos são divulgados.
32
Sem um bom levantamento de requisitos, especificação e verificação a chance de erros
é enorme. Se tudo não for verificado antes do desenvolvimento haverá um grande
problema, difícil para resolver.
Custos
Caso a empresa opte por não ter esta área, não terá também a qualidade
assegurada... com isto aumenta significativamente o retrabalho do desenvolvimento e
também a insatisfação e insegurança do cliente, perda de oportunidades, degradação
da imagem e desgastes profissionais.
33
Porém, há uma forma correta de trabalho que apresenta um custo aceitável para
assegurar qualidade ao software e garantir a satisfação à empresa, que é incluir os
testes nas primeiras etapas do ciclo de vida de desenvolvimento.
Regra 10 de Meyers
Glenford Myers é o autor do livro “The Art of Software Testing“, considerado por
muitos como a primeira obra de real valor sobre teste de software e a criadora de
termos muito usados como “Caixa Branca e Caixa Preta” e “Caso de Teste”. Quase
todas as palestras, seminários e obras acadêmicas que existem no mercado tem
influência direta desse autor, sem falar em uma das “leis” mais citadas em
certificações, livros e empresas: A Regra 10 de Myers.
Esta regra estabelece que o custo da correção de defeitos é bem mais custoso quanto
mais tarde o defeito é encontrado. Ou seja, um defeito encontrado em produção custa
muito mais do que se fosse encontrado na fase de análise ou em modelos de dados.
Meyer diz que um erro for encontrado na fase de levantamento de requisitos, o custo
dele é de $ 1,00 - quando um erro for encontrado na etapa de especificação de
requisitos, o custo é de $ 10,00 - quando o erro for encontrado na etapa de
estrutura/layout, o custo é de $ 100,00 - quando o erro for encontrado na etapa de
programação, o custo é de R$ 1000,00.
Desta forma, quando executamos testes com o sistema já pronto, a única coisa que
evitamos é que este erro tenha o valor de $ 10.000,00 que é o preço que Meyer diz
que ele vale, quando encontrado em produção.
Também por este fator é que se torna tão importante que se teste a documentação do
software, pois, se encontrarmos erros nesta fase, o custo será bem menor.
34
Ciclo de desenvolvimento em V
O Modelo V é uma variação do modelo cascata, que demonstra como as atividades de
testes estão relacionadas com analise e projeto.
Este modelo propõe que os níveis de teste obedecem e estão relacionados diretamente
a cada fase de análise e desenvolvimento e que, a cada nível de teste esta
documentação, no nível de detalhamento dela, deve ser verificada e validada.
Também, durante os testes de unidade e de integração, os programadores e a equipe
de testes devem garantir que todos os aspectos do projeto foram implementados
corretamente no código.
A conexão entre os lados esquerdo e direito do modelo em V implica que, caso sejam
encontrados problemas durante a verificação e a validação, o lado esquerdo do V pode
ser executado novamente para corrigir e melhorar os requisitos, o projeto e a
codificação, antes da execução das etapas de testes que estão no lado direito.
Em outras palavras o modelo V torna mais explicitas algumas iterações e repetições do
trabalho, ocultas no modelo cascata. Enquanto o enfoque do modelo cascata está nos
documentos e nos artefatos, o enfoque do V está na atividade e na correção.
35
Ciclo de desenvolvimento em W
Validação e Verificação
O objetivo da Validação e da Verificação é assegurar que o SW seja adequado e se
atende às necessidades, ou seja, a confirmação de que este cumpra suas
especificações.
A validação só é possível de ser feita depois que o software está desenvolvido. Neste
momento pode-se validar se este atende o que o cliente precisa (de acordo) com o
que foi levantado como necessidade.
36
Níveis de Teste
Níveis de teste de software
Teste de Unidade: também conhecido como testes unitários. Tem por objetivo
explorar a menor unidade do projeto, procurando provocar falhas ocasionadas por
defeitos de lógica e de implementação em cada módulo, separadamente. O universo
alvo desse tipo de teste são os métodos dos objetos ou mesmo pequenos trechos de
código. – Realizado pelos desenvolvedores.
Objetivos do Teste
Os objetivos do teste são prover a qualidade esperada pelo cliente na solução que vai
ser entregue a ele, no sentido de atender à sua necessidade, fazendo o que necessário
que seja feito e não fazendo o que não deve ser feito. Dessa forma o cliente se sente
seguro e atendido. À medida que isto é garantido, todo o ciclo natural também é
mantido, a empresa pode viver o seu ciclo de projeto e os profissionais que ela atuam
se sentem confortáveis e confiantes.
37
Principais causas do fracasso em Teste
Sem dúvida o maior problema do fracasso em testes de software, ou, no projeto como
um todo são os requisitos mal definidos. Isto somado a uma cultura de testar apenas
quando o software está pronto somo por si só um sério problema de qualidade, de
custo, desgaste, etc. Ainda, quando a cultura da empresa não permite ao Analista de
Teste questionar os requisitos ou, ele não faz por se sentir “envergonhado”, os casos
de teste ficam incompletos e os testes não são válidos, sendo impossível garantir a
qualidade.
Quando o projeto apresenta muitos erros, a equipe de testes não vê o seu trabalho
“dar resultado” e se desmotiva, a ponto de não dar a devida atenção. Isto também é
comum de ocorrer quando o conserto de alguns erros entra em descrédito, ou porque
as correções ditas como feitas não ocorreram na realidade, ou porque geraram mais
erros.
Outro problema menos comum, mas bastante sério é uma equipe de desenvolvimento
usar mais tempo do que o previsto e sobrar pouco tempo para estar a aplicação, de
forma que não se possa efetuar todos os testes programados.
Outro problema menos comum, mas bastante sério é uma equipe de testes pouco
qualificada. Isto hoje em dia não é mais uma realidade constante, mas, já foi. Épocas
atrás não existiam formações e quem atuava na área eram antigos programadores e
técnicos da área de negócios sem utilizar qualquer metodologia para definir cenários
de teste ou para testar, apenas seu conhecimento.
A questão: “Até quando testar? ” Está intimamente ligada ao tipo de cenário que você
possui.
38
De uma forma geral podemos dizer que devemos testar todos os cenários positivos,
negativos e alternativos. Depois de testados e registradas as inconformidades, temos
que nos certificar que pelo menos as inconformidades registradas como críticas foram
resolvidas. Se o contexto permitir, pode-se aguardar até os de prioridade normal,
mínima, etc. Porém, dependendo do tipo de software, por exemplo, algum que
represente um risco de vida, temos que nos certificar que “todos” os cenários foram
pensados, executados e tudo está resolvido. Assim como, o teste de regressão foi
executado com sucesso.
O ser humano está sujeito a cometer um erro (engano), que produz um defeito (falha,
bug), no código, em um software ou sistema ou em um documento. Se um defeito no
código for executado, o sistema falhará ao tentar fazer o que deveria (ou, em algumas
vezes, o que não deveria), causando uma falha. Defeitos no software, sistemas ou
documentos resultam em falhas, mas nem todos os defeitos causam falhas.
Os defeitos ocorrem porque os seres humanos são passíveis de falha e porque existe
pressão no prazo, códigos complexos, complexidade na infraestrutura, mudanças na
tecnologia e/ou muitas interações de sistema.
Falhas também podem ser causadas por condições do ambiente tais como: radiação,
magnetismo, campos eletrônicos e poluição, que podem causar falhas em software
embarcado (firmware) ou influenciar a execução do software pela mudança das
condições de hardware.
39
Cargos comuns na área de Teste de Software
A maioria dos cargos de teste de software se engloba dentro destas categorias:
Analista de Teste
Responsabilidades:
Elaborar Plano de Teste
Elaborar Casos de Teste
Identificar e definir os testes necessários
Monitorar a abrangência dos testes
Avaliar a qualidade geral obtida ao testar
Definir necessidades
Avaliar e apresentar os resultados
Diferenciais:
Conhecer áreas de negócio/processos.
Testador de Software
Responsabilidades:
Executar os testes funcionais de acordo com os Casos de Teste
Registrar inconformidades encontradas
Re-testar inconformidades resolvidas
Diferenciais:
Conhecer áreas de negócio/processos.
Automatizador de Teste
Responsabilidades:
Elaborar Scripts de Teste
Monitorar a abrangência dos testes
Avaliar a qualidade geral obtida ao testar
Definir necessidades
Diferenciais:
Conhecer ferramentas de automação de teste
Habilidades de Programação
40
Conhecer áreas de negócio/processos
Responsabilidades:
Configurar hardware e software para teste
Executar scripts de teste
Isolar e reproduzir erros
Registrar inconformidades encontradas
Diferenciais:
Conhecer hardware/suporte.
Noções básicas de programação
Conhecer ferramentas de automação de teste
Líder de Teste
Responsabilidades:
Liderança de um projeto de teste específico
Elaborar Plano de Teste
Elaborar Casos de Teste
Identificar e definir os testes necessários
Monitorar a abrangência dos testes
Avaliar a qualidade geral obtida ao testar
Definir necessidades
Avaliar e apresentar os resultados
Diferenciais:
Conhecer áreas de negócio/processos.
Habilidade para liderar pessoas.
Arquiteto de Teste
Responsabilidades:
Definir a infraestrutura de teste
Criar a arquitetura e o ambiente para execução dos testes
Escolher as ferramentas de teste
41
Treinar/Capacitar as pessoas para executarem o trabalho no ambiente
criado.
Diferenciais:
Conhecer hardware/suporte.
Engenheiro de Teste
Responsabilidades:
Criar estratégias de teste
Executar testes especiais, tais como:
o testes de performance
o carga
o stress
o segurança, etc
Diferenciais:
Conhecer hardware/suporte.
Conhecer ferramentas de automação de teste
Responsabilidades:
Gerenciar/Coordenar a equipe de testes
Planejar/Acompanhar:
o os processos de teste
o todos os testes
o cronograma de atividades dos demais papéis da equipe de teste
o indicadores de produtividade para medir o esforço
o índice de qualidade do processo de validação do software.
o métricas dos testes
o Planos e Casos de Teste
42
Consultor em Teste
Responsabilidades:
Apoiar os gestores na área de qualidade
Auxiliar na tomada de decisões estratégicas da área
Definir alternativas para a área
Trazer conhecimento de mercado à empresa
Diferenciais:
Experiência na área
Visão holística
Valor: 90 dólares
43
Prova em português
Prova on-line
44
Maiores informações no site:
http://ibqts.com.br/
Prova em português
Bibliografia recomendada:
O que é Qualidade?
Qualidade é a adequação ao uso. É a conformidade às exigências. ISO -
INTERNATIONAL STANDARDIZATION ORGANIZATION.
45
Porque as empresas buscam a qualidade?
As empresas precisam de qualidade, pois ela é hoje uma das principais estratégias
competitivas. Está intimamente ligada à produtividade, melhoria de resultados e
aumento de lucros, através da redução de perdas e do desperdício, do envolvimento
de todos na empresa e consequente motivação.
A qualidade do software então, depende de determinar sob qual o ponto de vista que
vai ser medida. Podemos dizer que que cada software vai precisar focar em
determinados atributos de qualidade e, de uma forma geral, os Pilares da qualidade,
de acordo com B.Bügner seguem este modelo:
46
Qualidade do Produto
Esta última definição está totalmente ligada com Qualidade de Software / Qualidade do
Produto, na qual se faz uma analogia para exemplificar, iniciasse a partir da visita a
uma cafeteria, na qual a solicitação feita foi a de uma sobremesa (produto) que está
relacionada com a satisfação das necessidades (requisitos) que podem ser: aparência,
sabor, temperatura, rapidez no serviço, preço, higiene, valor nutricional, etc.
Qualidade do Processo
Antes de entender qualidade do processo de software, há a necessidade de entender o
conceito de processo de software, que pode ser definido como uma sequência de
estágios para desenvolver ou manter o software, apresentando estruturas técnicas e
de gerenciamento para o uso de métodos e ferramentas e a inclusão de pessoas para
as tarefas do sistema.
Segundo [Jose Barreto Junior Qualidade de Software] não basta que a qualidade
exista, ela deve ser reconhecida pelo cliente, dessa forma, surgiram o que conhecemos
por certificações, as quais são emitidas utilizando como referência base algum padrão
de qualidade. Tais como:
Certificação da Qualidade
Esta seção tem por objetivo tornar familiar o tema da certificação de qualidade.
Abordaremos assuntos relacionados à certificação, como: conceito de certificação,
sistema de certificação, auto certificação, vantagens
47
consumidores que os produtos certificados possuem os atributos procurados, que
podem ser intrínsecos aos produtos.
Atributos intrínsecos devem ser entendidos como atributos que não podem ser
visualizados e percebidos externamente.
De acordo com [Spers, 2000] [apud LAZZAROTTO, 2001] uma utilidade dos
certificados é evitar ações oportunistas, que podem surgir quando a informação sobre
o produto específico é distribuída pelo próprio fabricante por parte de algumas
empresas, ou seja, impedir que estas aleguem processos ou ingredientes que não
realizam ou utilizam, mas que são explorados na comunicação junto aos consumidores
por serem de difícil comprovação. Daí surge à importância da reputação das
instituições certificadoras e regulamentadoras, que devem ser confiáveis e evitar essas
ações oportunistas.
O Sistema de Certificação
1. Normas;
2. Órgãos certificadores;
3. Organismos credenciadores.
Portanto, deve possuir um agente regulamentador (que dita às normas), que pode ser
o governo ou uma instituição internacional e um agente coordenador (órgão
certificador que coordena o processo), podendo ser uma associação privada, uma
organização não governamental, uma empresa privada ou uma empresa estatal.
48
O processo de certificação deve ser monitorado, ou seja, controlado para garantir que
os agentes certificados estejam realmente seguindo as normas impostas pelo agente
regulador. Esse monitoramento pode ser feito de três formas: pelo órgão regulador,
por terceiros ou através de um autocontrole, chamado também de auditoria.
Assim, segundo [Machado 2000], "a certificação é um sinal de qualidade fornecido por
uma instituição formal (terceira parte ou o Estado), essas organizações assumem a
responsabilidade de garantir a veracidade do que certificam, fundamentados nas suas
habilidades e conhecimentos técnicos, com apoio de instrumentos de testes e de
controle."
ISO/IEC 9126
ISO/IEC 9126 é uma norma ISO para qualidade de produto de software, ela define um
conjunto de parâmetros com o objetivo de padronizar a avaliação da qualidade de
software. Ela se enquadra no modelo de qualidade das normas da família 9000. A
norma brasileira correspondente é a NBR ISO/IEC 9126.
49
Modelo de Qualidade de Software
A norma ISO/IEC 9126, ou conjunto de normas que tratam deste assunto no âmbito
da ISO, estabelece um modelo de qualidade com os seguintes componentes:
Atributos de Qualidade
50
Figura 16 – Atributos da Qualidade
No nível mais alto temos as características de qualidade e nos quadros abaixo as suas
sub-características. Cada característica/sub-característica compõe um Atributo de
Qualidade do software.
Funcionalidade
51
Interoperabilidade que trata da maneira como o software interage com outro
(s) sistema (s) especificados;
Segurança mede a capacidade do sistema de proteger as informações do usuário
e fornecê-las apenas (e sempre) às pessoas autorizadas
Conformidade trata da padronização, políticas e normas de um projeto.
Confiabilidade
O produto se mantém no nível de desempenho nas condições estabelecidas.
Usabilidade
Note que este conceito é bastante abrangente e se aplica mesmo a programas que não
possuem uma interface para o usuário final. Por exemplo, um programa batch
executado por uma ferramenta de programação de processos também pode ser
avaliado quanto a sua usabilidade, no que diz respeito a ser facilmente compreendido,
aprendido, etc. Suas sub-características são:
52
Operacionalidade é como o produto facilita a sua operação por parte do usuário,
incluindo a maneira como ele tolera erros de operação;
Atratividade envolve características que possam atrair um potencial usuário para
o sistema, o que pode incluir desde a adequação das informações prestadas para o
usuário até os requintes visuais utilizados na sua interface gráfica;
Eficiência
Manutenibilidade
53
Portabilidade
54
Figura 17 – Modelo da Qualidade
Efetividade
Produtividade
55
Segurança
Satisfação
O que é o CMMI®?
56
Figura 19 – Número de avaliações CMMi
Histórico
Em 1980 surgiu o CMM, como um modelo feito para a Força Aérea Norte-Americana
para avaliação de risco na contratação de empresas de software. Eles desejavam algo
para ser capaz de avaliar os processos de desenvolvimento utilizados pelas empresas
que concorriam em licitações, como indicação da previsibilidade da qualidade, custos e
prazos nos projetos contratados.
57
objetivo principal era a melhoria da capacidade dos processos. Entende-se
por capacidade de um processo a habilidade com que este alcança o resultado
desejado.
O CMMI tem como origens em três outros modelos de maturidade - SW-CMM (SEI
Software CMM), EIA SECM (Electronic Industries Alliances's Systems Engineer
Capability Model) e IPD-CMM (Integrated Product Development CMM).
Sobre o CMMI
Dimensões:
58
Figura 11 – Dimensões do CMMI
59
Formas de representação
Por estágio e continua.
Basicamente são as metas específicas e genéricas que definem o que deve ser
implementado nos processos da organização para alcança certo nível de maturidade.
60
requerido.
Subpráticas;
Produtos de trabalho típicos;
Extensões;
Orientações para aplicação de prática genérica;
Títulos de metas e práticas, notas de metas e práticas, e referências a outras áreas de
processo.
NÍVEL 2 – Gerenciado
É um processo de nível de capacidade 1 que dispõem de infraestrutura adequada
para apoiar os processos;
É planejado e executado de acordo com uma política;
É monitorado, controlado e revisado;
E sua aderência em relação à descrição de processo é avaliada. Assegura que as
práticas sejam mantidas.
Os padrões, descrições de processos e os procedimentos podem ser diferentes em
cada instância ou projeto.
61
Acompanhamento de projetos: prover informações suficientes para o
gerenciamento eficaz do projeto. Caso o desempenho saia dos limites
especificados, ações corretivas devem ser tomadas.
Garantia da qualidade do processo e produto: garantir que o projeto está
seguindo o processo definido e o produto atende a qualidade esperada. E prover
a visibilidade da situação atual do projeto as partes interessadas.
Gerenciamento de requisitos: estabelecer a gestão de requisitos e seus
produtos de trabalho. E identificar inconsistências dos requisitos e dos produtos
de trabalho.
Gerenciamento de acordos com fornecedores: gerenciar aquisições de
produtos, componentes ou serviços de fornecedores.
NÍVEL 3 – Definido
É um processo de nível 2 adaptado a partir do conjunto de processos-padrão da
organização, contribui com produtos de trabalho, medidas e outras informações de
melhoria de processo para os ativos de processo da organização. Uma distinção
importante entre os níveis 2 e 3 é o escopo de padrões, descrições de processo e
procedimentos.
Os padrões, descrições de processos e os procedimentos são adaptados a partir do
conjunto de processos-padrão da organização para se ajustar as necessidades de um
projeto específico ou uma unidade organizacional (homogeneidade)
62
NÍVEL 4 – Gerenciado Quantitativamente
É um processo de nível 3, controlado por meio de técnicas estatísticas e outras
técnicas quantitativas.
Objetivos quantitativos para qualidade e para o desempenho de processo são
estabelecidos e utilizados como critérios de gestão do processo. A qualidade e o
desempenho de processo são entendidos em termos estatísticos e gerenciado ao longo
da vida do processo.
NÍVEL 5 – Em Otimização
É um processo de nível 4 melhorado com base no entendimento das causas comuns da
variação inerentes ao processo. O foco de um processo em otimização é a melhoria
contínua do desempenho de processo tanto por meio de melhorias incrementais
quanto de inovação.
63
Níveis de Capacidade
64
Níveis de Maturidade
65
processos-padrão da organização e tem características bem definidas.
66
Níveis e Áreas de Processos
MPSBr
Introdução
Atualmente o Brasil é um país cujo desenvolvimento de produtos de software está
entre os maiores do mundo. Isto traz consigo a necessidade de padrões a serem
adotados para cumprir as exigências quanto à qualidade e complexidade dos
produtos.
É impossível competir internacionalmente no desenvolvimento de software sem dar a
devida importância à qualidade pois, “assim como para outros setores, qualidade é
fator crítico de sucesso para o setor de serviços”.
Contudo, uma certificação para melhoria dos processos de software tal qual a CMMI
possui um valor por demais elevado, inviabilizando para empresas de pequeno e médio
porte sua adoção.
Para suprir essa necessidade de melhoria dos processos de software do Brasil, foi
criada uma importante alternativa através de uma parceria entre a Softex, Governo e
Universidades, o projeto MPS.Br (melhoria de processo de software brasileiro).
Quem é a SOFTEX?
A Sociedade para Promoção da Excelência do Software Brasileiro (SOFTEX) é a
entidade responsável pelo Programa SOFTEX, que têm como objetivo o apoio à
produção e comércio do software brasileiro. Criado pelo CNPq em 1993 como
Programa Softex 2000, foi reformulado juntamente com a SOFTEX, de acordo com a
67
nova política brasileira de software e as necessidades da nova economia.
A sociedade SOFTEX é uma entidade privada, com sede em Campinas(SP), sem fins
lucrativos, que promove ações de empreendedorismo, capacitação, apoio à
capitalização e ao financiamento, e apoio a geração de negócios no Brasil e no
exterior, visando aumentar a competitividade da indústria brasileira de software. Sua
missão é transformar o Brasil em um centro de excelência mundial na produção e
exportação de software. A SOFTEX coordena as ações de 31 agentes SOFTEX,
localizados em 23 cidades de 13 unidades da federação, com mais de 300 empresas
associadas.
O Projeto MPs-BR
68
Dois modelos de referência se destacam:
Como objetivos secundários, e não menos importantes, estes modelos visam apoiar
tanto as mPME - micro, pequenas e médias empresas (foco principal) quanto as
grandes organizações públicas e privadas (foco secundário) a estabelecer um caminho
economicamente viável para que alcancem os benefícios da melhoria de processos e
da utilização de boas práticas da engenharia de software e da prestação de serviços de
TI em um intervalo de tempo razoável, a um valor justo.
Com o MPS-SW foi possível estabelecer um caminho economicamente viável para que
organizações, incluindo as pequenas e médias empresas, alcancem os benefícios da
melhoria de processos e da utilização de boas práticas da engenharia de software em
um intervalo de tempo razoável. Ele trouxe para a indústria nacional ganhos
comprovados de competitividade, por isso é considerado um marco que representa a
evolução da qualidade do software desenvolvido no país.
MPS.BR em números
69
necessidades de negócio da indústria de software brasileira. A evolução do
desempenho das empresas que adotaram o MPS-SW vem sendo acompanhado através
do projeto iMPS – Resultados de Desempenho das Organizações que Adotaram o
Modelo MPS, que anual e sistematicamente realiza a coleta de dados das organizações
participantes. Até o ano de 2013, o iMPS registrou em sua base histórica o total de 923
questionários referentes a 364 organizações que participaram das coletas de dados
desde 2008.
MPS Software
70
Figura 17 – Componentes do MPS
71
O Guia de Aquisição é um documento complementar para empresas que pretendem
adquirir software. Não contém requisitos do MR-MPS, mas sim boas práticas para
aquisição de softwares ou serviços correlatos.
Ela estabeleceu uma estrutura comum para os processos de ciclo de vida de software
para ajudar as organizações a obter um melhor entendimento das atividades a serem
executadas nas operações que envolvem de alguma forma o software.
72
Norma ISO/IEC 15504
O Modelo de Referência
O Modelo de Referência MR-MPS define níveis de maturidade de uma organização, que
é uma combinação entre seus processos e sua capacidade.
A – Em Otimização;
B – Gerenciado quantitativamente;
C – Definido;
D – Largamente Definido;
E – Parcialmente Definido;
F – Gerenciado;
G – Parcialmente Gerenciado.
73
Processos
Atributo de Processo
74
Resultado Esperado do Processo
É resultado observável do sucesso do alcance do propósito do processo [ISO/IEC
12207:1995/Amd 1:2002]. Um resultado pode ser:
Capacidade do Processo
Abaixo, uma imagem contendo os níveis, seus processos e respectivos AP’s em cada
nível:
75
Figura 19 – Níveis e Processos do MPSBr
Para cada um destes níveis de maturidade citados acima, foram atribuídas áreas de
processo, com base nos níveis 2, 3,4 e 5 do CMMI em estágios. Esta divisão tem uma
graduação diferente do CMMI em estágios como objetivo de possibilitar uma
implementação mais gradual e adequada às micro, pequenas e médias empresas
brasileiras. A possibilidade de realizar avaliações considerando mais níveis permite uma
visibilidade dos resultados de melhoria do processo, na empresa e no país, com prazos
mais curtos. Para cada área de processo são considerados objetivos e práticas
específicas, de acordo com o nível de maturidade em questão.
Métodos de Avaliação
A avaliação das organizações segundo o MR mps deverá ser realizada considerando-se
a aderência às áreas de processos estabelecidas para cada nível de maturidade e a
adequação das práticas que implementam as áreas de processo. O método de
avaliação foi definido com base na ISO/IEC 15504.
O nível de implementação das práticas relacionadas a uma área de processo é avaliado
a partir de indicadores. Esses indicadores, que devem ser definidos pela empresa para
cada prática relacionada a uma área de processo, podem ser de um dos três tipos a
seguir:
76
-Indicadores Indiretos: São, em geral, documentos que indicam que uma atividade foi
realizada.
-Afirmações: São resultantes de entrevistas com a equipe dos projetos avaliados de
acordo com quatro níveis: TI (Totalmente implementada), LI (Largamente
Implementada), PI (Parcialmente Implementada), NI (Não Implementada).
A decisão final sobre o grau de implantação de um processo é da equipe de avaliação
considerando os resultados da avaliação nos projetos avaliados.
Uma empresa é considerada nível A, B, C, D, E, F ou G se todas as suas áreas,
unidades, divisões ou setores tiverem sido avaliados como naquele nível. Uma
empresa, entretanto, pode desejar ter avaliado apenas um ou alguns de seus setores,
áreas, unidades ou divisões (organização a ser avaliada). É possível que, como
resultado de uma ou mais avaliações, partes de uma empresa tenham alcançado um
determinado nível e partes da mesma um outro nível. Em qualquer caso, o documento
comprobatório da avaliação deverá explicitar o que foi objeto da avaliação (escopo da
avaliação) e o nível resultante da maturidade.
Para realização de uma avaliação devem ser submetidos todos os projetos concluídos e
todos os projetos em andamento a partir da implementação do MR mps na empresa ou
na organização que será avaliada. Durante o planejamento da avaliação, a instituição
avaliadora deve selecionar um conjunto suficiente de projetos que garanta
representatividade da organização a ser avaliada. Este número, entretanto, não deve
ser inferior a dois projetos concluídos e dois projetos em andamento.
Algumas empresas podem desenvolver um único produto. Isto, entretanto não é
impedimento para avaliação, pois projetos são entendidos em sentido amplo, incluindo
projetos de manutenção no produto. O resultado de uma avaliação tem validade de
dois anos.
MPS Serviços
O mercado brasileiro é composto por um forte setor prestador de serviços de TI e,
assim como para outros setores, qualidade é fator crítico de sucesso para esse setor.
Para que se tenha uma indústria competitiva, nacional e internacionalmente, é
essencial que os provedores de serviços coloquem a eficiência e a eficácia dos seus
processos em foco nas empresas, visando à oferta de serviços conforme padrões
internacionais de qualidade.
Ele é baseado na Norma Internacional ISO/IEC 20000, nas práticas ITIL e no modelo
CMMI-SVC e serve para melhorar tanto os processos de serviços quanto o desempenho
nos negócios das organizações públicas e privadas de qualquer porte.
77
Tipos de Teste
Cada tipo de teste tem foco em um objetivo particular, que pode ser o teste de uma
funcionalidade, a ser realizada pelo software; uma característica da qualidade não
funcional, tal como a confiabilidade ou usabilidade, a estrutura ou arquitetura do
software ou sistema; ou mudanças relacionadas, ex.: confirmar que os defeitos foram
solucionados (teste de confirmação) e procurar por mudanças inesperadas (teste de
regressão). Modelos do software podem ser elaborados e/ou usados no teste estrutural
ou funcional.
78
que não foram contemplados para, desta forma, aumentar a cobertura. Em todos os
níveis de teste, mas especialmente no teste de componente e teste de integração de
componentes, ferramentas podem ser usadas para medir a cobertura do código dos
elementos assim como as declarações ou decisões. Teste estrutural deve ser baseado
na arquitetura do sistema, como uma hierarquia de chamadas. Teste de estrutura
também pode ser aplicado no sistema, integração de sistema ou nível de teste de
aceite (por exemplo, para modelos de negócios ou estrutura de menu).
79
feitos sobre a documentação do software, como por exemplo, em modelos, requisitos,
código, classes e módulos.
Mas ainda existem técnicas dinâmicas de teste Estrutural que podem ser executadas
para revelar a lógica interna e bugs omissos.
Cada tipo de teste traz consigo diversas técnicas, sendo elas o processo que
asseguram o funcionamento adequado de alguns aspectos do sistema.
80
É realizado seguindo um caso de teste previamente elaborado com todos os passos
que o testador deve seguir para testar a funcionalidade do sistema como um todo.
Esses casos devem ser elaborados, levantando todas as possibilidades de
preenchimento dos campos, bem como todas as opções de acessos e saídas de dados.
Devem prever todos os tipos de telas do software, como por exemplo: tela de filtro,
lista, inclusão e alteração.
Esse tipo de teste baseia-se em técnicas de caixa preta, ou seja, é realizado a fim de
verificar o aplicativo e seus processos internos interagindo com o aplicativo através da
Interface Gráfica do Usuário (GUI) e analisar a saída ou os resultados.
Esse tipo de teste pode ser executado validando as seguintes situações: execute os
recursos e os fluxos ou as funções de cada um dos cenários de caso de uso, utilizando
dados válidos e inválidos para verificar se:
Regressão
O teste de regressão é um teste seletivo de um software que foi modificado ou de
iterações anteriores. Tem como propósito garantir que qualquer falha tenha sido
reparada e que nenhuma operação que funcionava anteriormente tenha falhado após
os reparos, ou seja, garante que as novas características adicionadas não criaram
problemas com as versões anteriores ou com outros sistemas.
Os testes de regressão devem ser usados quando existe um alto risco de que novas
mudanças podem afetar áreas não alteradas do sistema. No processo de
desenvolvimento, os testes devem ser aplicados após um pré-determinado número de
alterações realizadas no sistema. No processo de manutenção, os testes de regressão
devem ser aplicados caso as implicações potenciais nas partes não alteradas do
sistema forem muito altas.
81
Como esses testes são vitais para garantir a qualidade final dos sistemas, é altamente
justificável a automação dos mesmos.
Uma forma eficaz para a realização desses testes é realizar um brainstorm com
pessoas de TI, da área de negócio (usuários) e auditores, procurando identificar o que
pode dar errado com o sistema. O resultado deve ser organizado por função do
sistema, de forma que conjuntos de transações de teste possam ser criados.
82
Os testes de suporte manual podem ocorrer sem o apoio do pessoal de sistemas,
bastando que esses treinem o pessoal de apoio manual e forneçam os procedimentos
a serem executados. Os resultados, porém, devem ser avaliados pelo pessoal de
sistemas para verificar se os procedimentos foram executados adequadamente.
fornecer ao pessoal que entra com os dados, o tipo de informação que eles
normalmente recebem dos seus clientes (ou usuários) e então ter essas
transformadas para permitir a entrada no sistema automatizado;
fornecer relatórios do sistema baseados em condições típicas aos usuários e
solicitar a eles a tomada de ações em função das informações neles contidas;
fornecer aos usuários uma série de condições e então solicitar que eles
respondam quais são adequadas.
Esses testes não devem ser deixados totalmente para os últimos estágios do ciclo de
desenvolvimento de software, pode-se dizer que o melhor momento para executar
esses tipos de testes é durante a fase dos testes de aceitação, para que o pessoal que
estará envolvido na operação do sistema não perca o esforço e o conhecimento
adquirido pela demora entre os testes e a utilização prática do sistema.
Testes de Interconexão
Os Testes de Interconexão envolvem a operação de múltiplos softwares, podem ser
custosos e demorados. Consiste em passar dados previstos entre diversos softwares
envolvidos e validar se a transferência foi adequadamente realizada.
Devem ser conduzidos sempre que existir uma mudança em parâmetros entre os
softwares envolvidos nos testes.
83
Testes de Controle
Os testes de controle, embora presentes em outras técnicas de testes, são realizados
para assegurar o funcionamento dos mecanismos que supervisionam o funcionamento
dos sistemas. Incluem a validação de dados, integridade de arquivos, trilhas de
auditoria, backup e recuperação, documentação e outros aspectos do sistema
relacionados à integridade.
Pode ser considerado um sistema dentro de um sistema. Controles são criados para
reduzir riscos e para isso, os riscos devem ser identificados. Os testes de controle
devem criar situações de risco.
Testes Paralelos
Testes paralelos são usados para determinar que os resultados de um novo sistema
sejam consistentes com o processamento do sistema antigo ou da antiga versão do
sistema.
Esses testes requerem que os mesmos dados de entrada sejam utilizados em versões
diferentes da aplicação, podendo ser feitos com o sistema todo ou com apenas
algumas partes.
84
corretamente, mas garantem que sua arquitetura, tecnologia e componentes estão
adequados e funcionam de forma satisfatória. As técnicas para esse tipo de teste não
objetivam garantir que o sistema é funcionalmente correto, mas sim se ele é
estruturalmente robusto. Dentro dessa técnica se encaixam os seguintes testes:
A ideia é avaliar como todo o conjunto da solução lida com variações sucessivas de
processamento.
Há vários métodos que podem ser usados para executar esse teste, incluindo:
Para obter essa carga, geralmente são usadas ferramentas de Emulação de Terminal
Remoto.
Essa técnica também pode ser usada para que a rede fique repleta de “tráfego”.
85
São conduzidos para avaliar a conformidade do sistema ou componente com requisitos
de performance especificados em Tempo de Execução e Análise de Recursos,
envolvendo monitoramento da execução para estabelecer possíveis áreas ineficientes.
Quanto mais cedo a técnica for aplicada, maior será a garantia de que a aplicação
atenderá os critérios de desempenho. Por isso, devem ser empregados no início do
processo de desenvolvimento, pois se essa informação só for conhecida um pouco
antes ou depois de o sistema se tornar operacional, poderá ser muito tarde para
realizar as modificações necessárias ou muito custosas. Dessa forma, é melhor que se
possa realizar esses testes enquanto ainda se pode modificar as estruturas do sistema,
como por exemplo, otimizar as consultas em banco (SQL).
Recuperação
A recuperação é a capacidade de reiniciar operações após a integridade de uma
aplicação. Geralmente, para avaliar a recuperação de um sistema é necessário voltar
86
ao ponto do processamento, no qual a integridade do sistema está garantida e então
se reprocesse as transações até o ponto de falha.
Esse teste é responsável por garantir a continuidade das operações, após uma falha ou
um desastre, o teste de recuperação não só verifica o processo de recuperação como
também a eficácia das partes componentes do processo.
O desastre simulado serve para avaliar um aspecto da recuperação, com base num
plano de recuperação previamente elaborado.
Alguns exemplos
Induzir um dos programas do sistema a falhar, inserindo uma instrução especial para
criar um código de transação que, quando identificado, causaria o encerramento
anormal do programa.
87
A recuperação poderia ser conduzida a partir de um ponto conhecido, no qual se
garante a integridade dos dados. O exercício seria recuperar esses dados a partir de
uma posição mais adiante e garantir que o backup dos dados se adéque ao processo
de recuperação. Completada a recuperação, os arquivos devem voltar ao ponto em
que os dados eram conhecidos para que possam ser comparados com os arquivos
recriados durante o processo de recuperação.
Essa operação deve ser realizada sempre que a continuidade da operação for essencial
para as operações de área de negócio ou da organização.
Operação
Os testes de operação são realizados para validar, antes da entrada em produção real,
se os procedimentos da produção e os operadores podem executar adequadamente a
aplicação. Deverá ser executado usando os operadores, os procedimentos e a
documentação da área de operações.
Em geral, a execução dos testes operacionais pode ser realizada em conjunto com
outros testes. Entretanto, se os testes de operação forem incluídos, os operadores não
devem ser avisados, nem obter ajuda externa durante o processo de teste: os testes
precisam ser executados como se fizessem parte da operação normal do computador,
de modo que seja avaliada a efetividade da operação em processar a aplicação num
ambiente real.
Alguns exemplos:
88
determinar se as instruções para a operação foram preparadas e documentadas
de acordo com os procedimentos da produção e se os operadores foram
treinados para situações anormais;
testar se os procedimentos de schedulling e outras características requeridas
pelo sistema operacional realizam uma tarefa específica;
verificar se a rotulagem de arquivos e os procedimentos de proteção funcionam
adequadamente.
Teste de Conformidade
Os testes de conformidade validam se a aplicação foi desenvolvida de acordo com os
padrões, procedimentos e guias de TI. As metodologias são usadas para aumentar a
probabilidade de sucesso, permitir a transferência de pessoal técnico com custo
mínimo e aumentar a manutenibilidade do sistema de aplicação. Os tipos de teste
variam dependendo do ciclo de desenvolvimento. Entretanto, pode ser mais importante
executar testes de conformidade durante a fase de requisitos do que nos estágios
finais do ciclo de vida, pois é muito mais difícil corrigir aplicações quando os requisitos
não estão adequadamente documentados.
Esses testes são realizados para garantir a conformidade com as metodologias, além
de:
Testes de Segurança
Os testes de segurança garantem a confidencialidade das informações e a proteção
dos dados contra o acesso indevido de terceiros. A quantidade de segurança fornecida
depende dos riscos associados. A garantia de confidencialidade das informações é
desenhada para proteger os recursos da organização. Algumas informações, se
reveladas ou adulteradas, podem comprometer o negócio ou aumentar a vantagem
competitiva dos concorrentes.
89
determinar se foi dada a atenção adequada à identificação de riscos de
segurança;
determinar se foi preparada uma definição realista das regras de acesso ao
sistema e se essas foram implementadas de acordo com as definições;
determinar se existe pessoal suficientemente habilitado para executar o teste
de segurança adequado;
conduzir testes racionais para garantir que as medidas de segurança tenham
sido corretamente implementadas;
detectar as falhas de segurança que podem comprometer o sigilo e fidelidade
das informações, bem como provocar perdas de dados ou interrupções de
processamento.
Em segundo lugar, o controle de acesso pode ser dividido por possíveis tipos de
invasores, tais como: empregados, terceiros, público etc., ou por categorias de
empregados. O tipo de teste a ser conduzido dependerá da condição a ser testada,
que poderá ser:
90
Testes de manutenção:
Uma vez desenvolvido, um sistema pode ficar ativo por anos ou até mesmo décadas.
Durante este tempo o sistema e seu ambiente podem ser corrigidos, modificados ou
completados. Teste de manutenção é realizado no mesmo sistema operacional e é
iniciado por modificações, migrações ou retirada de software ou sistema.
Teste de manutenção por migração (ex.: de uma plataforma a outra) pode incluir
testes operacionais do novo ambiente tanto quanto a mudança de software.
Além de testar o que foi alterado, o teste de manutenção inclui teste de regressão
massivo para as partes do sistema que não foram testadas. O escopo do teste de
manutenção está relacionado ao risco da mudança, o tamanho do sistema existente e
o tamanho da mudança. Dependendo da mudança, o teste de manutenção pode ser
feito em todos ou alguns níveis, e em todos ou alguns tipos de testes.
91
Estratégias de teste de software
Para que os testes sejam mais eficientes e tenham uma maior probabilidade de
encontrar falhas, devem ser usadas técnicas de teste. Existem as estratégias de teste
caixa preta e as técnicas caixa branca.
Caixa preta:
Encara um programa/componente como uma “caixa preta”
Caixa branca:
É baseado no código fonte do sistema.
Caixa preta:
Exemplo:
Controle da TV: você seleciona o canal e testa para ver se está sintonizado no canal
que você selecionou, sem se importar como é o funcionamento interno para chegar até
a sintonização.
92
Análise de Valor Limite
Causa Efeito
Fluxo de Dados
Figura 22 – Técnicas
Particionamento de equivalência
Reduz um conjunto grande de entradas (infinito) a um conjunto finito: pequeno, mas
eficiente. Divide o domínio de entrada de um software (ou programa) em classes de
dados a partir das quais os casos de teste podem ser derivados.
Se uma situação funciona como o esperado, então podemos assumir que a outra
também funciona. Devem conter entradas válidas e invalidas
93
Figura 23 – Particionamento de Equivalência
94
Figura 26 – Exemplo de Particionamento de Equivalência com limites
Essa ideia está associada à forma como a programação é feita: Por exemplo, no caso
acima, onde é feito o cálculo do valor do imposto, entenda que o programador deve
ter feito algo similar a isto:
Then imposto=5%
Then imposto=5%
Exemplos:
95
Figura 28 – Exemplo de Particionamento de com limites e resultados
Veremos um exemplo:
96
Causa Efeito
Frete
Valor da compra Quant. Produtos Grátis Frete Cobrado
=< 50,00 -- X
Causa /Efeito
Fluxo de Dados
Recomenda-se utilizar a técnica principalmente quando a empresa trabalha com Casos
de Uso, de forma a facilitar a extração dos mesmos:
Após cada caminho possível através do caso de uso mostrado no diagrama acima, é
possível identificar os diversos cenários de caso de uso. Começando pelo fluxo básico e
depois combinando esse fluxo com os fluxos alternativos, é possível identificar os
seguintes cenários de caso de uso:
97
Agora vamos verificar um Caso de Uso de retirada de dinheiro para poder obter os
Casos de Teste.
98
Fluxo Básico Esse Caso de Uso começa com o caixa eletrônico no Estado Pronto.
99
Fluxo Alternativo 1 - Cartão Inválido. No Passo 2 do Fluxo Básico - Verificar o Cartão Bancário, se o
cartão não for válido, será ejetado com uma mensagem
apropriada.
Fluxo Alternativo 2 - Caixa Eletrônico sem No Passo 5 do Fluxo Básico - Opções do Caixa Eletrônico, se o
Dinheiro caixa eletrônico estiver sem dinheiro, a opção "Retirada em
Dinheiro" não estará disponível.
Fluxo Alternativo 3 - Fundos insuficientes no No Passo 6 do Fluxo Básico - Digitar o Valor, se o caixa eletrônico
caixa eletrônico não contiver fundos suficientes para fornecer o valor solicitado, o
sistema exibirá uma mensagem apropriada e retornará ao Passo 6
do fluxo básico - Digitar o Valor.
Fluxo Alternativo 4 - Senha Incorreta No Passo 4 do Fluxo Básico - Verificar a Conta e a Senha, o cliente
tem três chances de digitar a senha correta.
Fluxo Alternativo 7 - Atingido o valor máximo No Passo 6 do Fluxo Básico - Autorização, o Sistema bancário
diário para retirada exibe um código indicando que, com essa solicitação de retirada,
o cliente terá excedido o valor máximo permitido em um período
de 24 horas; o caixa eletrônico exibe a mensagem apropriada e
retorna ao Passo 6 do Fluxo Básico - Digitar o Valor.
Fluxo Alternativo x - Erro de Log Se no Passo 10 do Fluxo Básico - Recibo, não for possível atualizar
o log, o caixa eletrônico entrará no "modo de segurança" em que
todas as funções serão suspensas. Um alarme apropriado será
enviado ao Sistema Bancário para indicar que o caixa eletrônico
suspendeu a operação.
Fluxo Alternativo y - Encerramento O cliente pode, a qualquer momento, decidir terminar a transação
(encerrar). A transação é interrompida e o cartão é ejetado.
Fluxo Alternativo z - "Paralisação" O caixa eletrônico contém vários sensores que monitoram funções
distintas, como alimentação, pressão exercida nas várias portas e
passagens, e detectores de movimento. Se a qualquer momento
um sensor for ativado, um sinal de alarme será enviado à Polícia,
e o caixa eletrônico entrará no "modo de segurança" em que todas
as funções serão suspensas até que sejam executadas as ações de
reinício/reinicialização apropriadas.
Na primeira iteração, de acordo com o plano de iteração, é necessário verificar se o caso de uso
Retirada em Dinheiro foi implementado corretamente. O caso de uso não foi totalmente implementado.
Fluxo Básico - Retirada de um valor predefinido (R$ 10, R$ 20, R$ 50, R$ 100)
Fluxo Alternativo 2 - Caixa Eletrônico sem Dinheiro
Fluxo Alternativo 3 - Fundos insuficientes no caixa eletrônico
Fluxo Alternativo 4 - Senha Incorreta
Fluxo Alternativo 5 - Nenhuma Conta/Tipo de Conta Incorreto
100
Fluxo Alternativo 6 - Fundos Insuficientes na Conta
É possível obter os cenários a seguir a partir desse caso de uso:
Para cada um desses sete cenários, é necessário identificar casos de teste. É possível
identificar e gerenciar os casos de teste usando matrizes ou tabelas de decisão. Veja a
seguir um formato comum, em que cada linha representa um caso de teste individual,
e as colunas identificam informações de caso de teste. Nesse exemplo, para cada caso
de teste, há um ID, uma Condição (ou descrição) e todos os elementos que participam
do caso de teste (como entrada ou já no banco de dados) e o resultado esperado.
101
Na matriz acima, os seis casos de teste executam os quatro cenários. Para o Fluxo
Básico, o caso de teste CW1 acima é denominado caso de teste positivo. Ele executa,
sem desvios, o caminho do Fluxo Básico através do caso de uso. O teste abrangente
do Fluxo Básico deve incluir casos de teste negativos para garantir que esse fluxo só
seja utilizado quando as condições estiverem corretas. Os casos de teste negativos são
representados pelos casos de teste CW2 a 6 (a célula sombreada indica a condição
necessária para executar os fluxos alternativos). Embora esses casos de teste sejam
negativos para o Fluxo Básico, são positivos para os Fluxos alternativos 2 a 4, e existe
pelo menos um caso de teste negativo em cada um desses Fluxos Alternativos (CW1 -
o Fluxo Básico).
Observe que, na matriz acima, nenhum valor real foi digitado para as condições
(dados). A vantagem de criar a matriz do caso de teste dessa maneira é a facilidade de
ver as condições que estão sendo testadas. Também é muito fácil determinar se casos
de teste suficientes foram identificados, já que você precisa apenas observar os Vs e Is
(ou como feito aqui - as células sombreadas). Na tabela acima, há diversas condições
102
para as quais não há células sombreadas. Portanto, estão faltando casos de teste
como, por exemplo, para o Cenário 6 - Nenhuma Conta ou Tipo de Conta Incorreto e
para o Cenário 7 - Saldo Insuficiente em Conta.
Depois que todos os casos de teste forem identificados, será necessário revisá-los e
validá-los para garantir a exatidão e adequação, bem como para eliminar casos de
teste redundantes ou equivalentes. Após a aprovação dos casos de teste, será possível
identificar os valores reais dos dados (na matriz de implementação do caso de teste) e
criar os dados de teste
Os casos de teste acima são apenas alguns dos necessários para verificar o Caso de
Uso de Retirada em Dinheiro, referente a essa iteração. Outros casos de teste
necessários contêm:
Cartões inválidos (informa-se que o cartão foi perdido, roubado, não é de um banco
aceito, tem uma tarja danificada etc.)
Incapacidade de ler um cartão (o leitor de cartões está obstruído, fora de linha ou
com defeito)
A conta está fechada, paralisada ou de outra maneira indisponível
O valor no caixa eletrônico é insuficiente ou incapaz de compor o valor solicitado
(diferente do CW3, visto que uma denominação está fora, mas não todas)
Incapaz de entrar em contato com o sistema bancário para aprovação
A rede do banco está fora de linha ou há uma falha de energia durante a transação
103
Ao identificar os casos de teste funcionais, verifique se:
Pair Wise
Uma abordagem científica e metodológica é a utilização da menor quantidade de
combinações de variáveis dos cenários de testes que levem a uma cobertura eficaz dos
testes. A teoria “Pairwise Testing” faz exatamente isso agrupando as variáveis dos
testes em pares.
Para 3 variáveis, talvez o impacto não seja tão relevante assim, mas se considerarmos
que uma das grandes vantagens é que o crescimento da quantidade de cenários passa
a ser logarítmico ao invés de exponencial, quanto maior a quantidade de variáveis,
maior o impacto da diminuição de cenários.
104
Técnicas de Teste de Caixa Branca
Nos testes caixa-branca, o código da aplicação deve ser analisado, revisado em busca
de falhas.
Algumas técnicas de teste caixa branca são: revisão formal (peer review, inspeção e,
walktrough), teste de caminho básico.
Revisão formal
É uma revisão do código fonte sem executá-lo. Os elementos da revisão formal são:
Seguir as regras. Antes de iniciar a revisão, devem ser definidas regras como, por
exemplo, quantos linhas de código serão revisados, quanto tempo durará a revisão,
etc. Estas regras devem ser seguidas para que cada participante saiba qual é o seu
papel e o que esperar da revisão
Preparação. Cada participante deve se preparar para a revisão. Ele deve saber com
antecedência quais serão suas tarefas e responsabilidades. Muitos dos problemas são
encontrados durante a preparação.
105
Inspeção: é a mais formal das revisões. O apresentador não é o desenvolvedor do
código. Isto o obriga a estudar e entender o código. Os inspetores devem avaliar o
código sob as diferentes visões, tais como usuário e do suporte. Um dos inspetores
deve avaliar o código de trás para a frente. Deve existir um moderador e um redator.
Depois de encontrados os problemas, o redator faz um relatório, o programador
corrige as falhas e o moderador verifica se elas foram corrigidas.
Caminhos:
Caminho 1: 1-11
Caminho 2: 1-2-3-4-5-10-1-11
106
Caminho 3: 1-2-3-6-8-9-10-1-11
Caminho 4: 1-2-3-6-7-9-10-1-11
Ambientes de Teste
Definição:
O ambiente de teste já deve ser previsto no Plano de Teste. O mesmo deve ser o mais
similar possível ao ambiente que o usuário utilizará para o software em questão, sendo
considerado assim como uma das fases mais difíceis, tendo como responsável o
arquiteto de teste.
107
A preparação do ambiente deve ser discutida o quanto antes, suas necessidades
básicas (equipamentos, softwares, browser em aplicações web etc.) devem ser
identificadas no momento inicial do projeto. Com o andamento do projeto, este
ambiente ganha detalhamento e começa a ser implementado. Mais tarde, geralmente
na fase de Implementação do Teste, a Massa de Teste será criada e o ambiente
previamente estabelecido será utilizado para executar os cenários de teste elaborados.
108
Uso de ambientes virtuais
Na realidade atual, a maioria das empresas não prevê orçamento para preparação dos
ambientes de testes na contratação de novos projetos de software.
Uma solução que vem ganhando espaço, por ser mais econômica, é a criação de
ambientes virtuais (‘máquinas virtuais’).
109
Bibliografia
RAPPS, S., WEYUKER, E.J., “Data Flow analysis techniques for test data
selection”, In: International Conference on Software Engineering, p. 272-278,
Tokio, Sep. 1982.
110
SPERS, E.E. “Qualidade e Segurança em Alimentos”. In: ZYLBERSTAJN., ET
AL.”Economia e gestão dos negócios agroalimentares”, Pioneira, São Paulo,
2002.
http://www.alats.org.br
http://www.bstqb.org.br
http://www.devmedia.com.br/
https://www.sei.cmu.edu/cmmi/
http://www.tecmundo.com.br/
http://www.softex.br/mpsbr/
http://www.softex.br/mpsbr/mps/mps-br-em-numeros/
http://www.wthreex.com/rup/portugues/process/modguide/md_tstcs.htm
https://guimaraesdani.wordpress.com/tecnicas-de-teste-parte-ii/
https://viniciussabadoti.wordpress.com
http://blog.prasabermais.com/2010/02/15/histrico-da-evoluo-das-ferramentas-
para-testes-e-qualidade-de-software/
111