Académique Documents
Professionnel Documents
Culture Documents
DE SOFTWARE
autor
MAYB FIATS
1ª edição
SESES
rio de janeiro 2016
Conselho editorial regiane burger; roberto paes; gladis linhares; karen bortoloti;
helcimara affonso de souza
Todos os direitos reservados. Nenhuma parte desta obra pode ser reproduzida ou transmitida
por quaisquer meios (eletrônico ou mecânico, incluindo fotocópia e gravação) ou arquivada em
qualquer sistema ou banco de dados sem permissão escrita da Editora. Copyright seses, 2016.
isbn: 978-85-5548-185-7
Prefácio 7
2. Testes de Verificação 33
3. Testes de Validação 55
4. Gerenciamento do Testware e
Gestão das Ferramentas de Apoio a Testes 79
Avaliação é uma palavra que tem sido muito utilizada ultimamente na área
da tecnologia de informação. E se pensarmos com cuidado isso faz todo o sen-
tido, uma vez que a cada dia que passa nós somos bombardeamos com novida-
des tecnológicas.
Com tanta novidade nos sendo apresentada e com tanta rapidez, não é de
espantar a necessidade de avaliação desses novos produtos. Vamos pensar, se
temos tantas tecnologias e produtos a disposição nós vamos querer escolher
sempre o MELHOR, e para isso se faz necessário escolhermos entre elas, deci-
dirmos o que é melhor para mim, para meu departamento, para minha empre-
sa, considerando muitos fatores.
Mas baseado em que eu posso realizar essa escolha?
Bom, aí entra essa nossa disciplina!!! Para poder escolher da melhor manei-
ra, para poder escolher com clareza e certeza eu preciso conhecer e, para adqui-
rir esse conhecimento se faz necessário estudar e AVALIAR seja um produto ou
processo de software!
Sejam muito bem vindos a esse assunto atual, interessante e que com certe-
za vai lhe ajudar a entender como funciona as técnicas de avaliação de softwa-
re, uma área que além de muito interessante é também bastante lucrativa para
seus profissionais.
Bons estudos!
7
1
Conceitos de
Qualidade Software
Neste capítulo estaremos definindo qualidade de software e vendo como se en-
contra o cenário atual do desenvolvimento de software, como é a realidade dos
projetos de software, além de diferenciar as dimensões da qualidade do proces-
so e do produto de software.
Comentaremos também sobre os custos relacionados à qualidade e a im-
plantação de um processo de qualidade. Aqui serão apresentados alguns fato-
res de insucesso do processo de qualidade.
Finalizaremos esse capítulo conceitualizando a atividade de testes.
OBJETIVOS
• Definir qualidade de software (produto e processo);
• Compreender a realidade dos projetos de software;
• Compreender os custos relacionados a qualidade;
• Entender o que são testes.
10 • capítulo 1
1.1 Definição de qualidade
A exigência por qualidade pode ser considerada o centro das atenções para o
desenvolvimento de software. Por exemplo, do ponto de vista dos fornecedores
de software, qualidade não é mais um fator de vantagem no mercado, mas uma
condição necessária e pode-se dizer indispensável para que seja possível com-
petir com sucesso.
Qualidade é um termo que pode ter diferentes interpretações e para se estu-
dar a qualidade de software de maneira efetiva é necessário, inicialmente, obter
um consenso em relação à definição de qualidade de software que está sendo
abordada. Existem muitas definições de qualidade de software propostas na
literatura, sob diferentes pontos de vistas, vejamos alguns:
• Qualidade de software é a conformidade a requisitos funcionais e de de-
sempenho que foram explicitamente declarados, a padrões de desenvolvimen-
to claramente documentados, e a características implícitas que são esperadas
de todo software desenvolvido por profissionais” [Pressman,2002].
• “Um produto de software apresenta qualidade dependendo do grau de sa-
tisfação das necessidades dos clientes sob todos os aspectos do produto”.
• Qualidade é a totalidade de características e critérios de um produto ou
serviço que exercem suas habilidades para satisfazer as necessidades declara-
das ou envolvidas “[ISO9126 1994].
• Qualidade é a totalidade das características de uma entidade, que lhe con-
fere a capacidade de satisfazer necessidades explícitas e implícitas [NBR ISO
8402, 1994].
Existe, ainda, uma visão de qualidade de software do ponto de vista gerencial, que diz
que o software que possa ser desenvolvido dentro do prazo e do orçamento especi-
ficados pode ser um software de alta qualidade. Isso demonstra que, ainda dentro da
qualidade de software, pode-se definir várias visões diferentes, como tem sido para a
definição da qualidade como um termo geral.
capítulo 1 • 11
De um modo geral, qualidade de software pode ser definida como:
Um conjunto de atributos de software que devem ser satisfeitos de modo
que o software atenda às necessidades do usuário (seja ele um usuário final,
um desenvolvedor ou uma organização), onde a determinação dos atributos re-
levantes para cada software varia em função:
• do domínio da aplicação
• das tecnologias utilizadas
• das características específicas do projeto
• das necessidades do usuário e da organização
12 • capítulo 1
1.2 Qualidade de produto x qualidade de
processo de software
• Boa fabricação.
• Deve durar muito.
• Bom desempenho.
• Adaptável às minhas necessidades específicas
• Fácil de usar.
• Sem defeitos, entre outros.
capítulo 1 • 13
CONEXÃO
Para compreender um pouco mais sobre nosso assunto, veja o link http://cbsoft2013.unb.
br/wp-content/uploads/2013/10/ST1-2.pdf, um excelente artigo para aumentar nossos
conhecimentos. Boa leitura!
14 • capítulo 1
Um processo de software pode ser definido como um conjunto de ativida-
des, métodos, práticas e transformações que as pessoas usam para desenvolver
e manter o software e os produtos associados (por exemplo: planos de projeto,
documentos, código, casos de teste e manuais de usuário) [IEEE-STD-610].
Um processo de software envolve um grande conjunto de elementos, tais
como objetivos organizacionais, políticas, pessoas, comprometimentos, ferra-
mentas, métodos, atividades de apoio e as tarefas da engenharia de software.
Para que o processo de software seja eficiente ele precisa ser constantemente
avaliado, medido e controlado. Quando as empresas não possuem conheci-
mento suficiente de todos os elementos do processo, essas atividades de ava-
liar, medir e controlar ficam difíceis de serem realizadas, nesse caso o processo
de software passa a ser descontrolado, sem gerência e até mesmo caótico.
Algumas características de processos de software caóticos são
[Pressman,2002].
• o processo é improvisado (profissionais e gerentes).
• o processo não é rigorosamente seguido e o cumprimento do mesmo não
é controlado.
• o processo é altamente dependente dos profissionais atuais.
• a visão do progresso e da qualidade do processo é baixa.
• a qualidade do produto decorrente do processo é comprometida em fun-
ção de prazos.
• Quando são impostas datas urgentes para entrega dos produtos, freqüen-
temente, a funcionalidade e a qualidade dos mesmos são comprometidas para
atender o cronograma.
• Não existe nenhuma base objetiva para julgar a qualidade do produto ou
para resolver problemas de processo ou de produto, portanto, a qualidade do
produto é difícil de ser prevista.
• As atividades ligadas à melhoria da qualidade, tais como revisões e testes,
freqüentemente são encurtadas ou eliminadas quando os projetos ultrapas-
sam o cronograma previsto.
capítulo 1 • 15
• O processo é aceito por todos os envolvidos nele (Aceitabilidade).
• Os erros do processo são descobertos antes que resultem em erros no pro-
duto (Confiabilidade).
• O processo evolui para atender alterações de necessidades organizacio-
nais (Manutenibilidade).
• O processo é compreendido (usualmente através de documentação e de
treinamento), utilizado, vivo e ativo.
• O processo é bem controlado – a fidelidade ao processo é objeto de audi-
toria e de controle.
• Medidas do produto e do processo são utilizadas.
• Os papéis e responsabilidades no processo estão claros ao longo de todo o
projeto e por toda a organização.
Bom pessoal, acredito que tenha ficado claro que para se alcançar os objeti-
vos de produtividade e qualidade é necessário que o processo de software seja
eficiente, definido, gerenciado, medido e controlado.
16 • capítulo 1
Fatores externos- ponto de vista do usuário:
capítulo 1 • 17
É uma característica relacionada à segurança de
dados, programas e documentos. Integridade é a ha-
INTEGRIDADE bilidade de proteger tais componentes contra acessos
não autorizados.
18 • capítulo 1
Monitoramento e desempenho dos resultados do proje-
CONTROLE DA to para determinar se ele está atendendo aos padrões
QUALIDADE de qualidade no processo de desenvolvimento .
É um processo contínuo.
capítulo 1 • 19
Vamos dar uma olhada na realidade e dificuldade do cenário de desenvolvi-
mento dos software observando a tabela 1.1 (Cenário atual de desenvolvimen-
to) e a seguir a figura 1.1 (Distribuição da conclusão dos projetos de software):
CÓDIFICAÇÃO E 50
TESTE DE UNIDADE
TESTE 10 10 50 1–5
VALIDAÇÃO E 10
DOCUMENTAÇÃO
MANUTENÇÃO 5 22 10 – 100
Sucesso Problemático
Fracasso
Na tabela 1.2, podemos perceber que são vários os fatores que podem preju-
dicar o sucesso de um projeto de software.
FATORES CRÍTICOS %
20 • capítulo 1
FATORES CRÍTICOS %
capítulo 1 • 21
1.6 Custo da qualidade
Como alguns costumam dizer: “Você pode fazer direito ou fazer novamente”
Se uma equipe de software enfatiza a qualidade em todas as atividades de
engenharia de software, reduz a quantidade de trabalho a ser refeito, resultan-
do em menores custos, e melhores prazos para colocação no mercado.
Os custos vão aumentando conforme os defeitos vão se propagando dentro
do processo de software.
Podemos dividir os custos da qualidade em dois:
22 • capítulo 1
Os custos de falhas poderiam desaparecer se nenhum defeito ocorresse an-
tes da entrega do produto para o cliente. Os custos de falhas podem ser dividi-
dos em: custos de falhas internas e custos de falhas externas.
Os custos de falhas internas incluem:
• retrabalho;
• conserto de bugs;
• análise de falhas.
capítulo 1 • 23
Vários estudos ao longo da história analisaram projetos de desenvolvimen-
to de software e apontaram os fatores que afetam a qualidade e produtividade
em projetos de software. Cada um dos estudos produziu resultados de grande
relevância, mas que podem ser combinados de modo a permitir uma análise
da sistêmica e correlação entre os fatores. Desse modo, se torna importante ter
uma definição clara dos fatores que afetam a produtividade, bem como uma
categorização de modo a permitir uma melhor identificação dos mesmos.
24 • capítulo 1
Fatores relacionados com a cultura organizacional:
Podemos ainda, citar alguns outros fatores, tão importantes quantos, que
são: a ausência de gerência de qualidade independente (muitas empresas não
criam uma área de qualidade de software), ausência de procedimentos de tes-
tes automatizados (é importante investir na automatização dos processos de
testes, uma vez que as interferências humanas fragilizam o modelo, sendo
considerada também extenuante, devido ao grande esforço de repetição que
muitos testes exigem, muitas vezes tornando a atividade inviável), qualidade
aplicada tardiamente no projeto (infelizmente, muitas empresas, insistem
em realizar os testes somente após a produção do software ou quando está
capítulo 1 • 25
parcialmente pronto), ausência de profissionais capacitados em qualidade (os
profissionais ligados as atividades de qualidade de software devem possuir a
metodologia totalmente desenhada para atender seu objetivo, que é encontrar
falhas em todos o ciclo de desenvolvimento do projeto de software de forma
a avaliar a solidez do produto desenvolvido), falta de um modelo corporativo
de qualidade (normalmente, a falta de uma gerência de qualidade de software
nas organizações faz com que cada projeto adote uma forma de estruturar o
processo de qualidade de software), deficiência no planejamento dos testes (o
correto planejamento dos testes é um exercício mental que produz uma visão
de como resolver um conjunto de situações, antecipando os passos de realiza-
ção dos testes. Através do estudo do problema analisamos as soluções, opera-
cionalizamos uma sequencia de atividades e prevemos eventuais riscos e insu-
cessos), sob pressão, os testes são sacrificados (é muito comum que os prazos
de entrega de um software sejam maiores do que o prazo planejado e os custos
ultrapassarem o orçado. Nestes casos, normalmente algumas etapas são sacri-
ficadas e, normalmente essas etapas são a modelagem, estruturação da solução
e testes. As fases não são totalmente sacrificadas, mas reduzidas), ausência de
uma ambiente isolado de testes (o processo de validação de um software exige
um ambiente exclusivo de testes, isolado de qualquer interferência dos demais
ambientes de desenvolvimento e produção. A interferência pode comprometer
a qualidade dos testes, bem como a confiabilidade das informações e proces-
sos executados. Este isolamento garante que nenhuma atividade externa preju-
dicará a execução dos procedimentos de testes, aumentando o nível de eficiên-
cia dos trabalhos), transferir o planejamento ao analista de sistemas (somente
o analista de testes tem a percepção
26 • capítulo 1
da confiabilidade do software em complemento a outras atividades, como por
exemplo o uso de revisões e de técnicas formais e rigorosas de especificação e
de verificação.
A atividade de teste consiste de uma análise dinâmica do produto e é uma
atividade relevante para a identificação e eliminação de erros que persistem.
Do ponto de vista de qualidade do processo, o teste sistemático é uma ativi-
dade fundamental para a ascensão ao Nível 3 do Modelo CMM do Software
Engineering Institute — SEI. Ainda, o conjunto de informação oriundo da
atividade de teste é significativo para as atividades de depuração, manuten-
ção e estimativa de confiabilidade de software. Salienta-se que a atividade de
teste tem sido apontada como uma das mais onerosas no desenvolvimento de
software. Apesar deste fato, Myers observa que aparentemente conhece-se mui-
to menos sobre teste de software do que sobre outros aspectos e/ou atividades
do desenvolvimento de software.
Antes de iniciarmos uma discussão mais aprofundada sobre testes de
software precisamos esclarecer alguns conceitos relacionados a essa ativi-
dade. Inicialmente, precisamos conhecer a diferença entre Defeitos, Erros
e Falhas. As definições que iremos usar aqui seguem a terminologia padrão
para Engenharia de Software do IEEE – Institute of Electrical and Electronics
Engineers – (IEEE 610, 1990).
capítulo 1 • 27
A figura 1.2 expressa a diferença entre esses conceitos. Defeitos fazem parte
do universo físico (a aplicação propriamente dita) e são causados por pessoas,
por exemplo, através do mal uso de uma tecnologia. Defeitos podem ocasionar
a manifestação de erros em um produto, ou seja, a construção de um software
de forma diferente ao que foi especificado (universo de informação). Por fim, os
erros geram falhas, que são comportamentos inesperados em um software que
afetam diretamente o usuário final da aplicação (universo do usuário) e pode
inviabilizar a utilização de um software.
Falha
Defeito Erro
Universo físico
Universo da informação
Universo do usuário
28 • capítulo 1
software: os requisitos expressos pelo cliente são relatados textualmente em um
documento de especificação de requisitos. Esse documento é então transforma-
do em casos de uso, que por sua vez foi o artefato de entrada para o projeto do soft-
ware e definição de sua arquitetura utilizando diagramas de classes da UML. Em
seguida, esses modelos de projetos foram usados para a construção do software
em uma linguagem que não segue o paradigma orientado a objetos. Observe que
durante esse período uma série de transformações foi realizada até chegarmos
ao produto final. Nesse meio tempo, defeitos podem ter sido inseridos.
A figura 1.3 expressa exatamente a metáfora discutida nesse parágrafo.
Para que a etapa de testes aconteça de forma correta é necessário tomar al-
guns cuidados, tais como:
• Planejar o tipo de teste a ser realizado,
• Planejar detalhes de cada atividade,
• Definir todo o procedimento de testes,
• Definir quais são os resultados esperados,
capítulo 1 • 29
• Avaliar resultados obtidos (Obtido x Esperado),
• Melhoramento Contínuo do Processo, redefinindo técnicas e a confiabi-
lidade prevista, através de melhoria em normas, políticas, procedimentos e fer-
ramentas de testagem.
Processo de Teste:
• Descrição de cada fase do Teste (Estratégia).
Rastreabilidade de Requisitos:
• Planejamento de teste para cada requisito.
Cronograma:
• Além do Tempo, Matriz de Alocação de Recursos x Atividades-Fases
Engenharia de Software .
Procedimentos de Registro:
• Definição das Métricas e Padronização dos mecanismos de registro de re-
sultados, para que o processo de teste possa ser medido.
30 • capítulo 1
ATIVIDADES
01. Defina qualidade de software.
REFLEXÃO
Neste capítulo pudemos conhecer um pouco mais sobre o assunto qualidade de software,
entendendo a sua importância.
Com a grande demanda para softwares em todas as áreas e, com a pessoas cada vez mais
exigentes, a qualidade é fator crucial para que empresas de desenvolvimento de software não
fechem suas portas e possam continuar competindo nesse mercado cada vez mais acelerado.
A qualidade de software pode ser subdividida em qualidade de produto e qualidade de
processo, sendo as duas extremamente importantes e relacionadas. A qualidade de produto
está diretamente relacionada ao produto final e a qualidade de processo está relacionada a
maturidade do processo de software. Costumamos dizer que quanto mais maduro é o pro-
cesso melhor qualidade ele possui e, que quanto mais imaturo é o processo maior é o caos
do mesmo. O essencial em uma empresa de desenvolvimento de software é que esses dois
conceitos andem de mãos dadas, um completando o outro.
Analisamos nesse capítulo também que a qualidade tem um custo para as empresas e,
que, no cenário atual de software muitas empresas que buscam pela qualidade encontram
várias dificuldades, mas que no final elas compensam e acabam agregando muito valor aos
produtos, processos e também para a empresa.
Finalizamos nosso capítulo dando destaque a atividade de teste de software, uma ativi-
dade que consiste de uma análise dinâmica do produto e que é uma atividade relevante para
a identificação e eliminação de erros que persistem. Vimos a importância de se diferenciar
capítulo 1 • 31
erros, defeitos e falhas e que, quanto mais demoramos para identificá-los mais prejudicamos
e aumentamos os custos do software.
LEITURA
Uma experiência na implantação de processo de software em uma fábrica de
software livre. Disponível em: <http://www.cin.ufpe.br/~in953/publications/papers/
UmaExperienciaNaImplantacaoDeProcessoEmUmaFabricaDeSoftwareLivre.pdf>.
Introdução a Qualidade de Software. Disponível em: <http://www.ufpa.br/srbo/
Disciplinas/TecnologiaProcessosSoftware/Aulas/Qualidade.pdf>.
Qualidade de software: visão geral. Disponível em: <file:///C:/Users/Mayb/
Downloads/Aula03_QualidadeSoftware.pdf>.
REFERÊNCIAS BIBLIOGRÁFICAS
NBR ISO/IEC 9126-1: Engenharia de Software – Qualidade de produto – Parte 1: Modelo de
qualidade. Rio de Janeiro: ABNT, 2003.
PRESSMAN, Roger S. Engenharia de Software. Rio de Janeiro: MacGraw Hill, 2006.
ROCHA, ANA REGINA CAVALCANTI; MALDONADO, JOSÉ CARLOS; WEBER, KIVAL CHAVES.
Qualidade de Software – Teoria e Prática. 1 ed. São Paulo: Prentice Hall, 2001.
SANCHES, ROSELY. Material Didático: Qualidade de Software. ICMC-USP, 2003.
SANCHES, ROSELY; FABBRI, SANDRA PINTO; MALDONADO, JOSÉ CARLOS. Qualidade de
Software: da engenharia de software aos modelos de qualidade. VI Escola Regional de Informática,
SBC, 2003.
SOMERVILLE, IAN. Engenharia de Software. 6 ed. São Paulo: Addison Wesley, 2003.
32 • capítulo 1
2
Testes de
Verificação
No capítulo anterior vimos os conceitos de qualidade de software e percebemos
que o mesmo é extremamente importante, visto que, com a grande demanda
de software, os clientes encontram-se cada vez mais exigentes e o mercado cada
dia mais competitivo.
Apesar da necessidade da qualidade nos softwares, garantir isso nem sem-
pre é uma tarefa fácil para as empresas desenvolvedoras de software, uma vez
que envolve muitas atividades, dentre elas a atividade de testes.
A atividade de teste constitui uma anomalia interessante para o engenhei-
ro de software. Durante as fases de definição e desenvolvimento anteriores, o
engenheiro tenta construir o software, partindo de um conceito abstrato para
uma implementação tangível. Agora, surge a fase de testes. O engenheiro cria
uma série de casos de teste que tem a intenção de “demolir”o software que
ele construiu.
A atividade de teste deve promover culpa?
A atividade de testes é realmente destrutiva?
A reposta a essas perguntas é “Não!”.
Vamos, agora, nesse capítulo aprender um pouco mais sobre os conceitos
de testes de verificação.
OBJETIVOS
• Compreender os conceitos de testes de verificação;
• Compreender e analisar os métodos estruturados de verificação;
• revisões isoladas;
• revisões técnicas formais;
• auditorias;
• Aprender quais são as funções de um auditor;
• Descrever as diferentes verificações: verificações de negócios, de requisitos, de análise e
modelagem e a verificação na implementação.
34 • capítulo 2
2.1 Conceitos de testes de verificação
Muitos software possuem restrições de qualidade e confiabilidade, lembrando
que a qualidade do software pode ser definida pela satisfação dos requisitos
funcionais, de desempenho e normas explicitamente declarados.
Estima-se que 40% a 50% do esforço de desenvolvimento de sistemas são
empregados em atividades de verificação e validação.
Embora verificação e validação de software, em primeiro momento pareça
ser a mesma coisa, não são. De acordo com a (IEEE 1012), a validação está re-
lacionado ao fato de estarmos construindo o produto certo. Se o software faz o
que o usuário requisitou. Já a verificação está relacionada ao fato de estarmos
construindo o produto corretamente. Se o software está de acordo com sua es-
pecificação'' Verificação e Validação (V&V) é o nome dado aos processos de veri-
ficação e análise que asseguram que o software cumpra com as suas especifica-
ções e atenda às necessidades dos clientes que estão pagando por ele.
É um processo do ciclo de vida. Inclui:
• Revisões dos requisitos
• Revisões de projeto
• Inspeções de código
• Testes do produto
capítulo 2 • 35
É importante lembrar que enquanto as inspeções são empregadas em todos
os estágios do processo de software, os testes são utilizados somente quando
um protótipo ou um programa estiver disponível.
2.2.1 Revisões
De acordo com SEI CMM (3-1.5, 1988) "um processo de revisão pode ser defini-
do como uma avaliação crítica de um objeto[...] assim walkthroughs, inspeções
e auditorias podem ser visualizados como formas de processos de revisão."
As revisões são métodos de validação de qualidade de um processo ou pro-
duto amplamente usado pela equipe técnica do projeto. São consideradas
como verdadeiros “filtros” de erros e inconsistências no processo de desenvol-
vimento de software.
A atividade de revisão começou como uma ferramenta de controle gerencial
– Revisão de progresso, onde o progresso não pode ser avaliado simplesmente
contando-se o número de tarefas finalizadas.
Era preciso estabelecer um meio de avaliar também a qualidade do tra-
balho executado, surgiram então as revisões que avaliam aspectos técnicos
do produto.
Qualquer produto pode ser submetido a uma revisão aplicada desde as pri-
meiras fases do ciclo de vida. As revisões devem ser fomais e também informais.
Deve sempre ser realizado um planejamento para a realização das revisões
de software.Cabe ao engenheiro de software planejar:
• o que deve ser revisado
• quais os resultados esperados
• quem deve fazer a revisão
• determinar “checkpoints” dentro do ciclo de vida onde a revisão deve
ser aplicada
• determinar resultados esperados.
36 • capítulo 2
Algumas informações importantes no planejamento das revisões são:
• quem participa?
• qual informação é requerida antes da revisão?
• quais pré-condições que devem ser satisfeitas antes que a revisão possa
ser conduzida?
• Como Organizar?
• Gerar checklists ou outra indicação do que deve ser coberto na revisão;
• Determinar as condições de término ou critérios que devem ser satisfei-
tos para que a revisão termine;
• Gerar registros e documentos que devem ser produzidos.
capítulo 2 • 37
• na fase de divulgação dos documentos, a revisão normalmente envolve o
autor e o grupo de acompanhamento e, aqui, normalmente utiliza-se a reunião
de acompanhamento.
a) Revisões isoladas:
Apesar de pouco explorado, esse método de verificação é muito eficiente na
detecção prematura de erros de definições e soluções registradas.
O principal objetivo das revisões isoladas é poder antecipar a revisão de do-
cumentos, entregando versões de documentos ainda não acabados, para que
possam ser analisados os tópicos já abordados. São realizadas validações par-
ciais do documento em questão. Desta forma possibilita correções nos docu-
mentos durante ainda a sua fase de concepção.
Como o próprio nome diz, nesse caso, a ação dos revisores é isolada , sen-
do normalmente utilizado um único revisor, o qual irá propor as modifica-
ções necessárias.
Porém, nem tudo são flores, e essa técnica possui um grande problema!
Você é capaz de imaginar qual é?
Se você pensou na possível diferença de visão do autor e do revisor você acer-
tou em cheio!
O autor pode ter uma visão de conjunto mais apurada que o revisor, já que a
utilização de um único revisor poderá propor mudanças que prejudiquem uma
visão integrada do problema!
38 • capítulo 2
• garantir que o software tenha sido representado de acordo com pa-
drões predefinidos;
• conseguir software que seja desenvolvido de modo uniforme;
• tornar os projetos mais administráveis.
A Reunião de Revisão
capítulo 2 • 39
Cada reunião de revisão deve atender às seguintes restrições:
• entre três e cinco pessoas (em geral) devem ser envolvidas na revisão.
Preparativos devem ser feitos, os quais não devem exigir mais de duas horas de
trabalho de cada pessoa;
• a duração da reunião de revisão deve ser inferior a duas horas;
• à vista dessas restrições, fica óbvio que uma FTR focaliza uma parte espe-
cífica (e pequena) de todo o software.
40 • capítulo 2
A Reunião da Revisão de Software
líder
Aceita o
de
Discussão Geral Produto sem
revisão
modificação
Breve Introdução
de produto Rejeita o produto
desenvolvedor Explicação do devido a erros
material graves
Comentários
Problemas
Registrados aceita o produto
provisoriamente
revisores secretária
capítulo 2 • 41
• limite o debate e a refutação: quando uma questão é levantada por um
revisor, talvez não uma haja uma concordância universal sobre o seu impacto.
Em vez de perder tempo debatendo a questão, o assunto deve ser registrado
para posterior discussão off-line.
• enuncie as áreas problemáticas, mas não tende resolver cada problema
anotado: a revisão não é uma sessão de resolução de problemas. A resolução
dos problemas deve ser postergada para depois do encontro da revisão.
• faça anotações por escrito: as vezes é uma boa idéia que o secretário faça
anotações numa lousa, de forma que a redação e a determinação de prioridades
possam ser avaliadas por outros revisores quando a informação for registrada.
• limite o número de participantes e insista numa preparação antecipa-
da: mantenha o número de pessoas envolvidas ao mínimo necessário. Todos
os membros da equipe de revisão devem preparar-se antecipadamente.
Comentários escritos devem ser solicitados pelo líder de revisão.
• desenvolva uma lista de conferência (cheklist) para cada produto que pro-
vavelmente será revisto: uma lista de conferência ajuda o líder de revisão a estru-
turar o encontro e ajuda cada revisor a se concentrar em questões importantes.
• atribua recursos e uma programação de tempo para as TFRs: para que
as revisões sejam efetivas, elas devem ser programadas como tarefas durante
o processo de engenharia de software. Além disso, deve-se programar tempo
para as inevitáveis modificações que ocorrerão como resultado de uma FTR.
• realize um treinamento significativo para todos os revisores: o treinamen-
to deve destacar tanto as questões relacionadas a processos como o lado psico-
lógico humano das revisões.
• reveja suas antigas revisões: o produto prioritário a ser revisado poderiam
ser as próprias diretrizes da revisão.
2.2.2 Auditorias
42 • capítulo 2
Na auditoria, a pessoa ou organização que passará pelo processo de audito-
ria denomina-se auditado. Para a realização da auditoria é necessário um Plano
da Auditoria, o qual descreve as atividades e arranjos para uma auditoria.
A auditoria é caracterizada pela confiança em princípios como:
• Conduta ética: O fundamento do profissionalismo (Confiança, integrida-
de, descrição e confidencialidade são essenciais para auditar).
• Apresentação Justa: a obrigação de reportar com veracidade e exatidão. A
conclusão de uma auditoria reflete verdadeiramente e com precisão as ativida-
des da auditoria.
• Devido cuidado profissional: Cuidado necessário considerando a impor-
tância da atividade e a confiança depositada.
• Independência: Auditores devem ser independentes da atividade a ser au-
ditada e são livres de conflito de interesse e tendência.
• Abordagem baseada em evidência: Evidência de Auditoria é Verificável.
capítulo 2 • 43
• As auditorias devem ter um cronograma atualizado e sendo executadas
com frequência. Ex: mensal: Cada mês focar em uma área especifica. A fre-
qüência pode variar por projeto ou organização.
• Utilizar uma análise de risco para poder atualizar o cronograma.
• Um cronograma de auditoria é conhecido pelos membros do projeto.
44 • capítulo 2
Finalização:
• Com base nas informações coletadas na auditoria, bem como evidências
coletadas, o auditor deve verificar junto aos processos, procedimentos e pa-
drões da organização, se são caracterizadas não-conformidades.
• Diferenciar FATO de INFERÊNCIA.
• As oportunidades de melhoria são identificadas.
• As boas práticas são identificadas.
• Tendo relacionado as não-conformidades, oportunidades de melhoria e
boas práticas, o auditor deve verificar sua coerência com os auditados.
• O auditor deve criar um relatório contendo as informações da auditoria e
para cada não-conformidade deve ser apresentada: uma ação de correção, data
para conclusão e o responsável pela ação.
• Após o relatório finalizado, o mesmo deve ser apresentado, para que to-
dos fiquem cientes do resultado da auditoria.
• As não-conformidades devem ser acompanhadas até o seu fechamento.
• Caso as datas não sejam cumpridas, deve ser um utilizado um critério de
escalação, até que a não-conformidade seja finalizada.
• O relatório de auditoria deve estar em um repositório com controle
de versão.
capítulo 2 • 45
• O auditor deve utilizar palavras de questionamentos como: Como?, O
que?, Quando?, Quem?, Onde?, Por que? e Mostre-me (Evidência),
• Estar bem preparado para realizar a auditoria,
• Tentar prever o máximo de situações possíveis,
• Evitar surpresas ao auditado,
• Esclarecer todas as dúvidas sobre uma nãoconformidade,
• Buscar objetividade e fatos concretos (Evidências),
• Não atacar pessoas e sim fatos concretos,
• Motivar a identificação de melhorias,
• Persuadir, não impor,
• O auditor não deve relacionar pessoas à não-conformidades
ou deficiências,
• Ser flexível quando necessário e,
• Ser imparcial e objetivo para obtenção dos fatos.
46 • capítulo 2
2.3 Aplicação e checklist na verificação
Durante o desenvolvimento de software muitos documentos são gerados. Rea-
lizarmos verificações para analisarmos esses documentos em cada uma das
etapas do desenvolvimento de software é extremamente importante, para ga-
rantirmos que problemas não sejam migrados para fases seguintes.
Você se lembra do que comentamos anteriormente?
Dentro do desenvolvimento de software, quanto antes descobrirmos os pro-
blemas melhor! Um probleminha não descoberto no início pode ser um pro-
blemão lá no final!
Durante a verificação um checklist pode ser útil. Um checklist contem um
roteiro de possíveis erros:
Defeitos de controle
• As condições estão corretas?
• Todos os loops estão certos de terminar?
• Os parênteses estão corretos nas condições compostas?
• Num case todas as alternativas estão declaradas?
Defeitos de Entrada/saída
• Todas as variáveis de entrada são utilizadas?
• Todas as variáveis de saída têm um valor designado antes de saírem?
• Entradas inesperadas podem corromper os dados?
Defeitos de interface
• Todas as chamadas de funções e métodos têm o número correto
de parâmetros?
• Os tipos de parâmetros combinam?
• Os parâmetros estão na ordem certa?
capítulo 2 • 47
• Se componentes acessam memória compartilhada, eles têm a mesma es-
trutura de memória compartilhada?
48 • capítulo 2
O objetivo dessa fase é garantir a qualidade do código-
fonte gerado pela equipe de desenvolvimento. Essa
VERIFICAÇÃO NA qualidade é atribuída pela prática das regras da boa
IMPLEMENTAÇÃO programação. É um processo formal de verificação do
código produzido.
capítulo 2 • 49
problemas atuais, buscar alternativas para minimizar ou resolver esses proble-
mas e, de forma geral, otimizar os processos de negócios para elicitação de bons
requisitos de software, atendendo ou até mesmo superando as expectativas.
O modelo de negócios, como o próprio nome diz, modela as atividades e
estabelece uma macrovisão, identifica as expectativas e exigência dos clientes,
estima os prazos e custos.
Nessa fase, a verificação de negócios é realizada com o objetivo de verificar
a aderência do modelo de negócios com a macrovisão, verificar as expectati-
vas e exigências do projeto e também para verificar se projeções foram realiza-
das criteriosamente.
O principal objetivo dessa fase é garantir que os documentos produzidos
tenham aderência às necessidades apontadas pelos clientes. É extremamen-
te importante realizar a revisão destes documentos juntamente com o pró-
prio cliente.
A tabela 2.1 apresenta os principais produtos e as principais atividades des-
sa fase:
Revisar contextos do
Modelo de negócios mercado e necessidade
do cliente.
Revisar o estudo de
Estudo de viabilidade
viabilidade do projeto.
50 • capítulo 2
Como já vimos anteriormente, um checklist é um instrumento importante
para auxiliar os revisores e auditores no processo de verificação. A tabela 2.2
apresenta um exemplo de checklist do modelo de negócios:
capítulo 2 • 51
Nessa fase deve-se lidar com diferentes pontos de vista e usar uma combina-
ção de métodos, ferramentas e pessoas.
O produto desta fase é um modelo do qual se produz um documento cha-
mado documento de requisitos. O Documento de Requisitos de um software
contém todos os requisitos funcionais e de qualidade do software, incluindo
as capacidades do produto, os recursos disponíveis, os benefícios e os critérios
de aceitação. Esse documento serve como um meio de comunicação entre o
engenheiro de software e o usuário, a fim de estabelecer um “acordo” acerca do
software pretendido. Deve-se evitar que durante o desenvolvimento do
Documento de Requisitos decisões de projeto sejam tomadas.
CONEXÃO
Os requisitos funcionais do documento de requisitos são definidos pelo cliente, será ele
quem definirá esses requisitos e discutirá os mesmo com a equipe de desenvolvimento.
Já os requisitos não funcionais (ou requisitos de qualidade) são normalmente definidos
utilizando uma norma de qualidade de software, tal como a NORMA ISO 9126 (que apresen-
taremos no capítulo3).
Veja as características dessa norma acessando o artigo:
Guia para utilização das normas sobre avaliação de qualidade de produto de software-
ISO/IEC 9126 e ISO/IEC 14598
Disponível em: <http://www2.dem.inpe.br/ijar/GuiaUtilNormTec.pdf>.
52 • capítulo 2
A verificação na fase de análise e modelagem tem como principais objetivos:
• verificar a consistência da arquitetura da solução,
• verificar a aderência dos requisitos funcionais e não funcionais com
a solução.
ATIVIDADES
01. O que vem a ser auditoria de software? Quais são as suas etapas?
REFLEXÃO
Nesse capítulo pudemos observar mais detalhadamente a atividade de teste de verificação.
Vimos que embora muitos considerem os testes uma atividade destrutiva, ela não deve
ser encarada dessa maneira e sim, como uma atividade a mais na busca pela qualidade
do software.
capítulo 2 • 53
Pudemos ver a grande importância de realizarmos adequadamente as tarefas de revi-
sões e de auditoria nos testes de verificação e, finalizamos vendo os principais objetivos das
verificações nas etapas de negócio, de requisitos, de análise, modelagem e na verificação do
processo de desenvolvimento de software.
LEITURA
Introdução ao teste de software. Disponível em: <http://www.icmc.usp.br/CMS/Arqui-
vos/arquivos_enviados/BIBLIOTECA_113_ND_65.pdf>.
Ferramentas para auditoria de sistemas e suas vantagens. Disponível em: <http://
www.cnasi.com.br/ferramentas-para-auditoria-de-sistemas-e-suas-vantagens/>.
REFERÊNCIAS BIBLIOGRÁFICAS
PRESSMAN, Roger S. Engenharia de Software, 6 ed. Editora MCGrawHill: Porto Alegre, 2010.
SOMERVILLE, IAN. Engenharia de Software. 6 ed. São Paulo: Addison Wesley, 2003.
NBR ISO/IEC 9126-1: Engenharia de Software – Qualidade de produto – Parte 1: Modelo de
qualidade. Rio de Janeiro: ABNT, 2003.
ISO/IEC 9126. International Standard. Information Technology. Software Product
Evaluation. Quality characteristics and guidelines for their use. Geneve, 1991.
BARTIÉ, Alexandre. Garantia da qualidade de software. Rio de Janeiro: Campus, 2002.
54 • capítulo 2
3
Testes de
Validação
O processo de qualidade de software está decomposto em fases. Cada fase tem
uma sequência de execução dos testes a serem aplicados. Os testes de verifica-
ção visam garantir o processo de engenharia de software, enquanto os testes
de validação estão focados na garantia da qualidade do produto de software.
Testes de verificação e validação são complementares. Em hipótese alguma,
estes deverão ser encarados como atividades redundantes. Tanto um quanto
o outro possui naturezas e objetivos distintos, fortalecendo o processo de de-
tecção de erros e aumentando a qualidade final do produto. Um bom processo
de qualidade de software deverá potencializar essas duas formas de testes de
modo que os esforços sejam minimizados e os resultados sejam os mais posi-
tivos possíveis.
OBJETIVOS
• Compreender o conceito de teste de validação;
• Compreender as estratégias de testes (testes de caixa branca e testes de caixa preta)
além das abordagens dos testes ( testes baseados na estrutura interna e testes baseados
nos requisitos);
• Estudar as categorias dos testes de validação;
• Compreender cada um dos métodos estruturados de testes e;
• Analisar as Fases da Validação para um melhor entendimento do tema.
56 • capítulo 3
3.1 Teste de validação
É muito complicado inspecionar um sistema inteiro, composto por vários sub-
sistemas. Os testes são a única técnica viável no nível de sistema.
Os testes, além de localizar erros, também são necessários para determinar
a confiabilidade, o desempenho e para validar a interface com o usuário.
O teste de validação tem o seu foco na aplicação, uma vez que já existe um
produto computacional. Seu principal objetivo é identificar o maior número
possível de erros. O sucesso desse teste está apoiada no forte planejamento de
todas as atividades de teste.
É um processo formal de avaliação de produtos tecnológicos que podem ser
aplicados em componentes isolados, em módulos existentes ou mesmo à tota-
lidade do sistema.
O seu principal objetivo é avaliar a conformidade do software com os requi-
sitos e especificações analisadas e revisadas nas etapas iniciais do projeto.
Estratégias de teste
A estratégia define:
capítulo 3 • 57
Algumas organizações possuem estratégias de teste corporativas definidas.
Nesse caso, é necessário essas estratégias especificamente ao projeto.
É necessário planejar as atividades de teste com base nas seguin-
tes dimensões:
58 • capítulo 3
3.1.1 Testes de caixa branca
capítulo 3 • 59
Esse tipo de teste reflete, de certa forma, a óptica do usuário, que está inte-
ressado em se servir do programa sem considerar os detalhes de sua constru-
ção. Comparando a outros tipos de teste, este é relativamente mais simples.
60 • capítulo 3
3.2 Abordagens dos testes
Abordagens de teste dizem respeito à profundidade da análise a ser realizada.
Em outras palavras, a abordagem de um teste define se o que interessa são ape-
nas as respostas geradas pelo item em teste ou se o seu comportamento interno
também deve ser levado em conta.
Segundo Bartié (2002), o direcionamento dos testes baseia-se exclusiva-
mente em requisitos da solução tecnológica a ser desenvolvida (teste de caixa
preta) ou na estrutura interna do código-fonte a ser desenvolvido (teste de cai-
xa branca).
A figura 3.1 mostra essas abordagens dos testes.
capítulo 3 • 61
3.2.2 Testes baseados nos requisitos
62 • capítulo 3
diversos cenários existentes para cada requisito de negócio. A principal caracte-
rística desta categoria de testes é o grande foco nos negócios, com isso, garante-
se que não exista diferença entre os requisitos funcionais e o comportamento
do software construído. Esta categoria cobre as seguintes situações: pré-condi-
ções de uma transação; o fluxo de dados de uma transação de negócios; o 32 ce-
nário primário de uma transação de negócios; os cenários alternativos de uma
transação de negócios; os cenários de exceção de uma transação de negócios; e
as póscondições de uma transação de negócios.
b) Testes de Usabilidade. Para Rios e Moreira (2003), os testes de usabi-
lidade têm como meta simular as condições de uso da aplicação sob a pers-
pectiva do usuário. Sendo assim, este tipo de teste tem como foco verificar a
facilidade de navegação entre as telas da aplicação, a clareza dos textos e das
mensagens apresentadas ao usuário, o volume reduzido de interações para rea-
lizar uma determinada função, o padrão visual e etc. Esta categoria de testes
pode ser realizada da seguinte forma: avaliar a facilidade de navegação entre as
telas da aplicação; realizar operações e desfazê-las; realizar operações inválidas
e avaliar as mensagens de alerta; avaliar quantos passos são necessários para
executar as principais operações; verificar a existência de ajuda em todas as te-
las; e verificar se as informações presentes nos manuais de ajuda são coerentes.
c) Testes de Carga. Conforme Bastos (2006), os testes de carga servem ba-
sicamente para avaliar como uma aplicação e toda sua infraestrutura se com-
portam quando se aplica um volume de transações superiores aos volumes
máximos previstos para esta aplicação e quando se aplica variações bruscas de
transações. Este tipo de teste pode ser executado da seguinte forma: aumentan-
do e diminuindo sucessivamente a quantidade de transações simultâneas; au-
mentando e diminuindo o tráfego de rede; aumentando a quantidade de usuá-
rios simultâneos; e realizando uma combinação de todos estes itens anteriores.
d) Testes de Volume. Segundo Bartié (2002), os testes de volume são carac-
terizados por determinar os limites de processamento e a carga da aplicação e
de toda a sua infra-estrutura. Este tipo de teste é conduzido de forma contínua,
aumentando o volume das operações realizadas com a aplicação, até que se
atinja o limite máximo. O objetivo deste teste é conhecer os limites da solução
e avaliar se estão de acordo com as especificações. Para a realização deste teste
pode-se: aumentar constantemente o volume de transações; aumentar 33 cons-
tantemente o volume de consultas; e aumentar constantemente o tamanho dos
arquivos a serem processados.
capítulo 3 • 63
e) Testes de Configuração. Para Molinari (2006), esta categoria de tes-
tes tem por finalidade executar o software sobre inúmeras configurações de
software e de hardware. A meta deste teste é garantir que a solução funcione
corretamente sobre os diversos ambientes previstos nas fases de levantamento
de requisitos. A execução deste teste pode ser da seguinte forma: variando os
sistemas operacionais; variando os hardwares; e combinando as variações cita-
das anteriormente.
f) Testes de Compatibilidade. A respeito dos testes de compatibilidade,
Bartié (2002) afirma que esta categoria tem por finalidade executar a aplicação
interagindo com as versões anteriores de outras aplicações ou dispositivos físi-
cos. O objetivo deste teste é garantir que as novas versões de um software estão
suportando antigas versões. Pode ser testado do seguinte modo: realizando a
importação de dados gerados pela versão anterior; e realizando a comunicação
com todas as versões de layout.
g) Testes de Segurança. Segundo Rios e Moreira Filho (2003), este tipo de
teste tem como objetivo encontrar as falhas de segurança que podem compro-
meter a confidencialidade e a integridade das informações, provocar perdas de
dados ou interrupções de processamento. Este tipo de teste pode ser executa-
do da seguinte maneira: validar todos os requisitos de segurança identificados;
tentar acessar funcionalidades que requerem determinados perfis; tentar inva-
dir/derrubar o servidor de dados; e tentar extrair backups de informações e etc.
h) Testes de Desempenho. Conforme Bastos et al (2006), esta categoria de
testes tem por finalidade determinar se o desempenho da aplicação está coe-
rente com os requisitos definidos, quando se obtém situações em que o pico
máximo de acesso e concorrência é atingido. Para se executar este tipo de teste,
pode-se: validar todos os requisitos de desempenho 34 identificados; simular
vários usuários acessando a mesma informação de forma simultânea; simular
vários usuários processando a mesma transação de forma simultânea; simu-
lar percentagem de tráfego de rede; e combinar todos os itens apresentados
anteriormente.
i) Testes de Confiabilidade e Disponibilidade. Para Rios e Moreira Filho
(2003), a principal característica deste teste é monitorar uma aplicação por um
determinado tempo e avaliar o nível de confiabilidade da arquitetura da solu-
ção. Este tipo de teste pode ser executado da seguinte maneira: monitorando
a execução da aplicação; identificando todas as interrupções do ambiente; e
identificando o tempo de interrupção do ambiente.
64 • capítulo 3
j) Testes de Recuperação. Os testes de recuperação, segundo Bartié
(2002), tem por finalidade avaliar o comportamento da aplicação após a ocor-
rência de um erro e verificar sua recuperação. Esses testes podem ser realizados
da seguinte forma: interrompendo o acesso à rede por alguns instantes e por
um longo período; interrompendo o processamento, desligando o micro e o
servidor; e gerando arquivos e posteriormente cancelando o processamento.
k) Testes de Instalação. O teste de instalação tem como objetivo validar o
procedimento de instalação da aplicação, de forma que esta atenda a todas as
necessidades apresentadas nos requisitos. É recomendado que este teste seja
realizado pelo próprio usuário (BASTOS et al, 2006).
l) Teste de Regressão. Conforme BSTQB (2007), o teste de regressão é o
teste repetido de um programa que sofreu alguma mudança após uma etapa de
testes, tem como objetivo descobrir a existência de algum defeito introduzido
ou não identificado originalmente como resultado da mudança, sendo realiza-
do quando o software ou o ambiente são modificados. BSTQB (2007) ainda defi-
ne que este tipo de teste pode ser realizado em todos os níveis de teste, podendo
ser aplicado aos testes funcionais, não funcionais e estruturais. Os testes de
regressão são executados muitas vezes, por esta razão deve ser automatizado.
35 De acordo com Pressman (2006), o teste de regressão é uma atividade que
ajuda a garantir que as modificações no produto de software não introduzam
um comportamento indesejável ou erros.
Você consegue imaginar por que existe a necessidade de categorizamos
os testes?
Para aumentar a eficiência da detecção do maior número possível de cená-
rios de testes!
Existem diversas versões sobre a categorização dos testes de software, den-
tre elas podem citar o modelo FURPS, que representa as categorias que podem
ser usadas na definição de requisitos e testes de validação de software, assim
como os atributos de qualidade. Podemos citar também a Norma ISO/IEC9126-
1, a qual é apresentada no próximo tópico.
capítulo 3 • 65
qualidade, mas a confiabilidade era o único meio de se avaliar a qualidade de
um software. Surgiu então a necessidade de um modelo padronizado. Por essa
razão, o comitê técnico da ISO (International Organization for Standardization)
e IEC (International Electrotechnical Comission), iniciaram em 1985 o desen-
volvimento da Norma Internacional ISO/IEC 9126, que estabelece característi-
cas baseadas no conceito de qualidade para um produto de software.
A Norma ISO/IEC 9126:1991 ou NBR 13596:1996 apresenta a padroniza-
ção mundial do Software como Produto considerado como um “Software de
Qualidade”.
Esta norma fornece um modelo de propósito geral o qual define 6 catego-
rias de características de qualidade de software que são, por sua vez, divididas
em subcaracterísticas. As subcaracterísticas podem ser avaliadas por um con-
junto de métricas.
A ISO/IEC 9126 e foi publicada em 1991, sendo uma das mais antigas da
área de qualidade de software e já possui sua tradução para o Brasil, publicada
em agosto de 1996 como NBR 13596. Estas normas listam o conjunto de carac-
terísticas que devem ser verificadas em um software para que ele seja conside-
rado um "software de qualidade". São seis grandes grupos de características,
cada um dividido em algumas subcaracterísticas, os quais são descritos abaixo:
Qualidade
de produto
de software
66 • capítulo 3
Capacidade do produto de software de prover
funções que atendam às necessidades explícitas e
FUNCIONALIDADE implícitas, quando o software estiver sendo utilizado
sob condições específicas.
capítulo 3 • 67
Capacidade do produto de software de ser com-
USABILIDADE preendido, aprendido, operado e atraente ao usuá-
rio, quando usado sob condições específicas.
68 • capítulo 3
• Analisabilidade: capacidade do produto de software de permitir o diag-
nóstico de deficiências ou causas de falhas no software, ou a identificação de
partes a serem modificadas.
• Modificabilidade: capacidade do produto de software que uma modifica-
ção especifica seja implementada.
• Estabilidade: capacidade do produto de software de evitar efeitos inespe-
rados decorrentes de modificações no software.
• Testabilidade: capacidade do produto de software de permitir que o soft-
ware, quando modificado, seja validado.
• Conformidade: capacidade do produto de software de estar de acordo
com normas ou convenções relacionadas à manutenibilidade.
capítulo 3 • 69
Também é necessário estabelecer níveis de pontuação e critérios específi-
cos para a organização ou para a aplicação.
Casos de teste são elementos essenciais para o sucesso das atividades de teste
em um projeto de software. São eles que definem as entradas a serem informa-
das pelo testador (manualmente ou com apoio ferramental) e os resultados es-
perados a partir desta ação. Assim, eles nos permitem medir o quanto o software
está sendo testado. Já um procedimento de teste define os passos/sequência
necessários para executar os casos.
Estes visam apoiar na customização do esforço de teste em um projeto.
Neste artigo, serão discutidas estratégias para melhor especificação de casos
e procedimentos de teste em projetos de software. Para isso, será utilizado um
exemplo simples e comum de ser encontrado em sistemas de informação, um
formulário de cadastro de venda de produtos on-line com diversas regras de ne-
gócio para validação dos dados preenchidos, e realizaremos a especificação dos
casos e procedimentos de teste de forma a torná-la mais completa e objetiva,
apoiando assim testes manuais e automáticos.
Qualquer profissional da área de teste de software possivelmente conhece
e/ou já precisou especificar casos e/ou procedimentos de teste.
Segundo Craig e Jaskiel (2002), estes artefatos do processo de teste de
software podem ser definidos da seguinte forma:
70 • capítulo 3
PROCEDIMENTO DE É uma descrição dos passos necessários para exe-
TESTE cutar um caso (ou um grupo de casos) de teste.
No início desse capítulo vimos sobre os testes de caixa preta e testes de caixa
branca, você se lembra?
Caso não se lembre, pára por um instante, volte e releia os tópicos 3.1.1 e
3.1.2.
capítulo 3 • 71
Os testes de caixa preta são uma abordagem complementar aos testes de
caixa branca e, possuem a finalidade de identificar um conjunto de situações
que serão empregadas em forma de testes para a identificação de erros.
Quanto maior a variedade de cenários maior será o conjunto de soluções
que serão avaliadas e comparadas com os requisitos. Os principais métodos de
testes de caixa-preta para a obtenção de casos de teste são: Métodos de decom-
posição de requisitos e Métodos de análise de documentos.
72 • capítulo 3
Métodos de análise de documentos:
capítulo 3 • 73
3.7 Fases da validação
Nos testes de validação, os mecanismos de testes são divididos em dois grupos:
• Baixo nível: que envolve os testes de unidade e de integração e,
• Alto nível: que envolve os testes de sistema e de aceitação.
Essa é a primeira etapa do processo de validação e, tem por objetivo testar com-
ponentes individuais de uma aplicação.
Segundo Pressman (2011, pag. 407), esse estágio de teste, também chamado
de testes unitários é definido como: O teste de unidade focaliza o esforço da ve-
rificação na menor unidade de projeto do software – o componente ou módulo
do software. Usando como guia a descrição de projeto nível de componente,
caminhos de controle importantes são testados para descobrir erros dentro dos
limites do módulo.
Molinari (2003, pag. 160) resume esse conceito como “[...] Teste em nível e
componente ou classe. É o teste cujo objetivo é um ‘pedaço de código’.”. Para
Sommerville (2011, pag. 148), os testes unitários devem ser projetados visan-
do à cobertura de código nos objetos, realizando testes em todas as operações
do mesmo, além de verificar seus atributos e simular os mais diversos eventos
que causem alguma mudança nesse objeto, utilizando diferentes entradas para
atingir tal objetivo. Apesar de que os testes unitários possam ser executados de
forma manual, Sommerville (2011, pag. 149) recomenda que: Sempre que pos-
sível, você deve automatizar os testes unitários. Em testes unitários automati-
zados, pode-se utilizar um framework de automação de teste (como JUnit) para
escrever e executar os testes de seu programa. Frameworks de testes unitários
fornecem classes de teste genéricas que você pode estender para criar casos de
teste específicos. Eles podem, então executar todos os testes que você imple-
mentou e informar, muitas vezes por meio de alguma interface gráfica, sobre o
sucesso ou o fracasso dos testes.
74 • capítulo 3
3.7.2 Validação da integração
capítulo 3 • 75
Segundo Pressman (2011, pag. 421), os testes de sistema caracterizam-se
em “[...] uma série de diferentes testes cuja finalidade primária é exercitar to-
talmente o sistema.”. Pezzè e Young (2008, pag. 443) complementam essa afir-
mação, sendo que “[...] Da mesma forma que o teste unitário e o de integração,
o teste de sistema é focado principalmente na descoberta de falhas, mas ao
contrário das atividades de teste de nível de granularidade mais fino, se con-
centra nas propriedades do nível do sistema.”. Alguns dos tipos de testes que
são realizados nesse estágio foram definidos anteriormente, como, por exem-
plo, os testes de funcionalidade (2.6.1), os testes de recuperação (2.6.11), testes
de segurança (2.6.7), testes de desempenho (2.6.8) e testes de disponibilidade
(2.6.10). 43 Apesar dos diversos tipos de testes que são executados no sistema,
Sommerville (2011, pag. 154) cita que: Para a maioria dos sistemas, é difícil sa-
ber o quanto o teste de sistema é essencial e quando você deve parar de testar. É
impossível fazer testes exaustivos, em que cada sequência possível de execução
do programa seja testada. Assim, os testes precisam ser baseados em um sub-
conjunto possível de casos de teste. [...] Como alternativa, podem basear-se na
experiência de uso do sistema e em testes de características do sistema opera-
cional. Ainda, conforme Sommerville (2011, pag. 155), os testes de sistema são
mais difíceis de automatizar do que testes de unidade e integração, uma vez
que a verificação pode ser dificultada pela necessidade da geração de grandes
volumes de dados ou de dados que não possuam certa precisão, dificultando
os casos de teste que precisam comparar a saída do sistema com a saída ideal
do teste. A seguir, é apresentado o último estágio dos testes, que são os testes
de aceitação.
76 • capítulo 3
um sistema que foi aprovado por um fornecedor externo ou processo informal
em que os usuários experimentam um produto de software novo para ver se
gostam e verificar se faz o que eles precisam. Para Molinari (2003, pag. 161),
esse estágio de testes se caracteriza por um “[...] teste exploratório voltado para
validar aquilo que o usuário deseja, tendo um objetivo claro: dar o aceite ou
não.”. Dentro dos testes de aceitação, os mesmos podem ser divididos em dois
estágios, sendo estes o teste alfa e o teste beta. (BARTIÉ, 2002, pag. 158-159):
Teste alfa: É caracterizado pelos testes realizados pelos usuários em um am-
biente simulado, podendo este estar localizado dentro da empresa criadora do
software. Esse estágio de teste tem como objetivo observar a naturalidade com
que o sistema é utilizado pelos usuários finais, não sendo muito rigoroso em
relação aos 44 procedimentos mais críticos a serem validados. Apesar disso, ele
deve ter um conjunto reduzido desses procedimentos, garantindo, assim, um
mínimo de cobertura dos testes de aceitação. Teste beta: Tem como caracterís-
tica a execução do sistema na própria infraestrutura da empresa que vai utilizar
o software e, assim, será utilizado nas mesmas proporções que são utilizadas
diariamente. Esse estágio de teste serve para que os usuários possam ter segu-
rança em utilizar essa versão em produção, contando com o apoio da equipe de
desenvolvimento para correção de qualquer problema que possa prejudicar o
seu o uso.
Após a finalização das fases da validação no próximo tópico seguem algu-
mas atividades sugeridas.
ATIVIDADES
01. Comente o que é teste de validação e qual o seu principal objetivo.
capítulo 3 • 77
REFLEXÃO
O desenvolvimento de software envolve várias fases. Dentre elas podemos destacar a fase
de TESTES de software. É muito complicado inspecionar um sistema inteiro, composto por
vários subsistemas. Os testes são a única técnica viável no nível de sistema.
Vimos nesse capítulo que para podermos realizar os testes de validação de maneira
correta é necessário a definição de estratégias e abordagens.
Aprendemos também sobre a estrutura da Norma ISO 9126, um documento bastante
importante, que apresenta em suas características, requisitos importantes de qualidade que
devem ser testados e verificados.
LEITURA
Casos de Teste: Aprimore seus casos e procedimentos de teste. Disponível em: <http://
www.devmedia.com.br/casos-de-teste-aprimore-seus-casos-e-procedimentos-de-tes-
te/30526#ixzz3gxLIgYqg>.
Um Método para Elicitação e Modemagem de Requisitos Baseado em Objetivos.
Disponível em: <http://www.inf.puc-rio.br/wer01/Eli-Req-5.pdf>.
REFERÊNCIAS BIBLIOGRÁFICAS
PRESSMAN, Roger S. Engenharia de Software, 6 ed. Editora MCGrawHill: Porto Alegre, 2010.
REITZ, Lindomar P. Qualidade de Software com Testes Automatizados: Um Estudo de Caso sobre
Testes de Unidade, Integração e de Sistema, Trabalho de Conclusão de Curso, Florianópolis, 2014.
SOMERVILLE, IAN. Engenharia de Software. 6 ed. São Paulo: Addison Wesley, 2003.
NBR ISO/IEC 9126-1: Engenharia de Software – Qualidade de produto – Parte 1: Modelo de
qualidade. Rio de Janeiro: ABNT, 2003.
BARTIÉ, A. Garantia da Qualidade de Software: Adquirindo Maturidade Organizacional. 1ed. ed. Rio
de Janeiro: Campus, v. I, 2002.
BASTOS, A. et al. Base de Conhecimento em Teste de Software. 1 ed. São Paulo: Martins Editora,
v. I, 2007.
DELAMARO, M. E.; MALDONADO, J. C.; JINO, M. Introdução ao Teste de Software. 2 ed. ed. Rio de
Janeiro: Elsevier, 2007.
MOLINARI, L. Testes de Software: Produzindo Sistemas melhores e mais confiáveis. 1 ed. São Paulo:
Érica, 2003.
78 • capítulo 3
4
Gerenciamento do
Testware e Gestão
das Ferramentas de
Apoio a Testes
Já cometamos anteriormente que durante o desenvolvimento do software é ge-
rado uma quantidade grande de documentos.
Todos os produtos gerados pelo teste, ou seja, os planos de teste, casos e
teste são considerados testware. Por tanto testware é tudo que os engenheiros
de teste produzem.
Os produtos gerados pelo engenheiros de software não são poucos e, o con-
trole e a organização desses documentos é muito importante para que a etapa
de teste seja realizada corretamente e com qualidade.
Cada ciclo do processo de desenvolvimento de software necessita de uma
ambiente distinto. Os ambientes de processo de software podem ser organi-
zados em ambiente de desenvolvimento, ambiente de testes e homologação e
ambiente de produção.
Para apoiar cada uma fase dos testes de software existem ferramentas espe-
cíficas, estaremos apresentado nesse capítulo as seguintes ferramentas:
• Ferramentas para Planejamento de Testes.
• Ferramentas para Revisões e Inspeções.
• Ferramentas de Modelagem e Automação.
• Ferramentas de execução e conferência.
OBJETIVOS
• Compreender o conceito de testware;
• Definir os ambientes de teste (do desenvolvimento, de testes e homologação e de produção);
• Compreender as ferramentas para planejamento, revisões e inspeções de testes;
• Estudar as ferramentas de modelagem e automação;
• Compreender as ferramentas de suporte aos testes.
80 • capítulo 4
4.1 Conceitos de testware
Segundo Bartié, testware são todos os produtos gerados nas fases de verificação
e validação , incluindo todas as formas de documentação, automação e relató-
rios produzidos.
Outra definição de testware, diz que são artefatos, produzidos durante o
processo do teste, que são necessários para planejar, projetar e para executar
testes, tais como documentação, scripts de teste, entradas, resultados espera-
dos, procedimentos de instalação e limpeza, arquivos, bases de dados, ambien-
tes e qualquer outro software ou utilidades adicionais usados no teste. (IBQTS,
2007)
Assim como os engenheiros de software constroem o software, o produto
do trabalho dos engenheiros de teste é o teste.
Outro fator importante para a correta realização da etapa de testes é o am-
biente onde o mesmo é realizado, o qual deve ser isolado e organizado, para que
a equipe de testes possa trabalhar adequadamente.
Seguindo a definição de Bartié de testware, concluímos que fazem parte
do testware:
• o checklist,
• o planejamento e especificação de testes,
• as rotinas automatizadas de execução de testes,
• os casos de testes,
• as massas de testes,
• relatório finais de validação de testes.
ATENÇÃO
Pessoal, já comentamos vários vezes sobre os checklists das fases de verificação e validação,
vocês estão lembrados?
Se não lembram, voltem ao capítulo 2 e relembrem a tabela 2.2, onde vimos um exemplo
de checklist de modelo de negócios!
capítulo 4 • 81
componentes que se referem à automação dos procedimentos de testes.
Devemos considerar que apesar do testware ser um subproduto do processo de
desenvolvimento de software e estão ligados um no outro.
Assim, torna-se necessário uma série de ações com o objetivo de tornar o
processo de teste confiável e produtivo, conforme figura 4.1
82 • capítulo 4
Outra vantagem é que a preparação desse ambiente isolado, libera a equipe
de desenvolvimento para continuar produzindo novos códigos, sem prejuízo à
integridade do ambiente, mesmo durante a execução dos testes e possibilita a
realização dos de iteração e sistema, de modo a permitir a integração das dife-
rentes camadas e ou ambientes.
As principais características: ambiente isolado, com processamento inde-
pendente e com componentes similares ao ambiente de desenvolvimento e
produção. O ambiente restrito à equipe de testes;
Dentro do processo de testes, as fases são correspondentes a todas as ativi-
dades, produtos e documentos gerados. (BASTOS et al., 2007, pag. 44).
Dentro de cada fase existem diversas atividades, cada uma delas será breve-
mente descrita a seguir.
capítulo 4 • 83
Na fase de preparação, o principal objetivo é de “[...]
preparar o ambiente de teste (equipamentos, pessoal,
ferramentas de automação, hardware e software)” para
que os testes sejam executados corretamente. Cada
PREPARAÇÃO ambiente de teste (desenvolvimento, teste e produção)
terá seus tipos de teste, de tal forma que na sua execu-
ção se atinja os melhores resultados. (RIOS; MOREIRA,
2006, pag. 117).
84 • capítulo 4
Para se obter resultados positivos nos projetos de testes é necessário que
o mesmo inicie desde a especificação dos requisitos do sistema a ser imple-
mentado, ou seja, tão logo comece o projeto de desenvolvimento do software
inicia-se também em conjunto o projeto de testes de software.
Uma pessoa pode assumir mais de um dos papéis citados acima como,
por exemplo, um testador pode exercer o papel de um automatizador de tes-
tes também.
Cada ciclo do processo de desenvolvimento de software necessita de uma
ambiente distinto.
A seguir vamos comentar cada um desses ambiente: ambiente de desenvol-
vimento, ambiente de testes e homologação e ambiente de produção (figura 4.2)
capítulo 4 • 85
Ambiente Ambiente Ambiente
de Teste e de
Desenvolvimento Homologação Produção
Em Em Em Em
Desenvolvimento Teste Homologação Produção
86 • capítulo 4
A figura 4.3 apresenta o ambiente de teste e homologação.
Equipe de testes
capítulo 4 • 87
permanece envolvido (planejando e especificando procedimentos de teste) du-
rante o projeto inteiro.
É comum em muitos casos a equipe de teste responder a organização de
garantia de qualidade de software para, desta forma, obter um grau de inde-
pendência que poderia não ser possível se fizesse parte da organização de en-
genharia de software.
88 • capítulo 4
criação, porém possibilita uma incomparável eficiência e confiabilidade, impos-
sível de ser atingida com procedimentos manuais.” (BARTIÉ, 2002)
Rios e Moreira (2006, pag. 156) esclarecem que a automação de testes está fun-
damentada em três pilares que são as ferramentas, a metodologia e a infraes-
trutura. A representação desses pilares da automação de testes é mostrada na
figura 4.4.
Projeto de
automação de testes
Infraestrutura
Metodologia
Ferramenta
Recursos
Figura 4.4 – Pilares da automação de testes Fonte: RIOS; MOREIRA (2006, pag. 156)..
capítulo 4 • 89
Mas, será que todos os casos de testes especificados devem ser automatizados?
Quais casos de testes são candidatos a automatização?
A cada nova versão de um software torna-se necessário realizar um novo
conjunto de teste, visando ampliar as melhorias implementadas. Desta forma
também é necessário reexecutar um conjunto de casos de testes (todos ou par-
tes) de forma a avaliar se as mudanças realizadas danificaram outras partes do
software que já funcionava.
Os custos relativos à execução dos testes de progressão não são importan-
tes. Porém são importantes os custos de execução dos testes de regressão, pois
estes devem ser reexecutados ao longo do ciclo de vida do software.
Desta forma devemos considerar que os testes automatizados visam a oti-
mização da execução dos testes, mas deve ser feito, preventivamente, um es-
tudo de viabilidade técnica e um estudo de custo beneficio para sua utilização
ou não.
Os testes automatizados não substituem os testes manuais, eles são com-
plementares e para isso devemos levar em consideração que todo caso de teste
é naturalmente candidato à automação, mas naturalmente nem todos são reco-
mendáveis para automação:
• Se o caso de teste for algo pontual e específico de alguma versão do soft-
ware e não se espera que seja testado em versões futuras, não é candidato
à automação.
• Se o caso de teste tiver características de uso de uma grande massa
de dados, indica ser um data-driventest que precisará provavelmente ser
automatizado.
• Não existe tempo hábil para automatizar o teste desejado devido ao cro-
nograma, então ele não será momentaneamente um teste a ser automatizado.
90 • capítulo 4
Segundo Molinari (2003, pag. 109-111), as escolhas das ferramentas passam
por alguns critérios de escolha, tais como:
capítulo 4 • 91
As integrações entre as diversas categorias
Planejamento Modelagem e
de testes Automação
Suporte aos
testes
Revisões e Execução e
Inspeções Conferência
Análise de
Criticidade
Planejamento
de testes
Gerador de
Documentos
92 • capítulo 4
Cada vez mais, ferramentas de automação de teste estão sendo lançadas no
mercado para automatizar as atividades de teste. Mas antes de pensar em uma
ferramenta é preciso definir os processos. Veja alguns fatores que leva a auto-
mação de testes:
• Existem fortes pressões para melhorar a qualidade;
• O projeto tem situações que não possam ser testadas adequadamente pe-
los métodos tradicionais,
• O perfil dos softwares desenvolvidos for complexo e com impacto
no negócio,
• Estudos de custo X benefício justificar o investimento,
• O tamanho do projeto ou do ambiente de teste justificar.
Ferramentas de gerenciamento
capítulo 4 • 93
Ferramentas de verificação de código-fonte
São ferramentas que auxiliam diretamente na execução dos testes. Veja al-
guns exemplos:
Unitários - JUnit
Sistema – TestComplet (Teste Funcionais), JUnitPerf
Aceitação – Jmeter (Teste Estresse), JUnitPerf (Teste de Performance).
Objetivos da automação
94 • capítulo 4
Como já comentamos, é fundamental o desenvolvimento de ferramentas
de teste para o suporte à atividade de teste propriamente dita, uma vez que essa
atividade é muito propensa a erros, além de improdutiva, se aplicada manual-
mente, bem como para dar apoio a estudos empíricos que visem a avaliar e a
comparar os diversos critérios de teste. Assim, a disponibilidade de ferramen-
tas de teste propicia maior qualidade e produtividade para as atividades de tes-
te. Observam-se na literatura esforços da comunidade científica nessa direção.
Resultados desses estudos fornecem evidências de que esses critérios, hoje
investigados fundamentalmente no meio acadêmico, às vezes em cooperação
com a indústria, podem, em médio prazo, constituir o estado da prática em am-
bientes de produção de software.
• Padrão de nome,
• Utilização de rotinas corporativas,
• Variáveis não utilizadas,
• Sub-rotinas internas não acionadas,
• APIs incompatíveis com determinados sistemas operacionais.
capítulo 4 • 95
Análise de
Complexidade
Revisões e Compreensão do
Inspeções Código
Análise Sintática
da Semântica
Modelagem de
Testes
Automatizador
de Scripts
96 • capítulo 4
a ser testado. Determina as informações que devem ser empregadas em cada
procedimento de teste, atingindo o menor nível de detalhamento.
Vale ressaltar que a modelagem dos testes é um processo mental, assim ne-
nhuma ferramenta substituirá a experiência e abstração de um bom analista de
testes, porém estas ferramentas auxiliam na estruturação das ideias.
Gerador de massa de dados: Possibilita a geração automática de massa de
dados baseada no planejamento dos testes e critérios estabelecidos de forma a
garantir uma massa diferenciada e nas circunstâncias desejadas.
Automatizador de scripts: Possibilita a interação entre as rotinas automa-
tizadas e os softwares a serem testados através da captura de valores em telas,
arquivos, relatórios ou mesmo em banco de dados. Permitem automatizar não
somente as atividades de entrada de informações, como o processo de confe-
rência (análise da saída das informações).
capítulo 4 • 97
Executor de
Scripts
Execução e Análise de
Conferência Corbetura
Simuladores de
Performance
Testadores
de Memórias
98 • capítulo 4
qualidade. Permite parametrizações de forma a customizar um workflow de re-
solução de problemas, para melhor adapta-se a estrutura da empresa. Também
é conhecido por: gerenciamento de erros, gerenciamento de problemas, regis-
tro de ocorrências, controle de incidências.
Gerenciamento de configurações: Permite controlar e coordenar as mu-
danças efetuadas em documentações, fontes e ambientes físicos. Estabelece a
relação entre os artefatos de software e identifica-los através de um único con-
trole de versão enquanto ocorre modificações de fontes de uma versão anterior.
Gerenciamento
de Defeitos
Suporte aos
testes
Gerenciamento de
Configurações
ATIVIDADES
Vamos agora nos esforçar para responder as atividades abaixo!
Lembrem-se que essas atividades possuem o objetivo de lhes ajudar a relembrar e fixar
os conceitos vistos no capítulo.
04. Quais são as principais características das ferramentas de suporte aos testes?
capítulo 4 • 99
REFLEXÃO
Nesse capítulo aprendemos que os produtos gerados pelo teste são denominados testware,
que eles não são poucos e, que é muito importante que sejam organizados e controlados.
Aprendemos também que para produzir os documentos dos testes existem ferramentas
Para apoiar cada uma fase dos testes de software e, finalizamos analisando cada uma des-
sas ferramentas, que são:
• Ferramentas para Planejamento de Testes.
• Ferramentas para Revisões e Inspeções.
• Ferramentas de Modelagem e Automação.
• Ferramentas de execução e conferência.
LEITURA
Criação e Geração de Planos de Teste de Software. Disponível em: <http://www.ibm.
com/developerworks/br/local/rational/criacao_geracao_planos_testes_software/>.
Testes de software – papéis e oportunidades. Disponível em: <http://pt.slideshare.net/
camiloribeiro/papis-em-teste-e-qualidade-de-software>.
REFERÊNCIAS BIBLIOGRÁFICAS
Base de Conhecimento em Teste de Software. 2 ed. Rios, Emerson; Cristalli, Ricardo; Moreira,
Trayahú & Bastos, Aderson. – S. Paulo, Martins Fontes, 2007.
PRESSMAN, Roger S. Engenharia de Software – Uma Abordagem Profissional. 7 ed. Porto Alegre:
AMGH Editora, 2011.
BARTIÉ, Alexandre. Garantia da qualidade de software: adquirindo maturidade organizacional. Rio
de Janeiro: Campus, 2002.
BASTOS, Aderson; RIOS, Emerson; CRISTALLI, Ricardo;
MOREIRA, Trayahú. Base de conhecimento de teste de software. 2 ed. São Paulo: Martins, 2007.
MOLINARI, Leonardo. Testes de Software: Produzindo Sistemas Melhores e Mais Confiáveis. São
Paulo: Érica, 2003.
SOMMERVILLE, Ian. Engenharia de software. 9 ed. São Paulo: Pearson Prentice Hall, 2011.
PAULA FILHO, W. D. P. Engenharia de Software: Fundamentos, Métodos e Padrões. 2 ed. ed. Rio de
Janeiro: LTC, 2003.
IBQTS- Glossário de termos utilizados mundialmente em testes de software, 2007. Disponível
em: <http://ibqts.com.br/downloads/Glossario_ATC-NF-IBQTS.pdf>.
100 • capítulo 4
5
Documentação
do Planejamento
e Relatóros das
Verificações e
Validações
A garantia da qualidade de software é uma atividade abrangente aplicada a
cada passo do processo de engenharia de software. Ela envolve procedimentos
pra a efetiva aplicação de métodos e ferramentas, revisões técnicas formais, es-
tratégias e técnicas de teste, procedimentos para controle de mudanças, proce-
dimentos para assegurar o cumprimento de padrões e mecanismos de medição
e reportagem.
Logo que a organização tenha resolvido instituir a garantia da qualidade de
software, deve ser desenvolvido um plano.
Nesse último capítulo vamos distinguir os diferentes planos e documenta-
ção existente para apoiar os processos de qualidade de software.
OBJETIVOS
• Compreender o plano de garantia da qualidade de software;
• Compreender o plano mestre de verificação e o plano mestre de validação;
• Compreender a Norma IEE 829.
102 • capítulo 5
5.1 Plano de garantia da qualidade de
software
capítulo 5 • 103
Geralmente, a garantia de qualidade consiste daqueles procedimentos, técnicas e
ferramentas aplicadas por profissionais para assegurar que um produto atinge ou
excede padrões pré-especificados durante o ciclo de desenvolvimento do produto;
se tais padrões não são aplicados, a garantia de qualidade assegura que um produto
atinge ou excede um nível de excelência (industrial ou comercial) mínimo aceitável.
104 • capítulo 5
O padrão IEEE (Padrão ANSI/IEEE 730-1984 e 983-1986) para a preparação
do SQAP contém os seguintes tópicos [Humphrey89]:
I. Propósito do plano
II. Documentos de referência
III. Administração
A. Organização
B. Tarefas
C. Responsabilidades
IV. Documentação
A. Propósito
B. Documentos de engenharia de software exigidos
C. Outros documentos
V. Padrões, práticas e convenções
A. Propósito
B. Convenções
VI. Revisões auditoriais
A. Propósito
B. Requisitos de revisão
1. Revisão dos requisitos de software
2. Revisões de projeto
3. Verificação de software e revisões de validação
4. Auditoria funcional
5. Auditoria física
6. Auditorias in-process
7. Revisões administrativas
VII. Gerenciamento de configuração de software
VIII. Reportagem de problemas e ações corretivas
IX. Ferramentas, técnicas e metodologias
X. Controle de código
XI. Controle de mídia
XII. Controle de fornecedores
XIII. Coleta, manutenção e retenção de registros
capítulo 5 • 105
Verificação e Validação, Relatório de Verificação e Validação e Documentação
do Usuário.
O Plano de Verificação e Validação é uma descrição dos métodos usados
para verificar se os requisitos são implementados no projeto, se o projeto é im-
plementado no código e se o código atinge os requisitos. Outros documentos
podem ser:
• Plano de Desenvolvimento de Software.
• Plano de Gerência de Configuração de Software.
• Manual de Padrões e Procedimentos.
Alocar pessoas para trabalhar com SQA é uma tarefa difícil dos gerentes de
software.
A prática de iniciar novas contratações em SQA é uma solução parcial que
pode ser efetiva apenas se existem pessoas experientes no mercado. Recrutar
106 • capítulo 5
pessoas para trabalhar em SQA é difícil também porque os profissionais de
software geralmente preferem atribuições de desenvolvimento e a gerência cer-
tamente quer atribuir aos melhores projetistas o trabalho de projeto.
O esquema de rotatividade também pode ser efetivo, mas infelizmente, o
desenvolvimento de software geralmente é adepto a transferir pessoas para tra-
balhar em SQA e não “pegá-las” de volta.
Uma solução efetiva é requerer que todos os novos gerentes de desenvol-
vimento sejam promovidos para trabalharem em SQA. Isso poderia significar
que potenciais gerentes poderiam passar entre seis meses e um ano em SQA,
antes de serem promovidos à gerência. Essa é uma medida extrema, mas pode
ser efetiva [Humphrey89].
Para o trabalho de SQA possa ser efetivo, deve haver bons profissionais na
equipe e um completo apoio da gerência, no sentido de investimento mesmo.
capítulo 5 • 107
À medida que a disciplina de testes de software foi se profissionalizando
nos últimos anos, novas seções foram adicionadas aos planos de teste, como
sumário de alto nível e lições aprendidas. Estas seções tem o intuito de situar o
plano de testes e a equipe de testes com relação a outras equipes e ao planeja-
mento do projeto como um todo.
O International Software Testing Qualifications Board (ISTQB) é uma das
instituições mais respeitadas da área de teste de software, pois propõe uma uni-
formização dos conceitos e nomenclatura da disciplina. Grandes corporações,
inclusive a IBM, têm boa parte de seus profissionais certificados pelos exames
da ISTQB e processos de desenvolvimento que utilizam o modelo ISTQB em
seus artefatos e relatórios de testes de software. O ISTQB possui ramificações
no Brasil (BSTQB), Estados Unidos (ASTQB) e Inglaterra (ISEB).
Portanto, para que os testes suportem todos esses aspectos do desenvolvi-
mento de softwares, é preciso que eles sejam projetados e realizados de acordo
com o tipo de software e as necessidades que ele irá atender. A figura 5.1 mostra
o plano de teste e a sua ligação entre o desenvolvimento e os testes.
Figura 5.1 – Plano de teste como ligação entre o desenvolvimento e os testes. Fonte
(Sommerville, 2006).
1 Introdução
108 • capítulo 5
1.1 Sumário de alto nível
O sumário de alto nível define o escopo dos testes descritos no Plano em rela-
ção ao projeto de desenvolvimento do software como um todo. Ele não contém
aspectos técnicos, pois é uma descrição que deve ser entendida por todos os
envolvidos no projeto, como executivos e gestores de projeto.
Pode incluir restrições de recursos relacionados aos testes, escopo do es-
forço de teste, relacionamento dos testes com outros métodos de avaliação do
software (análises e revisões) e os processos de controle, comunicação e coor-
denação das atividades-chave.
1.2 Terminologia
2.1 Plataformas
2.2 Configurações
capítulo 5 • 109
3 Análise e Estratégia de Teste
• Condição do teste: <Condição que deve ser atendida para que o objetivo
seja satisfeito. Exemplo: Somente usuários autorizados devem ter acesso às
funcionalidades do software.>
• Abordagem: <De que forma esse objetivo pode ser avaliado? Exemplo:
Devem ser usadas combinações corretas e incorretas/inválidas de usuário e se-
nha na tela de autenticação do usuário.>
• Critério de aceitação: <Critério que define se o obejtivo foi atendido.
Exemplo: O processo de autenticação para uso do software deve negar aces-
so em caso de combinações incorretas de usuário e senha e permitir o acesso
quando a combinação fornecida for correta.>
Nessa sessão são descritos os requisitos que devem ser atendidos para a realiza-
ção dos testes. Pode ser necessária a preparação de dados de entrada para que
o software os reconheça, por exemplo.
Tudo o que deve ser preparado antes de se iniciar a execução dos testes é des-
crito nessa sessão, como por exemplo a preparação de ambiente, upgrade/do-
110 • capítulo 5
wngrade das dependências, ou qualquer outro passo que necessita estar previa-
mente configurado antes do teste.
3.4.1 CT 1 - <Nome>
4.1 Cobertura
Essa sessão lista as funcionalidades do software que são cobertas pelos testes
do Plano, além de outros aspectos, como usabilidade, performance e seguran-
ça. Ela não deve ter um caráter técnico, e sim deve ser feita sob o ponto de vista
do usuário, abordando o que interessará a ele e refletindo o que será testado
através dos casos de teste.
4.2 Resultados
capítulo 5 • 111
desenvolvimento. E, ao final do desenvolvimento, a compilação dos resultados
dos testes bem-sucedidos são um indicativo relevante da confiabilidade daque-
le software.
5 Lições aprendidas
112 • capítulo 5
• Propósito do documento.
• Detalhes do ciclo de do processo de verificação.
• Principais atividades de verificação.
• Definição de papeis e responsabilidades da equipe de verificação.
• Principais documentos a serem empregados.
• Principais documentos a serem gerados.
• Referências a técnica, métodos e ferramentas a serem empregadas.
• Referências a padrões, políticas, formatos a serem adotados.
• Contratação de treinamentos e mentoring.
• Cronograma das etapas da verificação.
• Riscos e contingências.
capítulo 5 • 113
5.4 Plano mestre de validação
A validação refere-se a um conjunto diferente de atividades que garante que o
software que foi contruído é rastreável às exigências do cliente.
Da mesma forma que na verificação, Boehm (BOE81), define essa questão
da seguinte maneira:
114 • capítulo 5
As estratégias de validação são documentos de alto nível, elaboradas em
cada fase da validação do software. São subordinadas ao Plano de Garantia de
Qualidade e possuem os seguintes objetivos:
• Estabelecer a visão clara de como será operacionalizado o processo;
• Estabelecer o escopo definido de trabalho;
• Nivelar as expectativas em relação aos testes de software;
• Identificar quais os assuntos serão futuramente levantados e detalhados
nas fases posteriores;
• Apontar riscos e contingências do processo;
• Definir os próximos passos a serem executados.
capítulo 5 • 115
5.6 Suíte de testes
Finaliza o processo de detalhamento dos testes de validação. A suíte de tes-
tes estabelece:
• Como será testado um determinado conjunto de casos de uso.
• Define quais procedimentos e em que ordem serão executados.
• Possibilita validar o comportamento dos vários cenários de determinados
requisitos de software.
116 • capítulo 5
• Plano de Teste que apresenta o planejamento para a execução do teste
identifica os itens e as funcionalidades a serem testados, as tarefas além dos
riscos associados com a atividade de teste.
• Há também a tarefa de especificação de testes que é composta por 3 do-
cumentos (Especificação de Projeto de teste, Especificação de caso de Teste,
Especificação de Procedimento de teste) que principalmente identifica os ca-
sos e os procedimento de teste, critérios de aprovação, define dados de estrada
e resultados esperado, além de especificar os passos para a execução dos testes.
• Já os relatórios são cobertos por 4 documentos (Diário de teste, Relatório de
Incidente de Teste, Relatório-Resumo de teste, Relatório de Encaminhamento
de Item de Teste) que visam registrar detalhes relevantes, eventos que ocorrem
durante os testes e resultados das atividades.
capítulo 5 • 117
durante o teste devem ser adequadamente registrados e condensados num re-
latório final.
A seguir apresentamos algumas atividades a serem resolvidas com o intuito
de fixar os conhecimentos aprendidos nesse capítulo.
ATIVIDADES
01. Quais são os tópicos de um plano de garantia de qualidade de software?
REFLEXÃO
De acordo com Pressman (2011), a principal finalidade de se aplicar a abordagem e os
fundamentos da Engenharia de Software é a criação de softwares dentro de prazos e custos
planejados e, sobretudo, que se obtenha como resultado um produto que apresente alta
qualidade. A qualidade de software é definida pela norma ISO/IEC 9126 (2003), como sen-
do a capacidade de um produto ou serviço apresentar funcionalidades e características que
atendem totalmente as necessidades específicas ou implícitas dos usuários. Segundo Som-
merville (2007), a garantia da qualidade reúne processos que definem como alcançar a qua-
lidade do software e como a equipe de desenvolvimento deverá se comportar para satisfazer
o nível de qualidade exigido.
O processo de Verificação e Validação (V&V) é um dos processos de garantia de qua-
lidade do software que abrange várias atividades, dentre elas o Teste de Software, que tem
uma importante função neste aspecto. Conforme Jenkins (2008), a Verificação deve garantir
a consistência interna do produto, ou seja, certificar que suas especificações estão sendo
atendidas, enquanto a Validação utiliza as referências externas do usuário final, para assegu-
rar que o produto construído satisfaz suas necessidades e expectativas.
118 • capítulo 5
Os Testes de Software são conjuntos de funções e atividades que são executadas com
o objetivo de encontrar erros cometidos na construção de um software. Sommerville (2007)
aponta outra meta dos testes além de descobrir falhas no software, que é comprovar aos
desenvolvedores e ao usuário final que o programa atende aos requisitos e está em confor-
midade com suas especificações.
A garantia da qualidade tem uma forte relação com os testes de software no sentido de
que a execução dos testes é motivada pela confirmação da qualidade do programa, através
de procedimentos que podem ser aplicados a todos os sistemas.
Apesar dos testes colaborarem significativamente, eles não podem assegurar a qualida-
de do produto. Ainda de acordo com Sommerville (2007), a atividade de teste é um processo
que tem o objetivo de contribuir para a confiabilidade do software, porém não garante que
seu comportamento será o esperado em qualquer circunstância ou que estará totalmente
livre de falhas durante sua utilização.
Para que os testes de software sejam executados é preciso que seja definida uma Es-
tratégia de Teste que, conforme Pressman (2011), deve fornecer um roteiro que indica o
caminho a ser seguido, definindo como e quando os passos referentes aos testes serão
planejados e executados, além do tempo, esforço e recursos necessários. Ainda segundo o
autor, uma Estratégia de Teste de Software reúne alguns elementos que são o planejamento
dos testes, o projeto dos casos de teste, a execução dos testes e, por fim, a coleta e avaliação
de resultados.
Jenkins (2008) afirma que o planejamento dos testes deve ser feito para garantir que
se obtenham os resultados esperados, decidindo onde os erros podem ser encontrados e
projetando os testes mais eficientes para localizá-los. Uma das maneiras de se criar um plano
de teste é baseá-lo em riscos, ou seja, em uma parte do código em que a probabilidade de
ocorrência de uma falha seja maior ou em um módulo específico onde o impacto do erro
poderia comprometer o funcionamento do produto.
Espero que tenha apreciado o assunto e que o mesmo lhe seja útil na sua vida profissional!
Continue se atualizando, a avaliação de software ainda é uma área recente e sem-
pre podemos contar com mais informações e estudos de caso para nossa aprimorar nos-
sa formação.
Finalizando nosso estudo, após esse último capítulo apresenta-se no Anexo 1, um exem-
plo de Plano de Garantia de Qualidade de Software.
capítulo 5 • 119
LEITURA
Testador de software é uma profissão em alta. Disponível em: <http://eduardo-prola.
blogspot.com.br/2015/04/testador-de-software-e-uma-profissao-em.html>.
Documentação de teste baseado na Norma IEEE 829 – estudo de caso: “siste-
ma de apoio a tomada de decisão”. Disponível em: < file:///C:/Users/Mayb/Down-
loads/18-74-2-PB.pdf>.
Garantia da qualidade dos processos de software baseados no MPS.BR – UM
ESTUDO DE CASO. Dipsonível em: <http://www.uel.br/cce/dc/wp-content/uploads/Ver-
saoPreliminarTCC-RafaellaCarvalho.pdf>.
REFERÊNCIAS BIBLIOGRÁFICAS
(BOE81) Boehm, B., Software Engineering Economics, Prentice-Hall, 1981, p.37
WEBER, K.C.; ROCHA, A.R.C e NASCIMENTO, C.J. Qualidade e produtividade em software, 4 ed
renovada. São Paulo, SP, Makron Books, 2001.
PRESSMAN, Roger S. Engenharia de Software. Rio de Janeiro: MacGraw Hill, 2006
PÁDUA, Wilson de Pádua Paula. Engenharia de software: fundamentos, métodos e padrões. 3 ed.
Rio de Janeiro: LTC, 2005.
ISO, 2014) – International Organization for Standardization. Disponível em: http://www.iso.
org
GABARITO
Capítulo 1
120 • capítulo 5
• Qualidade é a totalidade das características de uma entidade, que lhe confere a capacida-
de de satisfazer necessidades explícitas e implícitas.
02. Um processo de software pode ser definido como um conjunto de atividades, métodos,
práticas e transformações que as pessoas usam para desenvolver e manter o software e os
produtos associados (por exemplo: planos de projeto, documentos, código, casos de teste e
manuais de usuário).
Um processo de software envolve um grande conjunto de elementos, tais como objetivos
organizacionais, políticas, pessoas, comprometimentos, ferramentas, métodos, atividades de
apoio e as tarefas da engenharia de software. Para que o processo de software seja eficiente
ele precisa ser constantemente avaliado, medido e controlado. Quando o processo é eficien-
te ele possui as seguintes características:
• O processo continua a despeito de problemas inesperados (Robustez).
• Rapidez na produção do sistema (Velocidade).
• O processo é aceito por todos os envolvidos nele (Aceitabilidade)
• Os erros do processo são descobertos antes que resultem em erros no produto
(Confiabilidade)
• O processo evolui para atender alterações de necessidades organizacionais
(Manutenibilidade)
• O processo é compreendido (usualmente através de documentação e de treinamento),
utilizado, vivo e ativo.
• O processo é bem controlado – a fidelidade ao processo é objeto de auditoria e de controle.
• Medidas do produto e do processo são utilizadas,
• Os papéis e responsabilidades no processo estão claros ao longo de todo o projeto e por
toda a organização
03. A atividade de teste consiste de uma análise dinâmica do produto e é uma atividade re-
levante para a identificação e eliminação de erros que persistem. Do ponto de vista de quali-
dade do processo, o teste sistemático é uma atividade fundamental para a ascensão ao Nível
3 do Modelo CMM do Software Engineering Institute — SEI. Ainda, o conjunto de informação
oriundo da atividade de teste é significativo para as atividades de depuração, manutenção e
estimativa de confiabilidade de software.
04. Defeito é um ato inconsistente cometido por um indivíduo ao tentar entender uma de-
terminada informação, resolver um problema ou utilizar um método ou uma ferramenta. Por
exemplo, uma instrução ou comando incorreto.
Erro é uma manifestação concreta de um defeito num artefato de software. Diferença
entre o valor obtido e o valor esperado, ou seja, qualquer estado intermediário incorreto ou
resultado inesperado na execução de um programa constitui um erro.
capítulo 5 • 121
Falha é o comportamento operacional do software diferente do esperado pelo usuário.
Uma falha pode ter sido causada por diversos erros e alguns erros podem nunca causar
uma falha.
05. Um plano de teste deve possuir as seguintes etapas:
- Processo de Teste:
• Descrição de cada fase do Teste (Estratégia),
- Rastreabilidade de Requisitos
• Planejamento de teste para cada requisito
- Itens que serão Testados
• Descrição detalhadas de cada Item que será “testado” (Modelo, Manual, Programa,
etc..)
- Cronograma
• Além do Tempo, Matriz de Alocação de Recursos x Atividades-Fases Engenharia de
Software
- Procedimentos de Registro
• Definição das Métricas e Padronização dos mecanismos de registro de resultados,
para que o processo de teste possa ser medido
- Requisitos de Hardware, Software e Rede
• Lista de recursos necessários para o teste
- Descrição das Restrições
• Restrições que afetarão o processo de teste (Ex: Deficiência de Pessoal, Treina-
mento de Pessoal, Aquisição de Software, etc)
Capítulo 2
122 • capítulo 5
Além disso, a FTR serve como uma oportunidade de treinamento, permitindo a jovens
engenheiros observar abordagens diferentes para a análise, projeto e implementação
de software.
03. Os seguintes dados representam um conjunto mínimo de diretrizes para as revisões
técnicas formais:
• revise o produto, não o produtor: uma FTR envolve pessoas e egos. Se conduzida adequa-
damente, deve deixar em todos os participantes um sentimento de realização. Se realizada
inadequadamente pode assumir a áurea de uma inquisição.
• fixe e mantenha uma agenda: uma FTR deve ser mantida nos triulhos e em seu cronogra-
ma. Ao líder de revisão é dada a responsabilidade de manter o cronograma da reunião, ele
não deve ter medo de chamar a atenção de pessoas quando a divagação instalar-se.
• limite o debate e a refutação: quando uma questão é levantada por um revisor, talvez não
uma haja uma concordância universal sobre o seu impacto. Em vez de perder tempo debaten-
do a questão, o assunto deve ser registrado para posterior discussão off-line.
• enuncie as áreas problemáticas, mas não tende resolver cada problema anotado: a revisão
não é uma sessão de resolução de problemas. A resolução dos problemas deve ser poster-
gada para depois do encontro da revisão.
• faça anotações por escrito: as vezes é uma boa idéia que o secretário faça anotações numa
lousa, de forma que a redação e a determinação de prioridades possam ser avaliadas por
outros revisores quando a informação for registrada.
• limite o número de participantes e insista numa preparação antecipada: mantenha o nú-
mero de pessoas envolvidas ao mínimo necessário. Todos os membros da equipe de revisão
devem preparar-se antecipadamente. Comentários escritos devem ser solicitados pelo líder
de revisão.
• desenvolva uma lista de conferência (cheklist) para cada produto que provavelmente será
revisto: uma lista de conferência ajuda o líder de revisão a estruturar o encontro e ajuda cada
revisor a se concentrar em questões importantes.
• atribua recursos e uma programação de tempo para as TFRs: para que as revisões sejam
efetivas, elas devem ser programadas como tarefas durante o processo de engenharia de
software. Além disso, deve-se programar tempo para as inevitáveis modificações que ocorre-
rão como resultado de uma FTR.
• realize um treinamento significativo para todos os revisores: o treinamento deve destacar
tanto as questões relacionadas a processos como o lado psicológico humano das revisões.
• reveja suas antigas revisões: o produto prioritário a ser revisado poderiam ser as próprias
diretrizes da revisão.
04.
capítulo 5 • 123
• Compreensão do ambiente,
• Análise do ambiente e determinação dasπ situações mais sensíveis,
• Elaboração de uma massa de testes,
• Aplicação da massa de testes,
• Análise das simulações,
• Emissão da opinião quanto ao ambiente auditado,
• Debate com os profissionais da área auditada para discussão das alternativas
recomendadas,
• Acompanhamento da implantação da solução proposta,
• Auditoria da solução implantada,
• Novas auditorias no ambiente,
• O auditor deve utilizar palavras de questionamentos como: Como?, O que?, Quando?,
Quem?, Onde?, Por que? e Mostre-me (Evidência),
• Estar bem preparado para realizar a auditoria,
• Tentar prever o máximo de situações possíveis,
• Evitar surpresas ao auditado,
• Esclarecer todas as dúvidas sobre uma nãoconformidade,
• Buscar objetividade e fatos concretos (Evidências),
• Não atacar pessoas e sim fatos concretos,
• Motivar a identificação de melhorias,
• Persuadir, não impor,
• O auditor não deve relacionar pessoas à não-conformidades ou deficiências,
• Ser flexível quando necessário e,
• Ser imparcial e objetivo para obtenção dos fatos
Capítulo 3
01. O teste de validação tem o seu foco na aplicação, uma vez que já existe um produto com-
putacional. Seu principal objetivo é identificar o maior número possível de erros. O sucesso
desse teste está apoiada no forte planejamento de todas as atividades de teste.
É um processo formal de avaliação de produtos tecnológicos que podem ser aplicados
em componentes isolados, em módulos existentes ou mesmo à totalidade do sistema.
O seu principal objetivo é avaliar a conformidade do software com os requisitos e especi-
ficações analisadas e revisadas nas etapas iniciais do projeto.
124 • capítulo 5
02. Teste de caixa branca: Também conhecido como teste estrutural. É aquele em que o
analista tem total acesso à estrutura interna da entidade sendo analisada e permite, por
exemplo, que o analista escolha partes específicas de um componente para serem testadas.
Esses testes são projetados em função da estrutura do componente e podem permitir
verificação mais precisa de comportamento do produto. Ele permite ao avaliador concentrar
a atenção nos pontos mais importantes ou “perigosos” do código, de uma maneira mais pre-
cisa do que no caso do teste caixa-preta. Tais pontos podem até ser identificados durante o
desenvolvimento e cobertos com o uso de assertivas e testes.
A versão de testes resultante deve ser executada e os resultados, observados. Natu-
ralmente, é preciso um cuidado especial com o controle de versões de software: a versão
de teste, bem como o executável resultante, não deve jamais ser confundida com a versão
correta que será entregue ao cliente.
Testes de caixa preta: O Teste de Caixa-Preta ou Teste Funcional, também é usado na
engenharia, no problema de identificação de sistemas, e advém do fato de que ao analisar o
comportamento de um objeto, ignora-se totalmente sua construção interna.
O teste de caixa-preta é baseado nos requisitos funcionais do software. Como não há
conhecimento sobre a operação interna do programa, o avaliador se concentra nas funções
que o software deve desempenhar. A partir da especificação são determinadas as saídas
esperadas para certos conjuntos de entrada de dados.
Esse tipo de teste reflete, de certa forma, a óptica do usuário, que está interessado em
se servir do programa sem considerar os detalhes de sua construção. Comparando a outros
tipos de teste, este é relativamente mais simples.
03. Testes baseados na estrutura interna requerem um profundo conhecimento da tecno-
logia e do projeto de desenvolvimento, de modo a validar todos os algoritmos empregados
pelo software. Por exigir conhecimento da estrutura interna do software, a estratégia da caixa
branca será utilizada para aborda-los.
Testes baseados em requisitos são baseados em documentos de requisitos e modelados
por meio de especificações funcionais e suplementares. Os casos de testes devem avaliar
todos os cenários existentes e validar todas as variações (fluxos de processamento alterna-
tivos e de exceção) que uma solução tecnológica deve suportar. São testes que devem ser
empregados pela estratégia da caixa preta.
04. Casos de teste são elementos essenciais para o sucesso das atividades de teste em
um projeto de software. São eles que definem as entradas a serem informadas pelo testador
(manualmente ou com apoio ferramental) e os resultados esperados a partir desta ação. As-
sim, eles nos permitem medir o quanto o software está sendo testado. Já um procedimento
de teste define os passos/sequência necessários para executar os casos.
capítulo 5 • 125
Estes visam apoiar na customização do esforço de teste em um projeto. Neste artigo,
serão discutidas estratégias para melhor especificação de casos e procedimentos de tes-
te em projetos de software. Para isso, será utilizado um exemplo simples e comum de ser
encontrado em sistemas de informação, um formulário de cadastro de venda de produtos
on-line com diversas regras de negócio para validação dos dados preenchidos, e realizare-
mos a especificação dos casos e procedimentos de teste de forma a torná-la mais completa
e objetiva, apoiando assim testes manuais e automáticos.
Qualquer profissional da área de teste de software possivelmente conhece e/ou já preci-
sou especificar casos e/ou procedimentos de teste.
Capítulo 4
01. Testware são todos os produtos gerados nas fases de verificação e validação , incluindo
todas as formas de documentação, automação e relatórios produzidos.
Assim como os engenheiros de software constroem o software, o produto do trabalhos
dos engenheiros de teste é o teste.
Seguindo a definição de Bartié de testware, concluímos que fazem parte do testware:
• o checklist,
• o planejamento e especificação de testes,
• as rotinas automatizadas de execução de testes,
• os casos de testes,
• as massas de testes,
• relatório finais de validação de testes.
02. Nesse ambiente de teste e homologação devem ser realizados o teste de sistema e o
teste de integração.
No ambiente de testes é realizado o teste de sistema e são verificadas as categoria de
carga, performance, volume, instalação e segurança.
No ambiente de homologação é realizado o aceitação e são verificadas as categorias de
aceite formal e o alpha-teste.
03. Os objetivos são:
Apoiar o processo de testes;
Reduzir falhas introduzidas pela intervenção humana;
Aumentar a produtividade (a médio/longo prazo);
Tratar a automação dos testes como um projeto.
126 • capítulo 5
Existirem fortes pressões para melhorar a qualidade;
O projeto tiver situações que não possam ser testadas adequadamente pelos méto-
dos tradicionais;
O perfil dos softwares desenvolvidos for complexo e com impacto no negócio;
Estudos de custo X benefício justificar o investimento;
O tamanho do projeto ou do ambiente de teste justificar.
04. As principais características destas ferramentas são: Gerenciamento de defeitos e ge-
renciamento de configurações.
Gerenciamento de defeitos : Tem como objetivo acompanhar e controlar os defeitos
identificados durante o ciclo de vida do software e monitorá-los até a sua solução final, atra-
vés da produção de um grande número de indicadores de qualidade. Permite parametriza-
ções de forma a customizar um workflow de resolução de problemas, para melhor adapta-se
a estrutura da empresa. Também é conhecido por: gerenciamento de erros, gerenciamento
de problemas, registro de ocorrências, controle de incidências.
Gerenciamento de configurações: Permite controlar e coordenar as mudanças efetuadas
em documentações, fontes e ambientes físicos. Estabelece a relação entre os artefatos de
software e identifica-los através de um único controle de versão enquanto ocorre modifica-
ções de fontes de uma versão anterior.
Capítulo 5
01.
I. Propósito do plano
II. Documentos de referência
III. Administração
A. Organização
B. Tarefas
C. Responsabilidades
IV. Documentação
A. Propósito
B. Documentos de engenharia de software exigidos
C. Outros documentos
V. Padrões, práticas e convenções
A. Propósito
capítulo 5 • 127
B. Convenções
VI. Revisões auditoriais
A. Propósito
B. Requisitos de revisão
1. Revisão dos requisitos de software
2. Revisões de projeto
3. Verificação de software e revisões de validação
4. Auditoria funcional
5. Auditoria física
6. Auditorias in-process
7. Revisões administrativas
VII. Gerenciamento de configuração de software
VIII. Reportagem de problemas e ações corretivas
IX. Ferramentas, técnicas e metodologias
X. Controle de código
XI. Controle de mídia
XII. Controle de fornecedores
XIII. Coleta, manutenção e retenção de registros
02.
1 Introdução
Na Introdução os objetivos gerais do Plano de Teste são apresentados de forma clara e
não detalhada.
1.2 Terminologia
128 • capítulo 5
Essa sessão é útil para identificar termos técnicos, comerciais ou próprios da empresa
que são utilizados ao longo do documento, como nomes de produtos que são refereciados e
processos próprios da empresa.
2.1 Plataformas
Os testes devem ser executados em todas as plataformas suportadas pelo software, pois
é necessária uma documentação que sustente essa garantia de suporte dada pelo fabricante
do software. Cada uma das platoformas a serem usadas nos testes deve ser descrita com de-
talhe, com foco nas características mais relavantes ao software a ser testado: tipo de máqui-
na, capacidade de processamento, sistema operacional, quantidade de memória disponível...
2.2 Configurações
Assim como as plataformas, as configurações usadas em cada ambiente de testes de-
vem ser descritas detalhadamente: softwares relacionados àquele a ser testado, drivers ne-
cessários ao seu uso, entre outras.
capítulo 5 • 129
• Abordagem: <De que forma esse objetivo pode ser avaliado? Exemplo: Devem ser usadas
combinações corretas e incorretas/inválidas de usuário e senha na tela de autenticação do
usuário.>
• Critério de aceitação: <Critério que define se o obejtivo foi atendido. Exemplo: O processo
de autenticação para uso do software deve negar acesso em caso de combinações incor-
retas de usuário e senha e permitir o acesso quando a combinação fornecida for correta.>
3.4.1 CT 1 - <Nome>
• Descrição: <Em que consiste esse caso de teste? Exemplo: Verificar se um usuário não
autorizado consegue acessar as funcionalidades do software.>
• Tempo estimado: <Qual é a duração estimada desse teste? Exemplo: A verificação para
autenticação deve ser feita em até 3 segundos.>
• Critério de saída: <Quais ações ou dados de saída são esperados? Exemplo: O acesso
deve ser negado e uma mensagem exibida ao usuário.>
• Requisitos do ambiente: <Quais os requisitos do ambiente para a realização desse teste?
Exemplo: O software a ser testado deve estar instalado no ambiente de testes.>
• Objetivos mapeados: <Quais objetivos são mapeados com esse teste? Exemplo: Obj 1 -
Segurança>
130 • capítulo 5
4 Execução dos Testes
4.1 Cobertura
Essa sessão lista as funcionalidades do software que são cobertas pelos testes do Plano,
além de outros aspectos, como usabilidade, performance e segurança. Ela não deve ter um
caráter técnico, e sim deve ser feita sob o ponto de vista do usuário, abordando o que inte-
ressará a ele e refletindo o que será testado através dos casos de teste.
4.2 Resultados
A importância de se registrar os resultados dos testes é muito grande: eles são a base
para a criação de itens de trabalho para reparo e replanejamento durante o desenvolvimento.
E, ao final do desenvolvimento, a compilação dos resultados dos testes bem-sucedidos são
um indicativo relevante da confiabilidade daquele software.
5 Lições aprendidas
O registro das lições aprendidas durante os testes realizados é um material de consulta
muito útil para a criação de novos Planos de Teste, especialmente para pessoas que não
participaram dos testes definidos nesse Plano, e para testadores com menos experiência na
área. Essa é uma sessão que resume o que pode ser feito de forma melhor em novos testes,
especialmente em Planos de Teste de Software semelhantes ao testado.
capítulo 5 • 131
• Plano de Teste que apresenta o planejamento para a execução do teste identifica os itens
e as funcionalidades a serem testados, as tarefas além dos riscos associados com a atividade
de teste.
• Há também a tarefa de especificação de testes que é composta por 3 documentos ( Es-
pecificação de Projeto de teste, Especificação de caso de Teste, Especificação de Procedi-
mento de teste) que principalmente identifica os casos e os procedimento de teste, critérios
de aprovação, define dados de estrada e resultados esperado, além de especificar os passos
para a execução dos testes.
• Já os relatórios são cobertos por 4 documentos (Diário de teste, Relatório de Incidente
de Teste, Relatório-Resumo de teste, Relatório de Encaminhamento de Item de Teste) que
visam registrar detalhes relevantes, eventos que ocorrem durante os testes e resultados
das atividades.
Anexo 1
Projeto VANT-EC-SAME
Plano de Garantia de Qualidade - V-CNS
(VANT - Comunicação, Navegação, Vigilância)
Plano de Garantia de Qualidade
Introdução
132 • capítulo 5
no de Garantia de Qualidade para Unidade de Software de Componente (USC)
necessários para implementar as funcionalidades do Sistema de Navegação,
Controle e Vigilância (CNS) a ser utilizado pelo Sistema, .
As definições, acrônimos e abreviaturas encontram-se definidos no docu-
mento V-CNS – Glossário. Para facilitar a leitura o significado de alguns acrôni-
mos, definições, e abreviaturas importantes serão colocados entre parênteses
após sua primeira aparição neste documento. As referências encontram-se na
seção 1.4 deste documento
Propósito
Escopo
capítulo 5 • 133
As definições de todos os termos, acrônimos e abreviações necessárias para a
interpretação desse plano encontram-se no documento V-CNS – Glossário.
Referências
Visão Geral
Essa sub-seção mostra como o restante desse documento está organizado. Após
a Introdução acima a seção 2 apresenta os Objetivos de Qualidade. A seguir, na
seção 3, o Gerenciamento da Garantia de Qualidade é descrito. As seções 4 e 5
apresentam respectivamente a Documentação e as Métricas utilizadas. O Plano
de Revisão e Auditoria é apresentado na seção 6.
Os Testes de Validação e o Gerenciamento de Configuração são apresen-
tados nas seções 7 e 8, respectivamente. A seção 9 cuida do Treinamento.
Finalmente a seção 10 descreve como será feito o Gerenciamento de Riscos.
Objetivos de Qualidade
134 • capítulo 5
combinação de conformidade com os requisitos (o projeto deve produzir o que
afirmou que produziria) e adaptação ao uso (o produto ou serviço deve satisfa-
zer as necessidades reais).
• Prevenção sobre inspeção. O custo de prevenção de erros em geral é muito
menor que o custo de corrigi-los, conforme revelado pela inspeção.
• Responsabilidade da gerência. O sucesso exige a participação de todos os
membros da equipe, mas é sempre responsabilidade da gerência fornecer os
recursos necessários para que exista sucesso.
• Melhoria contínua. O ciclo PDCA (ver [1] seção 1.3) é à base da melhoria
da qualidade (conforme definido por Shewhart e modificado por Deming, no
ASQ Handbook, páginas 13 e 14, American Society for Quality, 1999). Além dis-
so, as iniciativas de melhoria da qualidade realizadas pela organização executo-
ra, como GQT (ver [3] seção 1.3) e Seis Sigma, podem melhorar a qualidade do
gerenciamento do projeto e também a qualidade do produto do projeto. Os mo-
delos de melhoria de processos incluem Malcolm Baldrige, CMM® e CMMiSM.
Gerenciamento
Organização
Tarefas e Responsabilidades
capítulo 5 • 135
A garantia da qualidade pode utilizar os resultados de outros processos de
apoio tais como: verificação, validação, revisões conjuntas, auditorias e resolu-
ção do problema.
O processo consiste nas seguintes nas seguintes nas seguintes atividades:
• Implementação do processo;
• Garantia do produto;
• Garantia do processo;
• Sistema de Garantia e Qualidade.
Documentação
Métricas
136 • capítulo 5
Os artefatos que serão revisados são: Plano de Desenvolvimento de Software,
Caso de Desenvolvimento, Visão, Solicitação de Requisitos, Plano de Teste.
As revisões de auditoria serão escritas de acordo com a Norma ECSS-E-50
Comunicações e com o andamento do projeto.
• Cronograma
PROJETO DE EXPERIMENTOS X
ANÁLISE DO EXPERIMENTO x
TESTES x x
AÇÕES CORRETIVAS x x
REPARO DO DEFEITO x x
AÇÕES PREVENTIVAS x x
SOLICITAÇÕES DE MUDANÇAS x
APROVADAS
ENTREGAS x
capítulo 5 • 137
• Organização e Responsabilidades
Gerência a Comunica-
ção para qualidade da
Auditor, Revisor de
Comunicação transmissão de dados
Processo
via Protocolo e via Rádio
e Freqüência.
Gerenciar a qualidade
Auditor, Revisor de
Navegação do Nível de Vôo, Rota e
Processo
Direção.
Gerenciar os recursos
Auditor, Revisor de qualidade do Proces-
Vigilância
Processo samento e Captura das
Imagens.
138 • capítulo 5
• Fluxogramas;
• Histogramas;
• Diagrama de Pareto;
• Gráfico de Execução;
• Diagrama de Dispersão;
• Amostragem Estatística;
• Inspeção;
• Revisão de Reparo de Defeito.
Testes e Validação
Gerenciamento de Configuração
Treinamento
capítulo 5 • 139
Entretanto, devido à complexidade do software necessário, treinamentos
mais aprofundados devem ser oferecidos às equipes de desenvolvedores para
garantir a qualidade do produto, processo e projeto.
Gerenciamento de Riscos
140 • capítulo 5
ANOTAÇÕES
capítulo 5 • 141
ANOTAÇÕES
142 • capítulo 5
ANOTAÇÕES
capítulo 5 • 143
ANOTAÇÕES
144 • capítulo 5