Buscar

Qualidade de Software: Testes e Bugs

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 20 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 20 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 20 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

1 
 
 
 
 
 
 
 
 
 
 
 
 
QUALIDADE DE SOFTWARE 
AULA 3 
 
 
 
 
 
 
 
 
 
 
Prof.a Maristela Regina Weinfurter Teixeira 
 
2 
 
CONVERSA INICIAL 
Olá, seja bem-vindo. Assista ao terceiro vídeo da professora Maristela 
Regina Weinfurter Teixeira, que irá apresentar e contextualizar esta disciplina, 
bem como os assuntos que serão estudados nesta aula. 
 
CONTEXTUALIZANDO 
Estudamos questões importantes para a garantia da qualidade, e um 
conjunto de atividades de suma importância para a qualidade tanto do software 
quanto de seu processo são os testes. A estratégia de testes de software nos 
oferece roteiros que descrevem passo a passo cada procedimento a ser aplicado 
e em qual momento do processo de desenvolvimento. Sendo assim, toda 
estratégia de teste deve incorporar planejamento de teste, projeto de casos de 
teste, execução dos testes e avaliação dos dados resultantes, segundo 
(PRESSMAN, 2011). 
Historicamente a execução de testes vem se transformando há 
décadas (RIOS, 2008). Nos anos 70, os testes eram feitos pelos próprios 
desenvolvedores, e a nossa garantia era de que o produto funcionasse. Entre os 
anos 80 e 90 já tínhamos testes feitos pelos desenvolvedores e usuários para 
garantia dos requisitos iniciais do projeto. Entre os anos 90 e 2000, a garantia se 
baseava no produto funcionando, atendendo os requisitos e sem defeitos. Estes 
testes eram executados por meio de processos de testes feitos pelos 
desenvolvedores, usuários e testadores. Nos últimos anos, a complexidade tanto 
do desenvolvimento quanto dos testes aumentou significativamente, incluindo 
agora questões de segurança e performance. 
Mas quando olhamos para nosso dia a dia no desenvolvimento de 
software, quase que todos os problemas se tornam um bug. Sim, bug é 
considerado um defeito, uma falta, um problema, um incidente, uma anomalia ou 
qualquer outro problema que ocorra durante a execução de nosso software. 
 
3 
 
(PINHEIRO, 2015). Também temos uma definição mais formal sobre bug 
(PATTON, 2005 apud PINHEIRO, 2015): 
 
Um bug ocorre quando uma ou mais das opções abaixo for verdadeira: 
 O software NÃO faz algo que a especificação diz que ele deveria 
fazer; 
 O software FAZ algo que a especificação diz que ele NÃO 
deveria fazer; 
 O software faz algo que a especificação não menciona; 
 O software NÃO faz algo que a especificação NÃO menciona, 
mas deveria mencionar; e 
 O software é difícil de usar, entender, ou na visão do testador 
pode ser visto pelo usuário final como não estando correto. 
 
E o velho discurso vem à tona novamente: “O custo de um bug está 
diretamente associado à fase do ciclo de desenvolvimento em que o bug é 
encontrado. Um bug encontrado durante a especificação pode custar um dólar. 
O mesmo bug encontrado no release pode custar 100 vezes mais.” (PINHEIRO, 
2015). Quando analisamos os erros, 85% são simples de correção (menos de 1 
hora), 1% dos erros leva mais que alguns dias para correção, 80% do esforço de 
manutenção é gasto com 20% dos erros. (PINHEIRO, 2015). 
Agora falando um pouco mais sobre os famosos bugs, eles podem ser 
classificados em 3 principais tipos (PINHEIRO, 2015): 
 ERRO, que ocorre devido à ação humana, resultado de um software com 
defeitos; 
 DEFEITO, o qual ocorre devido a problemas de informações, de dados, 
de instruções incorretas; e 
 FALHA, que ocorre quando um programa não se comporta conforme o 
estabelecido ou apresenta resultados inconsistentes. 
 
 
 
 
 
 
 
 
4 
 
Figura 1: Erros, defeitos e falhas 
 
Fonte: Claudio, 2016. 
 
