Buscar

77e27485-a66c-4d07-b9b8-a21613d3290b

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 3, do total de 71 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 6, do total de 71 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes
Você viu 9, do total de 71 páginas

Faça como milhares de estudantes: teste grátis o Passei Direto

Esse e outros conteúdos desbloqueados

16 milhões de materiais de várias disciplinas

Impressão de materiais

Agora você pode testar o

Passei Direto grátis

Você também pode ser Premium ajudando estudantes

Prévia do material em texto

W
BA
08
81
_V
1.
0
TESTE E INSPEÇÃO DE 
SOFTWARE: TÉCNICAS 
E AUTOMATIZAÇÃO
2
Stella Marys Dornelas Lamounier
São Paulo 
Platos Soluções Educacionais S.A 
2021
TESTE E INSPEÇÃO DE SOFTWARE: TÉCNICAS 
E AUTOMATIZAÇÃO
1ª edição
3
2021
Platos Soluções Educacionais S.A
Alameda Santos, n° 960 – Cerqueira César
CEP: 01418-002— São Paulo — SP
Homepage: https://www.platosedu.com.br/
Diretor Presidente Platos Soluções Educacionais S.A 
Paulo de Tarso Pires de Moraes
Conselho Acadêmico
Carlos Roberto Pagani Junior
Camila Turchetti Bacan Gabiatti
Camila Braga de Oliveira Higa
Giani Vendramel de Oliveira
Gislaine Denisale Ferreira
Henrique Salustiano Silva
Mariana Gerardi Mello
Nirse Ruscheinsky Breternitz
Priscila Pereira Silva
Tayra Carolina Nascimento Aleixo
Coordenador
Henrique Salustiano Silva
Revisor
Marcilyanne Moreira Gois
Editorial
Alessandra Cristina Fahl
Beatriz Meloni Montefusco
Carolina Yaly
Mariana de Campos Barroso
Paola Andressa Machado Leal 
Dados Internacionais de Catalogação na Publicação (CIP)_____________________________________________________________________________________ 
Lamounier, Stella Marys Dornelas
 L236t Teste e inspeção de software: técnicas e 
 automatização / Stella Marys Dornelas Lamounier, – São 
 Paulo: Platos Soluções Educacionais S.A., 2021.
 44 p.
 
 ISBN 978-65-89881-94-0
 
 1. Teste de software. 2. Inspeção. 3. Testes 
 automatizados I. Título. 
 
