Alexandre Bartie-Garantia de Qualidade de Software PDF
Alexandre Bartie-Garantia de Qualidade de Software PDF
Alexandre Bartie-Garantia de Qualidade de Software PDF
Editoração Eletrônica
RioTexto
Copidesque
Cláudia Gomes de Amorim
Revisão Gráfica
Andréa Campos Bivar
Projeto Gráfico
Elsevier Editora Ltda.
Conhecimento sem Fronteiras
Rua Sete de Setembro, 111 – 16º andar
20050-006 – Centro – Rio de Janeiro – RJ – Brasil
Nota: Muito zelo e técnica foram empregados na edição desta obra. No entanto, podem ocorrer erros de digitação, im-
pressão ou dúvida conceitual. Em qualquer das hipóteses, solicitamos a comunicação ao nosso Serviço de Atendimento
ao Cliente, para que possamos esclarecer ou encaminhar a questão.
Nem a editora nem o autor assumem qualquer responsabilidade por eventuais danos ou perdas a pessoas ou
bens, originados do uso desta publicação.
CIP-Brasil. Catalogação-na-fonte.
Sindicato Nacional dos Editores de Livros, RJ
B295p
Bartié, Alexandre
Garantia da qualidade de software : adquirindo maturidade
organizacional / Alexandre Bartié. – Rio de Janeiro :
Elsevier, 2002 – 13a Reimpressão.
ISBN 85-352-1124-1
mais uma nobre iniciativa nesse sentido, provando que é possível alcançar o
sucesso nessa área. Este é, além de uma coletânea das melhores práticas da
Área de Qualidade de Software apresentadas de forma estruturada e de fácil
compreensão, um guia para sua implementação que aborda com amplitude
diferentes aspectos que permeiam o assunto, como ferramentas de produti-
vidade e gerenciamento de ambientes, tornando-se, dessa forma, leitura
obrigatória para o profissional de TI. É uma mescla entre a visão acadêmica e
a realidade empresarial, demonstrando a viabilidade e a aplicação dessas
práticas no dia-a-dia da organização. Sabemos que o território a percorrer é
inóspito, porém não tão desconhecido como no passado. O mapa para se
atingir o sucesso está diante de você.
Introdução à
Qualidade de Software
Processo de Garantia de
Qualidade de Software
Garantindo a
Qualidade do Processo
Garantindo a Qualidade
do Produto
Gerenciamento
do Testware
Estruturas
da Documentação
Métricas
de Qualidade
do Software
Aplicações Reais
A Busca pela
Qualidade
de ganhar eficiência e controle. Tudo isso pode ser observado através de diver-
sos indicadores econômicos, como volume de negócios feitos pela indústria
de software e hardware, proporção de horas de profissionais diretamente liga-
dos à tecnologia por total de horas de profissionais, entre outros.
Nesse cenário todas as variáveis envolvidas no processo de desenvolvi-
mento de software têm um nível crescente de complexidade. Com isso, os
riscos de mau funcionamento aumentam proporcionalmente à complexida-
de desse ambiente, tornando-se mais difícil produzir softwares com um “ní-
vel de qualidade” desejado.
Tabela 1.1
Evolução do processo de qualidade e de testes de software
Adquirindo Maturidade
Organizacional
2.2.1. CMM-Nível 2
No nível de maturidade definido como Repetitível, as políticas de gerencia-
mento do software e os procedimentos detalhados para sua implementação
estão estabilizados. O planejamento e o gerenciamento dos novos projetos
são baseados na experiência adquirida em projetos similares anteriormente
executados. Um dos objetivos a serem alcançados no CMM-Nível 2 é tornar
corporativos todos os processos de gerenciamento de software, o que permi-
tirá à organização repetir sistematicamente as melhores práticas internas es-
tabelecidas pelas várias experiências adquiridas em projetos anteriores. Um
efetivo processo de gerenciamento de software deve ser praticado, docu-
mentado, garantido, treinado, medido e constantemente melhorado.
Adquirindo Maturidade Organizacional
Tabela 2.1
Distribuição das áreas-chave pelos níveis de maturidade
Gerenciamento de requisitos
Planejamento de projetos de software
Supervisão e rastreamento do projeto de software
Gerenciamento de subcontratação de software
Garantia da qualidade de software
Gerenciamento de configuração de software
2.2.2. CMM-Nível 3
No nível de maturidade classificado como Definido, os diversos processos
padronizados de desenvolvimento de software estão adequadamente docu-
mentados. Os processos de gerenciamento do software estão conveniente-
mente integrados aos processos de engenharia de software, tornando o mo-
delo de processos único e integrado às diversas áreas organizacionais. Os
processos estabelecidos em organizações CMM–Nível 3 são usados e ajusta-
dos para auxiliar os gerentes e profissionais de software a ganharem mais
produtividade.
A organização busca as melhores práticas de engenharia de software
quando padronizam seus processos de software. Há um grupo responsável
por estabelecer e documentar as atividades do processo de software denomi-
nado SEPG (Software Engineering Process Group). Um amplo programa de
treinamento corporativo deverá ser implementado para desenvolver geren-
Adquirindo Maturidade Organizacional
Esforço de
Correção
60% 55%
50%
40% 35%
30%
20%
20%
10%
10% 5%
1 2 3 4 5 Nível de
Maturidade
Esforço
Gerencial
25%
25%
20%
15%
15%
10%
10%
Esforço 5%
5% ZERO
1 2 3 4 5 Nível de
Maturidade
Definindo Qualidade
de Software
apenas está no papel, não sendo respeitado pelas diversas equipes de desen-
volvimento. Portanto, se sua organização deseja produzir softwares com
qualidade, uma das primeiras providências a serem tomadas é estabelecer
um processo mínimo de desenvolvimento. Não poderemos garantir a quali-
dade de algo que não existe.
Teste é o processo
Teste é o processo Teste é o processo
de provar que
de demonstrar que de demonstrar que
determinadas coisas
os defeitos não algo funciona
fazem o que
estão presentes. corretamente.
deveriam fazer.
Todos enxergam os testes como uma forma de provar que tudo está bem
e funcionando conforme o estabelecido. Todas as definições difundidas so-
bre testes dão uma dimensão positiva sobre o problema, ou seja, o entendi-
mento sobre testes é sempre colocado sobre o prisma de avaliar se tudo está
funcionando adequadamente. O fato é que é mais fácil provar que “algo fun-
ciona” do que provar que “algo não funciona”, o que significa que teremos
um menor esforço em provar o funcionamento de um software do que o con-
trário. E é exatamente isso que sentimos quando colocamos uma equipe in-
dependente de qualidade para avaliar determinado projeto de software –
como essa equipe não está envolvida emocionalmente nem politicamente
com o projeto, terá um comportamento muito mais objetivo e direto, indo
exatamente nos pontos que inicialmente o projeto deveria atender e por mo-
tivos desconhecidos foram abandonados ou não atendidos corretamente.
Definindo Qualidade de Software
Processo de Garantia da
Qualidade do Software
Esforço
para Obter
Qualidade
Tempo
Análise e Modelagem
Requisitos
27%
56%
Implementação
7%
Outros
10%
Figura 3.8 Incidência de defeitos nas etapas do desenvolvimento
Definindo Qualidade de Software
Tempo
Refugos
Retrabalhos
Ações corretivas
Atrasos nos cronogramas
Perdas financeiras e operacionais
Perdas de oportunidades
Custo do
Projeto
Custo da Custo do
Qualidade Desenvolvimento
…
Custo da Custo da
Conformidade Não-conformidade
- Re-Revisões
- Retestes
- Correção
Custo da Custo da º Código
Detecção de Defeitos Prevenção de Defeitos
º Documentação
- Revisões - Metodologias - Reestruturação
º Problema - Treinamento - Redistribuição da versão
º Requisitos - Ferramentas - Atrasos nos Cronogramas
- Políticas - Falhas da Produção
º Modelagem
- Procedimentos Existe uma co-relação entre
º Planos de Testes
- Planejamento os custos da não-conformidade
º Scripts de Testes - Análises com os investimentos em
- Inspeção de Código - Métricas prevenção de defeitos. Quanto
- Testes (primeira execução) - Relatório de Qualidade maiores esses investimentos, menor
- Auditorias - Projetos de Inovação a incidência das não-conformidades.
10.000
1.000
100
10
1
Completo
CUSTO Parcial
DA
QUALIDADE
Produto Acabado
Auditoria
EFETIVIDADE NO PROCESSO DE
IDENTIFICAÇÃO DE DEFEITOS
Entendendo o Processo
de Qualidade de Software
Modelo
de Disponibilização
Negócios de Solução
1 8
Verificação Validação
de do
Negócios Aceite
Especificação Sistema
de Especificado ou
Requisitos Modificado
2 Clientes 7
Verificação Patrocinadores Validação
de Usuários do
Requisitos Sistema
1 2 3 4
5 6 7 8
Qualidade de Software
Incremental
Tempo
Etapas do Processo Primeiro Mês Segundo Mês Terceiro Mês Quarto Mês
1a 2a 3a 4a 1a 2a 3a 4a 1a 2a 3a 4a 1a 2a 3a 4a
semana semana semana semana semana semana semana semana semana semana semana semana semana semana semana semana
Modelo de Negócios
Requisitos de Software
Análise e Modelagem
Implementação do Software
Testes de Software
Disponibilização do Software
Qualidade de Software Incremental
Análise
Modelo de Implemen- Disponibili- Evolução
Requisitos e Testes
Negócios Design tação zação I
E
v
o Análise
Modelo de Implemen- Disponibili- Evolução
Requisitos e Testes
l Negócios tação zação II
Design
u
ç
ã
Análise
o Modelo de Implemen- Disponibili- Evolução
Requisitos e Testes
Negócios Design tação zação III
Análise
Modelo de Implemen- Disponibili- Produto
Requisitos e Testes
Negócios Design tação zação Final
Tempo
Reaproveitamentos dos
Testes em Novas Funcionalidades
testes em cada nova
Testes em Funcionalidades Anteriores iteração
Um Novo Ciclo de
Qualidade em cada nova Tempo
Iteração
Tabela 5.2
Critério de finalização para especificação de requisitos funcionais
Tabela 5.3
Critério de finalização da inspeção de código
Inspeção de Código
Padrões de Nomenclaturas
Tabela 5.4
Critério de finalização dos testes de validação
– Cobertura dos requisitos funcionais de alta 100% 100% 100% ... 100%
criticidade.
– Cobertura dos requisitos funcionais. – 40% 50% ... 70%
– Cobertura dos requisitos de segurança. 50% 70% 80% ... 100%
– Cobertura dos requisitos de usabilidade. – 50% 75% ... 100%
Validação das Integrações #1 #2 #3 ... #N
– Cobertura dos requisitos funcionais de alta 100% 100% 100% ... 100%
criticidade.
– Cobertura dos requisitos funcionais de média 60% 70% 90% ... 100%
criticidade.
– Cobertura mínima de requisitos funcionais. 50% 60% 80% ... 100%
Qualidade de Software Incremental
Tabela 5.4
Critério de finalização dos testes de validação (continuação)
– Cobertura dos requisitos não funcionais de alta 100% 100% 100% ... 100%
criticidade.
– Cobertura dos requisitos de performance. 50% 70% 85% ... 100%
– Cobertura dos requisitos de configuração. 50% 50% 50% ... 100%
– Cobertura dos requisitos de versionamento. 50% 70% 80% ... 100%
– Cobertura dos requisitos de instalação. – – – ... 100%
Validação do Aceite Formal #1 #2 #3 ... #N
– Executar 100% dos requisitos de alta criticidade. 100% 100% 100% ... 100%
– Executar 20% dos requisitos funcionais. – 20% – ... 20%
– Executar 20% dos requisitos de segurança. 20% 20% 20% ... 20%
– Executar 100% dos requisitos de instalação. – – – ... 100%
CAPÍTULO 6
Tempo
Foco do
Projeto
Pressão Pressão
Benefícios de um Processo
de Qualidade de Software
Processos Deficientes
Informalidade nas Decisões
Ferramentas Inadequadas
Complexidade do Negócio Desorganização
Pouca Comunicação
Complexidade Tecnológica
segue reverter o quadro caótico. Trata-se de uma equipe que apesar de aumen-
tar o número de profissionais dedicados ao projeto, não conseguiu aumentar
sua produtividade. Parece que esse cenário não é tão incomum assim.
Podemos explicar isso da seguinte forma. Uma equipe tem sua produti-
vidade prejudicada quando o nível de retrabalho é muito alto. O retrabalho
tira os profissionais da atividade de produzir “algo novo” pela atividade de
“corrigir algo defeituoso”. Cada novo desenvolvedor potencializa o nível de
desorganização, trazendo mais “retrabalho” ao projeto. Será mais um profis-
sional gerando erros em seu próprio código e nos códigos de seus colegas.
Será mais alguém participando do desenvolvimento, ampliando as dificul-
dades de comunicação da equipe e direcionamento de um objetivo comum.
Em um determinado momento, iremos perceber que o projeto tem a maior
parte de seus recursos direcionados a “fazer o que já foi feito”. Para o cliente
final, trata-se de um projeto sem fim, sem prazo determinado para acabar.
Nível de
Retrabalho Demonstra alto índice
de desorganização
4 x Mais
3 x Mais
Demonstra médio índice
de desorganização
2 x Mais
Demonstra baixo índice
de desorganização
1 x Mais
Número de
Profissionais
1 3 5 7 9 Alocados no Projeto
Através do gráfico, fica fácil entender que apenas incluir novos profissio-
nais não resolve o problema da produtividade do projeto. É necessário in-
vestir em recursos que melhorem a qualidade do processo de desenvolvi-
mento, reduzindo a desorganização. Uma equipe de qualidade elevará o ní-
vel de produtividade do processo de desenvolvimento, garantindo melhor
aproveitamento dos recursos já existentes.
Benefícios de um Processo de Qualidade de Software
Fato 1
Módulo A Módulo B
O programa do
Módulo A foi
modificado com a
intenção de adaptar
o aplicativo às novas
regras financeiras.
Fato 3
Porém, um programa do
Fato 2 Módulo C Módulo B apresenta
Como precaução, o dependência direta com o
Módulo A foi programa modificado.
totalmente testado.
Infelizmente, o erro já foi
propagado e agora está em
produção.
to inicial, a automação passa a ser encarada como mais um trabalho a ser rea-
lizado. À medida que reexecutamos os testes, o ganho de tempo, controle,
confiabilidade e as diversas possibilidades existentes com essa tecnologia,
fica clara a vantagem inerente a esse processo.
Esta tabela, extraída do The Newsletter of the Quality Assurance (1995),
demonstra um estudo, que envolve 1.750 casos de testes e 700 defeitos exis-
tentes. Nesse estudo fica evidente que processos de testes baseados em ferra-
mentas de automação são mais econômicos, rápidos e eficientes do que os
processos manuais de testes.
Tabela 7.1
Comparativo entre testes manuais e automatizados
Planejamento 32 40 -25%
Definição dos Casos de Testes 262 117 55%
Execução dos Testes 466 23 95%
Conferência dos Testes 117 58 50%
Gerenciamento do Erro 117 23 80%
Relatórios Finais 96 16 83%
Duração Total (em Horas) 1.090 277 75%
CAPÍTULO 8
Entendendo os
Testes de Verificação
torna as reuniões mais produtivas, uma vez que sua principal missão é man-
ter o processo dentro do foco e dos propósitos da reunião.
O moderador não deveria ter a responsabilidade de revisar os documentos,
sob pena de prejudicar seu desempenho como condutor das reuniões. Sua atri-
buição é garantir que todos os pontos estão recebendo a devida atenção por to-
dos os participantes e propiciar aos revisores iguais oportunidades de expor
seus pensamentos e comentários. Bons moderadores ampliam as chances de su-
cesso das revisões, pois aumentam as incidências de detecção de problemas.
8.3.1. Moderador
O moderador tem por objetivo fazer cumprir a agenda estabelecida na
reunião. Deve manter os revisores dentro do tópico em discussão, evitan-
do desvios na condução dos trabalhos. O moderador deve trazer as discus-
sões paralelas para o grupo e possibilitar a todos participar igualmente
dos debates. Preferencialmente, deve ser um profissional da área de qua-
lidade.
8.3.2. Escrivão
O escrivão mantém registrados todos os pontos de discussão e documenta as
ações estabelecidas pelo grupo para posterior execução. Um escrivão não
poderá assumir a tarefa de revisar os documentos, sob pena de falhar nos re-
gistros enquanto está participando de discussões sobre o documento. Ape-
sar de ser sempre colocado em segundo plano, o escrivão exerce um impor-
tante papel nas reuniões. Ele cuidará da memória da reunião, registrando os
pontos discutidos, as divergências e decisões tomadas pelo grupo, que serão
resgatadas no futuro, caso haja falhas detectadas nas próximas etapas do de-
senvolvimento.
Entendendo os Testes de Verificação
8.3.3. Autor
O autor é o criador do documento a ser revisado. O autor deve explicar o
documento e fornecer informações fundamentais à compreensão do con-
teúdo do material (caso o documento não seja auto-explicativo, isto já in-
dica a necessidade de melhoria). Um aspecto importante é não focar as dis-
cussões no autor, mas sim no documento. Isso significa que o autor so-
mente inicia o processo de discussão, dando uma rápida visão e explana-
ção sobre o documento, responder questionamentos quando solicitado e
esclarecer dúvidas dos revisores. Além disso, ele apenas acompanha os tra-
balhos de revisão.
8.3.4. Revisor
São os profissionais que estarão única e exclusivamente voltados para a dis-
cussão do documento e identificação de problemas. Os revisores deverão
respeitar as regras da reunião e a condução dos trabalhos pelo moderador.
Deverão evitar debater assuntos que não estão na agenda da reunião e se es-
quivar de discussões paralelas. Devem focar o entendimento e a melhoria do
documento, não a discussão propriamente dita.
CAPÍTULO 9
Métodos Estruturados
de Verificação
Qualidade
do
Processo de
Auditorias Foco nas Atividades
Software
9.1. Revisões
A revisão é um processo “humano” de análise de determinado documento.
Esse processo requer pessoas adequadamente treinadas para desempenhar
seus papéis durante a condução das atividades de verificação. Existem mui-
tas formas de organizar as sessões de revisões, sendo que cada uma delas
possui suas características e particularidades. Para cada fase do processo
de criação de documentos poderemos aplicar um tipo diferente de revisão:
na fase de elaboração inicial do documento, poderemos aplicar a revisão
isolada, cujo objetivo é fazer validações parciais do documento. Na fase de
validação do documento poderemos aplicar a revisão formal, cujo objeti-
vo é validar o documento finalizado com todos os grupos interessados. Na
fase de divulgação, poderemos aplicar as reuniões de acompanhamento,
cujo objetivo é garantir a leitura do documento por todas as pessoas-chave
envolvidas.
Irtoprçl
hkhg
][gfg~f
Irtoprçl
hkhg
Moderador çlkçj Autor Irtoprçl
hkhg
Autor ][gfg~f ][gfg~f
çlkçj Documento çlkçj
Documento Documento
Revisor
Grupo de Autor Grupo de
Revisão Acompanhamento
Revisão Revisão Reunião de
Isolada Formal Acompanhamento
9.2. Auditorias
As auditorias concentram-se nas atividades críticas de um processo de enge-
nharia de software. O principal objetivo das auditorias de qualidade é avaliar
se em determinado projeto as diversas equipes estão respeitando o processo
de desenvolvimento, se estão registrando os defeitos encontrados, se estão
produzindo as atas de reuniões, se estão realizando as reuniões de revisões,
se estão realizando as documentações obrigatórias, se estão envolvendo cli-
entes e usuários nos processos e se estão atualizando continuamente o mapa
de riscos dos projetos. Enfim, os auditores da qualidade são os grandes
“guardiões do processo”.
Esses profissionais devem estar muito atentos às chamadas “quebras de
processos”, muito comuns em projetos de desenvolvimento de software. As
quebras são muito freqüentes em organizações que não possuem etapas bem
Métodos Estruturados de Verificação
Figura 9.3 Checklist aplicada nas diversas fases dos testes de verificação
Tabela 10.1
Análise das fases dos testes de validação
Tabela 10.1
Análise das fases dos testes de validação (continuação)
Tabela 10.2
Exemplo de checklist do modelo de negócios
Tabela 10.3
Exemplo de checklist da proposta de projeto de software
Tabela 10.3
Exemplo de checklist da proposta de projeto de software (continuação)
sobre sua real intenção, o que provocaria falha na concepção do produto, ge-
rando custo adicional no projeto de software.
Assim, cabe aos profissionais que estão atuando como revisores investi-
gar esses requisitos e garantir sua adequada definição. Abaixo estão relata-
dos alguns exemplos de pontos que poderiam ser considerados críticos na
avaliação da qualidade dos requisitos.
Checklist de Requisitos
Levantamento de Requisitos
Especificações Funcionais
Tabela 10.5
Exemplo de checklist de diagramas UML
Diagramas de Classes
Tabela 10.5
Exemplo de checklist de diagramas UML (continuação)
Diagrama de Estado
Diagramas de Componentes
Tabela 10.6
Exemplo de checklist de arquitetura
Checklist da Arquitetura
Tabela 10.7
Exemplo de checklist de código-fonte
Tabela 10.7
Exemplo de checklist de código-fonte (continuação)
Legibilidade do Código
– Não existem linhas agrupadas com IF, SELECT, FOR o Sim o Não
NEXT e FOR EACH.
– Tratamentos de erros e desvios sempre estão no final o Sim o Não
das rotinas.
– Todas as declarações de variáveis e constantes estão no o Sim o Não
início da rotina.
– Não existem vários comandos em uma única linha. o Sim o Não
Volume de Comentários
Tabela 10.8
Exemplo de checklist do banco de dados
Onde:
Entendendo os
Testes de Validação
Caminho A
Início do Término do
Processamento Processamento
Caminho B
esse profissional deverá ter acesso a fontes, estruturas dos bancos de dados
e realizar todos os testes previstos no processo de validação de componen-
tes de software.
Os testes de caixa branca são conhecidos por sua alta eficiência na detec-
ção de erros, porém também são conhecidos por serem difíceis de se imple-
mentar. Os testes de caixa branca podem ser modelados e estruturados pelos
próprios profissionais do desenvolvimento, porém existirá uma carga adi-
cional de trabalho a esses profissionais. Uma área de profissionais de testes
pode ser uma solução inicialmente mais cara, porém gerará resultados mais
rápidos e significativos, o que pode eventualmente pagar ou até mesmos re-
verter em resultados financeiros visíveis. Porém, não fique tentado em colo-
car esse profissional de testes sob o “guarda-chuva” da área de desenvolvi-
mento. Tal atitude somente minimizará os resultados que poderão ser alcan-
çados por uma equipe que atue de forma independente. Lembre-se: a área de
desenvolvimento tem por meta “construir softwares” e será cobrada para
isso. Pressionada, essa área poderá sacrificar alguns processos de testes para
honrar seus compromissos, o que não aconteceria se essas atividades fossem
desempenhadas por uma outra área.
Estímulos Resultados
Produzidos Gerados
.....................................
............................................
.....................................
.............................
..........................................
............................................
.............................
......................................
............................................
Erro !
Cliente Cliente
Cliente Cliente Ocasional Ocasional
VIP Regular
Cliente Cliente Cliente Cliente
VIP Regular VIP Regular
Nesta versão, o sistema atende duas Foi gerada uma nova versão e Essas reduções de preços aumentaram
categorias de clientes, sendo que o somente aplicados testes repentinamente a requisição de
progressivos, porém, a política de pedidos. A área de vendas comemorou
VIP responde por 75% do faturamento.
por apenas quatro horas essa nova
A necessidade de políticas de negociação de VIP foi
situação. O erro foi identificado e a
negociação para clientes ocasionais indevidamente afetada com essa solução foi disponibilizada rapidamente.
gera demanda para uma mudança, provocando reduções nos Foram seis horas para
nova funcionalidade. preços de linhas inteiras de produtos. a solução completa.
Categorias de
Testes de Software
Cenários de Testes
- simular saques acima do saldo disponível;
- simular saques com cartão vencido;
Depósito - avaliar se a duração do saque dura até 30 segundos em um universo de 5 milhões
de correntistas e 100 milhões de movimentação bancária;
- simular saque com defeito no cash dispenser;
- simular saque com impressora dos fornecedores A, B e C;
Saque - avaliar se a senha do cartão está sendo requisitada antes e depois da transação;
- simular dois saques simultâneos na mesma conta corrente;
- simular saque na conta poupança;
Transfe- - avaliar se a senha adicional e randômica está sendo requisitada no início
rência da operação.
- simular saques no Windows 95, 98, NT e 2000;
- avaliar se todas as telas possuem ajuda.
Tabela 12.1
Levantamento dos cenários aplicando-se os conceitos de categorização
É fundamental entender que cada categoria possui seu ciclo de teste in-
dependente, uma vez que suas naturezas são muitas vezes conflitantes, não
possibilitando a coexistência. Um exemplo disso é a realização de testes fun-
cionais e de performance ao mesmo tempo. No primeiro teste, o fundamen-
tal é a existência de uma massa criteriosamente selecionada para que todas
as ações sejam avaliadas e comparadas com o comportamento esperado. No
segundo teste, o que interessa é a monitoração dos tempos de resposta em
relação ao acesso simultâneo de determinado número de profissionais, sen-
do necessário estar com um volume de informações compatíveis com o am-
biente de produção. Suportar essas duas atividades simultaneamente signifi-
ca conciliar interesses totalmente conflitantes.
Tabela 12.2
Comparação entre levantamentos de testes
Portabilidade
Desempenho Recuperação
Saque
Configuração Usabilidade
Funcional
12.2.4.Teste de Volume
Essa categoria de testes tem por objetivo determinar os limites de processa-
mento e carga do software e de toda infra-estrutura da solução. Contrário
aos testes de carga, esse tipo não focaliza oscilações de processamento, mas o
aumento contínuo dos parâmetros de execução.
É operacionalizado através de incrementos sucessivos de volume das
operações realizadas com o software, até que este atinja o limite máximo ao
qual toda a infra-estrutura está preparada para processar. A idéia é conhecer
os limites da solução e avaliar o quão próximo ou distante esses requisitos
estão deste limite.
Podem ser executados da seguinte forma:
Tabela 12.3
Exemplo de priorização das categorias de testes
Métodos Estruturados
de Validação
A G H I J L Caso de Teste 1
A B I P J L Caso de Teste 2
A B C D E Caso de Teste 3
Caso de Teste 4
A B F E
B E
A
Início do F
Processamento Término do
Processamento
G H I J L
Figura 13.1 Técnicas caixa branca para obtenção dos casos de testes
Requisito B
Caso de Teste B.1
Caso de Teste B.2
Caso de Teste B.3
Caso de Teste B.4
Figura 13.2 Técnicas caixa preta para obtenção dos casos de testes
SISTEMA DE VENDAS
Cenário Primário
• Cliente realiza pagamento em dinheiro.
Cenários Alternativos
• Cliente realiza pagamento com cheque.
• Cliente realiza pagamento com cartão de crédito.
Realizar • Cliente realiza pagamento parcelado.
Pagamentos • Cliente realiza pagamento da última parcela.
• Cliente realiza pagamento adiantado.
• Cliente realiza pagamento em atraso.
Cenários de Exceção
• Cliente realiza pagamento com cartão inválido.
• Cliente realiza pagamento com cheque bloqueado.
• Cliente realiza pagamento com cheque e histórico de mau pagador.
Diagrama de
A Atividades Casos de Testes
Identificados
Diagrama de
Casos de Uso Cenários Positivos
A E
B A F E
Cenários Negativos
F C
A B
D A C
A D
E
estado para outro do livro deverá ser considerada um caso de teste (cenários
positivos), enquanto que as transições “proibidas” deverão ser inseridas
como cenários negativos, uma vez que também deverão ser testadas.
2 5 2 3 3 5
Recuperação
Disponível Restauração 3 4 4 6
4 2 5
Empréstimo Disponibiliza Restaurar
4 5 6 4
3 4 5 6
Devolução
Emprestado Análise 6
A A A A
F F F F
E B E B E B E B
C C C C
D D D D
A A A A A
If1 = ? B B B B B
C C C C C
If2 = ? D D D D D
E E E E E
F F F F F
Cobertura de Decisões
Esse método de cobertura avalia se todas as decisões existentes no código-
fonte são exercitadas durante a execução dos testes de caixa branca. Signifi-
ca que cada IF... THEN... ELSE... ENDIF, ou comando similar encontrado
nos fontes, terão casos de testes que assumirão os valores verdadeiro ou fal-
so. Isso garante que toda decisão de processamento existente tenha seus
possíveis caminhos adequadamente exercitados.
GARANTIA DA QUALIDADE DE SOFTWARE
Cobertura de Condições
Contrário à cobertura de decisões, que leva em consideração apenas os co-
mandos que executam desvios de processamento, esse modelo de cobertura
focaliza a expressão que representa a condição de desvio existente no códi-
go-fonte.
Em uma condição de desvio do tipo IF idade>=18 AND sexo=“M”
THEN... o que será focalizado será a expressão idade >= 18 e sexo = “M”. Os
casos de testes deverão cobrir individualmente todas as condições possíveis:
[idade<18; idade=18; idade>18] e [sexo=M; sexo< >M]. Aí, com apenas
três casos de testes, atenderíamos a todos os cenários de execução possíveis:
CT1=[i=17,s=’M’]; CT2=[i=18;s=’F’]; CT3=[i=19;s=’F’].
...
Verdadeiro Falso
?
... ...
CASOS DE TESTES
CASOS DE TESTES
A=0
A=0 A=0 A=0 Soma[7]
A=A+1 A=A+1
A A A<=8
A<8
Laços Simples
Para testar um laço simples que não possua restrição referente à sua freqüên-
cia de execução, os casos de testes abaixo atenderiam a todas as condições de
execução a serem analisadas. Nesse tipo de laço simples, não existe um limi-
te de execução, podendo ser infinitamente processado.
Métodos Estruturados de Validação
Laços Aninhados
Os laços aninhados são estruturas de laços montadas uma dentro da outra,
criando uma verdadeira árvore lógica de execução. A abordagem utilizada
nos testes de laços simples não é recomendável, pois o número de casos de
testes pode ser proibitivo. Para reduzir o volume de casos de testes, devemos
adotar os seguintes procedimentos:
Laços Concatenados
Os laços concatenados são estruturas de laços seqüencializados pela lógica
definida na estrutura do código-fonte. Se esses laços concatenados forem in-
dependentes entre si, recomenda-se a utilização da técnica de laços simples.
Entretanto, se esses laços são dependentes, ou seja, o contador do primeiro é
usado como valor inicial do próximo laço, recomenda-se a utilização da téc-
nica de laços aninhados.
GARANTIA DA QUALIDADE DE SOFTWARE
Tabela 13.1
Exemplo de refinamento por partição de equivalência
Tabela 13.2
Exemplo de refinamento por valores-limite
Tabela 13.3
Exemplo de refinamento por probabilidade de erro
Tabela 14.1
Análise das fases dos testes de validação
Log de
Caso de Execução
Caso de
Teste
Teste
Caso de << Software >>
Teste << Testware>>
Controlador
Resultado
de Testes
doResultado
Teste
do Resultado
Teste
do Teste
Por esse motivo, é natural que essas atividades sejam transferidas para o
próprio desenvolvedor das unidades de software, pois este possui toda a car-
ga de conhecimento necessária para realizar as atividades. O grande proble-
ma aqui é o chamado conflito de interesses: o desenvolvedor está sempre
sendo pressionado a construir softwares com rapidez, o que significa que
testar sempre será uma atividade secundária para ele.
A utilização de um ou mais profissionais para integrar o processo de
desenvolvimento e aplicar os testes de caixa branca é altamente aconselhá-
vel, pois eliminaria os riscos de os testes serem superficiais e pouco eficien-
tes. Se o gerente do projeto de desenvolvimento está vendo esses recursos
como custos adicionais, recomendo avaliar quanto dos projetos anteriores
foram gastos com manutenção corretiva. Se essas informações forem le-
vantadas (o que normalmente nunca ocorre), veremos que o modelo no
qual estamos trabalhando há anos baseia-se na premissa de que essas cor-
reções são características naturais de projetos de softwares complexos e
que nada podemos fazer para lidar com o problema. Devemos sempre lem-
brar que são essas falhas que encarecem e inviabilizam o produto e serviços
de software, que reduzem as margens de lucro e que impedem o aumento
de produtividade da equipe.
Requisitos:
<<Software>> <<Testware>>
Funcionais
Business Business
Packages TestPacks
Requisitos:
Armazenamento e
<<Software>> <<Testware>>
Recuperação de Dados
Data Data
Packages TestPacks
Requisitos:
<<Software>> <<Testware>>
Sistemas
Utilities Utilities
Packages TestPacks
Unidade
F Unidade Simulador Simulador
Unidade J H J
H
Unidade Unidade Simulador
G I I
Unidade
F Unidade Simulador Simulador
Unidade J H J
H
Unidade Unidade Simulador
G I I
Unidade
F Unidade Simulador Simulador
Unidade J H J
H
Unidade Unidade Simulador
G I I
BIG
BANG
Figura 14.8 Validação das integrações entre unidades com abordagem big-bang
T T
S
S
T S
S S T S
T S S S T
T S S S
S T
S S S
T S
S S
T T S T
S
S S
T
S S T S S S S
T
S S
S Componentes de Software
T S T
S
T Componentes de Testware
T
S S
S S S S
S S T T T T T
T T T
S
T S
S
S S
S S
S S
T S S S S
T S S
S S S S S
S
S S
T S S
T
S S
S
S S
T S S
S S
S S S
S
S S S
S T S S
T S
S S
S
S S
S
S Componentes de Software
S
T S S
T Componentes de Testware
S
seguem até que não existam mais níveis a serem alcançados, atingindo o ní-
vel máximo de integração que os componentes podem chegar.
Em cada nível de integração descrito, existe um controlador criado exclu-
sivamente para realizar os testes de interfaces entre os componentes de soft-
ware. Perceba que os ciclos de evolução dos testes de integração são todos mo-
delados a partir da estrutura do aplicativo, sendo necessário somente decidir
quantos níveis serão necessários para realizar todos os testes de integração.
Tabela 14.2
Testes de integração com a abordagem mista
Bottom-up Top-down
Unidade
Especificada ou • Atender os requisitos não funcionais da solução tecnológica.
Modificada • Modelar uma arquitetura que atenda a todos os os requisitos da solução.
<Simulador>
<< Batch >>
Sistema
A
Sistema
D
<< On-line >>
<< Batch >>
14.4.2. Alpha-teste
Nesse estágio do aceite, os clientes são convidados a operar o software den-
tro de um ambiente simulado, localizado internamente na empresa criadora
do software, porém fisicamente separada do ambiente de desenvolvimento.
Os usuários poderão interagir diretamente com a aplicação, simulando ope-
rações e transações de todos os tipos. Cabe aos profissionais que estão geren-
ciando o processo de aceite garantir que todos os usuários convidados estão
exercitando todos os pontos mais críticos da aplicação, possibilitando as
chances de encontrar defeitos em procedimentos implantados.
A principal característica do Alpha-teste é a ausência de um formalismo
no processo de validação, não existindo regras rígidas de execução ou proce-
dimentos de aceite. O objetivo é capturar a naturalidade dos próprios usuá-
rios e dar a eles a possibilidade de realizar seus próprios testes. Apesar de ser
fundamental deixar o usuário livre para executar todas as funcionalidades
do software, é recomendável formalizar um conjunto reduzido de procedi-
mentos, de forma a garantir um mínimo de cobertura do aceite realizado pe-
los usuários. Mesmo não existindo a garantia efetiva de que este seguirá tais
procedimentos, esses procedimentos funcionarão como uma espécie de
checklist do aceite.
14.4.3. Beta-teste
Nesse estágio do aceite, clientes serão convidados a operar o produto utili-
zando suas próprias instalações físicas para que o software possa ser subme-
tido às mesmas transações do dia-a-dia. Não se trata de uma implantação de-
finitiva, mas sim de uma implantação em paralelo. O Beta-teste pode ocorrer
até que o cliente sinta-se seguro em realizar a mudança de aplicativo (seja ela
GARANTIA DA QUALIDADE DE SOFTWARE
Conceito do Testware
Da mesma forma que existe uma gestão de software, deve existir uma
gestão equivalente ao testware, ou seja, todos os cuidados existentes no de-
senvolvimento de software devem existir no desenvolvimento de compo-
nentes que objetivam a automação dos procedimentos de testes.
Ao contrário do que se imagina, as atividades de testes não podem ser en-
caradas como uma tarefa passageira que pode ser realizada sem controle ou
padrão. Igualmente a software, testware tem significativo valor porque pode
ser reutilizado sem incorrer em um novo custo de redesenvolvimento a cada
execução.
Essa gestão deve estar preocupada com os aspectos críticos do testware:
criar e manter um ambiente de testes, mantê-lo sob controle através de um
sistema de gerenciamento de configurações, utilizar-se de rotinas de arma-
zenamento periódico (backups), instituir padrões de elaboração de docu-
mentos e relatórios e formar profissionais capacitados a lidar com as ferra-
mentas e metodologias de testes.
EM EM EM EM
DESENVOLVIMENTO TESTE HOMOLOGAÇÃO PRODUÇÃO
Porém, esse ambiente deverá ser segmentado em duas partes: uma para
atender às necessidades da equipe de desenvolvimento e a outra para aten-
der às necessidades de testes da própria equipe de desenvolvimento. Como
nosso enfoque aqui são somente testes de software, interessa-nos apenas a
segunda segmentação do ambiente de desenvolvimento, que não exigirá os
softwares de apoio ao desenvolvimento, as chamadas ferramentas CASE
(Computer Aided Systems Engineering). Essas atividades necessitarão de
um outro conjunto de ferramentas que serão empregadas para auxiliar no
processo de automação dos testes.
Dentro do ambiente de desenvolvimento, na segmentação voltada ex-
clusivamente a testes, deverão ser aplicados os testes unitários e de integra-
ção. Esses testes poderão ser aplicados tanto pela própria equipe de desen-
volvimento quanto por uma equipe de testes independente. Como esses tes-
tes exigem um alto grau de conhecimento da arquitetura do software a ser
testado, é mais natural que os testes fiquem sendo inicialmente de responsa-
bilidade da própria equipe de desenvolvimento, porém, a experiência de-
monstra que os testes realizados por uma equipe externa permitem maior
nível de eficiência e cobertura, além de possibilitar um alto grau de automa-
ção dos testes. Se não existem grandes restrições orçamentárias, uma equipe
de teste independente é extremamente recomendável.
TESTE:
TESTE: SISTEMA TESTE:
UNIDADE
DESENVOLVIMENTO ACEITAÇÃO
INTEGRAÇÃO CATEGORIA:
FUNCIONAL
FONTES CARGA CATEGORIA
CATEGORIA
ESTRUTURA INTERNA PERFORMANCE ACEITE FORMAL
FUNCIONAL
INSTALAÇÃO ALPHA-TESTE
USABILIDADE
SEGURANÇA
TESTE:
SISTEMA TESTE:
TESTE:
ACEITAÇÃO
CATEGORIA: ACEITAÇÃO
CARGA PRODUÇÃO
PERFORMANCE CATEGORIA
CATEGORIA:
VOLUME ACEITE FORMAL
BETA-TESTE
INSTALAÇÃO ALPHA-TESTE
SEGURANÇA
TESTE:
SISTEMA TESTE:
TESTE:
ACEITAÇÃO
CATEGORIA: ACEITAÇÃO
CARGA PRODUÇÃO
PERFORMANCE CATEGORIA
CATEGORIA:
VOLUME ACEITE FORMAL
BETA-TESTE
INSTALAÇÃO ALPHA-TESTE
SEGURANÇA
• Ponto de Corte
• Redução e Limpeza
Base de • Informações Adicionais Base de
Dados • Criptografia Dados
Componentes Componentes
• Seleção de Componentes.
Gestão Organizacional
Nível
Operacional
Nível
Gerencial Líder de Projeto
Nível
Operacional
Gestão dos
Projetos de Software
Área de Área de
Desenvolvimento Produção
Nível
Gerencial
Nível Hiato
Operacional
Nível
Gerencial
Nível
Operacional
Desenvolvimento
Negócio Produção
Metodologia de
Desenvolvimento
Infra-estrutura Testes
de Software
(MDS)
Projetos Mudanças
Engenharia Qualidade
de Software Processo de Software
(SEPG) UNIFICADO (SQA)
de Software
Projetos
Negócio Produção
Infra-estrutura Testes
Desenvolvimento Mudanças
Gestão
dos Profissionais
A missão Qualidade de Software está cada vez mais associada a uma dis-
ciplina fundamental do processo de desenvolvimento de software. Significa
que estamos diante de uma profissão, uma nova carreira a ser seguida. De-
vemos treinar esses profissionais para aprimorar seus conhecimentos e
ampliar sua visão sobre o processo de garantia da qualidade.
Em um primeiro momento, é possível empregar profissionais de desen-
volvimento para compor as equipes de qualidade de software. Isso é perfei-
tamente compreensível em razão de não existirem profissionais formados
no mercado, porém, é fundamental compreender que os profissionais que
atuam nessa nova área, além de possuírem desejável vivência na cultura de
desenvolvimento de software, deverão utilizar técnicas, metodologias e fer-
ramentas bem diferenciadas dos profissionais de desenvolvimento.
Gestão de
Componentes de Testes
Componente A Controlador A
Figura 18.1 Controladores são criados para testar cada unidade de software
Gestão de Componentes de Testes
Sistema de
Carregamento Sistema de
Esteira Rolante Carregamento
<< Simulador>>
<< Hardware>> Controlador de
Esteira
Controlador de
Esteira
Gestão
das Ferramentas
Planejamento Modelagem
de e
Testes Automação
Suporte
aos
Testes
Revisões Execução
e e
Inspeções Conferência
ANÁLISE DE
CRITICIDADE
Planejamento
de
Testes GERADOR DE
DOCUMENTOS
ANÁLISE DE
COMPLEXIDADE
COMPREENSÃO DO
Revisões CÓDIGO
e
Inspeções
ANÁLISE SINTÁTICA DE
SEMÂNTICA
MODELAGEM
DE TESTES
GERADOR DE
Modelagem MASSA DE DADOS
e
Automação
AUTOMATIZADOR DE
SCRIPTS
EXECUTOR DE
SCRIPTS
GERENCIAMENTO DE
DEFEITOS
Suporte
aos
Testes GERENCIAMENTO DE
CONFIGURAÇÕES
Gestão dos
Custos de Testware
Tabela 20.1
Alternativas na preparação do ambiente
Não é desejável que uma organização tenha uma abordagem única sobre
o problema. É perfeitamente possível (e desejável) conviver com as duas
abordagens simultaneamente. Somente os sistemas considerados críticos
(vitais ao negócio) deverão estar no ambiente ativo. Os demais seguirão as
regras do ambiente sob demanda.
Gestão dos Custos de Testware
Tabela 20.2
Alternativas na execução dos testes
Tabela 20.3
Alternativas na conferência dos testes
Documentação
do Planejamento
ESTRATÉGIA
VERIFICAÇÃO
MODELO DE NEGÓCIOS
ESTRATÉGIA
VERIFICAÇÃO
PLANO- REQUISITOS
MESTRE DE
VERIFICAÇÃO ESTRATÉGIA
VERIFICAÇÃO
ANÁLISE & DESIGN
ESTRATÉGIA
VERIFICAÇÃO
PLANO DE IMPLEMENTAÇÃO
GARANTIA DA
QUALIDADE DO
SOFTWARE
CASO DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA
VALIDAÇÃO
UNIDADE
CASO DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA
PLANO- VALIDAÇÃO
MESTRE DE INTEGRAÇÃO
VALIDAÇÃO
ESTRATÉGIA
VALIDAÇÃO
SISTEMA
ESTRATÉGIA
VALIDAÇÃO
ACEITAÇÃO
PLANO-
MESTRE DE
VERIFICAÇÃO
PLANO DE
GARANTIA DA
QUALIDADE DO
SOFTWARE
PLANO-
MESTRE DE
VALIDAÇÃO
Propósito do documento
Apresentação do processo de verificação e validação
Gerenciamento da garantia da qualidade do software
Equipe de revisões e auditorias (garantir a qualidade do processo)
Equipe de testes de software (garantir a qualidade do produto)
Histórico de experiências passadas e benchmarking
Prinicipais documentações a serem empregadas
Referências a ferramentas, técnicas e metodologias
Referências a padrões, práticas, convenções e métricas
Gerenciamento do testware
Treinamentos necessários
Política de gerenciamento de riscos
Estimativas e macrocronograma
ESTRATÉGIA
VERIFICAÇÃO
MODELAGEM DE NEGÓCIOS
ESTRATÉGIA
VERIFICAÇÃO
PLANO DE
PLANO- REQUISITOS
GARANTIA DA
MESTRE DE
QUALIDADE DO
VERIFICAÇÃO ESTRATÉGIA
SOFTWARE VERIFICAÇÃO
ANÁLISE & DESIGN
ESTRATÉGIA
VERIFICAÇÃO
IMPLEMENTAÇÃO
Propósito do documento
Detalhes do ciclo do processo de verificação
Principais atividades de verificação
Definição de papéis e responsabilidades da equipe de verificação
Principais documentos a serem empregados
Principais documentos a serem gerados
Referências a técnicas, métodos e ferramentas a serem empregados
Referências a padrões, políticas, formatos a serem adotados
Contratação de treinamento e mentoring
Relatórios a serem produzidos
Cronograma das etapas da verificação
Riscos e contingências
ESTRATÉGIA
VERIFICAÇÃO
MODELAGEM DE NEGÓCIOS
ESTRATÉGIA
VERIFICAÇÃO
PLANO DE REQUISITOS
PLANO-
GARANTIA DA
MESTRE DE
QUALIDADE DO ESTRATÉGIA
VERIFICAÇÃO
SOFTWARE VERIFICAÇÃO
ANÁLISE & DESIGN
ESTRATÉGIA
VERIFICAÇÃO
IMPLEMENTAÇÃO
Objetivo do documento
Detalhamento das atividades de verificação
Definição dos grupos de revisão e auditoria
Definição dos papéis e responsabilidades
Documentos que serão verificados
Documentos que não serão verificados
Lista de documentos a serem produzidos
Critério de finalização dos testes
Checklists que serão empregadas
Técnicas, ferramentas e padrões a serem empregados
Cronograma detalhado
Lista de aprovação
ESTRATÉGIA
VALIDAÇÃO
UNIDADE
ESTRATÉGIA
VALIDAÇÃO
PLANO DE INTEGRAÇÃO
PLANO-
GARANTIA DA
MESTRE DE
QUALIDADE DO ESTRATÉGIA
VALIDAÇÃO
SOFTWARE VALIDAÇÃO
SISTEMA
ESTRATÉGIA
VALIDAÇÃO
ACEITE
Objetivo do documento
Detalhamento das atividades de validação
Definição dos grupos de validação
Áreas do software que serão verificadas
Áreas do software que não serão verificadas
Lista de componentes de testes a serem criados (controladores e simu-
ladores)
Lista de documentos a serem produzidos
Técnicas, ferramentas e padrões a serem empregados
Cronograma detalhado
Lista de aprovação
ESTRATÉGIA
VALIDAÇÃO
UNIDADE
ESTRATÉGIA
VALIDAÇÃO
PLANO DE INTEGRAÇÃO
PLANO-
GARANTIA DA
MESTRE DE
QUALIDADE DO ESTRATÉGIA
VERIFICAÇÃO
SOFTWARE VALIDAÇÃO
SISTEMA
ESTRATÉGIA
VALIDAÇÃO
ACEITE
Objetivo do documento
Detalhamento das atividades de verificação
Definição dos grupos de validação do software
Definição dos papéis e responsabilidades
Escopo do teste (itens a serem validados e itens que não serão validados)
Arquitetura do ambiente de teste
Lista de documentos a serem produzidos
Critério de finalização dos testes
Técnicas, ferramentas e padrões a serem empregados
Cronograma detalhado
Lista de aprovação
ESTRATÉGIA DE
VALIDAÇÃO
DA UNIDADE
CASOS DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA DE
VALIDAÇÃO DA
INTEGRAÇÃO
CASOS DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA DE
VALIDAÇÃO
DO SISTEMA
CASOS DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA DE
VALIDAÇÃO
DO ACEITE
ESTRATÉGIA DE
VALIDAÇÃO
DA UNIDADE
CASOS DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA DE
VALIDAÇÃO DA
INTEGRAÇÃO
CASOS DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA DE
VALIDAÇÃO
DO SISTEMA
CASOS DE SUÍTE DE
TESTE TESTE
ESTRATÉGIA DE
VALIDAÇÃO
DO ACEITE
Relatórios da
Qualidade do Software
RELATÓRIO DE
VERIFICAÇÃO DO
MODELO DE NEGÓCIOS
RELATÓRIO DE
VERIFICAÇÃO DE
EXECUÇÃO DOS REQUISITOS
PLANEJAMENTO
TESTES DE
DA VERIFICAÇÃO
VERIFICAÇÃO RELATÓRIO DE
VERIFICAÇÃO DE
ANÁLISE & DESIGN
RELATÓRIO DE
VERIFICAÇÃO DE
IMPLEMENTAÇÃO
LOG DE OCORRÊNCIAS NA
EXECUÇÃO DA VALIDAÇÃO DA
UNIDADE UNIDADE
LOG DE OCORRÊNCIAS NA
EXECUÇÃO DA VALIDAÇÃO DA
INTEGRAÇÃO INTEGRAÇÃO
EXECUÇÃO DOS RELATÓRIO
PLANEJAMENTO
TESTES DE FINAL-
DA VALIDAÇÃO TESTE
VALIDAÇÃO LOG DE OCORRÊNCIAS NA
EXECUÇÃO DO VALIDAÇÃO DO
SISTEMA SISTEMA
LOG DE OCORRÊNCIAS NA
EXECUÇÃO DA VALIDAÇÃO DA
ACEITAÇÃO ACEITAÇÃO
ESTRATÉGIA DE RELATÓRIO DE
VERIFICAÇÃO DA VERIFICAÇÃO DA
MODELAGEM DE NEGÓCIOS MODELAGEM DE NEGÓCIOS
ESTRATÉGIA DE RELATÓRIO DE
VERIFICAÇÃO VERIFICAÇÃO
DOS REQUISITOS EXECUÇÃO DOS DOS REQUISITOS
TESTES DE
ESTRATÉGIA DE VERIFICAÇÃO RELATÓRIO DE
VERIFICAÇÃO DA VERIFICAÇÃO DA
ANÁLISE & DESIGN ANÁLISE & DESIGN
ESTRATÉGIA DE RELATÓRIO DE
VERIFICAÇÃO DA VERIFICAÇÃO DA
IMPLEMENTAÇÃO IMPLEMENTAÇÃO
ESTRATÉGIA DE RELATÓRIO DE
VERIFICAÇÃO DA VERIFICAÇÃO DA
MODELAGEM DE NEGÓCIOS MODELAGEM DE NEGÓCIOS
ESTRATÉGIA DE RELATÓRIO DE
VERIFICAÇÃO VERIFICAÇÃO
DOS REQUISITOS EXECUÇÃO DOS DOS REQUISITOS
TESTES DE
ESTRATÉGIA DE VERIFICAÇÃO RELATÓRIO DE
VERIFICAÇÃO DA VERIFICAÇÃO DA
ANÁLISE & DESIGN ANÁLISE & DESIGN
ESTRATÉGIA DE RELATÓRIO DE
VERIFICAÇÃO DA VERIFICAÇÃO DA
IMPLEMENTAÇÃO IMPLEMENTAÇÃO
Data de execução
Escopo do processamento
Condições de processamento
Lista de itens processados
GARANTIA DA QUALIDADE DE SOFTWARE
Identificação do erro
Data de registro do erro
Descrição do erro
Classificação do erro
Condições do momento em que ocorreu o erro
Seqüências de ações que produziram o erro
Telas capturadas referentes ao erro
Dados sobre o ambiente
Prioridade na resolução
Medições
.....................................
............................................
.....................................
.............................
..........................................
............................................
.............................
......................................
............................................
COBERTURA DO
PLANEJAMENTO Total de Requisitos com Cobertura dos Testes
DE REQUISITOS
Total de Requisitos
COBERTURA DO
PLANEJAMENTO DE Total de Linhas de Código Cobertas pelos Testes
CÓDIGO-FONTE
Total de Linhas de Código
Baixa
Criticidade
COBERTURA DA
EXECUÇÃO DE Total de Casos de Testes Executados
REQUISITOS
Total de Casos de Testes dos Requisitos
COBERTURA DA
EXECUÇÃO DE Total das Linhas de Código Executadas pelos Testes
CÓDIGO-FONTE
Total de Linhas de Código a Serem Testadas
100%
80%
60%
40%
20%
#1 #2 #3 #4 #5
EFICIÊNCIA
DA Total de Erros da Validação + Total de Erros em Produção
VERIFICAÇÃO
Total de Linhas do Código-fonte ou Total de Requisitos
EFICIÊNCIA
DA Total de Erros da Validação
VALIDAÇÃO
Total de Erros da Validação + Total de Erros em Produção
80
72
60 57
39
40 34
18
20 15 15
13 11
Falha na Estética
Falha no Ambiente
41%
15%
Erro Fatal
8%
Falha Operacional
Funcionamento
10%
Incorreto
Não Funcional
21%
5%
Urgente
Alta Prioridade
Média Prioridade
Baixa Prioridade
20
15
10
Fornecedor E
20% Fornecedor F
20%
Fornecedor D
4%
Fornecedor A
16%
Fornecedor C Fornecedor B
29% 11%
Figura 23.13 Distribuição de defeitos por fornecedor
GARANTIA DA QUALIDADE DE SOFTWARE
Hardware A
21%
Componente D Hardware B
35% 11%
Componente A
5%
Componente B
16%
Componente C
12%
40
35
30
25
20
15
10
5
0
1-5 dias 6-10 dias 11-15 dias 16-20 dias
100%
80%
60%
40%
20%
0%
#1 #2 #3 #4 #5 #6
45
40
35
30
Novos
25
20 Em Aberto
15 Fechados
10
5
0
#1 #2 #3 #4 #5 #6 #7 #8
Figura 23.17 Tendências dos defeitos durante o ciclo de vida dos testes
Medições
J Custo da correção
J Custo de teste
J Custo da implantação
Produtividade
20 Troca
Retrabalho de
Tecnologia
15
10
Erros
no
Ambiente
de
Produção
Ausência Falha no
de Testes Planejamento
Regressivos dos Testes
problema. Sua representação é muito simples – cada causa é uma das espi-
nhas que representam a contribuição para a geração de um determinado
problema.
45 %
40%
33 %
30%
20%
13 %
7%
10%
2%
ponsável por muito mais sistemas do que o segundo fornecedor. Mesmo que
ambos apenas forneçam um único sistema, estes possuem complexidades e
abrangências muito distintas, impossibilitando uma simples comparação
com os valores brutos. Torna-se fundamental estabelecer medida de com-
plexidade que possibilite converter esses valores em unidades de mesma
grandeza, possibilitando a comparação entre projetos. Nesse mesmo exem-
plo, poderíamos utilizar os requisitos como nossa unidade de complexida-
de: o fornecedor X atende 1.000 requisitos enquanto o fornecedor Y atende a
somente 200. Realizando uma simples operação matemática conseguimos
ajustar esses indicadores e obter números com as grandezas idênticas – o
primeiro fornecedor apresenta-se como o mais eficiente, pois produz 30 erros
em cada 1.000 requisitos, enquanto o segundo fornecedor produz 50 erros com
o mesmo volume de requisitos.
Outro fator muito importante é a qualidade da informação que está sen-
do coletada para alimentar esse banco de conhecimento sobre os projetos.
Na maioria dos levantamentos realizados os indicadores são irreais, pois, in-
tencionalmente, querem esconder a ineficiência do processo atual de desen-
volvimento (como se ninguém soubesse disso). Sem informações reais, nos-
sas decisões serão limitadas e irão produzir resultados pouco expressivos.
Muitas vezes quem está registrando as informações não foi devidamente
orientado e não compreende como estas serão empregadas para auxiliar o
próprio andamento do projeto. Cabe à gerência acompanhar cada profissio-
nal envolvido no processo de engenharia do software, orientando os mem-
bros da equipe sobre a importância de métricas consistentes e de sua depen-
dência direta com os procedimentos de coletas de informações, para que to-
das decisões sejam tomadas com base em informações que expressem a rea-
lidade dos fatos, mesmo que essa realidade seja dolorosa.
Com informações reais e um processo de tomada de decisões bem plane-
jado, teremos um gerenciamento do projeto muito mais eficiente e bem ob-
jetivo, possibilitando a todos os membros da equipe realizar uma auto-avalia-
ção de seu próprio trabalho, distribuindo a responsabilidade da boa execução
do projeto a todos os integrantes do projeto.
CAPÍTULO 24
Aplicando Testes
em Softwares
Sistema
<< Batch >>
Dependente
Sistema
1
Dependente
2.1
<< On-line >>
<< Batch >>
Sistema Sistema
<< On-line >>
a ser Dependente
<< On-line >> Sistema
Testado 2
Dependente
2.2
<< On-line >>
<< Batch >>
Sistema
Dependente << Batch >>
<< Batch >>
3 Sistema
Dependente
2.2
dispensará um tempo ao analista de testes quando sentir que suas tarefas fo-
ram cumpridas e bem encaminhadas. Caso isso não ocorra, este pode prejudi-
car o planejamento dos testes em função de sua falta de disponibilidade em
transferir os conhecimentos de negócio adquiridos durante o projeto. Portan-
to, devemos descartar os analistas de sistemas como principal fonte de infor-
mações.
Modelo
“rápido” Tempo Gasto com Tempo
PROCESSO DE TESTES QUE OCORRE
PARALELAMENTE AO DESENVOLVIMENTO
Otimização Ganho
DO SOFTWARE
T0 Criar()
T1 Registrar()
T2 Integrar()
T0 Criar()
T1 Registrar() Integrar()
Simulando
Integrações Batch
Sistema Sistema de
de Análise de
Vendas Crédito
Ambiente Client-server
Exporta Pedidos
Recém-Cadastrados Pedidos
Digitados
Sistema
de
Vendas
Pedidos
Importa Resultado Analisados
da Análise de Crédito
Exporta Pedidos
Recém-cadastrados
Sistema
de Pedidos
Vendas Digitados
Cenário #1
Cenário #2
Cenário #3
Cenário #4
Massa de Produção
Essa abordagem caracteriza-se pela utilização de “arquivos reais” do am-
biente de produção e sua reutilização nos procedimentos de testes. Todos
os dias, muitos arquivos batch são criados durante o processamento nor-
mal e essa abordagem pode ser empregada para alimentar o ambiente de
testes. Esta pode parecer “mágica”, porém possui muitas restrições e res-
salvas.
As ressalvas ficam por conta do fato de não existir um controle efetivo
sobre o tipo de informações que está sendo enviado ao ambiente de tes-
tes, ou seja, não existe garantia de que todos os cenários estão sendo pro-
cessados. Isso impossibilita a realização da conferência dos resultados de
forma automatizada, reduzindo a velocidade e a eficiência da execução
dos testes. Também temos um problema adicional com o grande volume
de dados de produção, obrigando a realização de procedimentos de redu-
ção das informações.
As restrições estão no impedimento de realizar testes com layouts erra-
dos, como desalinhamento de campos, troca de ordem das informações e al-
gumas inconsistências de controles. Isso impossibilita avaliar como o siste-
ma se comporta nas situações de exceção.
GARANTIA DA QUALIDADE DE SOFTWARE
Massa Simulada
Essa abordagem baseia-se na construção “sob medida” de arquivos que em-
pregam informações cuidadosamente planejadas, de forma a criar “artifici-
almente” os diversos cenários desejados. Apesar de um maior esforço de pla-
nejamento e criação desses arquivos, essa abordagem proporciona maior
flexibilidade na realização dos testes. Será possível criar arquivos sem conte-
údos, com falhas de layout, com pedidos que nunca existiram ou que já fo-
ram processados. Enfim, podemos manipular e gerar todos os cenários ne-
cessários para os testes.
A utilização de uma massa simulada significa que temos o controle total
das informações que estarão contidas nos arquivos. Significa que podere-
mos não somente automatizar o processo de importação dos dados, mas
também os procedimentos de conferência (devemos analisar se os pedidos
tiveram suas situações convenientemente alteradas após a importação). Isso
faz com que essa abordagem seja a melhor escolha a ser tomada durante os
testes de importação de arquivos.
Cenário #1
Cenário #2
Cenário #3
Cenário #4
Cenário #5
Simulando
Softwares
Pedido
Digitado
Tabela 26.1
Critérios para análise de crédito do pedido
Resultado Critério
Receber
Pedidos Em
Análise
Enviar Enviar
Pedidos Já Pedidos
Enviado
Vendas. Para que todos os casos de testes fossem executados, seria necessá-
rio um planejamento mais complexo a fim de que todas as possíveis varia-
ções de resultados pudessem ser operacionalizadas. A utilização de um si-
mulador reduziria o esforço de planejamento e execução dos casos de testes,
tornando mais simples os processamentos que envolvem diretamente a aná-
lise dos pedidos. Também evitaria a instalação e gerenciamento de mais um
sistema no ambiente de testes.
Criar
Pedidos Pedido
Digitado A transação de análise é
uma requisição direta ao
Enviar sistema de
para Análise gestão de crédito.
Pedido
em Análise
Tabela 26.2
Cenários necessários para validar análise de crédito
Tabela 26.3
Cenários necessários para validar o sistema de vendas
Restrições de Crédito
Restrição Automática:
l Cliente está em processo de falência.
<< Simulador >> l Cliente está ou esteve em concordata nos últimos dois anos.
l Cliente tem restrições no mercado financeiro.
GESTÃO DE
Análise Individual:
CRÉDITO l Cliente possui duplicatas não pagas.
l Volume negociado está acima de 100% da média de vendas anteriores.
l Volume acumulado está acima de 100% da média mensal.
l Primeira compra.
Tabela 26.4
Parametrizações efetuadas no simulador de gestão de crédito
x >=2000 Aprovado – –
Simulando
Hardwares
Cash Dispenser
XXXXXXX
Virtual
Devemos lembrar que os testes unitários devem ser executados antes dos
testes integrados. Dessa forma, precisamos avaliar se o software ATM está
interagindo adequadamente com todos os cenários possíveis, inclusive se
está tratando todas as possíveis respostas geradas pelo dispositivo físico
Cash Dispenser. Nos testes do desenvolvimento (unitário e integrado), esses
hardwares são substituídos por simuladores para aumentar o nível de efi-
ciência da automação dos testes a serem executados.
Testes do Desenvolvimento
AbrirGaveta() FecharGaveta()
<< Software >>
ATM
ExistemNotas()
Deseja sacar
qual quantia? << Software >>
IsMultiplo()
Cash Dispenser
XXXXXXX IsSuficiente() Virtual
Tabela 27.1
Parametrizações efetuadas no Cash Dispenser Virtual
Option Explicit
‘ Propriedades do Simulador
Public existem_notas As Boolean
‘ Métodos do Simulador
Public Function ExistemNotas( ) As Boolean
ExistemNotas = existem_notas
End Function
Alimenta Log de
Dados de AbrirGaveta() FecharGaveta()
Execução
Entrada
Dados de Compara
Saída
Criando um
Controlador de Testes
VlPercentual = 0
End Function
Casos Casos
deCasos Unidade deCasos
Testede Casos a ser Testede Casos
Teste de Testada Teste de
Teste Teste
Sem Bonificação
Salário = R$1.000,00
Idade = 35 anos
Noturno = Não
Bonificação Idade
Salário = R$1.000,00
Idade = 55 anos
Noturno = Não Unidade
a Ser
Bonificação Noturno Testada Saídas
Salário = R$1.000,00
Idade = 35 anos
Noturno = Sim
Tabela 28.1
Estruturação da massa de testes a ser aplicada no controlador
Sem Bonificação
Sem Bonificação
(Entradas)
Unidade (Saídas)
a Ser
Salário = R$1.000,00
Testada
Idade = 35 anos
Bonificação = R$0,00
Noturno = Não
Bonificação Idade
Bonificação Idade
(Entradas)
Unidade (Saídas)
a Ser
Salário = R$1.000,00
Testada
Idade = 55 anos
Bonificação = R$50,00
Noturno = Não
Log de
Execução
Dados
Geração Ok
de Entrada
Log de Execução Ok
1000;35;Não Alimenta
ERRO
1000;55;Não
Ok
1000;35;Sim
1000;55;Sim
Controlador Unidade
de Testes Executa a ser
da Unidade Testada
Dados de
Saída
0
50 Compara
100
150
Tabela 28.2
Estruturação do Log de execução gerado pelo controlador
With vlArquivoEntrada
vlSalario = Val(.Linhas(vlPosicaoLinha).Conteudos(1).conteudo)
vlIdade = Val(.Linhas(vlPosicaoLinha).Conteudos(2).conteudo)
vlNoturno = (.Linhas(vlPosicaoLinha).Conteudos(3).conteudo = “S”)
With vlArquivoSaida.Linhas(vlPosicaoLinha)
vlResultadoEsperado = Val(.texto)
End With
With vlArquivoLogExecucao.Linhas
Criando um Controlador de Testes
.NovaLinha prmTexto:="Ok"
Else
.NovaLinha prmTexto:="Erro"
End If
End With
Next
End With
vlArquivoLogExecucao.Salvar
vlArquivoEntrada.Fechar
vlArquivoSaida.Fechar
vlArquivoLogExecucao.Fechar
End Function
CAPÍTULO 29
Um Exemplo Real:
O Novo SPB
Mensagem 1 Mensagem 2
Instituição Instituição
Financeira Banco Financeira
“A” Resposta Central Resposta “B”
Figura 29.1 Dinâmica “real” das transações gerenciadas pelo Banco Central
Instituição
Financeira
“A”
Mensagem 1
Banco
Minha Central Instituição
Instituição Financeira
Financeira Resposta “B”
Ambiente
de Testes
Instituição
Financeira
“C”
Instituição
Financeira
“A”
Mensagem 1
Minha Instituição
Simulador
Instituição Resposta Financeira
Financeira
Bacen “B”
Instituição
Financeira
“C”
Figura 29.3 Dinâmica “simulada” das operações gerenciadas pelo Banco Central
Cabe lembrar que os testes como o SPB são algo definitivo, e sempre que
ocorrerem mudanças em sistemas da área financeira a troca de mensagens
pode ter sido comprometida, sendo adequado existir um método eficiente
que valide todas as combinações de negócios possíveis, o que justificaria um
considerável investimento financeiro para obtermos esse simulador.
Antes de iniciarmos um esforço de construção deste, vale a pena avaliar
se existe algum fornecedor de software que está disposto ou que já o cons-
truiu para uma outra instituição, o que reduziria os investimentos de tempo
e dinheiro a serem direcionados a essa atividade.
Índice de Figuras