Teremos muito a evoluir para atingirmos níveis de excelência na área de 
testes de software. Uma das grandes consequências da importância desta área 
dentro do desenvolvimento de software encontra-se nos vários cursos de 
pós-graduação espalhados mundo afora para suprir uma grande carência de 
profissionais. Isso porque, normalmente, os estudantes gostam de atuar no 
desenvolvimento dos projetos de software como desenvolvedores ou analistas, 
mas dificilmente gostam de atuar como profissionais da área de testes. É uma 
área que exige um grau de detalhe bastante grande, o que por vezes torna-se 
cansativo e repetitivo para alguns perfis de profissionais. 
 
Leitura obrigatória 
SOMMERVILLE, 2011 
 
Saiba mais 
http://www.linhadecodigo.com.br/artigo/2775/introducao-ao-teste-de-
software.aspx 
 
 
 
 
5 
 
Gostaria que agora você olhasse e refletisse sobre o número de 
oportunidades profissionais que esta área de qualidade de software pode 
oferecer-lhe. Utilize o link: <http://ibqts.com.br/> para compreender e ampliar sua 
visão sobre possibilidades de atuação na área de engenharia de software, 
focando em questões de qualidade e testes de software. Liste as certificações 
existentes, bem como suas finalidades dentro do processo de desenvolvimento 
de software. 
http://ibqts.com.br/ 
 
 
TEMA 1: O QUE É TESTE DE SOFTWARE? 
Nada melhor do que compreendermos sempre as definições e conceitos 
existentes para uma nova área de conhecimento que estejamos estudando. 
Então vamos à pergunta mais simples desde que iniciamos nossos encontros: O 
que é teste de software? “Teste de software é um conjunto de atividades que 
podem ser planejadas com antecedência e executadas sistematicamente. ”, 
segundo Pressman (2011). Todo teste deverá contar com um modelo (template) 
para utilização de técnicas específicas de projeto de caso, de teste e métodos 
de testes. Toda estratégia de testes deve acomodar testes de baixo nível, para 
verificação de um pequeno segmento de código fonte, bem como testes de alto 
nível, que validem funções do sistema de acordo com os requisitos elicitados. 
Cada estratégia fornece diretrizes para que o profissional responsável consiga 
cumprir uma série de metas. Não é novidade que desenvolvemos software 
sempre sob pressão em relação a prazos e custos, então, é importante obtermos 
formas de medição do progresso dos testes bem como dos problemas revelados 
e corrigidos o mais breve possível dentro do processo de desenvolvimento de 
software. 
A triste notícia é que podemos seguir muitos métodos, adotar muitas 
técnicas, adotar certificações de padrões de qualidade, mas mesmo assim ainda 
não ficaremos livres dos bugs. Diríamos que ainda é impossível testarmos todas 
 
6 
 
as possibilidades de formas e alternativas de entrada de dados, bem como as 
diversas possibilidades e condições criadas pela lógica de algoritmos de cada 
desenvolvedor. Há estimativas que garantem que a média do número de defeitos 
em programas liberados para testes é de 1 a 3 por 100 instruções executáveis 
(RIOS, 2008). E então você se perguntará: Se não conseguimos atingir 100% de 
excelência na área de testes, por que testar? Teremos que lembrá-lo que o 
propósito dos testes é a descoberta e correção dos problemas com foco na 
melhoria e na qualidade do software. Então, quanto ele deve melhorar? De 
acordo com o que a empresa está consciente em investir numa equipe de testes, 
capaz de tornar a quantidade de defeitos tendendo a zero. Logo, quanto mais 
tempo e recursos financeiros dedicados ao processo de testes, mais perto da 
satisfação do cliente chegaremos. 
Nunca devemos esquecer que o processo de desenvolvimento de 
software é feito por seres humanos, e que, apesar dos melhores métodos ou 
técnicas, profissionais também erram. E alguns problemas, dos quais já 
conversamos, podem advir de uma especificação incompleta ou errada, com 
limitações de hardware ou software, com uma base de dados organizadanão da 
melhor forma, além de obviamente erros nos algoritmos. 
Compreendemos que por mais que criemos técnicas, métodos e 
ferramentas que apoiam o teste de software, continuaremos uma longa jornada 
com seres humanos que, em algum momento, podem errar por problemas 
simples, como falha na comunicação com seus stakeholders. Então, quando 
falamos de testes de software, estamos olhando para o produto e para o 
processo como um todo, e acabamos entrando em questões que não são 
meramente técnicas, mas subjetivas em relação à comunicação humana. 
Leitura obrigatória 
SOMMERVILLE, 2011 
 
 
 
 
7 
 