CDD 005
____________________________________________________________________________________________
Evelyn Moraes – CRB 010289/O
© 2021 por Platos Soluções Educacionais S.A.
Todos os direitos reservados. Nenhuma parte desta publicação poderá ser 
reproduzida ou transmitida de qualquer modo ou por qualquer outro meio, 
eletrônico ou mecânico, incluindo fotocópia, gravação ou qualquer outro tipo de 
sistema de armazenamento e transmissão de informação, sem prévia autorização, 
por escrito, da Platos Soluções Educacionais S.A.
4
SUMÁRIO
Introdução a testes de softwares _____________________________ 05
Técnicas de Teste de Software _______________________________ 21
Técnicas de Inspeção de Software ____________________________ 39
Processos e Casos de Testes automatizados _________________ 54
TESTE E INSPEÇÃO DE SOFTWARE: 
TÉCNICAS E AUTOMATIZAÇÃO
5
Introdução a testes de softwares
Autoria: Stella Marys Dornelas Lamounier
Leitura crítica: Marcilyanne Moreira Gois
Objetivos
• Apresentar os conceitos fundamentais sobre testes 
de software.
• Conscientizar os alunos sobre a importância de 
utilizar testes de software no ciclo de vida de um 
sistema.
• Especificar as diferenças verificação e validação de 
testes.
• Apresentar ao aluno as principais técnicas de 
inspeção de software.
6
1. Testes de software, uma visão geral
Desenvolver softwares com qualidade é um desafio para a maioria dos 
profissionais da área de tecnologia. Por mais que se planeje e estude a 
construção de um sistema computacional, erros humanos são passíveis 
de acontecer, porém, é importante ter em mente que esses erros devem 
ser corrigidos e solucionados o quanto antes possível.
Portanto, estudar sobre testes de software fará com que estes erros 
sejam possíveis de serem encontrados, de modo que o profissional seja 
capaz de corrigi-los antes mesmo de serem entregues ao cliente ou 
lançados no mercado.
Nos últimos anos, a indústria de software, principalmente no Brasil, tem 
empregado inúmeros recursos na busca de sistemas com qualidade, 
eficiência e com o mínimo de erros possíveis, visando, assim, redução 
nos custos, tempo de desenvolvimento e manutenção, o que corrobora 
com sua qualidade.
Para isso, adicionar testes de softwares ao ciclo de vida de um sistema 
(requisitos, projeto, codificação, testes e manutenção) se torna cada vez 
mais importante do que testá-lo quando o projeto já se encontra pronto, 
em sua versão final.
Neste cenário, sabemos que o software já tem seu papel importante na 
sociedade, visto que sua criação repleta de erros/ defeitos pode agravar 
situações que envolvem até vidas humanas, como o ocorrido com o 
software Patriot (1991), onde um erro matemático de arredondamento 
numérico calculou de formar incorreta o tempo de projeção para 
detectar e atacar mísseis e, desse modo, o Patriot ignorou a presença 
de mísseis inimigos acarretando a morte de 28 soldados e mais de 100 
feridos. Um outro exemplo, agora somando um prejuízo financeiro, foi 
uma falha no recurso de visualizar como, do Facebook (2018), permitindo 
o roubo das chaves digitais na rede social, onde os dados de mais 
7
de 50 milhões de usuários puderam ser visualizados, possibilitando, 
assim, a invasão de contas e exposição de dados pessoais. Este ataque 
ocasionou, para a empresa, um prejuízo de 13 bilhões em valor de 
mercado.
De acordo com Bohem (1976), quanto mais tarde um defeito for 
identificado, mais elevado é seu custo. Os custos de descobrir e corrigir 
aumentam exponencialmente na proporção em que o trabalho evolui, 
principalmente, na fase de desenvolvimento do projeto, ou seja, quanto 
mais cedo e mais rápido um erro é encontrado, menos dispendioso fica 
sua correção, principalmente, se encontrado na fase de testes.
Boehm (1981) apresenta, na Figura 1, o custo relativo da correção de 
defeitos encontrados em cada uma das atividades de desenvolvimento 
de um sistema.
Figura 1 - Custo relativo para corrigir um defeito
Fonte: adaptado de Pressman (2011, p. 367).
8
Pode-se notar que, no gráfico, estão presentes as principais fases de 
desenvolvimento de um software (requisitos, projeto, codificação, testes 
e manutenção). Se um erro for descoberto nas fases iniciais, como, por 
exemplo, em requisitos, seu custo de correção é mínimo. Quanto mais 
o sistema ganha forma, mais complexo se torna e a descoberta de um 
erro já nas fases finais, como na manutenção, pode onerar seu custo de 
forma significante.
Outro ponto importante é demonstrado por Pressman (2011), na Figura 
2, e se trata do gráfico curva de desgaste, que apresenta, inicialmente, 
uma curva idealizada, demonstrando o software já testado e pronto 
para ser entregue ao cliente. Posteriormente, é exibida a curva real 
que descreve o software sofrendo mudanças ao longo do tempo, 
isto é, durante todo seu processo de vida, essas alterações podem 
ocorrer muito antes que a primeira versão chegue a ser entregue, 
consequentemente, estas mudanças ocorridas ocasionam um aumento 
da taxa de defeitos, deixando que o software não esteja de acordo com 
a versão inicial. Desse modo, é perceptível, na figura, que quanto mais 
o tempo passa, mais falhas o sistema apresenta, introduzindo novos 
problemas
Figura 2–Curva idealizada
Fonte: Pressman (2011, p. 33).
9
Construir sistemas não é uma tarefa considerada simples, vários fatores 
devem ser levados em consideração para que sua complexidade não 
aumente na mesma proporção em que o software é criado. Problemas 
como erro humano são fáceis de serem cometidos, resultando na 
criação de um produto diferente daquele que foi estabelecido na fase de 
levantamento de requisitos. É preciso possuir habilidades que vão desde 
a interpretação até a execução de métodos e ferramentas da Engenharia 
de Software e, mesmo assim, é impossível criar um software livre de 
erros ou defeitos. O que é possível é que, por meio de testes, criar 
sistemas com o mínimo de erros possíveis.
Um exemplo clássico que demonstra o erro real de um algoritmo é o 
cálculo matemático em que se deseja saber a média das notas de um 
aluno. O desenvolvedor pode ter declarado variáveis como tipo inteiro, 
mas o correto seria variáveis do tipo real, uma vez que, haverá médias 
do tipo float (real), outro exemplo neste mesmo algoritmo é a não 
utilização de algumapolítica de segurança que certifique os principais 
pontos da política a ser implementada em um determinado sistema.
Desse modo, é preciso saber avaliar qual técnica é a mais apropriada 
no software a ser desenvolvido e se esta consegue identificar os erros 
e a mal implementação dos algoritmos, verificando classes, métodos, 
procedimentos, funções etc.
Lembrando que o planejamento de testes sempre deve estar de acordo 
com os requisitos levantados no início da criação do projeto, ou seja, o 
planejamento deverá ocorrer quando o documento de requisitos estiver 
sido aceito e antes do início da codificação do sistema.
Outra premissa é a importância de se ter profissionais para realização 
de testes: são os testadores, que tem como responsabilidade prever 
estimativas de atividades de testes, auxiliar a equipe a automatizar e 
desenvolver códigos de testes, garantir que os testes estão de acordo 
com o planejado e construir feedbacks para a manutenção do projeto.
10
2. Defeito versus erro versus falha
É importante saber diferenciar erros, defeitos e falha, o Institute of 
Electrical and Electronic Engineers (IEEE), ou Instituto de Engenheiros 
Elétricos e Eletrônicos, principal órgão responsável pelo fornecimento 
de normas e padrões para a Engenharia elétrica, da Computação 
e Eletrônica, mensura que um Defeito (default) é uma imperfeição 
ou deficiência em um produto de trabalho em que este não atende 
aos seus requisitos ou especificações e precisa ser consertado ou 
substituído, ou seja, demonstra que um artefato de software não está 
trabalhando corretamente, a maioria dos defeitos é ocasionado pela 
falha humana, como, por exemplo: uma instrução ou comando feito de 
maneira erronea.
O erro é caracterizado pela IEEE como a diferença entre um valor ou 
condição computada, observada ou medida, e o valor ou condição 
verdadeira, especificada ou teoricamente correta, ou seja, é a 
apresentação de um resultado incorreto resultante de uma ação 
humana, como mencionado no código abaixo em que a função do 
algoritmo é a soma de dois números inteiros sendo que por algum 
descuido o desenvolvedor digitou o * ao invés de +, alterando a saída 
que seria resultado 6, mas devido ao erro de codificação o resultado 
obtido é 8, gerando um defeito no sistema, isto é, o programa executa a 
multiplicação e não a soma de duas entradas como desejado.
def soma (a, b){
return a * b;
print ( soma(2, 4))
Ainda de acordo com o órgão regulador da IEEE, a falha se refere a um 
resultado operacional do software diferente do que foi especificado ou 
esperado pelo usuário, ou seja, o software é incapaz de executar 
uma determinada tarefa dentro dos limites estabelecidos.
11
Uma falha pode ser causada por diferentes tipos de erros e vários erros 
podem nunca causar uma única falha.
Ainda de acordo com Pressman (2011), é necessário saber identificar 
corretamente erros de defeitos: erros são encontrados internamente, 
antes da entrega para uso em produção, tanto por pessoas da própria 
organização desenvolvedora do software quanto pelo usuário, 
normalmente, durante os ciclos de teste, revisão e apresentações.
Defeitos são encontrados externamente, em ambiente de produção, 
pelo usuário do software. Sua ocorrência também é denominada 
incidente ou incidente em produção.
A Figura 3 demonstra a fronteira de cada um dos termos, divididos cada 
um em seu universo, onde é demonstrado que um defeito pode gerar 
um erro que, posteriormente, ocasiona as falhas que são responsáveis 
por executar algum comportamento inesperado.
Figura 3–Defeitos, erro e falha
Fonte: Engenharia de Software (2007, p. 55).
Lembre-se de que os testes são atividades que devem ser planejadas e 
organizadas com antecedência para que seus processos sejam definidos 
de acordo com um template e técnicas que serão aplicadas no projeto e 
métodos de testes.
12
3. Verificação e validação
Como já mencionado, criar softwares não é tarefa fácil, requer muito 
empenho e conhecimento humano. Erros acabam surgindo no decorrer 
de seu desenvolvimento, mesmo com o emprego de ferramentas e 
métodos da Engenharia de Software. Existe uma série de atividades 
que, além dos testes, devem ser seguidas para que estes erros não 
perdurem, isto é, para serem descobertos antes mesmo da liberação ao 
cliente final, são chamadas de Validação e Verificação ou pela sigla V e V e 
podem ser aplicadas não apenas ao produto final, mas em várias etapas 
durante o ciclo de vida do software, cada fase com sua técnica particular.
Esses dois processos de Validação e Verificação são formas de avaliar, 
demonstrar e controlar a qualidade de um software, avaliando se 
estes processos são capazes de satisfazer tanto a satisfação quanto a 
necessidade definida pelo cliente.
Além de softwares, os processos V e V são capazes de analisar também 
documentos, manuais, modelos e demais artefatos, como também a 
forma de analisar o software, sendo consideradas as análises estáticas e 
análise dinâmicas.
A análise estática reflete sobre a garantia da qualidade do software, não 
é necessário um modelo executável, sendo assim, este tipo de análise 
poderá ser utilizado em todas as fases de desenvolvimento, verificando 
tanto o desenvolvimento, os processos ou o produto.
A análise dinâmica é muito utilizada, como o software já está na fase de 
execução, verificando se as saídas obtidas estão de acordo com saídas 
esperadas.
Segundo Pressman (2011), Verificação e Validação podem ser entendidas 
como:
13
Verificação refere-se ao conjunto de tarefas que garatem que o software 
implementa corretamente a função específica. Validação refere-se a um 
conjunto de tarefas que asseguram que o software foi criado e pode ser 
rastreado segundo um conjunto de requisitos do cliente. (PRESSMAN, 211, 
p.402)
A verificação, segundo o Capability Maturity Model Integration (CMMI), 
ou Modelo Integrado de Maturidade em Capacitação, tem como 
característica garantir que produtos de trabalhos selecionados cumpram 
com seus requisitos solicitados, ou seja, se estamos construindo o 
software de maneira correta por meio de técnicas corretas para sua 
criação, como, por exemplo, o uso correto de diagramas e casos de 
testes, requisitos de software, padrões, práticas.
Pressman (2011), destaca que classificação a verificação, como qualquer 
artefato ou documento de um software, pode ser verificado por meio 
de revisões ou até mesmo uma auditoria, desde que o produto esteja 
seguindo os requisitos especificados.
Uma técnica muito utilizada na verificação de software é a Programação 
em pares, onde dois desenvolvedores trabalham em um mesmo bloco 
de código. Pode-se dizer que existem dois papéis, um é o piloto e ou 
outro, o navegador: o primeiro é o responsável por diligenciar o código, 
enquanto o segundo é o responsável por revisar e analisar todo o 
código, apontando os erros e possíveis melhorias.
Diferente da verificação, a validação é responsável por demonstrar se o 
produto criado ou até mesmo um componente cumpre o uso pretendido 
quando colocado em um ambiente desejado, isto é, se o produto atende 
as necessidades do cliente, se realmente está construindo um sistema 
certo, por exemplo: a criação de protótipos que demonstram ao usuário 
a interface do sistema. Também é possível validar manuais, materiais de 
treinamento, interfaces, modelos, ou até mesmo o próprio software.
14
Na fase de testes podem ser realizados processos de verificação 
e validação, na verificação é realizada uma grande quantidade de 
verificação, onde é possível verificar se os testes estão corretos e 
possuem uma cobertura adequada, enquanto na validação utiliza os 
testes de aceitação, isto é, o cliente e os stakeldors aprovam o software 
(validam), quanto mais verificação e validação for feita, mais chance terá 
de se atender as especificações ou necessidades dos clientes.
Lembrando que não existe técnica certa de se fazer validação e 
verificação, cabe ao responsável pelo projeto aplicar qual modelo se 
adaptaaos processos da empresa.
4. Inspeção de software
Em diversas áreas que abrangem o desenvolvimento de um software, 
muitas são as variáveis responsáveis por sua criação, mas deve-se 
considerar como aspectos importantes o esforço, custo, tempo e 
produtividade no seu desenvolvimento. A medida que o processo de 
desenvolvimento aumenta o seu custo, o retrabalho também aumenta. 
Neste aspecto, é imprescindível criar iniciativas de encontrar formas 
mais precisas de detecção de erros no início da criação de um projeto 
de software, isto pode ser feito utilizando uma técnica que oferece baixo 
custo e qualidade, reduzindo o retrabalho, e é a chamada revisão de 
artefatos.
Um artefato de software é uma subparte do software, é algo que 
compõe o ciclo de desenvolvimento do sistema, que vai desde a fase 
da análise até a entrega do produto final para o cliente, fornecendo 
um documento em que todas as pessoas envolvidas em sua criação 
obtenham informações que coletivamente possam se comunicar a 
respeito do software a ser criado.
15
Podemos citar como artefatos de softwarem vários diagramas da UML, 
como o diagrama de classes, os requisitos levantados para a criação do 
projeto ou até mesmo um caso de uso e outros que já se encontram 
em fase de desenvolvimento, como os módulos, manuais, código fonte, 
plano de avaliação de risco etc. A Figura 4 exemplifica dois modelos de 
artefatos, o caso de uso e, posteriormente, o Diagrama de Classes, todos 
criados pela ferramenta Lucid.
Figura 4–Representação de Artefatos – Diagrama de 
caso de uso e classes
Fonte: elaborada pela autora.
A inspeção de software pode ser caracterizada como a revisão de 
qualquer um artefato de software, é uma técnica capaz de testá-los, 
sendo caracterizado como uma revisão, a fim de detectar os defeitos 
bem definidos. Sua análise é feita de forma estática, capaz de verificar 
a qualidade do sistema por meio de regras, técnicas e processos bem 
definidos. Inúmeras são as técnicas de inspeção existentes, mas todas 
têm como intuito minimizar as inconsistências presentes nos artefatos, 
ou seja, sua principal responsabilidade é de descoberta antecipada de 
falhas.
Ainda segundo Fagan (1986), a inspeção visa encontrar erros, lendo, 
entendendo o que o documento descreve e checando, por meio de um 
checklist, as propriedades de qualidades requeridas, composto por seis 
fases: planejamento, apresentação, preparação, reunião de inspeção, 
retrabalho e acompanhamento.
16
O primeiro registro de inspeção de software foi proposto por Fagan 
(1976), que demonstrava de forma detalhada o processo de revisão. 
A Figura 5 demonstra como é feita a inspeção de software, que tem 
como característica detectar de forma bem definida os defeitos de um 
software. Neste modelo, existem duas presenças principais: o papel e a 
atividade.
Figura 5–Fases da inspeção de software
Fonte: adaptado de Fagan (1976, p. 12-13).
O papel é representado por pessoas, cada uma com uma função, como 
listado a seguir:
Moderador (planejamento e continuação): sua responsabilidade 
é de gerenciamento e orientação aos demais membros da equipe 
de inspeção, também é responsável por realizar o planejamento 
da inspeção, analisando a técnica a ser utilizada, seus documentos, 
selecionar inspetores e distribuir entre a equipe os documentos a serem 
inspecionados e marcar as reuniões. É importante que este profissional 
tenha consigo características de liderança, saiba identificar os pontos 
17
fortes e fracos da equipe. Este papel, na maioria das vezes, está ligado 
ao cargo de gerente de qualidade.
Inspetor (preparação individual): durante o processo de 
desenvolvimento de um software são gerados inúmeros documentos 
que devem ser inspecionados, este é o papel do inspetor, são 
profissionais que detém um grande conhecimento sobre o projeto, 
estudando cada artefato individualmente, procurando possíveis defeitos 
que, posteriormente, são repassados ao moderador. Este papel pode 
ser desempenhado por engenheiros de qualidade ou testadores de 
software.
Autor (retrabalho): são os profissionais responsáveis por produzir 
todos os documentos (artefatos) referentes ao sistema, ao longo de seu 
desenvolvimento. A construção destes artefatos deverá ser realizada 
sempre de forma objetiva e clara, facilitando a inspeção. Tem como 
outra responsabilidade corrigir defeitos encontrados pelos inspetores e 
confirmados pelo moderador, desse modo, após a correção, o material 
é reenviado ao moderador que o analisa e qualifica a qualidade do 
artefato inspecionado. Um autor pode ser um analista de sistema, 
clientes ou desenvolvedor de software.
As atividades no processo de Inspeção de software são divididas em 
cinco principais etapas:
Planejamento: esta fase é de responsabilidade do moderador que 
tem como objetivo organizar a equipe que participará do processo de 
inspeção, separa os materiais a serem inspecionador e define o local 
para as reuniões.
Preparação individual: os inspetores são responsáveis por analisar 
cada material de forma individual, criando anotações e listar possíveis 
inconsistências.
18
Reunião de Inspeção: o intuito é analisar e acertar as divergências 
encontradas no processo e se realmente são verdadedeiras, a presença 
do moderador, do inspetor e do autor é imprescindível neste momento.
Retrabalho: são corrigidos pelo autor os defeitos encontrados e 
repassados ao moderador.
Continuação: todos os artefatos e documentação corrigidas na etapa 
de retrabalho são repassadas ao moderador, que é o responsável por 
decidir se aquele artefato deve ou não ser inspecionado novamente.
Por que é tão importante inspecionar software?
Empresas que desenvolvem software gastam, em média, com um 
esforço de retrabalho, cerca de 50% do esforço total no desenvolvimento 
de um projeto, o ideal seria redividir este retrabalho em pequenas 
atividades, como ilustrado na Figura 6.
 
Figura 6–Inspeção em diferentes artefatos
Fonte: adaptado de Kalinowski (2004, p.16).
Cada uma das etapas (requisitos, projeto de alto nível, projeto 
detalhado, código, execução dos testes, plano de testes, caso de testes) 
representa um artefato de software que pode ser inspecionado. É 
19
importante lembrar que desde o início da criação de um software, no 
lavamento de requisitos, é importante realizar a inspeção.
Se a inspeção for realizada em etapas menores, é possível obter 
bons resultado. A Figura 7 demonstra um comparativo de custo no 
desenvolvimento de um software, quando as inspeções são aplicadas e 
quando não se utiliza as técnicas.
Figura 7–Comparativo na aplicação e não aplicação 
das técnicas de inspeções
Fonte: adaptado de Kalinowski (2004, p. 21).
Portanto, inspecionar software envolve e rigoroso planejamento e 
interação entre pessoas que revisam os artefatos e reuniões, para 
discutir e diagnosticar defeitos, para que o autor do artefato possa 
corrigir a tempo de criar uma avaliação final sobre a necessidade ou não 
de uma nova inspeção.
Isso pode trazer diversos tipos de benefícios, como, por exemplo: 
produtos mais inteligíveis, aprendizado, integração.
20
Referências
BOEHM, B. W. Software Engineering. ACM, v. 30, n. 5, p. 416-429, 1976.
BOEHM. B. W. Software Engineering Economics. Prentice Hall, 1981.
FAGAN, M. E. Design and code inspections to reduce errors in program 
development. IBM System J., v. 15, n. 3, p. 183-211, 1976.
FAGAN, M. E. Advances in software inspections. IEEE Transactions on software 
engineering, [s.l.], v. 12, n. 7, 1986. Disponível em: http://www.mfagan.com/pdfs/
aisi1986.pdf. Acesso em: 22 jun. 2021.
FAGAN, M. E. Design and code inspections to reduce errors in program 
development. IBM System J., v. 15, n. 3, p. 183-211, 1976.
KALINOWSKI, M. Infraestrutura computacional de apoio ao processo de 
inspeção de software. Dissertação de Mestrado, programa de pós-graduação de 
Engenharia. Rio de Janeiro: Universidade Federal do Rio de Janeiro, 2004. Disponivel 
em: https://www.cos.ufrj.br/uploadfile/publicacao/2087.pdf.Acesso: 23 jun. 2021.
KALINOWSKI, M. Introdução à Inspeção de Software. Revista Engenharia de 
Software: qualidade de software, v. 1, 2008.
LUCID SOFTWARE INC.2021. Disponível em: https://www.lucidchart.com/pages/pt. 
Acesso: 18/04/2021.
NETO, A.; DIAS, C. Introdução a teste de software. Engenharia de Software 
Magazine, v. 1, p. 22, 2007.
PRESSMAN, R. S. Engenharia de Software: uma abordagem profissional. 7. ed., 
McGraw-Hill. Porto Alegre: BookMan, 2011.
SOFTWARE. Inspections: an industry best practice. IEEE Computer Society. 1996.
WHEELER, D. A.; BRYKEZYNSKI, B.; MEESON, R. N. Software inspections: an industry 
best practice. IEEE Computer Society, 1996.
http://www.mfagan.com/pdfs/aisi1986.pdf
http://www.mfagan.com/pdfs/aisi1986.pdf
https://www.cos.ufrj.br/uploadfile/publicacao/2087.pdf
https://www.lucidchart.com/pages/pt
21
Técnicas de Teste de Software
Autoria: Stella Marys Dornelas Lamounier 
Leitura crítica: Marcilyanne Moreira Gois
Objetivos
• Apresentar as atividades de testes de software.
• Abortar as principais estratégias de técnicas de 
testes.
• Compreender os níveis de testes e sua relação com 
o desenvolvimento de software.
• Apresentar técnicas e ferramentas de testes.
22
1. Introdução a técnicas de software
Muitas vezes, o desenvolvimento de software pode ser uma tarefa 
complexa, o levantamento de requisitos de forma objetiva e eficiente é 
essencial para o desenvolvimento de software e a satisfação do cliente.
O desenvolvimento de software tem buscado incansavelmente a 
produção de sistema que agregue qualidade e custo-benefício, desse 
modo, são importantes atividades de testes de software, buscando o 
desenvolvimento de sistemas com maiores qualidade e custo-benefício.
Neste contexto, os testes de software são ferramentas de extrema 
importância para que o desenvolvimento evolua, de forma que quanto 
menos erros forem apresentados, maior será a garantia de qualidade 
demonstrada. Esses testes não podem ser apenas meros coadjuvantes 
no ciclo de vida do software, deverão estar implementados de forma que 
suas funcionalidades sejam dotadas de técnicas e métodos, assegurando 
maior controle das atividades e, consequentemente, aumentando o nível 
de qualidade e a satisfação dos clientes. Para isso, é necessário adotar 
atividades e técnicas de testes de software, desde sua fase de concepção 
até sua entrega, para garantir a qualidade total do produto.
É importante ressaltar a importância de se ter um ambiente de testes, 
de forma a assegurar que sejam alcançados os melhores resultados. A 
Figura 1 ilustra como é dividido este ambiente, em que cada parte possui 
um tipo de teste particular, com suas devidas responsabilidades.
23
Figura 1–Ambientes de testes
Fonte: Rios; Moreira (2013, p. 128).
A realização destes testes em ambientes distintos tem características 
assegurar que o projeto seja desenvolvido com alto padrão de 
qualidade, independente da fase em que esteja.
De acordo com Martins e Moreira (2013), em um ambiente de testes, 
cada membro da equipe possui um papel, mas cabe ao arquiteto de 
testes preparar o ambiente para sua execução, montando de forma 
coordenada o ambiente. A equipe será responsável por executar o 
trabalho, escolher de forma correta as ferramentas a serem utilizadas.
2. Fases das atividades de testes
Atividades de testes, inúmeros fatores podem colaborar para que os 
erros aconteçam, e estes erros podem estar presentes em qualquer 
fase da criação do sistema, mas, antes mesmo de se falar nas técnicas 
apropriadas a serem empregadas, durante as atividades de testes, é 
importante ter em mente que estas atividades são divididas em fases 
e que cada uma delas tem um papel crucial para que o software possa 
24
ser entregue com a qualidade esperada, ou seja, com o mínimo de erros 
possíveis.
De forma geral, podemos elencar estas atividades em três fases 
distintas: testes de unidade, teste de integração, teste de sistemas, 
conforme apresentado na Figura 2.
Figura 2–Pirâmides de testes de software
Fonte: Bortoluci; Duduchi (2015, p. 3 apud COHN, 2013, [n. p.]).
Na parte inferior da pirâmide estão os testes unitários, são as atividades 
responsáveis por testar cada unidade do sistema separadamente; no 
meio encontram-se as atividades de testes de integração, responsáveis 
por testar a integração dos módulos do sistema; e por fim, no topo da 
pirâmide, encontram-se os testes de sistemas, responsáveis por analisar 
se o software como um todo está de acordo com os requisitos funcionais 
e não funcionais levantados, a seguir o detalhamento de cada atividade.
O teste de unidade ou unitários tem como objetivo testar pequenas 
unidades em um sistema, ou seja, verificar pequenas unidades que 
compõem o sistema. Cada parte é testada isoladamente, verificando 
se está de acordo com o que foi levantado, geralmente, a pessoa 
25
responsável por sua realização é o próprio desenvolvedor, que tem 
propriedade testar as classes ou métodos implementados. Pode-se 
dizer que um teste unitário corresponde a um trecho de código que 
executa outro trecho de código e verifica se está tudo correto. A a Figura 
3 demonstra como é executado o teste unitário em classes, utilizando 
orientação a objetos.
Figura 3–Classe calculadora
Fonte: elaborada pela autora.
A Figura 4 representa uma classe denominada calculadora, que tem 
como funcionalidade calcular a soma entre números no método Somar 
( ), posteriormente, é feito o teste unitário com a criação de uma outra 
classe, chamada de Testa_Calculadora, como representado na Figura 3.
Figura 4–Teste Unitário na classe Testa_Calculadora
Fonte: elaborada pela autora.
Na figura, é ilustrada a classe de teste de unidade, onde é criado um 
método denominado Testa_Soma ( ), com responsabilidade de testar se 
a soma realizada na classe calculadora está sendo realizada de forma 
correta ou não.
Após a realização dos testes nas unidades separadas, devem-se realizar 
os testes de integração, responsáveis por verificar se estas unidades 
26
quando combinadas se comunicam corretamente, ou seja, observar se a 
junção destas não possuem erros que podem comprometer o sistema. 
Nesta atividade, é preciso ter um grande conhecimento sobre o sistema. 
Desse modo, sua execução fica a cargo da equipe de desenvolvimento.
As atividades de testes de integração devem estar realizadas quando:
Após serem testados as unidades individualmente, a ênfase é dada na 
construção da estrutura do sistema. À medida que as diversas partes são 
colocadas para trabalhar juntas, é preciso verificar se a interação entre 
elas funciona de maneira adequada e não leva erros. (DELAMARO; JINO; 
MALDONADO, 2013, p. 3)
Por fim, os testes de sistemas, também conhecidos como testes de 
interface com o usuário, compõem as atividades que verificam se todos 
os requisitos estão de acordo com o especificado e se foram realmente 
atendidos. Isso ocorre após a revisão de todos os componentes, ou seja, 
essa atividade verifica se o que foi especificado está sendo atendido 
ou atinja um padrão de qualidade que proporciona o aumento da 
probabilidade de ser adquirido pelo usuário final.
Também tem como finalidade analisar interações de um site, um 
programa ou aplicativo, por meio do uso dos botões, barras de tarefas, 
padrão de cores e fontes. Essas atividades correspondem a inspecionar 
as funcionalidades do software, se são fáceis e claras para uso, se 
possuem uma interface amigável e a não presença de erros que podem 
ser visualizados pelo usuário.
Alguns parâmetros devem ser verificados pelo profissional que 
executará essa atividade: padronização de cores e fontes, estilos de 
ícones, preenchimento de campos obrigatórios, atalhos, padronização 
de botões e ícones, tipos de dados, instrução de telas etc.
De acordo com Delamaro, Jino e Maldonado (2013, p .4), é recomendado 
também realizar os testes de regressão, como uma atividade realizada 
27
na etapa de manutenção de software. Um sistema ao longo de seu 
ciclo de vida sofrealgum tipo de manutenção, sendo assim, é possível 
apresentar algum tipo de erro ou defeito durante o processo de 
modificação. Neste contexto, é fundamental a utilização dos testes de 
regressão, a fim de detectar se estes reparos possuem algum tipo de 
problema, isto é, verificar se as implementações estão de acordo com 
os novos requisitos e que os requisitos anteriores ainda se encontram 
válidos.
Os testes de regressão são importantes devido a sua responsabilidade 
de garantir que as manutenções ou implementações de novas 
funcionalidades, realizadas ao longo do tempo, não insiram novos erros 
que podem comprometer toda a qualidade do software. Um exemplo 
da utilização deste teste é quando o desenvolvedor modificar o código 
fonte e acrescenta uma nova funcionalidade, posteriormente, o teste é 
executado, a fim de verificar falhar até então inexistentes.
3. Técnicas de testes de software
Independentemente do tipo de projeto ou aplicação que o profissional 
esteja trabalhando, é preciso entender de forma bem objetiva a 
importância de utilizar a técnica correta e que mais se adapta ao tipo 
de sistema a ser testado. Inúmeras são as técnicas que podem ser 
realizadas para avaliar diferente aspectos, responsáveis em evitar que 
o sistema apresente bugs ou retorne alguma notificação inesperada, o 
que geraria grande frustração por parte do cliente. Destacaremosestaca 
algumas técnicas importantes ao longo do texto.
3.1 Testes de usabilidade
Durante o processo de desenvolvimento de uma aplicação, é frequente 
a apresentação de erros. Os testes de usabilidade são realizados 
28
durante toda a fase de criação do software por profissionais que são 
responsáveis pelo seu desenvolvimento. Uma das formas de tentar 
minimizar erros e garantir um software de qualidade é garantir que a 
usabilidade esteja empregada no sistema por meio da realização de 
testes de usabilidade.
É fundamental antes de entrar no processo de testes de usabilidade, 
destacar o que é usabilidade:
A usabilidade é a característica que determina se o manuseio de um 
produto é fácil e rapidamente aprendido, dificilmente esquecido, não 
provoca erros operacionais, oferece alto grau de satisfação para seus 
usuários e resolve eficientemente as tarefas para as quais ele foi projetado. 
(FERREIRA, LEITE, 2003, p. 3)
O termo usabilidade é utilizado para facilitar a execução de uma 
tarefa específica, recurso ou ferramenta, demonstrada de forma clara 
e simplificada, ou seja, ao serem executadas não devem chamar a 
atenção para si, mas para a facilidade de sua utilização, aprendizagem 
e satisfação na sua operação pelo usuário. A usabilidade é relacionada 
à eficácia e eficiência da interface diante do usuário e pela reação do 
usuário diante desta.
Os testes de usabilidade seguem esta linha, avaliar o grau de satisfação 
do usuário, avaliar a experiência do usuário com o software, onde os 
participantes envolvidos são capazes de avaliar o grau de satisfação 
na utilização do sistema, se seus critérios estão de acordo com a 
usabilidade pretendida, registrando a consistência da interface, layout, 
acesso às funcionalidades, entre outras. Também é possível obter os 
melhores resultados para que, em uma aplicação futura, seja aplicada, 
minimizando custo e tempo.
São diversas ferramentas para os testes de usabilidades, umas bem 
simples e objetivas, como checklist e formulários, como mostrado no 
exemplo abaixo, em que é possível identificar no formulário para a 
29
realização de testes de usabilidade, o número de participantes (público-
alvo), demonstrar um cenário especifico, criar tarefas e elaborar as 
perguntas objetiva e precisas.
Exemplo:
Número de participantes: 15.
Cenário: Uma empresa de desenvolvimento de software recrutou 
pessoas para realizar uma análise em um site de e-commerce.
Tarefas:
• Visite a página inicial por 20 segundos e diga o que achou.
• Abra uma conta.
• Realize a compra de um produto.
• Insira a forma de pagamento.
• Finalize a compra.
Perguntas
1. Conseguiu realizar a tarefa rapidamente?
2. Quantas páginas o usuário teve que visitar para realizar o 
cadastro?
3. Quantas páginas o usuário teve que visitar para realizar a compra?
4. Qual é a impressão que o usuário tem sobre o site, ao final do 
teste?
5. As fontes e cores do site são legíveis ou prejudicam o usuário na 
realização da tarefa?
6. Os usuários apreciaram o site? Recomendaria esse sistema para 
seu amigo? (0=Não e 10=Com certeza)
30
Público-alvo: usuários que tenham que já realizam compras on-line 
há mais de cinco anos e estão entre 20 e 45 anos, sexo feminino e 
masculinho, renda mínima de três salários mínimos.
Uma boa prática para a realização destes testes é recrutar pessoas 
desconhecidas, que entendem da regra de negócio, o que evita a 
formação de opiniões participais, facilitando a realização das tarefas de 
forma a se descobrir possíveis erros.
Portanto, deve-se ter em mente que não existe apenas esta técnica 
para ser utilizada em testes de usabilidade, é possível utilizar sistemas 
automatizados que garantem também eficiência e eficácia nas tarefas 
realizadas.
3.2 Teste funcional ou de caixa preta
O teste funcional também é amplamente conhecido como teste de 
caixa preta, possui este nome por não depender do conhecimento do 
comportamento interno do software, isto é, para sua compreensão, 
o testador não precisa ter um conhecimento técnico do código fonte 
desenvolvido, mas, ao mesmo tempo, precisa ser detentor de alto 
conhecimento das funcionalidades que operam todo o sistema. Sua 
estrutura é definida de acordo com os requisitos funcionais do software, 
baseando-se nas especificações onde as saídas desejadas devem 
estar de acordo com o esperado, por isso, não se deve levar em conta 
detalhes de sua construção, como módulos, classes, código fonte.
Testes de caixa preta são, na maioria das vezes, utilizados para verificar 
a perspectiva do usuário, realizando a verificação e correção do sistema 
com base nos seus requisitos funcionais, que, na maioria das vezes, são 
capazes resolver erros de interface, comportamentos, erros de iniciação 
ou término de um sistema, como, por exemplo, um sistema que aceita 
apenas números inteiros positivos em seus campos. A Figura 5 ilustra 
31
como é executado o teste de caixa preta, por exemplo, um sistema que 
em um dos seus campos aceita apenas como entrada números inteiros, 
o testador realiza os testes com números negativos ou decimais para 
verificar se o requisito está funcionando conforme o especificado: deve-
se preencher o campo apenas com números inteiros, os passos em 
que o testador verifica a entrada com números decimais ou números 
negativos e espera uma resposta sobre esta verificação, ou seja, se o 
sistema aceita apenas o que foi especificado. Desse modo, nota-se que o 
teste tenta buscar os erros que o usuário pode cometer.
Figura 5 –Teste funcional ou caixa preta
Fonte: elaborada pela autora.
Teste funcional ou de caixa preta são baseados em especificações 
e consideram apenas entradas aceitas pelo componente (função) e 
saídas esperadas. Visa identificar anomalias de código, interfaces, 
fontes de dados e performance, preocupando-se apenas com critérios 
fundamentais dos sistemas e não com sua estrutura lógica interna.
Alguns critérios podem ser adotados para os testes funcionais, entre 
eles, destacam-se o particionamento de equivalência e a análise de valor 
limite.
3.2.1 Particionamento por equivalência
Segundo Delamaro, Jino e Maldonado (2013), o particionamento por 
equivalência tem como finalidade tornar a quantidade de dados a serem 
testadas finitas, diminuindo drasticamente o tempo com testes que, por 
32
muitas vezes, se tornam complexos e repetitivos. Este critério divide a 
entrada nas chamadas classes por equivalência e, desse modo, após a 
definição destas classes, pode-se assumir que qualquer elemento da 
classe pode ser considerado um representante fiel dela e qualquer um 
destes elementos tem o poder de secomportar de forma similar, isto é, 
caso apresente algum erro, qualquer outro elemento também detecta 
este erro, caso não tenha a detecção, nenhum outro também detectará.
Suas classes são definidas por um conjunto de classes válidas e 
inválidas, como meio de entrada para testes, geralmente, sendo 
apresentadas uma classe válida e duas classes inválidas.
Após a identificação das classes válidas e inválidas, é necessário 
determinar os casos de testes, de modo ao escolher um elemento da 
classe que gere um novo caso de teste responsável por englobar o maior 
número de classes possível, conforme mensurado no exemplo abaixo.
Um campo de entrada (input field) referente ao ano de aniversário aceita 
valores de 1900 até 2020. A Figura 6 demonstra as classes válidas e 
inválidas do exemplo.
Figura 6–Particionamento por equivalência
Fonte: elaborada pela autora.
Após feito o particionamento por equivalência, é fundamental a 
realização do caso de teste para que haja uma maior cobertura dos 
testes, conforme ilustrado no Quadro 1.
33
Quadro 1–Caso de teste
Caso de teste 
(nome)
Valores Status
C1 2000, 1984,1901 Válido.
C2 1277, 1899 Inválido.
C3 2029, 2021 Inválido.
Fonte: elaborado pela autora.
Portando, os testes de caixa preta demonstram que é impossível testar 
exaustivamente todas as entradas de um programa, sendo possível 
por meio dele obter a mesma qualidade, utilizando uma quantidade 
de testes efetivos e capazes de cobrir as possíveis entradas, a fim de se 
obter os resultados esperados
3.2.2 Análise de valor limite
A análise de valor limite é utilizada para teste de valores com intervalos 
numéricos, onde é possível descobrir os limites do campo que se deseja 
testar, ou seja, que seja capaz de testar um valor inferior ao limite, o 
valor limite e, finalmente, o valor superior, sendo um complemento dos 
resultados obtidos do particionamento por equivalência.
Vale ressaltar que a análise obtém um grande conjunto de dados de 
entrada e o divide em pequenos subconjuntos e, ao invés de escolher 
os dados a serem testados de forma aleatória, devem ser selecionados 
considerando o valor limitante de cada uma das classes de equivalência. 
O exemplo mostrado no quaer abaixo relata, de forma simples, como é 
feita a utilização desse modelo de teste.
34
Um campo de entrada (input field) referente a idade aceita valores maior 
igual a 18 anos e menor igual a 60 anos, conforme ilustrado no Quadro 2.
Quadro 2–Técnica do valor limite
Intervalo de valores 
inválidos (Inferior)
Intervalo de 
valores válidos
Intervalo de valores 
Inválidos (Superior)
15, 16, 17 18, 19, 20........58, 59, 60 61, 62, 63, 64.....
Fonte: elaborado pela autora.
O exemplo demonstra que é preciso testar apenas um valor inválido 
para inferior e posterior, isto é, o resultado não se modificará se 
testarmos valores que não estejam no limite do valor inválido, então, 
deve-se testar apenas a idade 17 (inferior) e 61 (superior) para intervalos 
inválidos e para o intervalo válido 18 e 60 anos de idade.
3.3 Testes estrutural ou de caixa branca
Diferentes dos modelos apresentados anteriormente, os testes 
estruturais estão preocupados com o fluxo do código fonte dos 
sistemas, sendo que o profissional (testador) deve ter conhecimento do 
código fonte a ser testado.
Este modelo apresenta como característica avaliar o comportamento 
interno do sistema, analisando o comportamento do software, a fim 
de avaliar o fluxo de dados condições, caminhos lógicos a serem 
percorridos.
(1) Utilizando métodos de caixa-branca é possível criar casos de testes que: 
garantem que todos os caminhos independentes de um módulo foram 
exercitados pelo menos uma vez, (2) exercitam todas as decisões nnos 
seus estados verdadeiro e falso, (3) executam todos os cilcos em seus 
35
limites e dentro de suas fronteiras operacionais, e (4) exercitam estruturas 
de dados internas para assegurar a sua validade. (PRESSMAN, 2011, p. 431.
Uma técnica de caixa branca comumente utilizada é o teste de caminho 
básico, onde o projetista de software pode medir a capacidade lógica 
de um projeto e utilizá-la para guiar o número de caminhos a serem 
executados. Nesse contexto, é possível executar pelo menos uma vez as 
instruções de um programa.
Este modelo é, em sua essência, uma notação de grafo de fluxo, 
onde temos as arestas ilustradas pelas setas no grafo, e sua função 
é representar o fluxo de controle do grafo e são análogas ao fluxo de 
controle do grafo. Temos também a presença do nó do grafo, representa 
um ou mais comandos procedurais. As arestas sempre terminarão 
em um nó, independente se este nó apresenta ou não uma condição 
(PRESSMAN, 2011, p. 432). A Figura 7 ilustra a notação sobre o grafo de 
fluxo.
Figura 7–Construções estruturadas no grafo de fluxo
Fonte: Pressman (2011, p. 432).
Com a análise do fluxo do grafo, é possível realizar o teste de caminho 
básico, um exemplo da sua utilização é demonstrado na Figura 7.
36
Para realizar a análise, é preciso ter ciência do que se refere a 
complexidade ciclomática, sendo uma regra que mede o número de 
fluxo que um código pode seguir, ou seja, quantos testes devem ser 
executados para a verificação de todos os fluxos que o código fonte deve 
tomar para que seja garantida toda a cobertura necessária de testes. 
Seu cálculo matemático é expresso por:
V(G)=Arestas–Nós+2
Nesse cálculo, as arestas são as setas do grafo e nós, os círculos. 
Vejamos o exemplo mostrado na Figura 8
Figura 8–Pseudocódigo–Saque
Fonte: elaborada pela autora.
A figura representa um pseudocódigo simples para saque em um caixa 
eletrônico, conforme os passos descritos:
1. Início do grafo: onde o usuário digira o valor do saque no campo 
de entrada, posteriormente, o sistema lê este valor.
37
• O saldo do cliente é de 2000,
Passa-se para a próxima etapa:
2. Se o saque for menor ou igual ao saldo, o caminho é percorrido 
pelo lado 2.
3. Ao contrário, é percorrido o caminho 3.
4. Independente do caminho a ser percorrido (2 ou 3), o algoritmo 
terminar a no nó 4 (fim algoritmo).
A partir deste pseudocódigo, é possível criar o grafo como mostrado na 
Figura 9.
Figura 9–Fluxo de Grafo
Fonte: elaborada pela autora.
Aplicando a notação matemática da complexidade matemática, é 
possível chegar ao seguinte resultado:
V(G)=Arestas- Nós+2 => 4 – 4 + 2 => 2
Desse modo, podemos concluir que, no algoritmo mencionado, é 
possível a realização de dois testes de caminho básico, isto é, há dois 
caminhos que podem seguir para se obter um resultado.
38
Nesse sentido, pode-se observar que as técnicas de software 
podem trazer várias vantagens para auxiliar nas condução de testes, 
possibilitando eliminar ambiguidades ou talvez reduzir o tempo de 
testes. Além disso, também traz uma elaboração rigorosa no que o 
sistema realmente fazer, são diversos métodos a serem utilizados, 
resultando em casos de testes a partir do modelo escolhido, devendo 
levar em conta a adaptação do método escolhido ao sistema a ser 
testado.
Referências
BORTOLUCI, R.; DUDUCHI, M. Um estudo de caso do processo de testes 
automáticos e manuais de software no desenvolvimento ágil. In: X Workshop de 
Pós-Graduaçao e Pesquisa do Centro Paula Souza. 2015.
DELAMARO, M.; JINO, M.; MALDONADO, J. Introdução ao teste de software. Rio de 
Janeiro: Elsevier Brasil, 2013.
FERREIRA, S. B. L.; LEITE, J. C. S. do P. Avaliação da usabilidade em sistemas 
de informação: o caso do sistema submarino. Revista de Administração 
Contemporânea, v. 7, n. 2, p. 115-136, 2003. Disponível em: https://rac.anpad.org.
br/index.php/rac/article/view/220. Acesso em: 24 jun. 2021.
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional, 7. ed., 
McGraw-Hill., Porto Alegre: BookMan, 2011.
RIOS, E.; MOREIRA, T. Teste de software. Rio de Janeiro: Alta Books, 2013.
https://rac.anpad.org.br/index.php/rac/article/view/220
https://rac.anpad.org.br/index.php/rac/article/view/220
39
Técnicas de Inspeção de Software
Autoria: Stella Marys DornelasLamounier 
Leitura crítica: Marcilyanne Moreira Gois
Objetivos
• Apresentar as atividades de testes de software.
• Abortar as principais estratégias de técnicas de testes.
• Compreender os níveis de testes e sua relação com 
o desenvolvimento de software.
• Apresentar técnicas e ferramentas de testes.
40
1. Introdução a técnicas de Inspeção de 
Software
Para garantir sistemas que possam satisfazer as perspectivas dos 
usuários, é preciso seguir dois objetivos fundamentais:
1. Construir sua qualidade desde o início, iniciando na fase de 
levantamento de requisitos, nos quais devem ser claramente 
documentados e especificados. 
2. A qualidade do software deve ser seguramente mantida ao 
longo de todo o ciclo de vida do software (análise, projeto, 
implementação, integração e operação).
Seguindo esses objetivos, é possível reduzir o custo com a correção 
de defeitos que aumenta exponencialmente a medida que o software 
se torna mais complexo, por isso, é importante encontrar defeitos o 
quanto antes e, para isso, as inspeções de software, segundo Fagan 
(1976), têm se mostrado eficientes, reduzindo custos e retrabalho e, 
consequentemente, aumentando a qualidade do sistema.
Antes de aplicar as técnicas de inspeção, devemos, primeiramente, saber 
distinguir inspeção de testes de software, por mais que os dois possuam 
características semelhantes, se completam, isto é, juntos trabalham na 
remoção de erros como relatado:
A inspeção encontra defeitos não encontrados em teste e teste encontra 
defeitos não encontrados na fase de inspeção ou que tenham sido 
inseridos depois da fase de Inspeção. (PAGLIUSO; DE ANDRADE; VILLAS-
BOAS, 2002, p. 107)
A inspeção é uma técnica de revisar artefatos de software e documentos, 
de modo a verifcar insconsistências de cada um, independente da fase 
de desenvolvimento. Pode-se verificar desde o código fonte, diagramas 
da UML ou documentos de requisitos. Esta técnica é considerada 
41
estática, pois não é necessário que o sistema seja executado para sua 
aplicação, possuindo, assim, processos muito bem definidos.
Já os testes de softwares, são considerados modelos dinâmicos, ou seja, 
para a detecção de defeitos, muitas vezes, é necessário que o software 
seja executado.
Conforme citado, ambas as técnicas caminham juntas, mas cada uma 
capturam defeitos diferentes e em diferentes fases de desenvolvimento 
do software, desse modo, é sempre importante a aplicação das duas 
técnicas, a fim de identificar possíveis erros nos artefatos.
Uma das principais características da inspeção é que para sua execução, 
não necessariamente precisa de uma versão do código fonte já 
implementada, os defeitos identificados podem ser removidos antes 
antes de se passar para a etapa de desenvolvimento.
A Capability Maturity Model Integration (CMMI) ou Modelo de Capacidade 
e Maturidade Integrado, é caracterizado um modelo de referência para 
boas práticas e diretrizes na melhoria no processo de desenvolvimento 
de sistemas, seu objetivo é auxiliar empresas de software a melhorar o 
desenvolvimento e manutenção de seus produtos e serviços, tornando-
as mais maduras. Essas práticas, segundo a Software Engineering Institute 
(SEI), a qualidade do software está amplamente ligada a qualidade do 
processo que o desenvolve.
A CMMI defende a prática de inspeção com o objetivo de assegurar a 
qualidade do produto e do processo, pois, uma vez os dados coletados, 
serão utilizados para a correção de defeitos bem como para uma 
melhoria contínua no processo de desenvolvimento do software.
Segundo Sommerville (1996), para introduzir a inspeção nestes 
processos de software, uma organização pode considerar as seguintes 
sugestões:
42
• Selecionar uma lista de prováveis erros no início do processo e ir 
alimentando de acordo com seu surgimento.
• Maior prepação da equipe, mesmo que considerada pequena, com 
treinamentos para a utilização destas técnicas.
Revisões
Existem várias maneiras de se realizar as revisões em um software. Um 
exemplo bem simples é realizar pequenas reuniões na hora do café, 
em uma empresa de desenvolvimento, onde são trocadas informações 
relevantes e as técnicas discutidas neste ambiente, mas não se limita 
a apenas isso. Segundo Pressman (2011), estas revisões são divididas 
basicamente em revisões formais e informais.
Revisões informais:
Os processos não são estruturados, não existe planejamento ou alguma 
preparação antecipada, nem agendamento de reuniões ou algum 
acompanhamento sobre os erros encontrados, mas não impede que 
existam listas de verificação genérica e acompanhamento das ções 
necessárias pelos revisores.
Em geral, esse tipo de revisão é considerada menos eficaz do que a 
abordagem formal que veremos a seguir. Um bom exemplo deste 
tipo de revisão é a aplicação de testes de mesa, onde o verificador 
juntamente com um colega da equipe, examinam o protótipo do 
sistema, utilizando uma lista de verificações para interfaces, como 
mostrado a seguir:
• Apresentação precisa de barras de rolagem.
• Padronização de cores, tipo e tamanhos de fonte.
• As opções de navegação estão identificadas de maneira clara para 
o usuário?
43
Revisões formais:
São controles específicos da qualidade do software, na maioria das 
vezes, são realizadas por engenheiros de software, que tem como 
objetivos: identificar erros de função, implementação ou lógica em 
um código fonte; garantir que o software foi implementado de acordo 
com os requisitos definidos; diagnosticar que o software foi criado de 
maneira uniforme, isto é, obedece às técnicas de padrão exigidas pela 
equipe de desenvolvimento.
Este modelo é dotado de reuniões padronizadas, planejadas 
antecipadamente e que contam com a participação de todos os 
membros da equipe. Geralmente, são revistos artefatos resultantes, 
como, por exemplo, o código fonte de um componente ou parte do 
modelo de requisitos.
Nestas reuniões de revisão são discutidos os artefatos modificados, 
se após sua modificação serão aceitos por completo ou em partes. 
Posteriormente, os membros envolvidos na modificação dos artefatos 
assinam um documento de aprovação indicando sua participação e 
concordância sobre o que foi revisado, e quais são as novas descobertas.
Um dos modelos mais utilizados em técnicas de inspeção é o formato 
V, apresentado na Figura 1, onde em cada uma das fases de criação 
do software é realizado o processo de inspeção, que, posteriormente, 
apresentará um feedbck das fases inspecionadas.
44
Figura 1–Técnica de inspeção em V
Fonte: Pagliuso, De Andrade e Villas-Boas (2002, p.108).
Podemos observar, na Figura 1, as fases que compõem a criação de 
um projeto (requisitos, arquitetura, design, código). Após a finalização 
de cada uma destas fases, é realizada uma inspeção e, só ao final da 
ocorrência de todas as inspeções, são realizados os testes contidos na 
pirâmide de testes (testes de unidades, de integração e de sistemas), 
cada um representando uma particularidade do sistema.
Técnicas de inspeção:
Dentre as técnicas de inspeção de software, pode-se destacar as 
seguintes:
Checklist:
Ckecklists são amplamente utilizados para inspecionar e validar 
requisitos, devido a sua facilidade de construção e utilização, que 
45
contém uma estrutura de questões genéricas que devem ser 
respondidas (sim/não), auxiliando o inspetor a detectar erros sem a 
presença de guias específicos ou sem que haja outro tipo de sistema 
para testes. Trata-se de um conjunto de questões fornecidas aos 
inspetores que, quando a resposta for não, presume-se que um erro 
ou defeito foi encontrado e deve ser registrado, conforme relatado na 
taxonomia de defeitos.
Segundo Shull (1998), a taxonomia de defeitos descreve os principais 
tipos de defeitos que um sistema pode conter em suas classes. As 
classes são divididas em duas categorias: omissão e comissão, a primeira 
demonstra os defeitos causados pela não apresentação de informação 
no processo de levantamento de requisitos, isto é, informaçõesque 
não estão expostas; já a comissão trata os defeitos em informações que 
foram relatadas de forma incorreta ou ambígua nos requisitos.
Ainda de acordo com o autor, os tipos de defeitos podem ser divididos 
em: falta de informação, informação ambigua, relevante, inconsistente, 
incorreto e diversos; todos tratam de tipos de defeitos classificados de 
acordo com a necessidade apresentada.
Os checkilists, em geral, são desenvolvidos de acordo com os fatos e 
dados históricos de defeitos já ocorridos, verificados pela equipe que 
compõem a empresa, sendo a experiência adquirida pelos revisores 
uma das maneiras mais eficazes de se levantadar dados para a criação 
do documento.
O emprego do checklist no processo de revisão pode se descrito como:
A mais empregada para a detecção de defeitos no contexto de inspeções 
de software, sob a abordagem de aumentar a efetividade da revisão e 
diminuir a relação de custo por defeito ao focar a atenção do revisor 
num conjunto pré-definido de questões. Os revisores respondem a essas 
questões enquanto lêem um artefato de software, atribuindo uma das três 
46
opções de resposta Sim, Não e Não se Aplica. (LAITENBERGER, ATKINSON, 
1988, p. 494-503)
Em resumo, podemos dizer que o fundamento do checklist é uma lista 
de perguntas ou afirmações, que guiam o inspetor para a detecção de 
erros nos artefatos do sistema.
Perspectiva baseada em leitura
A Técnica Perspectiva baseada em Leitura, também é conhecida como 
PBR (Perspective-Base Reading), é utilizada na aplicação de inspeção de 
documentos feitos em linguagem natural, é constituídos por instruções 
direcionadas para os três profissionais que estão envolvidos no 
documento de requisitos: o testador, o projetista e o usuário, em que 
cada um dos revisores buscam encontrar possíveis erros de acordo 
com sua especificidade de um cenário recebido, isto é, cada um recebe 
os documentos a serem inspecionados em forma de cenários que 
consistem na construção de um documento com questões e atividades 
que auxiliam a organização na resolução de problemas.
Esta técnica tem como forte característica a distribuição de 
responsabilidade por cada revisor envolvido, onde cada um é 
responsável por uma perspectiva particular, evitando que as atividades a 
serem realizadas não sejam revisadas duplicadamente ou sobrepostas e 
garantindo que todos os documentos tenham sido checados e cobertos. 
A Figura 2 demonstra a utilização da técnica PBR no desenvolvimento de 
um software.
47
Figura 2–Técnica baseada em perspectiva
Fonte: Melo (2009, p. 7).
A figura ilustra que o Documento de Requisitos (DR) é avaliado de 
formas diferentes, ou seja, cada um dos três profissionais (projetista, 
testador e usuário), detém de um olhar critíco e particular ao papel 
que foi determinado. Nesse sentido, o projetista utiliza o DR para 
gerar o projeto de sistemas, o testador utiliza para além dos casos de 
testes gerados, para testar o sistema por completo quando estiver 
implementado e, por fim, o usuário final, que, por meio do Documento 
de Requisitos, verifica as funcionalidades do sistema, se estão de acordo 
com as especificações levantadas.
Vale ressaltar que para todas essas etapas são criados cenários com 
cada uma das perspectivas citadas, isto é, um cenário projetista, um 
cenário testador e um cenário usuário.
Uma outra técnica conhecida e aplicada pelos revisores, com 
características simples é a Técnica de leitura Ad-Hoc, segundo Martins 
(2021). Nessa técnica não é utilizado nenhum método ou técnica formal 
para sua realização, cada leitor lê o documento a seu modo e interpreta 
de acordo com sua experiência, conforme sua intuição, por isso, é 
importante que os profissionais que utilizam essa técnica tenham ampla 
experiência.
48
Existem outras técnicas que podem ser empregadas na inspeção de 
software, cabe a equipe de inspeção categorizar qual técnica deve ser 
utilizada para seu tipo de sistema. Deve-se sempre levar em conta 
o tamanho e a complexidade do sistema, só assim será possível 
inspecionar o software para garantir a qualidade tão desejada.
Etapas de inspeção do software
Aplicar técnicas adequadas é fundamental para a detecção antecipada 
de erros e falhas, fazendo com que estes problemas não ultrapassem 
para a fase seguinte, mas é necessário saber diferenciar cada uma das 
etapas envolvidas para que haja uma leitura e entendimento correto do 
documento de requisitos, descrevendo as propriedades de cada uma.
Basicamente, as etapas são compostas por seis fases, cada uma com 
sua particularidade e responsabilidade diferente,: planejamento, 
apresentação, preparação, reunião de inspeção, retrabalhado e 
continuação.
Também é composta por uma equipe, onde cada membro possui 
um papel importante e singular em cada uma das fases: moderador, 
inspetor, e o autor, segundo Fagan (1986). A Figura 3 ilustra como são 
divididas as etapas e os papéis de cada profissional no processo de 
inspeção de software
49
Figura 3–Etapas e papéis na inspeção de software
Fonte: Porto (2009. p. 46).
Incialmente, abordaremos o papel de cada um dos membros e 
categorizaremos sua importância no desenvolvimento do processo de 
software.
Moderador: é o líder da equipe, tem com papel conduzir as reuniões 
e os demais membros, garantindo o sucesso de todo o processo de 
inspeção. Sua principal responsabilidade é verificar se as inspeções 
aplicadas são realmente necessárias. Deve possuir boa relação 
interpessoal, habilidade para lidar com equipes diversas.
Inspetor: tem como papel fundamental tentar encontrar o maior 
número de erros durante o processo de inspeção. Pode-se dizer que 
todos os membros da equipe possuem o papel de inspetor, pois estão 
ali envolvidos no projeto, são os responsáveis por encontrar os erros nos 
artefatos de forma precisa, sem que haja qualquer tipo de omissão e, 
como o próprio nome já diz, sua atribuição é inspecionar os documentos 
dos artefatos
50
Autor: é a própria pessoa que criou o artefato que será inspecionado, 
seu papel é corrigir defeitos apresentados e tirar possíveis dúvidas 
no decorrer das reuniões, como dito, são os próprios criadores 
da documentação do software, podem ser analistas de sistemas, 
desenvolvedores ou até mesmo os clientes.
Pode-se destacar as etapas a serem realizadas durante o processo de 
inspeção. É importante ressaltar que cada fase possui uma ou mais 
pessoas responsáveis, como destacado na Figura 3.
Planejamento: é nesta etapa que tudo começa, é onde são escolhidos, 
pelo moderador, a equipe de inspeção. É realizada a organização e 
separação dos documentos utilizados que passarão pelo processo 
de inspeção. A equipe recebe as instruções essenciais. É nessa etapa 
que também é definido o local em que serão realizadas as sessões de 
inspeção.
Detecção: tem como objetivo encontrar os defeitos nos artefatos, 
cada inspetor selecionado tem como atribuição realizar atividades que 
detectem os defeitos nos documentos selecionados e, posteriormente, 
registrandar em uma lista com as discrepâncias produzidas.
Coleção: quando os erros são identificados por mais de um inspetor, 
todas as listas são selecionadas e excluídos os erros ambíguos, 
evitando, assim, o retrabalho e mantendo apenas um registro de cada 
discrepância apresentada.
Discriminação: os membros da equipe, que fazem parte do processo de 
inspeção discutem os problemas de discrepâncias apresentados. Com 
isso, apenas os defeitos são registrados em um documento, chamado 
de lista de defeitos, que, posteriormente, será repassado ao autor para 
possível correção.
51
Retrabalho: o autor do artefato, tendo em posse a lista de defeito, 
seleciona o defeito que foi atribuído, reproduzindo um relatório com as 
correções realizadas.
Continuação: esta última fase é de responsabilidade do moderador que 
terá que decidir se uma nova inspeção deve ou não ser realizada, ou 
seja, é o responsável por tomar a decisão se o artefato deve ou não ser 
inspecionado novamente.
Benefícios na aplicaçãode inspeção de software
Os benefícios gerados pela aplicação das técnicas de inspeção são 
muitos, e estão associados ao custo, a produtividade, tempo e esforço, 
mas é preciso que o inspetor esteja muito bem treinado e apto para 
diagnosticar os erros nos artefatos o quanto antes, além de estabelecer 
padrões para o desenvovimento de software, obtendo resultados mais 
satisfatórios
Segundo Kalinowski (2008), o esforço gerado com retrabalho em um 
software pode chegar a 50% do esforço total de uma equipe, o que, 
concomitantemente, gera maior custo e um elevado gasto com tempo e 
mão de obra. A Figura 4 ilustra a distribuição do retrabalho, conforme a 
produção para cada uma das fases do desenvolvimento.
52
Figura 4–Distribuição de retrabalho
.
Fonte: Kalinowski (2008, p. 69).
O gráfico descreve que com o avanço das etapas do desenvolvimento, o 
retrabalho tende a aumentar. Um dos motivos é que requer um maior 
esforço para a correção de defeitos nas etapas finais. Pode-se observar 
um aumento do percentual de retrabalho, como, por exemplo, nas 
fases de teste de código e de unidade. Nos requisitos, não há tanta 
distribuição de retrabalho, e no projeto de alto nível, que são fases 
iniciais, pode-se se observar uma carga menos de retrabalho quando 
comparado aos demais.
Assim, é importante a utilização da inspeção de software para a 
detecção precoce dos defeitos, bem nas fases iniciais, quando já tem 
uma percepção do sistema a ser criado. Executando essas correções, 
pode-se chegar a uma diminuição no custo e no esforço do retrabalho, 
em mais ou menos 10% a 20%, gerando melhorias na qualidade tão 
pretendida, segundo Kalinowski (2008).
53
Referências
BORTOLUCI, R.; DUDUCHI, M. Um estudo de caso do processo de testes 
automáticos e manuais de software no desenvolvimento ágil. In: X Workshop de 
Pós-Graduaçao e Pesquisa do Centro Paula Souza. 2015.
DELAMARO, M.; JINO, M.; MALDONADO, J. Introdução ao teste de software. Rio de 
Janeiro: Elsevier Brasil, 2013.
FERREIRA, S. B. L.; LEITE, J. C. S. do P. Avaliação da usabilidade em sistemas 
de informação: o caso do sistema submarino. Revista de Administração 
Contemporânea, v. 7, n. 2, p. 115-136, 2003. Disponível em: https://rac.anpad.org.
br/index.php/rac/article/view/220. Acesso em: 24 jun. 2021.
KALINOWSKI, M. Introdução à inspeção de software. Revista Engenharia de 
Software: qualidade de software, v. 1, 2008. Disponível em: http://www-di.inf.puc-
rio.br/~kalinowski/publications/KalinowskiS07.pdf. Acesso em: 24 jun. 2021.
MARTINS, E. R. Ensino, pesquisa e desenvolvimento na Engenharia Eletrônica 
e Computação. Finer Sistemas, 2012.Ponta Grossa: Atena, 2021. Disponível 
em https://www.finersistemas.com/atenaeditora/index.php/admin/api/
artigoPDF/45729. Acesso: 24 jun. 2021.
PAGLIUSO, Priscilla BB; DE ANDRADE TAMBASCIA, Claudia; VILLAS-BOAS, André. 
Melhoria da Inspeção de Requisitos segundo a técnica de Leitura Baseada em 
Perspectiva. SEMINCO Seminário de Computação, XI, p. 105-116, 2002.
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional, 7. ed., 
McGraw-Hill., Porto Alegre: BookMan, 2011.
RIOS, E.; MOREIRA, T. Teste de software. Rio de Janeiro: Alta Books, 2013.
https://rac.anpad.org.br/index.php/rac/article/view/220.
https://rac.anpad.org.br/index.php/rac/article/view/220.
http://www-di.inf.puc-rio.br/~kalinowski/publications/KalinowskiS07.pdf.
http://www-di.inf.puc-rio.br/~kalinowski/publications/KalinowskiS07.pdf.
https://www.finersistemas.com/atenaeditora/index.php/admin/api/artigoPDF/45729.
https://www.finersistemas.com/atenaeditora/index.php/admin/api/artigoPDF/45729.
54
Processos e Casos de Testes 
automatizados
Autoria: Stella Marys Dornelas Lamounier 
Leitura crítica: Marcilyanne Moreira Gois
Objetivos
• Demonstrar as principais diferenças de testes 
manuais versus testes automatizados.
• Desenvolver habilidades nas atividades de teste de 
software.
• Identificar principais técnicas de automação de testes.
• Apresentar ferramentas de automação.
• Implementar testes.
55
1. Introdução a processos e casos de testes 
automatizados
Garantir a qualidade em sistemas computacionais ainda é um grande 
desafio para as empresas de desenvolvimento e, a cada dia, os 
softwares se tornam mais complexos e necessitam de maior precisão, 
além de satisfazer as necessidades do cliente, o software deve ser 
seguro, eficiente, de fácil manutenção e, sobretudo, flexível a potenciais 
mudanças durante seu processo de criação e evolução.
Testes, revisões e inspeções em softwares são etapas fundamentais no 
sucesso de qualquer tipo de sistema e podem ser aplicados em todas as 
etapas de desenvolvimento para garantir bom desempenho.
1.1 Testes manuais versus testes automatizados
Engana-se que testes podem ser feitas apenas de forma manual, isto 
é, executados apenas com a interferência humana. Em vários casos e 
etapas, é possível a utilização de testes automatizados, que também 
garantem a qualidade desejada em um tempo reduzido e com maior 
precisão. 
Os testes manuais, aliados a práticas de revisão e inspeção, que tem 
como característica a buscas por erros em artefatos de software, de 
maneira precoce, por sua vez, também possuem importante papel na 
garantia de qualidade, onde a equipe que desenvolve o sistema deverá 
ser capaz de estudar e analisar o problema e pensar em uma solução 
para, posteriormente, implementá-la. 
Nesse contexto, os testes manuais são realizados, a fim de verificar 
que se as funcionalidades do sistema estão conforme os requisitos 
levantados, além de identificar erros e corrigi-los de modo que possam 
ser realizados quantas vezes forem necessários, o que, por muitas vezes, 
56
torna este tipo de teste dispendioso, cansativo e repetitivo, levando aos 
testadores a não verificar criteriosamente as mudanças significativas no 
código fonte, é neste cenário que surgem erros e defeitos acarretando 
prejuízos financeiros para a empresa de desenvolvimento e frustrando 
os clientes.
Muitas empresas ainda adotam técnicas de desenvolvimento de 
software tradicionais, com a utilização de processos rígidos e técnicas 
Ad-Hoc, provocando ainda mais o surgimento de fatores críticos, tais 
como o surgimento de erros de regressão, impedimento a evolução e a 
flexibilidade de correção dos softwares.
Os testes automatizados, por sua vez, vieram trazer uma posição 
contrária aos modelos manuais, ou seja, realizar testes de forma que 
não haja a interferência humana e com o mesmo objetivo garantir e 
melhorar a qualidade do sistemas.
Quando se fala de automação de testes, deve-se levar em conta que as 
ações e atividades são pré-definidas e analisam um conjunto de ações 
específicas, que, após criados, facilmente podem ser reutilizados.
Testes automatizados podem ser definidos como: 
Programas ou scripts simples que exercitam funcionalidades do sistema 
sendo testado e fazem verificações automáticas nos efeitos colaterais 
obtidos. A grande vantagem desta abordagem, é que todos os casos de 
teste podem ser facilmente e rapidamente repetidos a qualquer momento 
e com pouco esforço. (BERNARDO; CON, 2008, p. 2)
Várias vantagens podem ser vistas com a utilização dessa abordagem 
automatizada, como rapidez em tempo de execução, conforme ilustrado 
na Figura 1. Além disso, traz maior flexibilidade, reprodutibilidade e 
execução de uma variedade de testes em paralelo, quantas vezes forem 
necessárias, de forma ágil e segura. Essas características, muitas vezes, 
encontradas em testes manuais podem ser solucionadas, contribuindo 
57
para minimizar a quantidade de erros e defeitos, aumentando a 
qualidade desejada.
Figura 1 - Tempo de execução em testes
 
Fonte: Peres (2012, [n. p.]).
A figura relata a diferença temporal no dois tipos de testes, manuais 
versus automatizados, que são subdivididos em categorias. É notada 
grande diferença no tempo de execução de cada um deles, como, por 
exemplo: ao realizar a atividade de testes manuais nos campos de login 
inválidos, testes manuais sãoexecutados levando até 20 segundos e 
os automatizados apenas 6 segundos. Seguindo essa mesma linha, 
destacamos as outras funcionalidades, primeiramente, o tempo para 
testes manuais e, depois, para automatizados, como validar clientes, 
79 segundos para o primeiro e 24 para o segundo, cadastrar usuário 
42 segundos versus 16 segundos. Desse modo, é notória a diferença 
no tempo de execução quando se utiliza os testes manuais, trazendo, 
assim, mais agilidade e precisão nas correções. 
Testar software sempre fez parte do cotidiano das empresas, de 
forma simples e manual, sem a utilização de técnicas computacionais. 
58
Entretanto, a ideia de executar os testes de forma automatizada está 
marcada em um passado recente. Só por volta da década de 1990 é 
que começaram a surgir as principais ferramentas especializadas para 
auxiliar os testadores e facilitar estes processos. Estas ferramentas 
possuem como características a separação do bloco de código de 
testes e do sistema, evitando que a parte a ser testada influencie no 
comportamento do sistema, como é o caso dos testes automatizados de 
Unidade, segundo Bernardo (2011).
A automação de testes tem sido empregada em diversos tipos 
de metodologias de software, desde aos modelos convencionais, 
como o Cascata, Modelos Espiral e Rational Unified Process (RUP), 
que, por muitas vezes, são considerados fiéis aos testes manuais 
e, principalmente, os modelos mais flexíveis, que utilizam, em sua 
abordagem, as Metodologias Ágeis.
Na Metodologia Ágil, seu controle de qualidade está associado a 
flexibilidade de correção nos requisitos, tanto funcionais quanto 
não funcionais, e também ao uso de automatização de testes de 
forma contínua e com o mínimo de esforço necessário pelo testador, 
possibilitando a verificação da qualidade mesmo após a implementação 
do sistema.
Os testes automatizados, quando comparados aos testes manuais, 
são considerados de baixo custo de criação e manutenção, pois não 
exigem tanto grau de conhecimento quanto os processos manuais e 
possuem maior segurança quando se fala em depuração de erros e 
documentação de testes.
Empresas de desenvolvimento buscam a todo momento minimizar 
tempo e esforço em testes de software, seja de forma manual ou 
automatizada. O Quadro 1 mostra um comparativo de custo/ esforço 
dos modelos de testes citados.
59
Quadro 1 - Teste manual versus teste automatizado
Teste manual Teste automatizado
• Grande esforço na sua criação 
e manutenção.
• Baixa reutilização.
• Dependência de linguagem 
natural.
• Lentos na execução.
• Permite exploração em 
diversas situações.
• Exigência de profissionais com 
experiência em testes.
• Grande esforço na sua criação e 
manutenção.
• Alta reutilização.
• Ações programadas.
• Incapazes de lidar com situações 
inesperadas.
• Rápidos.
• Suscetíveis a pequenas 
mudanças.
• Repetíveis. 
• Exigência de profissionais 
altamente capacitados.
Fonte: elaborado pela autora.
Pode-se observar, no Quadro 1, que cada um dos modelos apresentados 
possui particularidades, o que acarreta a importância de cada um no seu 
contexto de teste. Vale ressaltar que as principais particularidades dos 
modelos automatizados é o tempo de execução mais rápido, o menor 
custo e a alta reutilização, quando comparado aos testes manuais.
Portanto, testes automatizados estão sendo aplicados e disseminados 
em empresas de software, lembrando que esta técnica não se limita 
apenas a novas metodologias, mas a qualquer modelo que deseja 
aplicar testes de forma rápida, precisa e com o mínimo de esforço, por 
meio de ferramentas que facilitem a manutenção do código.
60
2. Processo de automação de testes
Para executar testes automatizados, deve-se seguir uma linha de 
atividades para que, ao final de sua implementação, a equipe tenha 
trabalhado de forma organizada e objetiva, evitando, assim, gastos 
desnecessários e atrasos na entrega dos sistemas. A seguir, os processos 
que uma empresa de desenvolvimento deve seguir para garantir uma 
melhor organização na automatização de testes, segundo Dustin (1999).
• Decidir automatizar testes: nesta fase, a empresa estuda se o 
custo com teste vale o retorno esperado, os paradigmas utilizados 
e tipos de testes a serem empregados.
• Aquisição de uma ferramenta de automação de testes: 
são analisados os critérios para selecionar a ferramenta mais 
adequada ao ambiente da empresa e que possa trazer maior 
qualidade e melhor custo-benefício.
• Introdução a automação de testes na organização: são criadas 
as diretrizes para introduzir os testes automatizados, é verificada 
a modificação dos testes, já implantados por atividades quem 
envolvem os testes automatizados.
• Planejamento, projeto e desenvolvimento dos testes 
automatizados: os testes automatizados já fazem parte da 
realidade da empresa, todas as etapas de automação devem 
seguir as diretrizes da instituição, os testes devem estar alinhados 
ao ciclo de vida do software, com planejamento detalhado e que 
cubra todas as fases possíveis.
• Execução e controle de automação de testes: são realizadas as 
execuções de testes no ambiente, controle de qualidade a partir de 
métricas e indicadores de eficiência.
61
• Revisão e melhoria do processo: nesta fase, são apresentados 
feedbacks e atividades de avaliação com objetivo de melhorar os 
processos de automação de testes e qualidade.
Após a abordagem dos processos apresentados, a empresa já é capaz 
de escolher quais tipos devem ser empregados e quais ferramentas 
mais adequadas que auxiliarão os testadores para a detecção de erros 
no Sistema.
1.2 Tipos de testes automatizados
Neste tópico, serão abordados os testes automatizados que possuem 
maior aplicabilidade em empresas de desenvolvimento, bem como 
ferramentas de automação de testes utilizadas durante o processo de 
testes automatizados.
Como definir a ferramenta certa? Deve-se considerar os benefícios, 
funcionalidades, custos que trará ao ambiente e, principalmente, criar 
um documento comparativo (benchmark), que auxilia a equipe a testar 
de forma automatizada os processos de software.
1.2.1 Testes de unidade
Os testes de unidade têm como objetivo verificar a correção de 
erros em trechos menores do código fonte. Em geral, são testados 
em blocos, classes ou até mesmo constantes, como dito, nesta fase, 
que são testadas menores partes do sistema, garantindo que uma 
classe ou uma unidade de código esteja de acordo com aquilo que foi, 
inicialmente, planejado, ou seja, na fase de levantamento de requisitos. 
Normalmente, este tipo de teste é feito de forma isolada dos demais 
componentes do sistema, sendo que pode ocorrer precocemente, 
mesmo antes da implementação das unidades, como, por exemplo, se o 
código de um determinado cálculo matemático está sendo executado de 
62
forma correta, isto é, se o resultado obtido está de acordo com o que se 
espera.
Neste contexto, é importante ressaltar que a empregabilidade de testes 
de Unidade como “um teste que deve ser executado pelo programador 
em ambiente de testes, que deve demonstrar que o programa atende ao 
conjunto de requisitos especificados no projeto” (KOOMEN; POL, 1999, 
[n. p.] apud SILVA, 2010, p. 35).
Os testes de unidade podem ser aplicados de forma manual. utilizando, 
por exemplo, as técnicas de caixa preta ou de caixa branca. Essa 
escolha dependerá do que deve ser testado para garantir o sucesso do 
sistema, por exemplo, se você deseja testar um código fonte, então a 
melhor opção é o teste de caixa branca, especialmente o que mostra 
os caminhos de execução que o testador deve percorrer para que se 
teste os possíveis cenários, fluxos, condições. Em contrapartida, se você 
deseja testar funcionalidades do software, o ideal é utilizar o teste de 
caixa preta.
Quando aplicados em testes de automação, a técnica envolve a 
utilização de ferramentas computacionais que auxiliam o processo 
de teste, tornando-o mais rápido e seguro. Atualmente, no mercado, 
existem várias ferramentas

Continue navegando