Saiba mais 
O IBQTS, Instituto Brasileiro de Qualidade em Testes de Software, é uma 
entidade de caráter de pesquisa e órgão certificador de profissionais da área 
de Engenharia de Requisitos e Engenharia de Testes de Software, reconhecido 
oficialmente por empresas e instituições de ensino, tanto no Brasil quanto no 
exterior. 
As certificações fornecidas pelo Instituto qualificam analistas de sistemas 
e negócio, desenvolvedores e testadores com interesse em obter um atestado 
de reconhecimento técnico válido para o mercado nacional e internacional, 
e estão aderentes a padrões internacionais de qualidade. 
Fundado em 2006, o IBQTS nasceu com a missão de aprimorar a 
capacidade produtiva dos profissionais de TI, melhorando a qualidade dos 
requisitos, desenvolvimento e testes. Com a necessidade cada vez maior de 
profissionais qualificados, o instituto certifica profissionais para a crescente 
competição internacional nas áreas de Engenharia Testes e Requisitos. Essas 
certificações oferecem a oportunidade de um diferencial competitivo. 
Disponível em: http://ibqts.com.br/ 
 
TEMA 2: PROCESSOS DE TESTES 
Como temos falado ao longo de nossos módulos que envolvem o 
desenvolvimento de software, sempre voltamos ao assunto: processo! 
Sim, processos são responsáveis pela organização de todas as tarefas e 
atividades que sejam necessárias para que atinjamos algum resultado em 
nossos projetos. E com o projeto de testes de software não é diferente! O 
processo de teste deve ter como base uma metodologia que seja aderente à 
metodologia que adotamos para o desenvolvimento do software. Deve possuir 
especialistas qualificados, ambiente e ferramentas adequados para que os 
resultados sejam alcançados. (RIOS, 2008). Uma metodologia de teste está 
descrita em um documento que organiza a atividade de teste dentro do contexto 
 
8 
 
do domínio do problema ou da organização. Esta metodologia deverá conter as 
fases do seu ciclo de vida, como por exemplo na Figura 2. 
 
Figura 2: Fases do ciclo de vida do processo de testes 
 
 
 
 
 
 
 
 
Fonte: Rios, 2008. 
 
Observando cada fase desta proposta de metodologia de testes, podemos 
descrevê-las da seguinte forma: 
Procedimentos Iniciais: consideram a elaboração de um documento chamado 
Guia Operacional de Testes (GOT), que estabelece o acordo entre as partes 
envolvidas no projeto de teste (usuários, desenvolvedores, pessoal de testes 
e de produção). 
Planejamento: consiste na elaboração e revisão da estratégia a ser adotada 
no plano de testes. 
Preparação: consiste no ambiente de teste (equipamentos, rede, pessoal, 
software e ferramentas). 
Especificação: elaboração e revisão dos casos de teste (ou scripts de teste), 
uso de ferramentas de automação e roteiros de teste e execução dos testes de 
verificação da documentação do sistema. Testes estáticos. 
Execução: execução de todo planejamento de testes conforme os casos de 
teste e roteiros de teste, registrando-se os resultados. 
Entrega: entrega do sistema testado e de dos devidos registros. 
Planejamento 
Preparação 
Procedimentos 
iniciais 
Entrega Especificação Execução 
 
9 
 
Na tabela 1 mostramos um detalhamento de cada fase de um processo 
de testes com suas ações requeridas e verificações. 
Processo de 
Teste 
Processo de 
Desenvolvimento 
Ações Requeridas 
Verificação/ 
Validação 
P
la
n
e
ja
m
e
n
to
 
Planejamento do 
projeto de 
desenvolvimento 
Integração dos planos. 
Preparação da estratégia de 
testes e planos de testes. 
Verificação (Revisões 
/ WalkThrough / 
Inspeção) 
E
s
p
e
c
if
ic
a
ç
ã
o
 
Projeto lógico e físico 
Revisão dos planos de 
testes 
Elaboração e revisão dos 
casos de teste e dos roteiros 
de teste 
Atualização do plano de 
projeto de desenvolvimento 
Verificação (Revisões 
/ WalkThrough / 
Inspeção) 
E
x
e
c
u
ç
ã
o
 
Construção 
Busca de defeitos e 
correções 
Verificação (Revisões 
/ WalkThrough / 
Inspeção e testes 
unitário, de 
integração de 
sistema) 
E
x
e
c
u
ç
ã
o
 
Implantação 
Busca de defeitos e 
correções 
Validação (Testes de 
aceitação) e 
Verificação (Revisões 
/ WalkThrough/ 
Inspeção) 
 
É sempre bom lembrarmos que quanto mais tarde um defeito for 
identificado, mais caro ficará para corrigi-lo. O aumento é sempre exponencial 
em relação ao trabalho de testes através das fases do projeto. 
Leitura obrigatória 
SOMMERVILLE, 2011 
 
TEMA 3: TIPOS DE TESTE 
Percebemos que precisamos montar um bom plano de ação e execução 
de testes que seja adequado ao tamanho de nosso projeto de desenvolvimento, 
pois envolverá um valor relativamente alto ao considerarmos o melhor dos 
 
10 
 
mundos. Vamos classificar estes testes existentes e suas características para 
compreendermos o que utilizar e em qual momento do nosso planejamento e 
execução de testes. 
Tipos de teste segundo Rios (2008): 
 Testes de regressão: garantem que o software atenda aos requisitos 
mesmo depois de sofrer manutenções. Um conjunto de dados e scripts 
contém uma baseline e executam para verificação de mudanças 
introduzidas posteriormente. Discrepâncias são resolvidas antes de se 
atingir o próximo nível de testes. 
 Testes de carga: avaliam a resposta de um software com pesada carga 
de dados e/ou grande número de usuários simultaneamente para 
verificação do nível de escalabilidade, confrontando o tempo de 
resposta ou falha. 
 Teste de estresse: simulação de situações que possam ocorrer em 
produção, como falta de memória, falta de espaço em disco. 
 Teste Back-to-back: executado em versões diferentes do software com 
comparação dos resultados. 
 Teste de configuração: verifica a aptidão do software para rodar em 
diferentes versões ou configurações de ambientes (hardware, browsers 
ou versões de browsers). 
 Teste de usabilidade: verificação do nível de facilidade de uso do 
software pelos usuários. Efetuado principalmente em aplicações Web em 
decorrência do grande número de navegações entre páginas. Clareza de 
linguagem, mensagens de erro e links para páginas também são testados. 
 Testes de instalação: verificação da instalação parcial, total ou 
atualização de aplicativo. 
 Testes de Segurança: validação da capacidade e qualidade da 
recuperação do software após crashes, falhas de hardware ou outros 
problemas catastróficos. 
 
11 
 
 Teste de compatibilidade: validação da capacidade do software em 
executar em um ambiente específico (hardware/software/sistema 
operacional/rede). 
 Teste de desempenho: garante que o sistema atenda aos níveis de 
desempenho e tempo de resposta acordados com os usuários e definidos 
nos requisitos. (Performance). 
 Testes funcionais: grupos de testes que avaliam a especificação versus 
a implementação. 
 Testes de qualidade de código: verificação do código fonte dos 
programas em conformidade com padrões, melhores práticas, instruções 
não executadasentre outros. 
 Testes de alterações: rastreiam alterações de programas durante o 
processo de testes. 
 Testes de recuperação de versões: verificação da capacidade de 
retorno a uma versão anterior do sistema. 
 Testes de interoperabilidade: avaliação das condições de integração 
com outros ambientes/sistemas (troca de informações). 
 Testes de sobrevivência (confiabilidade ou disponibilidade): 
avaliação da capacidade do software em continuar operando quando 
algum outro elemento pare de funcionar ou fique inoperante (hardware, 
por exemplo). 
 Testes estáticos: avaliação da documentação do projeto (modelos, 
requisitos). 
 Testes embutidos: avaliação da integração entre hardware e software. 
 Testes de verificação do site Web: verificação de problemas com 
determinados sites Web (links inválidos, arquivos órfãos, páginas lentas). 
 Testes de conferência de arquivos: verificação da alteração de arquivos 
utilizados. 
 Testes Alfa: executados em ambiente de desenvolvimento na 
proximidade da conclusão. 
 
12 
 
 Testes Beta: executados durante a fase desenvolvimento e testes, mas 
praticamente concluídos, com o maior número possível de defeitos e 
problemas encontrados antes do release final. 
 
Além de toda essa classificação de tipos de testes, temos ainda o que 
chamados de técnicas de testes e níveis de testes. 
Como técnicas de testes, temos testes de caixa preta e de caixa branca. 
Os testes de caixa preta testam a funcionalidade e sua aderência aos requisitos 
sem conhecimento do código e da lógica interna do sistema em teste, enquanto 
que os testes de caixa branca testam cláusulas de 
código, lógica interna e cada componente codificado, além de outros 
elementos técnicos. 
Estágios ou níveis de testes, segundo Rios (2008), consideram os seguintes 
grupos: 
 
 Testes unitários: estágio mais baixo na escala de testes. São testes de 
componentes versus suas especificações para que características e 
funcionalidades sejam verificadas independentemente do sistema total. 
Realizados pelos desenvolvedores. 
 Testes de integração: execução de uma combinação de componentes 
para verificação da execução em conjunto, conforme as especificações. 
Realizados pelos desenvolvedores. 
 Testes de sistema: realizados pela equipe de testes, observando a 
execução completa do sistema e seus subsistemas, dentro de um 
ambiente operacional controlado, para validação das funcionalidades 
do sistema. Uso de dados de teste para validação de situações 
mais próximas da realidade, que ocorrerá no momento do ambiente 
de produção. 
 Testes de aceitação: testes finais de execução do sistema, juntamente 
com usuários, tendo-se em mente que as soluções deverão atender aos 
objetivos do negócio e dos requisitos. Funcionalidade e usabilidade são 
 
13 
 
observadas neste momento. Usuários com suporte da equipe técnica de 
testes são responsáveis por este teste. 
 
Vimos que há uma quantidade razoável de tipos de testes, níveis e 
estágios. Só de observarmos toda esta possibilidade de testes, podemos 
concluir a quão custosa pode ser a tarefa de teste de software. Por isso é 
importante adotarmos um plano aceitável de acordo com o tamanho do projeto 
de software e de sua equipe de desenvolvimento e testes. 
 
Leitura obrigatória 
SOMMERVILLE, 2011 
CAMPOS, 2016 
 
Saiba mais 
Os 13 principais tipos de testes de software: 
http://www.targettrust.com.br/blog/desenvolvimento/testes/os-13-principais-
tipos-de-testes-de-software/ 
 
TEMA 4: REVISÕES E INSPEÇÕES 
Como a área de garantia da qualidade de software é muito abrangente, é 
comum errarmos ao utilizarmos determinados termos técnicos. Os termos 
comumente utilizados erroneamente são: revisões, inspeções, validações 
e verificações. 
Vamos iniciar pelos termos revisões e inspeções. As inspeções e 
revisões de software são atividades e técnicas estáticas que avaliam 
problemas na construção de software sem a necessidade de que o software seja 
executado em um ambiente computacional. 
Encontramos normalmente o processo de revisão estruturado em três 
fases (Sommerville, 2011): 
 
14 
 
1. Atividade de pré-revisão: são atividades preparatórias essenciais para 
a eficácia da revisão. Atividades relacionadas com planejamento e 
preparação da revisão. Envolve uma equipe de revisão, organização de 
tempo e lugar para que ocorram as revisões. Os envolvidos compreendem 
o que o software deverá fazer, bem como os documentos de padrões 
relevantes. Os revisores podem fornecer comentários sobre o software, 
caso não participem de alguma reunião de revisão. 
2. Reunião de revisão: durante a reunião o líder da revisão encaminha um 
documento com todos os problemas e questões de qualidade a serem 
discutidos. Este líder será responsável por garantir que todos os 
comentários escritos sejam considerados no relatório final. Além dos 
comentários, deverão ser registradas todas as ações corretivas 
acordadas durante a reunião. 
3. Atividades pós-revisão: todas as questões e problemas levantados 
devem ser abordados. Esse processo envolve a correção de bugs de 
software, refatoração de software entre outras técnicas para que esteja 
em conformidade com os padrões de qualidade ou necessidade de nova 
redação de documentos. Ao término, o presidente do grupo de revisões 
deve averiguar se todos os comentários foram levados em consideração. 
Dependendo do caso, será necessária nova reunião para apuração da 
conformidade com as reuniões de revisão. 
A Figura 3 nos demonstra de forma objetiva o processo de revisão de 
software, seguindo as atividades tratadas anteriormente. 
 
 
 
 
 
 
15 
 
Figura 3: Processo de revisão de software 
 
Fonte: Sommerville, 2011. 
 
Em um desenvolvimento ágil, o processo de revisão de software 
geralmente é mais informal. Por exemplo, na metodologia de desenvolvimento 
SCRUM, ocorre uma reunião de revisão após a conclusão de cada iteração do 
software (revisão de Sprint), na qual os problemas e as questões de qualidade 
podem ser discutidos. Já na XP (Extreme Programming), a programação em 
pares garante que o código esteja sendo examinado e revisto à medida que esse 
é desenvolvido pela equipe. As reuniões diárias de equipe trabalham as 
questões de qualidade. Normalmente, as abordagens ágeis não adotam 
padrões, logo as questões de conformidade são desconsideradas. 
Sempre é um contraponto a questão do uso de métodos ágeis para 
desenvolvimento quando abordamos questões de qualidade. A essência destes 
métodos encontra-se justamente na desburocratização e em não exagerar na 
documentação de software. Porém, percebemos o quanto é necessária a 
geração de documentos e modelos para efetuarmos a garantia da qualidade por 
meio de testes, inspeções, revisões e conformidade com padrões. 
Tomando o rumo das inspeções de programas, estas são consideradas 
revisões em pares, nas quais membros da equipe colaboram para a descoberta 
de bugs no programa em desenvolvimento. Modelos de UML podem ser 
checados pela utilização de casos de teste. As inspeções auxiliam na descoberta 
de problemas com testes, melhorando a eficácia desses testes ao se detectar 
 
16 
 
bugs no programa. Elas envolvem equipes de diferentes origens, as quais 
revisam linha por linha o código-fonte dos programas, buscando defeitos e 
problemas e os descrevem em relatórios nas reuniões de inspeção. Os defeitos 
podem ser erros lógicos, anomalias no código ou detalhes dos modelos de 
projeto. 
O interessante é lembrarmos que inspeções e revisões são estáticas e 
podem ser aplicadas tanto em código de programas quantoem modelos e 
documentação de projeto de software. Elas podem ser prejudicadas quando 
utilizamos métodos ágeis para o desenvolvimento de software, uma vez que a 
utilização de documentações com modelos do projeto não é comum em 
desenvolvimento ágil. 
Leitura obrigatória 
SOMMERVILLE, 2011 
 
 
TEMA 5: VERIFICAÇÕES E VALIDAÇÕES 
Conversamos sobre inspeções e revisões e agora nos resta 
compreendermos melhor o que são verificações e validações quando falamos 
em garantia da qualidade de software. Teste de software é um elemento muitas 
vezes conhecido como validação e verificação (V&V). Segundo Pressman 
(2011), “verificação refere-se ao conjunto de tarefas que garantem que o 
software implemente corretamente uma 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 os requisitos do cliente.” 
Se fôssemos transformar em duas perguntas, teríamos as seguintes 
questões: 
“Verificação: Estamos criando o produto corretamente?” (PRESSMAN, 
2011). 
“Validação: Estamos criando o produto certo?” (PRESSMAN, 2011). 
 
17 
 
Esta definição V&V contém muitas atividades da garantia da qualidade de 
software. Incluem atividades como revisões técnicas, auditorias de qualidade e 
configuração, monitoramento de desempenho, simulação, estudo de viabilidade, 
revisão de documentação, revisão de base de dados, análise de algoritmo, teste 
de desenvolvimento, teste de usabilidade, teste de qualificação, testes de 
aceitação e teste de instalação (PRESSMAN, 2011). A garantia e a qualidade 
utilizam o teste como último elemento para estimar mais pragmaticamente seus 
erros descobertos. Na fase de verificação, utilizamos todos ou alguns dos testes 
que foram classificados no tema “tipos de testes”. Lá pudemos conhecer um 
pouco de cada tipo de teste e sua importância para a qualidade de software. 
Ao terminarmos a fase de verificação com o uso das técnicas escolhidas 
para cada projeto, voltamo-nos para a fase de validação. Agora nos 
preocuparemos com o sistema que é visualizado e reconhecido pelos usuários. 
Seu principal objetivo é apontar o sucesso do funcionamento do software, 
confrontando o esperado com o realizado. Os testes da validação demonstram 
conformidade com os requisitos. Logo, é importante que o plano de testes 
descreva as classes de testes a serem conduzidas e um procedimento de testes 
para definição dos casos de testes específicos que garantam os requisitos 
funcionais de acordo com as expectativas dos clientes. Alguns exemplos de 
requisitos cumpridos estarão em conformidade com transportabilidade, 
compatibilidade, recuperação de erro, manutenibilidade. Caso sejam 
descobertos desvios de especificação, cria-se uma lista de deficiências que 
serão corrigidas conforme um plano com prazos e negociações junto aos 
clientes. 
Percebemos até aqui que o tema sobre garantia da qualidade de processo 
e de software é extenso e carece de adaptação a cada tipo e tamanho de projeto. 
Que há diferenças conceituais entre revisões, inspeções, verificações e 
validações. Que cada uma tem seu grau de importância dentro do nosso 
processo de testes e qualidade de software. Que entraremos num dilema ao 
utilizar métodos ágeis com a aplicação de garantia da qualidade de software. 
Mas nada que não possa ser resolvido utilizando-se do bom senso. A área de 
 
18 
 
engenharia de software é muito ampla e repleta de métodos, técnicas, 
ferramentas e frameworks. Cabe a cada líder de projeto adaptar o que seja mais 
conveniente com o intuito de garantir um processo e um software com qualidade 
esperada pelos stakeholders. 
 
Leitura obrigatória 
SOMMERVILLE, 2011 
http://www.devmedia.com.br/a-importancia-da-validacao-e-da-
verificacao/24559 
 
TROCANDO IDEIAS 
Refletir sobre a introdução da garantia de qualidade, utilizando os 
conceitos de inspeções, revisões, verificações e validações em projetos que 
utilizem métodos ágeis. Quais as maneiras de garantirmos a qualidade sem 
perdermos a essência destes métodos de desenvolvimento de software? 
 
SÍNTESE 
Estudamos até aqui sobre inspeções, revisões, verificações e 
validações de software para garantia da qualidade. Nosso objetivo é termos 
uma visão geral sobre as várias formas de efetuarmos testes, sejam eles 
estáticos ou dinâmicos. Sejam eles em modelos seguindo nossos casos de 
testes ou a nível de classes, componentes, código-fonte, integração ou 
quaisquer outros tipos. Nosso desafio é a entrega de um software que alcance 
os resultados esperados com a menor quantidade possível de erros e falhas. 
Que nossos sistemas sejam usáveis, seguros, portáveis, de fácil manutenção, 
que nos assegure de riscos. Percebemos que há uma diferença quando 
conceituamos erro, defeito ou falha. Lembrando então que (CLAUDIO, 2016): 
 ERRO, que ocorre devido à ação humana, resultado de um software com 
defeitos; 
 
19 
 
 DEFEITO, o qual ocorre devido a problemas de informações, de dados, 
de instruções incorretas; e 
 FALHA, que ocorre quando um programa não se comporta conforme o 
estabelecido ou apresenta resultados inconsistentes. 
 
Enfim, nossa expectativa é conseguirmos traçar um panorama sobre o 
que é melhor e adaptável a cada tipo e tamanho de projeto para o qual estejamos 
atuando. Vimos também o quão importante são as equipes de revisões, as 
reuniões de inspeções, os documentos gerados após a aplicação dos testes, 
bem como os planos de ação para melhorarmos e deixarmos o nosso software 
cada vez mais próximo das expectativas reais de 
nossos usuários. 
 
REFERÊNCIA 
CLAUDIO, A. Testes de Software. Disponível em: 
<http://www.devmedia.com.br/artigo-engenharia-de-software-introducao-a-
teste-de-software/8035>. Acesso em: maio de 2016. 
PRESSMAN, R. S. Engenharia de software: uma abordagem profissional. 7. 
ed. Porto Alegre: AMGH, 2011. 
LÉLIS, E. C. Gestão da qualidade. São Paulo: Pearson Prentice Hall, 2012. 
PINHEIRO, A. F. Fundamentos da engenharia de software: qualidade com 
testes e gerência. v. 6. Pernambuco, Amazon Publishing, 2015. 
SOMMERVILLE, I. Engenharia de software. 9. ed. São Paulo: Pearson 
Prentice Hall, 2011. 
RIOS, E. Documentação de teste de software. 2. ed. Iteste: Instituto de teste 
de software. 2008. 
 
20 
 
SHIGUNOV NETO, A. Introdução à gestão da qualidade e produtividade: 
conceitos, história e ferramentas. Curitiba: InterSaberes, 2016. 
XIV Simpósio Brasileiro de Qualidade de Software. Anais. 17-21 de agosto de 
2015. Manaus. Disponível em: 
<https://drive.google.com/file/d/0B4ZBCAydIkutSUFuVVhCdXVnbDA/view>. 
Acesso em: maio de 2016.

Outros materiais