Prévia do material em texto
Qualidade e
testes de software
Sandro Lopes Bianchini
Qualidade e
testes de software
Sandro Lopes Bianchini
Bianchini, Sandro Lopes
Qualidade e testes de software. Sorocaba/SP, 2020. 62 f. Ed. 1.
Validador: Iremar Nunes de Lima.
Instituto Cultural Newton Paiva Ferreira Ltda. | ED+ Content Hub, 2020.
Assuntos:
1. Computadores - Software;
2. Control de qualidade;
3. Engenharia de software.
Formato: digital.
Recurso: PDF e HTML.
Requisitos do sistema operacional:
• Windows 8.1 ou superior;
• Mac OSX 10.6 ou superior;
• Linux - ChromeOS.
Configurações técnicas:
• 2GB de memória RAM;
• 2.5GHz de processador;
• 10GB de espaço em disco.
Navegadores:
• Google Chrome – Versão mais atualizada;
• Mozilla Firefox – Versão mais atualizada.
Dispositivos móveis:
• iOS 10 ou superior;
• Android 5 ou superior.
Modo de acesso: área restrita - Ambiente Virtual de Aprendizagem.
Todos os direitos desta edição são reservados ao Centro Universitário Facens.
Rodovia Senador José Ermírio de Moraes, 1425, km 1,5 – Sorocaba/SP
CEP: 18.085-784 | tel.: 55 15 3238 1188
Nenhuma parte desta publicação poderá ser reproduzida por qualquer meio ou forma sem autorização.
A violação dos direitos autorais é crime estabelecido pela Lei n.º 9.610/98 e punido pelo artigo 184 do Código Penal.
Todas as imagens, vetores e ilustrações são creditados ao Shutterstock Inc., salvo quando indicada a referência.
Conteúdo
Unidade 1
Introdução à qualidade de software ................................................ 6
Unidade 2
Processos de garantia de qualidade de software ......................... 19
Unidade 3
CMMI .................................................................................................. 32
Unidade 4
Modelo MPS.br .................................................................................. 47
Unidade 5
Introdução à atividade de teste de software ................................ 61
Unidade 6
Fases ou níveis do teste de software ............................................. 77
Unidade 7
Técnicas de teste de software ......................................................... 88
Unidade 8
Outros aspectos do teste de software ......................................... 109
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
5
PALAVRAS DO AUTOR
Ao iniciar a jornada por essa disciplina, gostaria que você refletisse sobre os produtos que você consome.
Você já se irritou com um defeito em um carro? Em um aparelho tocador de vídeo ou música? Uma
peça de roupa com costura frágil? Irritou-se por ter adquirido um produto sem qualidade? Além desses
produtos citados, muito provavelmente você já deve ter utilizado um aplicativo em um smartphone ou
computador que exibiu uma mensagem de erro sem motivo aparentemente (apesar de você ter usado
conforme as instruções do fabricante) ou ainda sofreu com alguma lentidão utilizando esse software. Ou
seja, qualidade é importante em tudo aquilo que utilizamos para o bem-estar e atividades do cotidiano,
sejam elas de lazer ou profissionais. No caso do software que você utiliza, essa afirmação não é diferente.
Diante dessa realidade, você conhecerá, por meio da disciplina de Qualidade e teste de software, o
significado do termo qualidade para o produto conhecido por software dentro do contexto da atividade
de engenharia de software, bem como as motivações que levam à sua prática e técnicas, processos e
conceitos utilizados para alcançar a qualidade de software. Entre esses itens, por exemplo, a atividade
de teste de software é tida como essencial para alcançar esse objetivo.
Uma vez que você compreenda os conceitos apresentados, poderá aplicá-los para a construção de
produtos de software (aplicativos, software comerciais, sistemas críticos, sistemas operacionais, entre
outros) que satisfaçam as necessidades das pessoas e evitem exatamente algum tipo de aborrecimento
ou irritação ao utilizar um produto sem qualidade.
Seja bem-vindo(a) ao mundo da engenharia de software, que você conhecerá nessa disciplina.
Bons estudos!
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
6
Unidade 1 Introdução à qualidade de software
Objetivo da aprendizagem:
• Esclarecer o que é qualidade em software e seus fundamentos, conceitos, termos e histórico.
Tópicos de estudo:
• Introdução à engenharia de software.
• O que é qualidade de software?
• Aspectos de qualidade de software.
Iniciando os estudos:
Você já reparou que, provavelmente, o dispositivo que esteja utilizando para ler este livro possua capa-
cidade computacional provida por um conjunto de hardware e software? Além desse dispositivo, outros
equipamentos de seu cotidiano também utilizam recursos de hardware e software, seja sua televisão,
seu telefone e até seu relógio? E especificamente, em relação ao software que os acompanha, ele foi
projetado, desenvolvido e testado sob um processo rigoroso para enfim ser disponibilizado de forma
comercial? Em vista disso, nessa unidade você verá um histórico da engenharia de software e como é
possível conceituar o termo qualidade para um software.
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
7
1 INTRODUÇÃO À ENGENHARIA DE SOFTWARE
Considerando o mundo que nos cerca, você pode perceber a presença de sistemas computacionais
controlados tanto por hardwares quanto por softwares capazes de executar diversas funções. Há
sistemas que controlam uma planta fabril desde a entrada da matéria-prima ao produto final; há outros
que controlam o próprio sistema financeiro. Você encontrará ainda exemplos na indústria de entreteni-
mento, seja no desenvolvimento de jogos de computador, cinema, televisão e música. Nesses sistemas
o uso de software é intenso (SOMMERVILLE, 2011).
Dada a utilização de software nos mais variados nichos, pode-se dizer que o software possui um duplo
papel: ele é um produto e ao mesmo tempo é o veículo para se distribuir um produto. Além disso,
é possível também ressaltar que o software distribui o produto mais importante de nossos tempos: a
informação. Ele transforma dados pessoais em informações úteis de modo que possam ser utilizadas em
um determinado contexto; gerencia informações comerciais para aumentar competitividade; fornece
um portal para redes mundiais de informação e ainda os meios para a obtenção dessas informações.
Isso nos leva a procurar entender como o software é produzido. Desde o início do desenvolvimento de
software, quando esses eram construídos por programadores solitários até os dias atuais onde tem-se
equipes inteiras destinadas a esse fim, muitas questões acerca do desenvolvimento de software são as
mesmas (PRESSMAN; MAXIM, 2016):
• Por que leva tanto tempo para concluir o desenvolvimento de software?
Figura 1 - O mundo está em constante contato com a presença
de sistemas computacionais, controlados tanto por hardwares
quanto por softwares capazes de executar diversas funções.
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
8
• Por que os custos de desenvolvimento de um software são tão altos?
• Por que não conseguimos encontrar todos os erros antes de entregarmos o software
aos clientes?
• Por que gastamos tanto tempo e esforço mantendo programas existentes?
• Por que se continua a ter dificuldade em medir o progresso tanto do desenvolvimento
quanto a manutenção do software?
Essas e outras questões levam à prática da engenharia de software.
O termo engenharia de software foi proposto em 1969 em uma conferência da OTAN, justamente para
a discussão de questões relacionadas ao desenvolvimento de software, como as citadas anteriormente,
por exemplo (SOMMERVILLE, 2011). Procurando na literatura, você encontrará diversas definições para
o termo engenharia de software. Uma delas é a da IEEE (1990): “(1) A aplicação de uma abordagem siste-
mática, disciplinada e quantificável no desenvolvimento, na operação e na manutenção de software. (2)
O estudo de abordagenscomo definido em (1).”
Em linhas gerais, a engenharia de software tem por objetivo apoiar o desenvolvimento profissional
de software. Ela inclui técnicas que apoiam a especificação, projeto e evolução de programas. É uma
disciplina de engenharia cujo foco está em todos os aspectos da produção de software, desde os está-
gios iniciais da especificação do sistema até sua manutenção, quando o sistema já está em utilização.
A ciência da computação se preocupa com as teorias e métodos que sustentam
sistemas computacionais e de software, ao passo que a engenharia de software
se preocupa com os problemas práticos de produção de software. Algum
conhecimento de ciência da computação é essencial para engenheiros de
software, da mesma forma que algum conhecimento de física é essencial para
engenheiros elétricos.
Reflita
Para compreender melhor a engenharia de software, Pressman e Maxim (2016, p. 39) a define como
uma tecnologia em camadas, como você pode observar na figura 2.
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
9
Como a pedra fundamental que sustenta a engenharia de software, tem-se o foco na qualidade, impres-
cindível em qualquer abordagem de engenharia inclusive. A próxima camada é o processo, que mantém
as camadas de tecnologia coesas, possibilitando que o software seja produzido de forma racional e
respeitando os prazos estabelecidos. O processo, em geral, deve definir uma metodologia para o uso
efetivo da tecnologia de engenharia de software. Por meio do processo, encontram-se subsídios para
o gerenciamento de projetos, que estabelecem um contexto no qual são utilizados métodos técnicos
e artefatos são produzidos (documentação, diagramas, relatórios etc). Além disso, são estabelecidos
marcos, que possibilitam a garantia da qualidade e ainda o controle sobre as mudanças que podem ser
feitas durante o desenvolvimento do software.
Para saber mais sobre o conteúdo, você pode ver o vídeo abaixo.
Título: O que um engenheiro de software faz?
Acesso em: 08/10/2019.
Disponível em: https://www.youtube.com/watch?v=wdU9L3DqU2w
Aprofunde-se
Informações técnicas sobre como um software pode ser produzido são encontradas na camada método.
Nessa camada, você encontrará tarefas que incluem comunicação, análise de requisitos, modelagem de
projeto, codificação do programa, testes e suporte.
Figura 2 - Engenharia de software: uma tecnologia em camadas.
Fonte: adaptado de Pressman e Maxim (2016).
ED+ Content Hub © 2019
https://www.youtube.com/watch?v=wdU9L3DqU2w
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
10
Por fim, na camada ferramentas, existem utilidades que fornecem suporte automatizado ou semiauto-
matizado para o processo e para os métodos. Uma vez integradas, de modo que informações geradas
por uma ferramenta possam ser utilizadas em outra, tem-se um sistema para o suporte ao desenvol-
vimento de software, denominado engenharia de software com o auxílio do computador (do inglês
Computer-Aided Software Engineering, comumente conhecido como ferramentas CASE) (IEEE,1990).
Considerando a camada de processo, segundo Sommerville (2011, p. 5), existem muitos processos de
software diferentes, porém todos devem possuir quatro atividades fundamentais:
1. Especificação de software: a funcionalidade do software e as restrições ao seu funcio-
namento devem ser definidas.
2. Projeto e implementação de software: o software deve ser produzido para atender
às especificações.
3. Validação de software: o software deve ser validado para garantir que atenda às
demandas do cliente.
4. Evolução de software: o software deve evoluir para atender às necessidades de
mudança dos clientes.
Acesse na plataforma o vídeo: Atividades fundamentais de
processos de engenharia de software.
Assista
Portanto, ao aplicar qualquer processo da engenharia de software que implemente essas atividades, de
alguma maneira você garantirá qualidade. No próximo tópico será discutido sobre qualidade de software.
Para saber mais sobre o conteúdo, você pode ler o livro abaixo.
Título do livro: Guide to the Software Engineering Body of Knowledge (SWEBOK(R))
Local: Los Alamitos, CA.
Editora: IEEE Computer Society Press.
Data da publicação: 17/01/2014.
Aprofunde-se
2 O QUE É QUALIDADE DE SOFTWARE?
Como você viu no tópico anterior, a pedra fundamental da tecnologia da engenharia de software é o foco
na qualidade. Todavia, antes de continuar, pense em um produto qualquer e reflita: o que é qualidade
para você? Acredito que a definição exata para essa questão não deva ter sido encontrada facilmente.
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
11
Se essa questão for lançada para um grupo de alunos, provavelmente haverá respostas baseadas nas
percepções pessoais de cada um. Ao retornar para o contexto de software, encontrará possivelmente a
mesma dificuldade.
O aumento do uso de software trouxe proble-
mas para seus desenvolvedores, como pressão
por entregas, aumento dos custos, sistemas
apresentando falhas e mal escritos.
Problemas
Aplicar princípios da engenharia clássica para
o desenvolvimento de software, a fim de
profissionalizar essa atividade, com foco na
criação de um produto com qualidade.
Solução
Nos anos iniciais, software era desenvolvido
por programadores solitários, focados apenas
na codificação deles.
Início
Endereçar o desenvolvimento de software de modo que o produto atenda aos anseios dos usuá-
rios, tanto por meio de suas funcionalidades (um editor de texto deve permitir editar textos e
salvá-los em disco) quanto por meio de outros atributos não funcionais (o software de navegação
de um avião não pode travar, deve ser resiliente).
Qualidade
Com a adoção de computadores pessoais,
software passou a ganhar importância para
as pessoas e empresas.
Uso intenso
Software, como qualquer produto desenvolvido, requer qualidade para atingir os resultados esperados por
seus usuários. Além de cumprir com as funcionalidades esperadas, precisa possuir características
relacionadas a aspectos como segurança e proteção.
Infográfico 1 - A importância da qualidade no software.
ED
+
Co
nt
en
t H
ub
©
2
01
9
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
12
Para chegar em um conceito mais formal sobre o que é qualidade de software, deve-se antes construir
o conceito de qualidade.
Segundo Garvin (1984, p. 25), citado por Pressman e Maxim (2016, p. 359), o conceito de qualidade é
complexo e possui várias faces, podendo ser descrito por cinco pontos de vista diferentes. Esses pontos
de vista são:
• Visão transcendental: a qualidade é algo que é reconhecido de imediato, porém não
se consegue definir explicitamente.
• Visão do usuário: a qualidade é vista em termos de metas específicas de um usuário final.
• Visão do fabricante: a qualidade é definida em termos da especificação original do
produto. Significa que se um produto atender às especificações, ele apresenta qualidade.
• Visão do produto: sugere que a qualidade pode estar ligada às características intrín-
secas do produto, como funções e recursos.
• Visão baseada em valor: a qualidade é medida tomando-se por base o quanto um
cliente estaria disposto a pagar por um produto.
Esse artigo explora a qualidade, sob a ótica dos autores relacionados a um
software, como seus usuários, desenvolvedores e patrocinadores de um
software.
Título: Uma introdução à qualidade de software
Link: https://www.infoq.com/br/news/2012/05/An-Introduction-Software-Quality/
Aprofunde-se
Na indústria, a definição de qualidade seguiu, em linhas gerais, a visão do fabricante mencionada ante-
riormente. De acordo com Crosby (1979, apud SOMMERVILLE, 2011, p. 456), a qualidade é baseada na
conformidade de um produto em relação a uma especificação detalhada e na noção de tolerân-
cias. A partir disso, obteve-se o entendimento que produtos poderiam ser especificados por completo e
procedimentospoderiam ser criados para avaliar se um produto estivesse de acordo com suas especi-
ficações. Naturalmente, os produtos nem sempre cumprirão com todas as suas especificações, por isso
admitiu-se tolerância. Se um produto estivesse ‘quase certo’, era considerado aceitável.
Entretanto, qualidade de software não pode ser comparada diretamente à qualidade na indústria. Tole-
rância é um conceito não aplicável aos sistemas digitais e, considerando as razões listadas abaixo, talvez
seja impossível concluir objetivamente se um sistema de software atende ou não suas especificações
(SOMMERVILLE, 2011). As razões são as seguintes:
1. Clientes e desenvolvedores de software podem interpretar os requisitos de modo
diferente. Chegar a um acordo sobre se o software cumpre suas especificações ou não
pode ser impossível.
https://www.infoq.com/br/news/2012/05/An-Introduction-Software-Quality/
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
13
2. Em geral, as especificações integram requisitos de várias classes de stakeholders.
Esses requisitos são um compromisso e podem não incluir os requisitos de todos os
grupos de stakeholders. Os stakeholders excluídos podem perceber o sistema como um
sistema de baixa qualidade, mesmo que esse implemente os requisitos acordados.
3. É impossível medir determinadas características de qualidade diretamente, por
exemplo o quão facilitada é a manutenção de um software.
Acesse na plataforma o vídeo: Qualidade para softwares.
Assista
Tendo em vista essas razões, é possível considerar que a qualidade de software é um processo subjetivo,
onde é necessário que uma equipe de gerenciamento de qualidade julgue se um software alcançou um
nível aceitável de qualidade, considere se o software é adequado para sua finalidade ou não e também
se responde às questões sobre características de um sistema, por exemplo:
• Durante o processo de desenvolvimento, os padrões de programação e documentação
foram seguidos?
• O software foi devidamente testado?
• O software é suficientemente confiável para ser colocado em uso?
• O desempenho do software é aceitável para o uso normal?
• O software é útil?
• O software é bem estruturado e compreensível?
Esse artigo detalha o conceito de qualidade e sua evolução na história.
Título: Uma breve história da engenharia de qualidade
Link: https://www.dcce.ibilce.unesp.br/~adriana/ceq/Material%20
complementar/histquali.pdf
Aprofunde-se
Para cada uma das questões mencionadas, você encontrará aspectos que as permeiam. Esses aspectos
serão discutidos no próximo tópico.
https://www.dcce.ibilce.unesp.br/~adriana/ceq/Material%20complementar/histquali.pdf
https://www.dcce.ibilce.unesp.br/~adriana/ceq/Material%20complementar/histquali.pdf
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
14
3 ASPECTOS DA QUALIDADE DE SOFTWARE
Como você viu anteriormente, a qualidade de um sistema de software é subjetiva. Mais do que simples-
mente considerar sua funcionalidade, ou seja, avaliar se um software foi implementado corretamente, o
entendimento sobre qualidade de software deve considerar atributos não funcionais, relacionados com
a percepção do sistema por parte dos usuários. Na tabela 1 é possível ver 15 atributos sugeridos por
Boehm et al. (1978, apud SOMMERVILLE, 2011, p. 457):
Segurança Compreensibilidade Portabilidade
Proteção Testabilidade Usabilidade
Confiabilidade Adaptabilidade Reusabilidade
Resiliência Modularidade Eficiência
Robustez Complexidade Capacidade de aprendizado
Outro aspecto vital na qualidade de software é a medição. Na engenharia de software, toda medição é
nomeada com uma métrica. Uma métrica é uma medida, como custo ou tamanho, que pode ser aplicada
ao software (BELL, 2005). A proposta do uso de métricas incluem os seguintes tópicos:
• Predizer atributos de qualidade para o software que será construído;
• Julgar a qualidade sobre o software ou uma porção dele que foi desenvolvida;
• Monitorar e melhorar o processo de desenvolvimento de software;
• Comparar e avaliar diferente abordagem de desenvolvimento.
Entre as métricas existentes é possível relacionar as métricas básicas. A medida mais simples que você
encontrará para um software é seu tamanho. Geralmente é medido por linhas de código ou pontos por
função. O tamanho em bytes afeta a memória principal e os requisitos de armazenamento, que por sua
vez impactam no desempenho.
Para saber mais sobre o conteúdo, você pode ver o vídeo abaixo.
Título: O que é a análise de pontos de função?
Acesso em: 09/10/2019.
Disponível em: https://www.youtube.com/watch?v=9N1FMXrB9Kk
Aprofunde-se
Tabela 1 - Atributos não funcionais da qualidade de software.
Fonte: adaptado de Sommerville (2011).
https://www.youtube.com/watch?v=9N1FMXrB9Kk
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
15
Outra métrica importante é a pessoas-mês, que pode ter um detalhamento maior, como pessoas-hora,
uma medida do esforço de desenvolvimento. É uma métrica que impacta diretamente no custo do software.
Essa informação pode ser utilizada por empresas para predizer o tempo de futuros desenvolvimentos.
A outra métrica básica é o número de bugs ou falhas. Essa métrica permitirá predizer quantos bugs
podem permanecer ao final do desenvolvimento.
Esse artigo explora métricas para avaliação de qualidade.
Título: Métricas de Qualidade de Software
Link: https://www.tiespecialistas.com.br/metricas-de-qualidade-de-software/
Aprofunde-se
Existem também as métricas de complexidade, que se referem a quanto o código de um software é complexo.
Uma métrica comumente utilizada nesse tipo é a análise de pontos por função. A ênfase aqui é que os
programas sejam escritos de maneira clara e simples e, portanto, fáceis de checar, entender e modificar.
Acesse na plataforma o vídeo: Aspectos funcionais, não funcionais e
estruturais: detalhando o conceito de qualidade de software.
Assista
https://www.tiespecialistas.com.br/metricas-de-qualidade-de-software/
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
16
CONSIDERAÇÕES FINAIS
Nesta unidade você pôde conhecer melhor o que é a engenharia de software, seu histórico e seus obje-
tivos enquanto disciplina para profissionais da área de desenvolvimento de software. Como parte dos
objetivos dessa disciplina, você também aprendeu que qualidade é um requisito essencial para a enge-
nharia de software. Por fim, também pôde entender que para se alcançar qualidade em um software,
mais do que implementar suas funcionalidades propostas, é necessário considerar outros aspectos não
funcionais, como confiabilidade e robustez.
Você seguirá seus estudos, aprofundando o conceito de qualidade, visando entender processos que
possam garanti-la em um projeto de software.
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
17
GLOSSÁRIO
IEEE: Institute of Electrical and Electronic Engineers.
Stakeholders: termo utilizado para designar todas as pessoas, em diferentes níveis, que estejam interes-
sadas em um projeto de software. Poderia ser traduzido como interessados.
Bug: defeito, falha ou erro no código de um programa que provoca seu funcionamento incorreto.
Qualidade e testes de software | Unidade 1 - Introdução à qualidade de software
18
REFERÊNCIAS
BELL, D. Software Engineering for Students. 4. ed. Addison-Wesley, 2005. 424 p. ISBN 9780321261274.
IEEE Std. 610.12. IEEE Standard Glossary of Software Engineering Terminology. The Institute of Elec-
trical and Electronics Engineers, New York, 1990.
PRESSMAN, Roger S; MAXIM, Bruce R. Engenharia de Software - Uma Abordagem Profissional. 8. ed.
Porto Alegre: Amgh Editora, 2016. 968 p.
SOMMERVILLE, I. Engenharia de Software. Tradução Ivan Bosnic e Kalinga G. de O. Gonçalves. 9. ed. São
Paulo: Pearson Prentice Hall, 2011. 529 p.
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
19
Unidade2 Processos de garantia de qualidade de software
Objetivo de aprendizagem:
• Apresentar ao aluno o processo que tem por objetivo controlar e garantir a qualidade dentro
dos diversos processos de desenvolvimento de software.
Tópicos de estudo:
• Processos de garantia e de gestão da qualidade de software;
• Gestão da qualidade de produto;
• Gestão da qualidade de processo.
Iniciando os estudos:
Como você viu, a qualidade de software é um dos pilares da engenharia de software. A busca pela qualidade
em um software representará a satisfação dos usuários por meio do fornecimento de um produto robusto,
estável e que cumpre com a funcionalidade desejada desses usuários.
Para alcançar essa qualidade, no entanto, é necessário também que durante o processo de desenvolvimento
haja algum elemento que determine e diga se a qualidade está em conformidade com aquilo que se espera.
É necessário garantir que a qualidade no software esteja presente por meio de atividades que façam gestão e
controle de todo o processo.
Nesta unidade, serão abordados processos de gestão e garantia da qualidade e você perceberá como eles
apoiam o desenvolvimento de software.
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
20
1 PROCESSOS DE GARANTIA E DE
GESTÃO DA QUALIDADE DE SOFTWARE
Se você pudesse observar o comportamento de muitos desenvolvedores de software espalhados nas
muitas empresas que desenvolvem software, perceberia que ainda hoje eles acreditam que qualidade
de software é algo que só deve ser considerado após a codificação do software em si. Porém, esse
pensamento não poderia estar mais distante da verdade. A garantia da qualidade de software (SQA, do
inglês Software Quality Assurance, muitas vezes ainda denominada gestão da qualidade) é um processo
universal e deve ser aplicado em todo processo no qual se deseja obter qualidade (PRESSMAN; MAXIM,
2016, p. 387).
Na indústria de software, SQA pode ter diferentes interpretações. Por vezes, apenas pode significar a
definição de processos, procedimentos e padrões que têm por objetivo reforçar que a qualidade de
software seja atingida. Em outras vezes, sua interpretação também inclui todo o gerenciamento de confi-
guração, atividades de verificação e validação aplicadas após o produto ter sido entregue. Pode-se consi-
derar que o SQA possui três principais preocupações em diferentes níveis (SOMMERVILLE, 2011, p. 454):
1. No nível organizacional, a gestão de qualidade está preocupada com o estabelecimento
de um arcabouço de processos organizacionais e padrões que levem a softwares de
alta qualidade. A consequência disso é que uma equipe de gestão de qualidade deve
assumir a responsabilidade de definir os processos de desenvolvimento do software
que serão usados e os padrões que devem ser usados nele, que incluem a documen-
tação relacionada, os requisitos de sistema, projeto e código.
• No nível de projeto, a gestão de qualidade envolve a aplicação de processos específicos
de qualidade, que checam se os processos planejados foram seguidos e garantem que
as saídas de projeto estejam em conformidade com os padrões aplicáveis ao projeto.
• No nível de projeto ainda, a gestão de qualidade também está preocupada com o esta-
belecimento de um plano de qualidade, em que devem ser definidas as metas de quali-
dade para o projeto e quais processos e padrões devem ser utilizados.
Para saber mais sobre o conteúdo, você pode ver o vídeo abaixo.
Título: Qual a diferença entre controle da qualidade e garantia da qualidade?
Acesso em: 20/10/2019.
Disponível em: https://www.youtube.com/watch?v=qNGgcVaHiSc
Aprofunde-se
https://www.youtube.com/watch?v=qNGgcVaHiSc
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
21
A gestão de qualidade fornece uma verificação diferente do processo de desenvolvimento de software.
Cada entregável do processo de desenvolvimento é verificado para garantir que sejam consistentes
com os objetivos organizacionais. Na figura abaixo, você pode observar que cada entregável (E1, E2, E3
e assim por diante) do processo de desenvolvimento de software passa para o processo de gestão de
qualidade, que segue seu próprio caminho.
Processo de
desenvolvimento
de software Entregável 1
Padrões e
procedimentos
Relatórios de
revisão de
qualidade
………Plano dequalidade
Entregável 2 Entregável 3 Entregável 4
Processo de
gestão de
qualidade
Ressalta-se que, além de seguir com um processo complementar ao desenvolvimento de software,
a equipe que tem como função o SQA deve desempenhar o papel do cliente, funcionando como um
serviço de defesa desse mesmo cliente, examinando o software sob sua ótica (PRESSMAN; MAXIM, 2016).
Acesse na plataforma o vídeo: A busca pela qualidade passa
por processos de gestão e garantia.
Assista
1.1 ELEMENTOS DA GARANTIA DA QUALIDADE DE SOFTWARE
No SQA, engloba-se um amplo aspecto de preocupações e atividades que podem ser relacionadas da
seguinte maneira (HORSH, 2003 apud PRESSMAN; MAXIM, 2016):
• Padrões: o IEEE, a ISO e outras organizações desenvolveram um conjunto de padrões
para a engenharia de software e seus documentos relacionados. Os padrões podem
ser adotados voluntariamente por uma organização de engenharia de software ou
impostos pelo cliente ou demais interessados. A função do SQA aqui é garantir que
os padrões, que por ventura tenham sido adotados, sejam seguidos e que todos os
produtos resultantes estejam em conformidade com eles.
Figura 1 - Gestão de qualidade vs Processo
de desenvolvimento de software.
Fonte: adaptado de Sommerville (2011).
ED+ Content Hub © 2019
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
22
• Revisões e auditorias: as revisões técnicas são uma atividade de controle de quali-
dade realizada por engenheiros de software para engenheiros de software. Seu propó-
sito é o de revelar erros. Auditorias são um tipo de revisão efetuadas pela equipe de
SQA com o intuito de assegurar que as diretrizes de qualidade estejam sendo seguidas
no trabalho de engenharia de software. Por exemplo, uma auditoria de processo
de revisão pode ser realizada para garantir que as revisões estejam sendo feitas de
maneira que conduza a maior probabilidade possível de alcançar seu objetivo primário.
• Testes: os testes de software são uma função de controle de qualidade com um obje-
tivo principal: descobrir erros. Aqui, a função do SQA é garantir que os testes sejam
planejados apropriadamente e conduzidos eficientemente de modo que se tenha a
maior chance possível de alcançar seu objetivo primário.
• Coleta e análise de erros/defeitos: para melhorar, medir o próprio desempenho é
essencial. O SQA reúne e analisa dados de erros e defeitos para melhor compreender
como os erros são introduzidos e quais atividades de engenharia de software melhor
se adaptam para sua eliminação.
• Gerenciamento de mudanças: as mudanças são um dos aspectos mais negativos em
qualquer projeto de software. Se não forem administradas, podem gerar confusão,
o que pode levar a uma qualidade aquém da desejada. O SQA garante que práticas
adequadas de gerenciamento de mudanças tenham sido instituídas.
• Educação: um fator fundamental para se aprimorar as práticas de engenharia de
software é a educação de engenheiros, gerentes e demais interessados. A organização
de SQA assume a liderança nesse processo de aperfeiçoamento do software e é um
proponente e patrocinador de programas educacionais.
• Gerência de fornecedores: pode-se encontrar três categorias de software oferecidas
por fornecedores externos: pacotes prontos/comerciais (conhecidos como software de
prateleira, como o Microsoft Office, oferecidos em caixas); software customizado (possui
um esqueleto básico, como o oferecido em caixas, porém personalizado de acordo com
as necessidades do comprador); e software sob encomenda (projetado e construído
desde o início, a partir de especificações fornecidaspela empresa-cliente). Aqui, a função
do SQA é garantir a qualidade do software por meio da sugestão de práticas de garantia
de qualidade que o fornecedor, em linhas gerais, deve seguir e incorporar exigências de
qualidade como parte de qualquer contrato com um fornecedor externo.
• Administração da segurança: com o aumento de crimes cibernéticos e novas regula-
mentações referentes à privacidade, toda organização de software deve instituir polí-
ticas que protejam os dados em todos os níveis, desde firewalls até checar modificações
não autorizadas. O SQA garante o emprego de processos e tecnologias apropriadas
voltadas para a segurança.
• Proteção: como o software é um componente fundamental de sistemas que envolvem
vidas humanas, o impacto de defeitos escondidos pode ser trágico. O SQA pode ser
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
23
responsável por avaliar o impacto de falhas de software e por iniciar as etapas necessá-
rias para a redução de riscos.
• Administração de riscos: embora a análise e redução de riscos seja uma preocupação
de engenheiros de software, o grupo de SQA garante que as atividades da gestão de
riscos sejam conduzidas corretamente e que planos de contingência relacionados a
riscos tenham sido estabelecidos.
Além de analisar diferentes abordagens de processos utilizados para o SQA, esse artigo
analisa também os custos decorrentes dos processos envolvidos sob a ótica financeira.
Título: The economics of sotfware quality assurance
Link: https://pdfs.semanticscholar.org/2d91/50f879c44bc9ac82e59dcb4b51c2e83e211f.pdf
Aprofunde-se
Somadas a essas atividades e preocupações, você poderá ver ainda o SQA envolvida na garantia de que
atividades de suporte ao software, como manutenção, suporte online, documentação e manuais, sejam
produzidas tendo como foco a qualidade.
2 GESTÃO DA QUALIDADE DE PRODUTO
Como você viu, uma das preocupações do SQA é o uso de padrões em seus processos de gestão. Um
desses padrões são as normas ISO 9000. Essas normas podem ser aplicadas a uma variedade de orga-
nizações, desde a produção até a indústria de serviços. Por exemplo, a mais geral dessas normas, a
ISO 9001, pode ser aplicada às organizações que projetam, desenvolvem e mantêm produtos, inclu-
sive softwares (SOMMERVILLE, 2011). Todavia, especificamente para o desenvolvimento de software, em
1991, foi criada a ISO/IEC 9216. Foi traduzida para o Brasil em 1996, sob o nome NBR 13596. Posterior-
mente, essa norma brasileira foi substituída pela NBR ISO/IEC 9126-1.
A ISO/IEC 9126 é dividida em quatro partes (ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS, 2003):
• ISO/IEC 9126-1 - Modelo de Qualidade;
• ISO/IEC 9126-2 - Métricas Externas;
• ISO/IEC 9126-3 - Métricas Internas;
• ISO/IEC 9126-4 - Métricas de Qualidade em Uso.
A parte 1 apresenta um modelo de qualidade para o produto de software que será discutido adiante. As
partes 2, 3 e 4 contemplam um conjunto de métricas para avaliação de atributos de qualidade interna
(características dos produtos intermediários dos processos de desenvolvimento de software), qualidade
externa (características do produto final de software gerado) e qualidade em uso (características do
produto final, porém sob a perspectiva do usuário).
https://pdfs.semanticscholar.org/2d91/50f879c44bc9ac82e59dcb4b51c2e83e211f.pdf
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
24
O texto aborda o conceito de qualidade total do produto e seus determinantes,
bem como as dimensões que compõem essa qualidade.
Título: Qualidade total do produto
Link: https://bit.ly/2Wpo1mW
Aprofunde-se
2.1 MODELO DE QUALIDADE
A parte 1 apresenta um conjunto de características para a definição de um modelo de qualidade,
podendo ser aplicada a qualquer produto de software. Esse modelo, por sua vez, é composto de duas
partes. Umas delas é o Modelo de Qualidade Interna e Externa (veja na figura abaixo).
Qualidade
interna e externa
• Funcionalidade
- Adequação
- Acurácia
- Interoperabilidade
- Segurança de acesso
- Conformidade
• Confiabilidade
- Maturidade
- Tolerância a falhas
- Recurerabilidade
- Conformidade
• Usabilidade
- Inteligibilidade
- Apreensibilidade
- Operacionalidade
- Atratividade
- Conformidade
• Eficiência
- Comportamento em
relação ao tempo
- Utilização de recursos
- Conformidade
• Manutenibilidade
- Analisabilidade
- Modificabilidade
- Estabilidade
- Testabilidade
- Conformidade
• Portabilidade
- Adaptabilidade
- Capacidade para
ser instalado
- Coexistência
- Capacidade para
substituir
- Conformidade
Nesse modelo, qualidade interna e externa são definidas por um conjunto de seis características básicas
que um software deve possuir para ser considerado um produto de software de qualidade. Cada carac-
terística é dividida em um conjunto de subcaracterísticas. As características são:
• Funcionalidade: relacionada à finalidade do produto;
• Confiabilidade: diz respeito à frequência de falhas e recuperabilidade do software;
• Usabilidade: relacionada ao esforço para se utilizar/aprender o produto;
• Eficiência: refere-se ao desempenho do produto de software;
Figura 2 - Modelo de Qualidade Interna e Externa com suas
características e subcaracterísticas.
Fonte: adaptado de Associação Brasileira de Normas Técnicas (2003).
ED+ Content Hub © 2019
https://bit.ly/2Wpo1mW
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
25
• Manutenibilidade: relacionada ao esforço para se modificar o software;
• Portabilidade: diz respeito à capacidade de transferir o produto para outros ambientes.
Acesse na plataforma o vídeo: A busca pela qualidade passa
por processos de gestão e garantia.
Assista
Esse artigo possui um estudo de caso, onde a norma ISO/IEC 9126 é adaptada
para sua aplicação em um domínio específico, no caso, aplicações B2B.
Lembrando que, ao acessar o link, você precisa realizar gratuitamente o login
para baixar o conteúdo.
Título: Customizing ISO 9126 quality model for evaluation of B2B applications
Link: https://bit.ly/2BWONcU
Aprofunde-se
A segunda parte do modelo é formada pelo Modelo de Qualidade em Uso, dividida por quatro caracte-
rísticas de qualidade. Em linhas gerais, qualidade em uso é, para o usuário, o efeito combinado das seis
características de qualidade do produto de software apresentadas anteriormente.
As características do Modelo de Qualidade em Uso são:
• Eficácia: é a capacidade do produto de software de permitir que usuários atinjam obje-
tivos especificados com acurácia e completitude em um contexto de uso especificado.
• Produtividade: é a capacidade do produto de software de permitir que seus usuá-
rios utilizem quantidade apropriada de recursos em relação à eficácia obtida em um
contexto de uso especificado. Ressalta-se que recursos relevantes podem incluir tempo
para término da tarefa, esforço do usuário, materiais ou custos financeiros.
• Segurança: é a capacidade do produto de software de apresentar níveis aceitáveis de
riscos de danos a pessoas, negócios, software, propriedades ou ao ambiente em um
contexto de uso especificado. De um modo geral, os riscos são decorrentes das defi-
ciências na funcionalidade (incluindo segurança de acesso), confiabilidade, usabilidade
ou manutenibilidade.
• Satisfação: é a capacidade do produto de software de satisfazer usuários em um contexto
de uso especificado. Em relação à satisfação, você deve considerar que é a resposta do
usuário à interação com o produto e inclui atitudes relacionadas ao uso do produto.
https://bit.ly/2BWONcU
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
26
2.2 MÉTRICAS INTERNAS E EXTERNAS
Na parte 2 e 3 da ISO/IEC 9126 são apresentadas medições para a Qualidade Interna e a Externa. Quando
os requisitos de qualidade do produto de software são definidos, as características de qualidade do
produto que contribuem com os requisitos de qualidadesão listadas. Logo, as métricas externas compa-
tíveis com esses requisitos são especificadas para quantificar os critérios de qualidade que validam se o
software atende às necessidades do usuário.
Os atributos de qualidade interna do software são definidos na sequência e especificados, com o obje-
tivo de atingir a qualidade externa e a qualidade em uso requeridas e considerá-las no produto durante
seu desenvolvimento. Métricas internas compatíveis são especificadas para quantificar os atributos de
qualidade interna, de modo que eles possam ser utilizados para verificar se os produtos intermediá-
rios resultantes do processo de desenvolvimento de software atendem às especificações de qualidade
interna durante esse processo.
É importante levar em consideração que as métricas internas utilizadas tenham uma relação tão forte
quanto possível com as métricas externas escolhidas, de modo que possam ser utilizadas para prever os
valores de métricas externas. Entretanto, é difícil elaborar um modelo teórico rigoroso que estabeleça
um relacionamento forte entre métricas internas e externas.
2.3 MÉTRICAS DA QUALIDADE EM USO
Na parte 4 da norma ISO/IEC 9126, estão reunidas métricas para avaliação das características de quali-
dade em uso do software.
Métricas de qualidade em uso medem o quanto um produto atende às necessidades de usuários para
que atinjam objetivos especificados com eficácia, produtividade, segurança e satisfação em um contexto
de uso especificado.
A avaliação de qualidade em uso valida a qualidade do produto de software em cenários de uso espe-
cífico. O relacionamento da qualidade em uso com as outras características de qualidade depende dos
seguintes atores do processo de desenvolvimento de software:
• Do usuário final, para quem qualidade em uso é, principalmente, resultante de funcio-
nalidade, confiabilidade, usabilidade e eficiência;
• Da pessoa que mantém o software, para quem qualidade em uso é resultante de
manutenibilidade;
• Da pessoa encarregada de portar o software, para quem qualidade em uso é resultante
de portabilidade.
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
27
ED+ Content Hub © 2019
3 GESTÃO DA QUALIDADE DE PROCESSO
A qualidade de um produto de software também pode ser definida pela qualidade dos processos utili-
zados para o seu desenvolvimento. A qualidade do processo de software é esperada desde a coleta dos
requisitos de usuário até a entrega do produto final, passando por um ciclo de vida que oferece uma
análise crítica do contrato e estende-se à sua instalação e manutenção (LODI; CORDENONZI, 2002).
Pode-se encontrar uma relação direta entre qualidade do processo
e a qualidade desejada para um produto. Com isso, uma vez
melhorando o processo de construção, melhora-se o produto em
si. Portanto, como melhorá-lo?
Facilidade de
compreensão:
Todos os membros da equipe
devem ser capazes de entender o
processo no qual atuam;
Confiabilidade:
Erros devem ser evitados ou
ainda antecipados;
Facilidade
de adaptação:
Mudanças devem ser
facilmente implementadas;
Agilidade na
entrega do produto:
Há ganho de tempo na entrega
de um produto de software
com qualidade;
• Medir: procura melhorar as medidas de acordo
com os objetivos da organização envolvida na
melhoria de processos.
• Analisar: o processo atual é avaliado e os
gargalos e pontos fracos são identificados.
• Mudar: mudanças são propostas para
resolver pontos fracos identificados no processo.
Ciclos de
avaliação contínua:
Melhoria do processo
de desenvolvimento de
software
Infográfico 1 - Melhoria do processo
de desenvolvimento de software.
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
28
Para tanto, encontram-se na literatura e na indústria modelos para definição, avaliação e melhoria de
processos de software, entre eles:
• O CMM, também chamado de SW-CMM (Software CMM). Seu objetivo inicial foi estabelecer
um padrão de qualidade para o software desenvolvido para as forças armadas americanas.
Esse artigo descreve os componentes do CMM e suas motivações.
Título: As características do CMM e o desenvolvimento de software com qualidade
Link: https://bit.ly/2WtSmk9
Aprofunde-se
• O SPICE, nome do projeto de elaboração da norma ISO/IEC 15504, que foi lançado
em 1993, com o objetivo de gerar normas para a avaliação de processos, visando a
melhoria contínua do processo e a determinação de sua capacitação.
• A ISO/IEC 12207, que foi aprovada em agosto de 1995 e estabelece os processos de
atividades e tarefas a serem aplicados durante a aquisição, fornecimento, desenvolvi-
mento, operação e manutenção de software (ROCHA et al., 2001). Atualmente foi revi-
sada pela norma ISO/IEC/IEEE 12207:2017.
Acesse na plataforma o vídeo: Descrição da ISSO/IEC 12207.
Assista
https://bit.ly/2WtSmk9
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
29
CONSIDERAÇÕES FINAIS
Para que um produto atinja níveis aceitáveis de qualidade, você viu que diferentes aspectos e abor-
dagens devem ser considerados. A qualidade pode ser abordada analisando a qualidade do produto
desenvolvido, considerando-se atributos como confiabilidade e usabilidade, por exemplo.
Outra abordagem vista é que a qualidade também deve ser atingida no que tange à qualidade dos
processos envolvidos no próprio desenvolvimento de software.
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
30
GLOSSÁRIO
B2B: Business-to-Business.
CMM: Capability Maturity Model.
Entregável: (deliverables) são documentos, protótipos e também todos os demais itens intangíveis (tais
como treinamento e homologação) que um processo produz e deve ser entregue quando for completado.
IEEE: em português, Instituto de Engenheiros Eletricistas e Eletrônicos.
ISO: International Organization for Standardization.
SPICE: Software Process Improvement and Capability Determination.
Qualidade e testes de software | Unidade 2 - Processos de garantia de qualidade de software
31
REFERÊNCIAS
ASSOCIAÇÃO BRASILEIRA DE NORMAS TÉCNICAS. NBR 9126-1: Engenharia de Software - Qualidade do
Produto. Rio de Janeiro, 2003.
PRESSMAN, Roger S; MAXIM, Bruce R. Engenharia de Software - uma abordagem profissional. 8.ed.
Porto Alegre: Amgh Editora, 2016.
LODI, Silvanna; CORDENONZI, Walkiria. Aplicação de produto do software utilizando a ISO/IEC 9126.
Disciplinarum Scientia|Ciências Naturais e Tecnológicas, v. 3, n. 1, p. 11-27, 2016.
ROCHA, Ana Regina Cavalcanti da et al. Qualidade de Software: teoria e prática. São Paulo: Prenttice
Hall, 2001.
SOMMERVILLE, I. Engenharia de Software. Tradução Ivan Bosnic e Kalinga G. de O. Gonçalves. 9. ed. São
Paulo: Pearson Prentice Hall, 2011.
Qualidade e testes de software | Unidade 3 - CMMI
32
Unidade 3 CMMI
Objetivo da aprendizagem:
• Apresentar o modelo CMMI, sua descrição e como ele auxilia na melhoria de processos de
desenvolvimento de software.
Tópicos de estudo:
• Sobre o CMMI;
• Representações do CMMI;
• Áreas de processo do CMMI;
• Obtendo a certificação.
Iniciando os estudos:
Na constante busca por qualidade no desenvolvimento de software, com a finalidade de entregar aos
clientes e usuários um produto de qualidade, é necessário também direcionar esforços para a promoção
dos processos envolvidos.
Nesse sentido, você conhecerá em detalhes o modelo CMMI, ferramenta criada para auxiliar organizações
desenvolvedoras de software na implementação da qualidade de processo até a qualidade do produto.
Qualidade e testes de software | Unidade 3 - CMMI
33
1 SOBRE O CMMI
O CMMI é um modelo de maturidade criado com o objetivo de proporcionar condições para a evolução
das boas práticas de engenharia de software. Foi desenvolvido pelo Instituto de Engenharia de Software
da Universidade de Carnegie Mellon (SEI/CMU), localizado em Pittsburg, nos Estados Unidos. O resul-
tado de uma série de estudosiniciais culminou na criação do CMM (Capability Maturity Model), Modelo
de Capacidade e Maturidade (MACHADO, 2016).
No CMM, dependendo da área de aplicação, diferentes modelos foram criados, como o SW-CMM (CMM
para Software) e SA-CMM (CMM para aquisição de Software). Procurando então evoluir e integrar esses
modelos em um volume único, substituindo-os, o SEI criou o CMMI (Capability Maturity Model Integra-
tion) ou Integração de Modelos de Capacidade e Maturidade.
O objetivo do CMMI, em linhas gerais, é melhorar os processos de uma organização ao adotá-lo.
Como um modelo de referência, serve como uma estruturação de práticas e abordagens de sucesso
comprovado. Essas práticas procuram contribuir com a organização através da disponibilização de
orientações sobre:
• Como avaliar a maturidade da organização e sua capacidade por área de processos;
• Como estabelecer atividades prioritárias para as melhores propostas;
• Como implementar as melhorias propostas.
O modelo de referência é composto por múltiplos modelos de processo em conjunto a seus manuais e
material de treinamento e de avaliação. Esses modelos integram o gerenciamento de qualidade, utilizando
as melhores práticas aplicadas a determinados domínios sobre as práticas de mudança da organização.
Além disso, o CMMI fornece um mecanismo de avaliação bem estabelecido de maturidade de processo.
Acesse na plataforma o vídeo: Componentes do CMMI.
Assista
No CMMI você encontrará duas representações, por estágios e contínua. Nessas representações, encon-
tram-se os seguintes componentes (SOMMERVILLE, 2011):
1. Um conjunto de áreas de processo relacionadas às atividades de processos de software.
O CMMI identifica áreas de processo relevantes para a melhoria e a capacidade de
processo de software. Essas são organizadas em quatro grupos no modelo CMMI. Na
representação contínua e na representação por estágios, aparecem em cada um deles.
2. Um número de metas, que são descrições abstratas de um estado desejável a ser atin-
gido por uma organização. O CMMI tem metas específicas, associadas a cada área de
processo, e define o estado desejável para cada área. Ele também define metas gené-
ricas associadas com a institucionalização das boas práticas.
Qualidade e testes de software | Unidade 3 - CMMI
34
3. Um conjunto de boas práticas, que são as descrições das formas de como alcançar
uma meta. Várias práticas específicas e genéricas podem ser associadas com cada
meta dentro de uma área de processo. No entanto, o CMMI reconhece que o mais
importante é a meta e não a maneira como ela é alcançada. As organizações podem
usar quaisquer práticas adequadas para atingir qualquer uma das metas do CMMI, pois
não precisam de fato adotar as práticas recomendadas no próprio CMMI.
Breve introdução ao CMMI, contendo conceitos, definições e motivações.
Título: CMMI: uma visão geral
Link: https://www.devmedia.com.br/cmmi-uma-visao-geral/25425
Aprofunde-se
Por fim, segundo Smith (apud MACHADO, 2016), o CMMI se tornou um veículo popular para a determina-
ção de maturidade de processo de desenvolvimento de software de organizações em diversos domínios.
Esse artigo foca nas razões por trás da adoção do CMMI e inclusive traz
motivações existentes para o mercado brasileiro de software.
Título: Desmistificando o CMMI
Link: http://asrconsultoria.com.br/index.php/2016/06/22/desmistificando-o-cmmi/
Aprofunde-se
2 REPRESENTAÇÕES DO CMMI
Como você viu, o modelo CMMI possui duas representações: a representação por estágios e a repre-
sentação contínua. Na representação por estágios, o modelo é utilizado para avaliar a capacidade da
organização como um todo. Na representação contínua, a medição é feita sobre a maturidade das áreas
de processo específicas dentro da organização.
2.1 REPRESENTAÇÃO POR ESTÁGIOS
A representação por estágios se concentra nas melhores práticas que uma organização pode utilizar
para melhorar processos das áreas do nível que se deseja atingir. Antes de iniciar a utilização do modelo
CMMI, os processos da organização devem ser mapeados em relação aos processos e áreas de processo
do CMMI. Esse mapeamento permitirá controlar a melhoria do processo da organização por meio da
possibilidade de analisar o nível de conformidade da organização em relação ao modelo. Ressalta-se
https://www.devmedia.com.br/cmmi-uma-visao-geral/25425
http://asrconsultoria.com.br/index.php/2016/06/22/desmistificando-o-cmmi/
Qualidade e testes de software | Unidade 3 - CMMI
35
que não é necessário que todas as áreas de processo do CMMI mapeiem exatamente um por um
os processos de uma organização.
Na representação por estágios, há uma sequência de atividades e práticas que deve ser respeitada em
cada estágio, uma vez que servem de base para se alcançar o estágio seguinte. Cada um dos estágios é
conhecido por níveis de maturidade (Maturity Levels). Na figura abaixo, você encontrará os cinco níveis
de maturidade propostos na representação por estágios do CMMI:
Você pode compreender os níveis da representação por estágios da seguinte maneira:
• Nível 1 – Inicial: os processos de uma organização são imprevisíveis, pouco contro-
lados e caóticos.
• Nível 2 – Gerenciado: os processos de uma organização são caracterizados por
projeto e geralmente as ações são frequentemente reativas.
• Nível 3 – Definido: os processos de uma organização são bem caracterizados e
compreendidos pela organização (envolvem toda a organização) e são proativos.
• Nível 4 – Gerenciado quantitativamente: aqui os processos de uma organização são
medidos e controlados.
• Nível 5 – Otimizado: nesse nível, os processos de uma organização estão sob cons-
tante melhoria.
Figura 1 - Níveis de maturidade da
representação por estágios do CMMI.
Fonte: adaptado de Sommerville (2011).
ED
+
Co
nt
en
t H
ub
©
2
01
9
Qualidade e testes de software | Unidade 3 - CMMI
36
Acesse na plataforma o vídeo: A representação por estágios do CMMI.
Assista
Título: 1 - ISD BRASIL - o que é o nível 1 de maturidade do CMMI
Acesso em: 28/10/2019.
Disponível em: https://youtu.be/kF8sxDDoRns
Aprofunde-se
Comumente, você encontrará organizações avaliadas nos níveis de maturidade do CMMI, sendo referen-
ciadas, por exemplo, como: “a organização X está no nível 3 do CMMI”.
Título: 2 - ISD BRASIL - implementando o CMMI nível 3 de maturidade
Acesso em: 28/10/2019.
Disponível em: https://youtu.be/PiQh_bzoJoc
Aprofunde-se
2.2 REPRESENTAÇÃO CONTÍNUA
Na representação contínua do CMMI, ou CMMI Contínuo, diferentemente da representação por estágios,
não se tem a maturidade de uma organização medida por níveis preestabelecidos. Nessa representação,
a maturidade é medida em cada processo individualmente. Para avaliação dos processos, são utilizados
níveis de capacidade (Capability Levels) (MACHADO, 2016):
• Nível 0 - Incompleto (Ad hoc).
• Nível 1 - Executado (definido): o processo é executado de modo a completar somente
o trabalho necessário demandado.
• Nível 2 - Gerenciado: é sobre planejar a execução e confrontar o executado contra o
que foi planejado.
• Nível 3 - Definido: o processo é construído sobre as diretrizes do processo existente e
é mantida uma descrição do processo.
• Nível 4 - Quantitativamente gerenciado/ Gerido quantitativamente: é quando o
processo é gerenciado quantitativamente através de estatísticas e outras técnicas.
• Nível 5 - Em otimização (ou otimizado): o processo gerido quantitativamente é alte-
rado e adaptado para atender às necessidades negociais/estratégicas da empresa.
https://youtu.be/PiQh_bzoJoc
Qualidade e testes de software | Unidade 3 - CMMI
37
Acesse na plataforma o vídeo: A representação contínua do CMMI
Assista
Esse artigo se concentra especificamente na representação contínua
e seus níveis de capacidade de maneira simplificada.
Título: CMMI - Representação Contínua - Níveis de Capacidade
Link: https://bit.ly/375B0z0
Aprofunde-se
Quando uma organização busca apenas melhorar processos específicos, a representaçãocontínua é
indicada. Por exemplo, em uma organização você poderá encontrar processos tanto no nível de capaci-
dade 1 quanto no nível 4. Talvez por uma decisão interna ou qualquer outro fator, a organização queira
melhorar apenas o processo que se encontra no nível 1. Na figura abaixo, há um possível perfil de
avaliação de processo nos diferentes níveis de capacidade da representação contínua. Nessa figura, você
pode observar que diferentes processos possuem diferentes níveis de capacidade atribuídos.
Figura 2 - Exemplo de um perfil de avaliação de
processos em níveis de capacidade.
Fonte: adaptado de Sommerville (2011).
https://bit.ly/375B0z0
Qualidade e testes de software | Unidade 3 - CMMI
38
Esse artigo apresenta uma comparação entre as representações do CMMI
em inglês.
Título: SEI CMMI Representations
Link: https://www.tutorialspoint.com/cmmi/cmmi-representations.htm
Aprofunde-se
3 ÁREAS DE PROCESSO DO CMMI
Acesse na plataforma o vídeo: Áreas de processo.
Assista
Em cada uma das representações do CMMI, existem áreas de processo distribuídas tanto nos níveis de
maturidade (representação por estágios) quanto nos níveis de capacidade (representação contínua). Uma
área de processo é o agrupamento de práticas relacionadas a determinado contexto que, quando execu-
tadas de forma coletiva, satisfazem uma série de metas consideradas importantes para alcançar uma
melhora significativa naquele contexto (ou seja, atingir um certo nível de maturidade) (MACHADO, 2016).
Na tabela abaixo, você poderá visualizar as áreas de processo existentes na representação por estágios.
Cada nível é composto por uma coleção de áreas de processo.
Nível de maturidade Áreas de processo
Nível 2 - Gerenciado
Gestão de requisitos;
Planejamento de projeto;
Monitorização e controle de projeto;
Gestão do acordo com o fornecedor;
Medição e análise;
Garantia da qualidade do processo e do produto;
Gestão de configurações.
Nível 3 - Definido
Desenvolvimento de requisitos;
Solução técnica;
Integração do produto;
Verificação;
Validação;
Enfoque no processo organizacional;
Definição do processo organizacional;
Formação organizacional;
Gestão integrada do projeto;
Gestão de risco;
Integração de equipes;
Gestão integrada de fornecedores;
Ambiente organizacional para integração;
Análise das decisões e resolução.
Nível 4 - Gerenciado quantitativamente
Performance do processo;
Organizacional;
Gestão quantitativa do projeto.
Nível 5 - Otimizado Inovação e desenvolvimento organizacional; Análise e resolução de causa.
Tabela 1 - Níveis de maturidade da representação por
estágios do CMMI e suas respectivas áreas de processo.
Fonte: adaptado de Machado (2016).
https://www.tutorialspoint.com/cmmi/cmmi-representations.htm
Qualidade e testes de software | Unidade 3 - CMMI
39
Já em relação à representação contínua, as áreas de processo são divididas por categoria, como pode
ser visto na tabela a seguir:
Categoria Áreas de processo
Gestão de processos
Enfoque no processo organizacional;
Definição do processo organizacional;
Formação organizacional;
Desempenho de processo organizacional;
Inovação e implementação organizacional.
Gestão de projeto
Planejamento de projeto;
Monitorização e controle de projeto;
Gestão do acordo com o fornecedor;
Gestão integrada do projeto;
Gestão de risco de integração de equipes;
Gestão integrada de fornecedores;
Gestão quantitativa do projeto.
Engenharia
Gestão de requisitos;
Desenvolvimento de requisitos;
Solução técnica;
Integração do produto;
Verificação;
Validação.
Suporte
Gestão de configurações;
Garantia da qualidade do processo e do produto;
Medição e análise;
Análise das decisões e resolução;
Ambiente organizacional para integração;
Análise e resolução causal.
Esse artigo apresenta uma descrição detalhada de práticas genéricas e
específicas de cada área de processo do CMMI em inglês.
Título: CMMI - Key Process Areas
Link: https://www.tutorialspoint.com/cmmi/cmmi_process_areas.htm
Aprofunde-se
Por fim, para cada área de processo, como já mencionado, existem metas genéricas e específicas. Na
tabela abaixo, você pode ver alguns exemplos de metas associadas às áreas de processo:
Meta Área de processo
Ações corretivas são gerenciadas até a conclusão, quando
o desempenho ou os resultados do projeto se desviam
significativamente do plano.
Monitoração e controle de projeto (meta específica).
O desempenho atual e o progresso do projeto são monitorados
frente ao planejamento do próprio projeto.
Monitoração e controle de projeto (meta específica).
Os requisitos são analisados e validados e uma definição da
funcionalidade requerida é desenvolvida.
Desenvolvimento de requisitos (meta específica).
Causas raiz de defeitos e outros problemas são sistematicamente
determinados.
Análise causal e resolução (meta específica).
O processo é institucionalizado como um processo definido. Meta genérica.
Tabela 2 - Categorias da representação contínua do
CMMI e suas áreas de processo associadas.
Fonte: adaptado de Machado (2016).
Tabela 3 - Exemplos de metas para algumas áreas de processo do CMMI.
Fonte: adaptado de Sommerville (2011).
https://www.tutorialspoint.com/cmmi/cmmi_process_areas.htm
Qualidade e testes de software | Unidade 3 - CMMI
40
Essa dissertação de mestrado apresenta um trabalho relevante ao
mapear as áreas de processo do CMMI em relação a métodos ágeis de
desenvolvimento em inglês.
Título: Mapping CMMI process areas to agile best practices
Link: https://run.unl.pt/bitstream/10362/60403/1/TGI0186_final.pdf
Aprofunde-se
4 OBTENDO A CERTIFICAÇÃO
A obtenção da certificação CMMI traz consigo uma série de benefícios para a organização que pretende
adotá-la (PROMOVE, 2018):
• Maior controle produtivo: o objetivo principal da implantação desse modelo é a
capacidade de monitorar e controlar os processos de desenvolvimento e entrega de
softwares e serviços. Com isso, a organização que o obtiver terá uma visão geral do
fluxo produtivo, desde seu planejamento até a execução. Com indicadores compara-
tivos relevantes, facilita o processo de compreensão de onde estão os pontos fortes
e fracos da sua equipe e de seus projetos, adaptando o desenvolvimento às necessi-
dades encontradas.
• Mais produtividade: processos otimizados e um fluxo simplificado de trabalho vão se
traduzir em aumento de produtividade no mundo corporativo. Somado a isso, a certifi-
cação CMMI permite a inclusão de uma estrutura inteligente de comunicação interna.
A empresa tem mais ferramentas para produzir e mais integração para colaborar.
• Iteração constante: nos níveis mais altos do CMMI, o controle da produção é inte-
grado ao trabalho do gestor, facilitando seu trabalho em buscar constantemente a
melhora de processos e o aumento da produtividade citada anteriormente. Além disso,
ao mesmo tempo em que se busca otimizar o trabalho de uma equipe, essa mesma
equipe possui as ferramentas necessárias para otimizar um código, refinar um produto
ou aprimorar a entrega de um serviço. Por isso a iteração constante é uma vantagem
competitiva importante para quem trabalha com produtos de softwares.
Em 2007, a empresa Ci&T, especializada em desenvolvimento e outsourcing de
aplicações, obteve o nível CMMI 5. Para tanto, foi necessário o investimento do
montante de aproximadamente US$1 milhão. Esse investimento foi necessário
para um treinamento de quatro anos, com preparação e adequação de processos.
Fonte: https://www.baguete.com.br/noticias/software/13/04/2007/cit-investe-us-1-milhao-na-
conquista-do-cmmi5
Reflita
https://run.unl.pt/bitstream/10362/60403/1/TGI0186_final.pdf
https://www.baguete.com.br/noticias/software/13/04/2007/cit-investe-us-1-milhao-na-conquista-do-cmmi5
https://www.baguete.com.br/noticias/software/13/04/2007/cit-investe-us-1-milhao-na-conquista-do-cmmi5
Qualidade e testes de software | Unidade 3 - CMMI
41
• Agilidade para atender demandas: as demandas de clientes acompanham a velo-
cidadecom que a tecnologia avança. Portanto, as organizações que obtêm sucesso
nesse mercado são aquelas que identificam e alcançam nichos antes de concorrentes,
consolidando-se como uma referência entre aquela clientela. Para conseguir atingir
esse ponto de agressividade, qualquer negócio precisa de uma TI organizada e pronta
para responder a uma demanda o mais rápido possível. Nesse sentido, a certificação
CMMI garante que você tenha a inteligência e a otimização de processos necessárias
para conseguir esse feito.
• Menos riscos no planejamento: se há controle na capacidade produtiva de uma
organização, os riscos no planejamento são menores. É possível mapear demandas e
sugerir processos que atinjam seus objetivos gastando-se menos e com qualidade na
entrega. Previsibilidade é uma das palavras-chave para organizações que buscam a
certificação em CMMI.
• Maior satisfação do cliente: processos definidos e monitorados, agilidade na resposta
às demandas e, principalmente, qualidade na entrega ao cliente são as características
que levam sua organização a satisfazer sua clientela com sucesso. Em um mercado
acirrado e volátil, essa satisfação significa entregar um produto ou serviço de qualidade
com preço acessível e que supere expectativas. No caso das concorrências públicas,
trata-se de uma forma de se destacar como uma solução prática, confiável e segura.
Acesse na plataforma o vídeo: Razões para a certificação.
Assista
Qualidade e testes de software | Unidade 3 - CMMI
42
Aspectos para obtenção
da certificação CMMI
Há diversos aspectos que devem ser contemplados para a obtenção da certificação CMMI. Tais
aspectos vão de encontro a um processo rigoroso de avaliação.
O planejamento da avaliação
dura em média 3 meses.
A condução da avaliação
dura de 6 a 8 dias.
Resultado da avaliação:
ocorre imediatamente após a
condução da avaliação.
A avaliação tem duração de 3
anos. Após esse período, é
necessário realizar uma nova
avaliação.
Deve ser definido por quem
deseja obter a certificação de
qual será o escopo organizacional.
Avaliação
• Coletar dados para entender os
processos implementados;
• Determinar nível de aderência de um
processo em relação aos componentes
do CMMI;
• Determinar grau de satisfação das
metas investigadas;
• Identificar pontos fortes e fracos do
processo;
• Atribuir classificação.
1
A avaliação deve ser conduzida
por um profissional capacitado
chamado “lead appraiser”.
2
34
5
6 7
ED
+
Co
nt
en
t H
ub
©
2
01
9
Infográfico 1 - Aspectos para obtenção da certificação CMMI.
Qualidade e testes de software | Unidade 3 - CMMI
43
Esse artigo apresenta o método SCAMPI em detalhes, método utilizado em
avaliações do SEI para organizações que almejam a certificação CMMI.
Título: Standard CMMI® Appraisal Method for Process Improvement
(SCAMPI) Version 1.3b
Link: https://cmmiinstitute.com/resources/standard-cmmi-appraisal-method-
process-improvement-scampi-version-13b-method-definition
Aprofunde-se
Em 2017, a DB1 Global Software, multinacional de tecnologia sediada em Maringá
(PR), renovou a certificação CMMI Nível 3, emitida pelo CMMI Institute, que
atesta aderência ao padrão internacional de qualidade de software. A primeira
certificação foi concedida à DB1 em 2013 e, desde então, vem credenciando a
empresa ao crescimento nos negócios e à participação em licitações oficiais.
Fonte: https://bit.ly/2q4l53B
Reflita
https://cmmiinstitute.com/resources/standard-cmmi-appraisal-method-process-improvement-scampi-version-13b-method-definition
https://cmmiinstitute.com/resources/standard-cmmi-appraisal-method-process-improvement-scampi-version-13b-method-definition
https://bit.ly/2q4l53B
Qualidade e testes de software | Unidade 3 - CMMI
44
CONSIDERAÇÕES FINAIS
Nesta unidade, você pôde conhecer o modelo CMMI, muito utilizado em organizações de desenvolvi-
mento de software, no intuito de melhorarem seus processos.
Uma vez melhorados seus processos, por consequência a organização ganha reconhecimento no
mercado, facilitando a captação de novos clientes e solidifica sua marca.
Qualidade e testes de software | Unidade 3 - CMMI
45
GLOSSÁRIO
SEI/CMU: Software Engineering Institute/Carnegie Mellon University.
Qualidade e testes de software | Unidade 3 - CMMI
46
REFERÊNCIAS
MACHADO, Felipe Nery Rodrigues. Análise e Gestão de Requisitos de Software - Onde nascem os
sistemas. 3. ed. São Paulo: Érica, 2015.
PROMOVE. Certificação CMMI: conheça os benefícios alcançados por empresas brasileiras, 2018.
Disponível em: https://www.promovesolucoes.com/certificacao-cmmi-conheca-os-beneficios-alcancados-por-
-empresas-brasileiras/. Acesso em: 31 nov. 2019.
SOMMERVILLE, I. Engenharia de Software. Tradução Ivan Bosnic e Kalinga G. de O. Gonçalves. 9. ed. São
Paulo: Pearson Prentice Hall, 2011.
https://www.promovesolucoes.com/certificacao-cmmi-conheca-os-beneficios-alcancados-por-empresas-bras
https://www.promovesolucoes.com/certificacao-cmmi-conheca-os-beneficios-alcancados-por-empresas-bras
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
47
Unidade 4 Modelo MPS.br
Objetivo da aprendizagem:
• Apresentar o modelo MPS.br.
Tópicos de estudo:
• O que é o MPS.br;
• Componentes do MPS.br;
• Comparação entre modelos.
Iniciando os estudos:
Seguindo seu estudo no mundo da engenharia de software, com foco na qualidade, você já percebeu que
a qualidade de um produto de software só pode ser alcançada por meio do aperfeiçoamento e melhoria
dos seus próprios processos de desenvolvimento.
Para atingir esse objetivo, você pode contar com frameworks, normas e modelos, que fornecem suges-
tões das melhores práticas para a melhoria de processos. Um desses modelos, focando o mercado
nacional, é o MPS.br.
Nesta unidade, você conhecerá então o modelo MPS.br, seu histórico, motivações e sua estrutura.
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
48
1 O QUE É O MPS.BR
Como você já viu, um dos pilares da engenharia de software é a busca por qualidade. Por meio da
melhoria dos processos de desenvolvimento, objetiva-se a construção de produtos de qualidade.
No Brasil, desde 1993, com o Programa Brasileiro de Qualidade e Produtividade de Software (PBQP
Software), o País tem investido na melhoria de qualidade de software. Porém, a partir de um estudo do
MIT (Massachusetts Institute of Technology) foi constatado que empresas nacionais que seguiram com
iniciativas para melhoria de processos de desenvolvimento de software, utilizaram a certificação ISO
9000, ao invés de outros modelos específicos para software (WEBER, 2006).
De acordo com dados do Ministério da Ciência e Tecnologia, em 2003, 214 empresas que desenvolviam
software no Brasil tinham certificação ISO 9000 e outras 30 empresas possuíam certificações CMM do
SEI/CMU. Dessas últimas, a maioria era subsidiária de multinacionais. Em relação às suas certificações,
24 empresas possuíam certificação nível 2, cinco no nível 3, uma no nível 4 e nenhuma no nível 5 até
então (WEBER, 2005).
Para facilitar o uso de um modelo específico para software, a Associação para Promoção da Excelência
do Software Brasileiro, Softex, propôs o projeto MPS.br – Melhoria de Processo de Software Brasileiro.
O programa iniciou-se em 2003, sob coordenação da Softex, contando com a participação de universi-
dades, indústrias e do governo brasileiro. O principal objetivo do MPS.br é desenvolver e semear um
modelo de melhoria de processos visando estabelecer um caminho economicamente viável para que
organizações, incluindo as pequenas e médias empresas (PMEs), alcancem benefícios da melhoria de
processos e da utilização de boas práticas da engenharia de software em um intervalo de tempo acei-
tável (KALINOWSKI et al., 2011).
Figura 1 - Em 2003, 214 empresas que desenvolviam
software no Brasil tinham certificação ISO 9000.
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
49
Assim como outros modelos de referência, o MPS.br possui uma página
web ondeexibe as atuais empresas que possuem níveis de maturidade
atestados pelo modelo. Essas empresas e seus níveis podem ser vistas no
endereço https://softex.br/mpsbr/avaliacoes/
Aprofunde-se
O programa tem duas metas a serem alcançadas a médio e longo prazo, a meta técnica e a meta de negó-
cios (SOFTEX, 2016). A meta técnica visa o aprimoramento do programa em si e é composta pelos itens:
A. Guias de modelos de maturidade do MPS;
B. Formação de Instituições Implementadoras (II), credenciadas para prestar serviço de
consultoria dos modelos do MPS, sendo eles o modelo de referência para software
(MR-MPS-SW), modelo de referência para serviços (MR-MPS-SV) e modelo de referência
para gestão de pessoas (MR-MPS-RH);
C. Formação de Instituições Avaliadoras (IA), credenciadas para prestar serviços de
avaliação, seguindo modelo proposto pelo MPS;
D. Formação de Instituições de Consultoria de Aquisição (ICA), credenciadas para prestar
serviços de aquisição de software ou serviços relacionados.
Já a meta de negócios, tem por objetivo a disseminação e viabilização dos modelos MPS para a melhoria
de competitividade das PMEs (como foco principal) e até de grandes organizações privadas e governa-
mentais. É composta por:
A. Criação e aprimoramento do modelo de negócio chamado de MN-MPS;
B. Realização de cursos, provas e workshops MPS;
C. Apoio para organizações que implementaram o modelo MPS;
D. Transparência para as organizações que realizaram a avaliação MPS.
Acesse na plataforma o vídeo: O que é o MPS.br.
Assista
https://softex.br/mpsbr/avaliacoes/
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
50
ED
+
Co
nt
en
t H
ub
©
2
01
9
Na figura abaixo, você pode ver que o programa MPS.br foi concebido por entidades que utilizaram
modelos e normas preestabelecidos e também observaram a realidade das empresas brasileiras:
Modelos
e normas
(ISO/IEC, CMM)
Realidade das
empresas
brasileiras
Softex
Governo
Universidades
Este artigo apresenta os resultados de uma pesquisa realizada com o
objetivo de identificar dificuldades e fatores de sucesso relacionados à
implementação de processos de software utilizando o MR-MPS e o CMMI.
Título: Dificuldades e Fatores de Sucesso na Implementação de Processos
de Software Utilizando o MR-MPS e o CMMI
Link: https://www2.unifap.br/furtado/files/2017/04/007.pdf
Aprofunde-se
2 COMPONENTES DO MPS.BR
O modelo MPS possui cinco componentes, como ilustrado na figura abaixo. Como já mencionado no
tópico anterior, possui o modelo de referência MPS para software (MR-MPS-SW), o modelo de referência
MPS para serviços (MR-MPS-SV), o modelo de referência MPS para gestão de pessoas (MR-MPS-RH), o
método de avaliação (MA-MPS) e o modelo de negócio (MN-MPS).
Acesse na plataforma o vídeo: MPS.br e seus componentes.
Assista
Figura 2 -Síntese do MPS.br.
Fonte: adaptado de Weber (2011).
https://www2.unifap.br/furtado/files/2017/04/007.pdf
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
51
Na figura abaixo, você pode ver a composição do modelo MPS e a integração entre seus componentes:
Modelo MPS
ISO/IEC
15504
Modelo de Referência
para Software
MR-MPS-SW
Modelo de Referência
para Serviço
MR-MPS-SV
Guia Geral
de Serviço
Modelo de Referência
para Gestão de Pessoas
MR-MPS-RH
Guia Geral
de Gestão
de Pessoas
Método de Avaliação Modelo de Negócio
MN-MPSMA-MPS
Guia de
Avaliação
Guia Geral
de Software
Guia de
Aquisição
CMMI
ISO/IEC
12207
Documento
do Projeto
O Modelo de Referência para o Processo de Software do MPS (MR-MPS-SW) (SOFTEX, 2016) contém
todos os requisitos que as organizações devem possuir para serem compatíveis com o modelo MPS. A
estrutura do modelo é formada por níveis de maturidade que são a combinação entre os processos e
sua capacidade.
O MR-MPS-SW segue definições contidas nas normas ISO/IEC 12207 e ISO/IEC 15504. Além disso, foi
construído para ser compatível com o modelo do SEI/CMU CMMI.
O Guia de Aquisição é um documento adicional e complementar que fornece subsídios para organi-
zações que almejem adquirir software e serviços correlatos com base em normas internacionais e em
práticas sugeridas internacionalmente. Em linhas gerais, esse guia não contém requisitos do MR-MPS,
mas sim boas práticas de aquisição de software e serviços correlatos.
O Método de Avaliação descreve como seu próprio nome sugere um processo de avaliação. Esse processo
de avaliação é composto por requisitos para os avaliadores se capacitarem na avaliação em si e também
descreve os requisitos necessários para que organizações se tornem aderentes ao MR-MPS.
O Modelo de Negócio, por sua vez, contém a descrição das regras de negócio para três domínios: o
domínio do projeto MPS.br, o domínio das instituições implementadoras do modelo e instituições avalia-
doras e, por fim, o domínio das empresas e organizações que queiram fazer uso do modelo MPS para
melhorar seus processos de software.
Figura 3 - Modelo MPS.
Fonte: adaptado de Softex (2016).
ED
+
Co
nt
en
t H
ub
©
2
01
9
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
52
2.1 MODELO DE REFERÊNCIA MPS PARA SOFTWARE
Como já mencionado, o Modelo de Referência é composto por níveis de maturidade. São ao todo sete
níveis de maturidade que são sequenciais e acumulativos. Em cada um desses níveis, você encontrará
processos e suas capacidades.
O progresso nos níveis de maturidade é obtido quando são atendidos todos os resultados, propósitos
e atributos dos processos relacionados a determinado nível. Na figura abaixo, você pode visualizar a
estrutura do Modelo de Referência.
Os níveis do MR-MPS são:
• Nível A – Em otimização;
• Nível B – Gerenciado quantitativamente;
• Nível C – Definido;
• Nível D – Largamente definido;
• Nível E – Parcialmente definido;
• Nível F – Gerenciado;
• Nível G – Parcialmente gerenciado.
Figura 4 - Estrutura do MR-MPS.
Fonte: Weber (2011).
ED
+
Co
nt
en
t H
ub
©
2
01
9
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
53
Título: Introdução ao nível G do Modelo MPS de Software
Acesso em: 03/11/2019.
Disponível em: https://www.youtube.com/watch?v=TWwTk4Spcgc
Aprofunde-se
O nível inicial é o nível G, mais imaturo, enquanto o nível A é o mais maduro. A graduação em sete níveis
permite uma implementação e reconhecimento mais gradual de melhoria de processo, facilitando a
adequação de pequenas e médias empresas, com obtenção de resultados em prazos menores. Dentro
de cada, tem-se caracterizadas as capacidades do processo que são representadas por um conjunto de
atributos de processo (AP). A capacidade de processo expressa o grau de refinamento e institucionali-
zação com o processo que é executado na organização ou unidade organizacional.
No MPS.br temos os seguintes atributos de processo:
• AP 1.1 - O processo é executado: o processo realiza o que foi proposto para ele, produ-
zindo os resultados esperados.
• AP 2.1 - O processo é gerenciado: a execução do processo possui alguma gestão.
• AP 2.2 - Os produtos de trabalho são gerenciados: os produtos de trabalho originados
pelo processo são gerenciados, isto é, produzidos, controlados e mantidos.
• AP 3.1 - O processo é definido: há um padrão a ser seguido e o mesmo apoia a imple-
mentação do processo.
• AP 3.2 - O processo está implementado: o processo, agora padronizado, é de fato
implementado para atingir os seus objetivos.
• AP 4.1 - O processo é medido: algumas medições são usadas para garantir que o desem-
penho do processo ajude a alcançar os objetivos para o qual esse processo foi proposto.
• AP 4.2 - O processo é controlado: o processo é controlado estatisticamente, permitindo
se ter previsibilidade, estabilidade e capacidade de execução.
• AP 5.1 - O processo é o objeto de inovações: as mudanças no processo são identificadas
a partir da análise dos seus indicadores e da investigação de possíveis inovações.
• AP 5.2 - O processo é otimizado continuamente: significa que as mudanças no
processo têm, de fato, impactono alcance dos objetivos no que se refere aos aspectos
relevantes de melhoria do próprio processo.
Esse artigo apresenta um estudo de caso sobre a implementação
do nível E do MPS.br em uma instituição de pesquisa.
Título: Indicadores da Implementação do Nível E do MR-MPS
em uma Instituição de Pesquisa
Link: https://bit.ly/332hDno
Aprofunde-se
https://www.youtube.com/watch?v=TWwTk4Spcgc
https://bit.ly/332hDno
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
54
Na tabela abaixo, você encontrará os atributos relacionados aos processos de cada nível do modelo MPS
e a qual nível se referem.
Nível Processos Atributos de processo
A Inovação e Implantação na Organização – IIO AP 1.1, AP 2.1, AP 2.2, AP 3.1, AP 3.2,
AP 4.1, AP 4.2 , AP 5.1 e AP 5.2Análise e Resolução de Causas – ARC
B Gerência de Projetos – GPR (evolução) AP 1.1, AP 2.1, AP 2.2, AP 3.1, AP 3.2,
AP 4.1 e AP 4.2
C Gerência de Riscos – GRI AP 1.1, AP 2.1, AP 2.2, AP 3.1 e AP 3.2
Desenvolvimento para Reutilização – DRU
Gerência de Decisões – GDE
D Verificação – VER AP 1.1, AP 2.1, AP 2.2, AP 3.1 e AP 3.2
Validação – VAL
Projeto e Construção do Produto – PCP
Integração do Produto – ITP
Desenvolvimento de Requisitos – DRE
E Gerência de Projetos – GPR (evolução) AP 1.1, AP 2.1, AP 2.2, AP 3.1 e AP 3.2
Gerência de Reutilização – GRU
Gerência de Recursos Humanos – GRH
Definição do Processo Organizacional – DFP
Avaliação e Melhoria do Processo Organizacional – AMP
F Medição – MED AP 1.1, AP 2.1 e AP 2.2
Garantia de Qualidade – GQA
Gerência de Portfólio de Projetos – GPP
Gerência de Configuração – GCO
Aquisição – AQU
G Gerência de Requisitos – GRE AP 1.1 e AP 2.1
Gerência de Projetos – GRP
3 COMPARAÇÃO ENTRE MODELOS
Como já mencionado, o MR-MPS-SW foi baseado nas normas ISO/IEC 12207 e ISO/IEC 15504 e cons-
truído de modo a ser compatível com o CMMI do SEI. Porém, apesar de guardar similaridades com essas
normas e modelo de capacidade, existem particularidades presentes no MPS.br. Entre esses modelos,
encontram-se vantagens e desvantagens.
Tabela 1 - Relação de níveis de maturidade, processos e
atributos de processo do MPS.br.
Fonte: Weber (2011).
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
55
Esse artigo apresenta um estudo de caso envolvendo uma organização
que adotou o MPS.br.
Título: ISO 9001:2000, MPS.BR Nível F e CMMI Nível 3: Uma Estratégia de
Melhoria de Processos na BL Informática
Link: https://bit.ly/2OtVqJA
Aprofunde-se
Figura 5 - Comparação entre os níveis dos modelos CMMI
e MPS.br. Observe que o MPS.br possui uma granularidade
maior: por exemplo, os três níveis C, D e E equiparam-se a
somente um nível do CMMI, no caso o nível 3.
Fonte: adaptado de Silveira (2012).
ED
+
Co
nt
en
t H
ub
©
2
01
9
https://bit.ly/2OtVqJA
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
56
O MPS.br, apesar de concebido para ser compatível com o modelo do SEI CMMI, possui características
que o diferencia. Veja a seguir.
Nem todos os requisitos do MPS.br
estão no CMMI.
Todos os requisitos das áreas de
processo do CMMI estão presentes
no MPS.br.
O MPS.br não possui representação
contínua, apenas por estágios.
O CMMI possui representação
contínua.
O MPS.br é aceito como modelo de
maturidade para licitações.
O CMMI é aceito como modelo de
maturidade para licitações.
As avaliações são bienais no MPS.br.As avaliações não são bienais no CMMI.
No MPS.br o custo de certificação é
mais acessível.
O custo de certificação do CMMI não
é tão acessível.
O MPS.br é mais conhecido no Brasil
e na América Latina. O CMMI é conhecido internacionalmente.
O MPS.br tem foco em pequenas e
médias empresas.
O CMMI não possui foco em empresas
de tamanho específico.
O MPS.br possui foco no mercado
nacional brasileiro.
O CMMI não apresenta definições
particulares de mercado.
Em linhas gerais, a adoção de um modelo ou outro deverá estar alinhada com os objetivos da organização.
Se for uma organização nacional ou com presença no âmbito da América Latina, talvez seja uma boa estra-
tégia iniciar avaliações por meio do MPS.br – por ser mais acessível financeiramente – e então utilizar as
lições aprendidas com essa implantação para a eventual obtenção de uma certificação CMMI no futuro.
Infográfico 1 - Comparação entre CMMI e MPS.br.
ED
+
Co
nt
en
t H
ub
©
2
01
9
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
57
Acesse na plataforma o vídeo: Comparando o MPS.br.
Assista
Esse artigo apresenta um estudo envolvendo o uso do MPS
em diversas organizações.
Título: iMPS - Resultados de Desempenho de Organizações
que Adotaram o Modelo MPS
Link: https://bit.ly/2Ob06Fz
Aprofunde-se
https://bit.ly/2Ob06Fz
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
58
CONSIDERAÇÕES FINAIS
Como você viu nesta unidade, a comunidade científica, acadêmica e industrial do Brasil conta com um
modelo para amparar o desenvolvimento de software com qualidade. Compatível com demais modelos,
pode ser usado principalmente por organizações e empresas que convivem com as condições de
mercado presentes no país.
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
59
GLOSSÁRIO
Frameworks: arcabouços, conjuntos de ferramentas de trabalho.
Qualidade e testes de software | Unidade 4 - Modelo MPS.br
60
REFERÊNCIAS
KALINOWSKI, Marcos et al. From software engineering research to Brazilian software quality impro-
vement. Disponível em: https://bit.ly/2OBBl47 Acesso em: 8 nov. 2019.
SILVEIRA, Artur Rafael. O que é o MPS.br? Disponível em: https://bit.ly/2XH8TBZ Acesso em: 4 nov. 2019.
SOFTEX. MPS.BR - Melhoria de Processo do Software Brasileiro - Guia Geral MPS de Software. Dispo-
nível em: https://bit.ly/2OEoQEU Acesso em: 8 nov. 2019.
WEBER, Kival Chaves. MPS.BR - Melhoria de Processo do Software Brasileiro. Disponível em: https://
bit.ly/2QIMMtE Acesso: 6 nov. 2019.
WEBER, Kival et al. Melhoria de Processo do Software Brasileiro (MPS.BR): um programa mobili-
zador. Disponível em: https://bit.ly/2QIayWo Acesso em: 8 nov. 2019.
WEBER, Kival Chaves et al. Modelo de Referência e Método de Avaliação para Melhoria de Processo de
Software – versão 1.0 (MR-MPS e MA-MPS). Disponível em: https://bit.ly/2KKJNgy Acesso em: 1 out. 2019.
https://bit.ly/2OBBl47
https://bit.ly/2XH8TBZ
https://bit.ly/2OEoQEU
https://bit.ly/2QIMMtE
https://bit.ly/2QIMMtE
https://bit.ly/2QIayWo
https://bit.ly/2KKJNgy
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
61
Unidade 5 Introdução à atividade de teste de software
Objetivo de aprendizagem:
• Introduzir à atividade de teste de software.
Tópicos de estudo:
• Introdução ao teste de software;
• Planejamento do teste de software;
• Tipos de teste.
Iniciando os estudos:
Nesta unidade, você conhecerá mais sobre a atividade de teste de software, seu histórico, motiva-
ções e conceitos.
Além disso, compreenderá o quão essa atividade é imprescindível para obtenção de qualidade em
produtos de software.
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
62
1 INTRODUÇÃO AO TESTE DE SOFTWARE
A engenharia de software evoluiu consideravelmente nos últimos anos com o objetivo de produzir
técnicas, critérios, métodos e ferramentas para o desenvolvimento de software frente ao aumento do
uso de software e sistemas baseados em computação em virtualmente todas as áreas da atividade
humana (BARBOSA et al., 2000).
O processo de desenvolvimento de software envolve várias atividades nas quais, apesar das técnicas,
métodos e ferramentas utilizados, erros no software podem acontecer. Atividades reunidas sob o nome
de Garantia de Qualidade de Software têm sido inseridas ao longo de todo o processo de desenvolvi-
mento. Entre elas, atividades conhecidas sob a sigla VV&T – Verificação, Validação e Teste, com o obje-
tivo de minimizar a ocorrência de erros em um produto de software e riscos associados à atividade de
desenvolvimento.Dentre as técnicas de verificação e validação, a atividade de teste é uma das mais
utilizadas e constitui um elemento para fornecer evidências da confiabilidade do software em comple-
mento a outras atividades, como por exemplo o uso de revisões e de técnicas formais e rigorosas de
especificação e de verificação (BARBOSA et al., 2000).
O histórico do teste de software iniciou-se há tempos, porém foi em 1957 que o conceito de teste se tornou
o processo de detecção de erros e não simplesmente verificar se o software funciona. E foi em 1979 que
Glenford Myers produziu os primeiros trabalhos complexos sobre o processo de teste. Nessa época, já
se dizia que o teste deveria ter a intenção de encontrar erros. Com o passar do tempo, os projetos de
Figura 1 - A prática da engenharia de software, com suas
técnicas e atividades, surgiram para suprir a necessidade
de uso de software de qualidade em praticamente todas
as áreas de atividade humana.
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
63
software foram tendo mais problemas em razão da complexidade dos sistemas. Segundo Bartié (2002
apud DEVMEDIA, 2013), “mais de 30% dos projetos são cancelados antes de serem finalizados e mais de
70% dos projetos falham nas entregas de funcionalidade”. Essas falhas criaram então um ambiente de
caos e de problemas para os gestores, logo criou-se a necessidade de criação de processos de qualidade
que busquem estabelecer procedimentos que sirvam de garantia e gerenciamento de qualidade.
Diante desse cenário, a atividade de teste consistirá em uma análise dinâmica do produto e é uma ativi-
dade relevante na descoberta e eliminação de erros que persistem. Em relação à qualidade do processo,
o teste sistemático é uma atividade obrigatória para a obtenção de certificação do nível 3 do Modelo
CMMI do Software Engineering Institute – SEI. Além disso, o conjunto de informações que resulta da
atividade de teste é insumo para as atividades de depuração, manutenção e estimativa de confiabilidade
de software (BARBOSA et al., 2000).
Acesse na plataforma o vídeo: A importância do teste de software
Assista
Por fim, a atividade de teste de software tem sido apontada como uma das mais custosas no desenvol-
vimento de software e, apesar desse fato, Myers (1979), mencionado por Barbosa et al. (2000), observa
que aparentemente conhece-se muito menos sobre teste de software do que sobre outros aspectos e/
ou atividades do desenvolvimento de software.
Título: Área de testes de software: minha trajetória
Acesso em: 15/11/2019.
Disponível em: https://youtu.be/ZEimv-1bKZ0
Aprofunde-se
1.1 CONCEITOS E DEFINIÇÕES
Para você conhecer o universo do teste de software é necessário esclarecer alguns conceitos rela-
cionados a essa atividade. Os principais conceitos ao teste de software são relacionados aos termos:
defeitos, erros e falhas. No infográfico abaixo, são apresentadas definições que seguem terminologias
da IEEE (NETO, 2007):
https://youtu.be/ZEimv-1bKZ0
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
64
Infográfico 1 - Conceitos básicos do teste de software.
Fonte: adaptado de Bartko (2012).
ED+ Content Hub © 2019
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
65
No infográfico de título Terminologias do teste de software deste tópico, você pôde conferir a definição
dos conceitos e observou uma figura que expressa a relação entre esses conceitos. Defeitos fazem parte
do universo físico (o produto de software em si, seus arquivos, executáveis ou scripts) e são causados por
pessoas, geralmente um desenvolvedor (o que remete ao seu próprio universo) ao cometer um engano,
por exemplo, através do mau uso de alguma tecnologia. Defeitos podem ocasionar a manifestação de
erros em um produto, ou seja, a construção de um software de forma diferente do que foi especificado
(consistindo no universo de informação – a necessidade que gerou os requisitos do software). Por fim,
os erros geram falhas, que são comportamentos inesperados em um software que afetam diretamente
o usuário final da aplicação (universo do usuário, uso do software) e podem inviabilizar a utilização de
um software. Com essas informações, pode-se dizer que o teste de software acaba por revelar simples-
mente falhas em um produto. Após a execução dos testes, em geral, é necessário executar um processo
de depuração (popularmente conhecimento como o ato de “debugar”) para a identificação e correção
dos defeitos que originaram essa falha (NETO, 2007).
Por fim, você também deve conhecer os seguintes elementos que compõem a atividade de teste de
software:
Caso de teste (tópico 2.2): descreve uma condição particular a ser testada e é composto por valores de
entrada, restrições para a sua execução e um resultado ou comportamento esperado (veja mais deta-
lhes no tópico 2.2).
Procedimento de teste ou roteiro de teste (tópico 2.3): é uma descrição dos passos necessários para
executar um caso (ou um grupo de casos) de teste.
Critério de teste: serve para selecionar e avaliar casos de teste de forma a aumentar as possibilidades
de provocar falhas ou, quando isso não ocorre, estabelecer um nível elevado de confiança na correção
do produto (ROCHA et al., 2001 apud NETO, 2007). Os critérios de teste podem ser utilizados como:
• Critério de cobertura dos testes: permite a identificação de partes do programa que
devem ser executadas para garantir a qualidade do software e indicar quando o mesmo
foi suficientemente testado. Ou seja, determinar o percentual de elementos necessários
por um critério de teste que foram executados pelo conjunto de casos de teste.
• Critério de adequação de casos de teste: quando, a partir de um conjunto de casos
de teste T qualquer, ele é utilizado para verificar se T satisfaz os requisitos de teste
estabelecidos pelo critério. Ou seja, esse critério avalia se os casos de teste definidos
são suficientes ou não para avaliação de um produto ou uma função.
• Critério de geração de casos de teste: quando o critério é utilizado para gerar um
conjunto de casos de teste T adequado para um produto ou função, ou seja, esse
critério define as regras e diretrizes para geração dos casos de teste de um produto
que esteja de acordo com o critério de adequação definido anteriormente.
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
66
Título: Tudo o que você queria saber sobre testes, mas não
tinha pra quem perguntar
Acesso em: 14/11/2019.
Disponível em: https://youtu.be/GHB86yxT-W8
Aprofunde-se
2 PLANEJAMENTO DO TESTE DE SOFTWARE
Uma atividade essencial no desenvolvimento de todo e qualquer projeto é o planejamento. Um plano
tem o papel semelhante ao de um "mapa". Sem um mapa, um plano ou qualquer outra fonte de infor-
mação similar, você não conhecerá seus objetivos, nem aonde quer chegar e jamais terá a certeza de ter
alcançado sua meta. Perceba que entender o propósito do planejamento é de suma importância a fim
de monitorar a execução de atividades, sendo também importante conhecer o papel dos riscos no plane-
jamento bem como diferenciar estratégias de planos. Planejamento engloba três atividades principais:
1. Definir um cronograma de atividades: estabelecer as atividades que devem ser reali-
zadas, as etapas a serem seguidas e a ordem cronológica de execução.
2. Fazer alocação de recursos: definir quem realiza as atividades e quais ferramentas/
recursos devem ser utilizados.
3. Definir marcos de projeto: estabelecer os marcos, ou milestones, a serem alcançados
com objetivo de se fazer o acompanhamento.
De maneira geral, a atividade de teste de software também precisará de planejamento para que seja
executada de modo a produzir seu principal benefício – garantir qualidade ao produto de software. O
planejamento do teste de software exige documentos essenciais: plano de teste, casos de teste e roteiro
de teste (PIERRI, 2013).Nos próximos tópicos você explorará cada um deles.
2.1 PLANO DE TESTE
Um plano de teste é produzido para ajudar no desenvolvimento de um software. É por meio desse
plano que os componentes técnicos, funcionais, estruturais etc. serão verificados e validados, de modo
a garantir o bom funcionamento do programa junto ao usuário final. Sendo assim, um plano de teste de
software tem como objetivo garantir a confiabilidade e segurança de um produto de software, identifi-
cando possíveis erros e falhas durante ou após a sua produção (VIEGAS, 2017).
https://youtu.be/GHB86yxT-W8
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
67
Ele deve ser elaborado em conjunto com a proposta do software, sendo aplicado em cada etapa do
projeto e não somente no final. Na figura acima é possível ver, pelo exemplo do processo RUP (Rational
Unified Process), que os testes permeiam praticamente todo o processo de desenvolvimento. Em linhas
gerais, o plano de teste funciona como (DEVMEDIA, 2009):
• Um integrador entre diversas atividades de testes no projeto;
• Mecanismo de comunicação para os stakeholders (i.e. à equipe de testes e outros inte-
ressados);
• Guia para execução e controle das atividades de testes.
O plano de teste, que pode ser elaborado pelo gerente de projeto ou gerente de testes, visa planejar as
atividades a serem realizadas, definir os métodos a serem empregados, planejar a capacidade neces-
sária e estabelecer métricas e formas de acompanhamento do processo. Em relação ao seu conteúdo, o
plano de teste deve conter:
• Os itens a serem testados, ou seja, o escopo e objetivos do plano devem ser estabele-
cidos no ponto inicial do projeto.
• Atividades e recursos a serem empregados, ou seja, as estratégias de testes e recursos
utilizados devem ser definidos bem como toda e qualquer restrição imposta sobre as
atividades e/ou recursos.
• Os tipos de teste a serem realizados e as ferramentas empregadas, ou seja, os tipos de
teste e a ordem temporal de sua ocorrência são estabelecidos no plano.
• Critérios para avaliar os resultados obtidos: métricas devem ser definidas para acom-
panhamento dos resultados alcançados.
Figura 2 - Processo RUP: testes estão presentes
em todo o processo de desenvolvimento.
Fonte: adaptado de Devmedia (2009).
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
68
Título: Teste de software - plano de teste
Acesso em: 15/11/2019.
Disponível em: https://youtu.be/oMzCQkPN3Ug
Aprofunde-se
2.2 CASOS DE TESTE
Casos de teste descrevem uma condição particular a ser testada. Possuem valores de entrada, limitações
para a sua execução e também um resultado ou comportamento esperado. O processo de criação de
casos de teste pode também ajudar a encontrar falhas nos próprios requisitos, identificando cenários
não abordados pelos requisitos que originaram a demanda pelo sistema.
Título: Casos de testes
Acesso em: 15/11/2019.
Disponível em: https://youtu.be/t7lqIeOkwrw
Aprofunde-se
A estrutura de um caso de teste é composta pela descrição de sua precondição, pela descrição do proce-
dimento a ser executado e pela descrição do resultado esperado. Sobre esses componentes do caso de
teste, é possível detalhá-los da seguinte maneira:
• A precondição é um requisito para o comportamento do sistema antes da execução do
caso de teste.
• No procedimento estão passos para a execução do caso de teste. Esse procedimento
não deve fugir do foco descrito na descrição do caso de teste.
• O resultado esperado descreve como o sistema deveria se comportar após a execução
do procedimento do caso de teste.
De maneira geral, em um produto de software, seja ele um aplicativo desktop ou uma página da internet,
existem testes que são considerados fundamentais para garantir uma qualidade mínima para a utili-
zação por um usuário. A seguir uma listagem desses casos de teste fundamentais, segundo Rocha (2008):
• Layout: no início de cada roteiro de teste, é necessário que sejam feitos casos de teste
específicos para o layout (posicionamento dos elementos gráficos – caixas de texto,
botões, áreas de digitação, tabelas etc.) de cada tela do sistema.
• Campos obrigatórios: casos de teste que verificam se os campos obrigatórios estão
sendo corretamente tratados. Por exemplo: verificar se ao deixar um campo obriga-
https://youtu.be/oMzCQkPN3Ug
https://youtu.be/t7lqIeOkwrw
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
69
tório em branco está aparecendo a mensagem, ou seja, ressaltar para o usuário que o
campo deve ser preenchido.
• Máscara: verificar se os campos estão sendo preenchidos com suas respectivas
máscaras (formato de como um valor deve ser inserido). Por exemplo: o campo CPF
deve ser preenchido com a máscara NNN.NNN.NNN-NN
• Valores permitidos: verificar se os campos estão sendo validados no caso de rece-
berem valores não permitidos. Por exemplo: campos numéricos não devem aceitar
caracteres especiais e/ou letras.
• Valores nulos: verificar se um campo que só pode aceitar valor maior que zero, aceita
valor menor ou igual a zero.
• Valores limite: verificar qual o valor máximo e mínimo permitido para certo campo.
Testar, ao inserir um valor fora do limite, se está aparecendo a devida mensagem.
• Verificação de caracteres especiais: verificar se os campos de texto estão aceitando
caracteres especiais.
• Validação de campos (data, CPF, CNPJ): verificar se foi digitado uma data, CPF ou
CNPJ válido.
• Eventos do mouse: realizar testes que copiam textos com o mouse e colam e verificam
se esses campos estão sendo validados corretamente.
• Espaços em branco: num campo obrigatório, preencher com espaços em branco e
verificar se o sistema detectou que o campo estava vazio.
• Ortografia: verificar a ortografia de todo e qualquer texto do sistema, inclusive de
mensagens de alerta.
Em relação especificamente aos sistemas web, destacam-se:
• Navegador: os sistemas web geralmente possuem comportamentos diferentes
quando são visualizados em diferentes navegadores. Com isso, é importante criar um
caso de teste para executar o sistema nos principais navegadores, como por exemplo,
IE7, IE8, Chrome, Firefox e Safari.
• Resolução do monitor: os sistemas web também podem ter exibições diferentes
dependendo da resolução do monitor do usuário. Nesse caso, é importante que seja
criado um caso de teste para verificar o comportamento do sistema nas principais
resoluções, como por exemplo, resoluções de 800x600 e 1027x768.
• Perfil do usuário: há sistemas que possuem diferentes perfis de usuários com dife-
rentes privilégios. Nesse caso, é importante criar diferentes casos de teste consi-
derando na precondição o perfil do usuário. Inclusive deve haver casos de teste
considerando que um usuário comum não pode acessar as funcionalidades de um
administrador do sistema.
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
70
• Autenticação: quando o sistema possui autenticação do usuário, é importante criar
casos de teste para não permitir que um usuário não autenticado, com a devida
permissão concedida por algum administrador, acesse o sistema.
• Caracteres especiais: é importante criar casos de teste que verifiquem o comporta-
mento do sistema quando são inseridos em campos de texto um link ou uma imagem,
pois, se o sistema processar o código HTML inserido, o link pode ser direcionado para
um vírus ou para imagem indevida.
• Integridade dos dados: verificar no banco de dados se os valores foram atualizados
ou excluídos corretamente.
• Clique duplo: ao criar um roteiro de teste para uma tela de cadastro, incluir um caso
de teste que verifique o comportamento do sistema quando o usuário clica duas vezes
no botão Salvar. Nesse caso, o sistema não deve incluir dois registros.
• Tempo de processamento: verificar o tempo de processamento para carregar uma
página ou se um combo box não ultrapassao tempo máximo esperado. No caso de
listas, pode ser necessário incluir paginação para melhorar o tempo de processamento.
• Dados em uma tabela: verificar se o texto contido em uma tabela possui alguma orde-
nação, se o alinhamento dos campos estão de acordo com o padrão especificado.
• Alerta de confirmação: é importante que hajam alertas de confirmação em botões
cuja ação é de excluir ou cancelar uma operação. Criar casos de teste que verifiquem
se ao clicar em Não, o sistema realmente não exclui ou não cancela a operação.
Título: Web Page Screen Resolution Simulator
Acesso em: 16/11/2019.
Disponível em: http://www.webconfs.com/web-page-screen-resolution.php
Aprofunde-se
2.3 ROTEIRO DE TESTE
O roteiro de teste descreve os passos necessários para a execução de um caso de teste ou um grupo de
casos de teste. Esse roteiro é elaborado a partir dos documentos de especificação de um determinado
caso de uso, como a especificação funcional, guia de interface ou modelagem do banco de dados. O
roteiro de teste ainda é conhecido como projeto de teste, especificação de teste ou script de teste. É
importante no momento da execução dos testes, pois o testador (no inglês conhecido como tester), o
profissional que realiza os testes, consegue realizar uma sequência de passos de forma coerente, sem a
necessidade de consultar todos os documentos de especificação no momento dos testes, podendo ficar
focado apenas na própria execução dos testes (ROCHA, 2007).
http://www.webconfs.com/web-page-screen-resolution.php
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
71
Além do que é especificado pelo cliente, o roteiro de teste também possui procedimentos que testam a
eficiência do sistema. Como já mencionado, um roteiro de teste é composto por um conjunto de casos
de teste, mas além desses há também seções de localização (local no produto de software) e de objeto
de teste. A seção de localização do roteiro de teste serve para definir em qual tela do sistema será execu-
tado um subconjunto de casos de teste, os quais fazem parte daquela localização. A localização pode ser
escrita da seguinte forma: Tela Consultar Funcionários > Tela Manter Funcionários.
Segundo Rocha (2007), em uma localização pode existir um ou mais objetos de teste, onde esse pode
ser definido como a ideia global de um conjunto de casos de teste. Por exemplo, na localização descrita
anteriormente, Tela Manter Funcionários, um possível objeto de teste seria cadastro de funcionários
no sistema. Outro objeto de teste para essa mesma localização poderia ser alteração de funcionários no
sistema. Essa estratégia de teste poderia ser compreendida como um agrupamento de casos de teste
em torno de um objetivo comum. O objeto de teste, por sua vez, pode conter um ou mais casos de teste.
Acesse na plataforma o vídeo: Porquê planejar o teste de software
Assista
Figura 3 - A atividade de teste de software
requer planejamento detalhado, elaborado
por uma equipe qualificada.
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
72
3 TIPOS DE TESTE
Por meio dos processos hoje existentes na engenharia de software, há diversos procedimentos para
realizar o teste de software. De modo geral, existem técnicas que foram utilizadas em sua maioria em
sistemas desenvolvidos sobre linguagens estruturadas que ainda hoje podem ter serventia para sistemas
orientados a objetos. Apesar de serem paradigmas de desenvolvimento diferentes, o objetivo principal
dessas técnicas continua a ser o mesmo: encontrar falhas no produto de software. As técnicas de teste
são categorizadas de acordo com a origem das informações utilizadas para estabelecer os requisitos de
teste. Elas contemplam diferentes perspectivas do software e impõem a necessidade de se estabelecer
uma estratégia de teste que contemple as vantagens e os aspectos complementares dessas técnicas
(NETO, 2005).
Acesse na plataforma o vídeo: Tipos de teste
Assista
Os tipos de teste vão diferir quanto às suas técnicas. As técnicas existentes são: técnica funcional (caixa-
-preta) e estrutural (caixa-branca). A seguir, você encontrará tipos de teste especificados dentro das
técnicas citadas. Com relação aos testes do tipo caixa-preta, você pode encontrar (DEVMEDIA, 2012):
• Regressão: toda vez que algo for mudado, deve ser testada toda a aplicação nova-
mente.
• Requisitos: verifica se o sistema é executado conforme o que foi especificado. São
realizados através da criação de condições de testes e cheklists de funcionalidades.
• Controle: assegura que o processamento seja realizado conforme sua intenção. Entre
os controles estão a validação de dados, a integridade dos arquivos, as trilhas de audi-
toria, o backup e a recuperação, a documentação, entre outros.
• Usabilidade: tem por objetivo verificar a facilidade que o software ou site possui de ser
claramente compreendido e manipulado pelo usuário.
• Aceitação: testa se a solução será bem avaliada pelo usuário. Ex.: caso exista um botão
pequeno demais para executar alguma operação (aqui cabem itens fora da interface
também).
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
73
Título: Teste de regressão visual
Acesso em: 13/11/2019.
Disponível em: https://youtu.be/rIWmT0nFKoE
Aprofunde-se
Para evitar problemas com a equipe de desenvolvimento, algumas
empresas têm utilizado a terceirização da atividade de teste por empresas
conhecidas como fábricas de testes. O conceito de uma fábrica de testes
sugere uma empresa parceira ou ainda um departamento separado dentro
da própria empresa, com equipe e infraestruturas próprias e dedicadas.
Você pode conferir mais detalhes no seguinte endereço: http://blog.quality.
com.br/fabrica-de-testes-e-qualidade-de-software-o-que-e-o-que-faz/
Reflita
Abaixo, uma listagem com os tipos de teste caixa-branca existentes (DEVMEDIA, 2012):
• Desempenho: verifica se o tempo de resposta é o desejado para o momento de utili-
zação da aplicação.
• Carga: verifica o funcionamento da aplicação com a utilização de uma quantidade
grande de usuários simultâneos.
• Estresse: testa a aplicação sem situações inesperadas. Testa caminhos, às vezes, antes
não previstos no desenvolvimento/documentação.
• Conformidade: verifica se o software foi desenvolvido de acordo com padrões,
normas, procedimentos e guias de TI.
• Contingência: verifica se o sistema é capaz de retornar ao estado anterior antes da falha.
• Segurança: avalia a adequação dos procedimentos de proteção e as contramedidas
projetadas para garantir a confidencialidade das informações e a proteção dos dados
contra o acesso não autorizado de terceiros.
Título: Boas práticas de testes
Acesso em: 12/11/2019.
Disponível em: https://youtu.be/WO6TMMzryi0
Aprofunde-se
https://youtu.be/rIWmT0nFKoE
http://blog.quality.com.br/fabrica-de-testes-e-qualidade-de-software-o-que-e-o-que-faz/
http://blog.quality.com.br/fabrica-de-testes-e-qualidade-de-software-o-que-e-o-que-faz/
https://youtu.be/WO6TMMzryi0
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
74
CONSIDERAÇÕES FINAIS
Nesta unidade, foram apresentados conceitos, termos, técnicas e procedimentos referentes à ativi-
dade de teste de software que, por sua vez, é uma atividade essencial para a obtenção da qualidade de
software. Para que a atividade de teste de software cumpra seu objetivo, você pode ver a necessidade
de um bom planejamento e, nesse planejamento, a utilização do tipo de teste mais alinhado com a
proposta do software, pode facilitar o caminho.
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
75
GLOSSÁRIO
Glenford Myers: é um cientista da computação, empresário e autor americano. Ele fundou duas
empresas de alta tecnologia bem-sucedidas, criou oito livros didáticos em ciências da computação e fez
importantes contribuições na arquitetura de microprocessadores(WIKIPEDIA, 2019).
HTML (Hypertext Markup Language): linguagem utilizada pelos sistemas web e é interpretada pelo
software conhecido como navegador de internet.
IEEE: Institute of Electrical and Electronics Engineers.
Rational Unified Process: O Processo Unificado da Rational conhecido como RUP (Rational Unified
Process), é um processo de engenharia de software criado para apoiar o desenvolvimento orientado
a objetos, fornecendo uma forma sistemática para se obter vantagens no uso da UML. Foi criado pela
Rational Software Corporation e adquirido em fevereiro de 2003 pela IBM.
Sistemas web: aplicações baseadas no protocolo HTTP, por meio da rede mundial de computadores, a
internet. Normalmente são operadas e manipuladas por um usuário utilizando um software conhecido
como navegador de internet.
Qualidade e testes de software | Unidade 5 - Introdução à atividade de teste de software
76
REFERÊNCIAS
BARBOSA, Ellen Francine et al. Introdução ao teste de software, 2000. Disponível em: https://www.
researchgate.net/publication/306255146_INTRODUCAO_AO_TESTE_DE_SOFTWARE Acesso em: 3 fev. 2020.
BARTKO, William. Crixus-Trucov: uma ferramenta para apoiar o teste estrutural de Sistemas Embarcados
Críticos. 62 f. Trabalho de Conclusão de Curso – Curso Superior de Tecnologia em Sistemas para Internet,
Universidade Tecnológica Federal do Paraná – UTFPR. Campo Mourão, 2012. Disponível em: http://reposi-
torio.roca.utfpr.edu.br/jspui/bitstream/1/706/1/CM_COINT_2012_1_02.pdf Acesso em: 28 nov. 2019.
DEVMEDIA. Introdução à garantia de qualidade de software e ferramentas para teste, 2013. Dispo-
nível: https://www.devmedia.com.br/introducao-a-garantia-de-qualidade-de-software-e-ferramentas-para-
-teste/28027 Acesso em: 13 nov. 2019.
DEVMEDIA. Plano de Teste - Um Mapa Essencial para Teste de Software, 2009. Disponível em: https://
www.devmedia.com.br/plano-de-teste-um-mapa-essencial-para-teste-de-software/13824 Acesso em: 10 nov.
2019.
DEVMEDIA. Testes de Desempenho, Carga e Stress, 2012. Disponível: https://www.devmedia.com.br/
testes-de-desempenho-carga-e-stress/26546 Acesso em: 13 nov. 2019.
GRUPO DE TESTADORES DE SOFTWARE. Casos de Teste Fundamentais, 2008. Disponível em: http://
gtsw.blogspot.com/2008/02/casos-de-teste-fundamentais.html Acesso em: 12 nov. 2019.
GRUPO DE TESTADORES DE SOFTWARE. Como Elaborar um Roteiro de Testes, 2007. Disponível em:
https://gtsw.blogspot.com/2007/10/como-elaborar-um-roteiro-de-testes.html Acesso em: 12 nov. 2019.
MATERA. Planejamento de testes de sistema, 2013. Disponível em: http://www.matera.com/blog/post/
planejamento-de-testes-de-sistema Acesso em: 10 nov. 2019.
NETO, Arilo. Introdução a teste de software. Engenharia de Software Magazine, v. 1, p. 22, 2007. Dispo-
nível em: https://www.researchgate.net/profile/Arilo_Neto/publication/266356473_Introducao_a_Teste_de_
Software/links/5554ee6408ae6fd2d821ba3a/Introducao-a-Teste-de-Software.pdf Acesso em: 28 nov. 2019.
ONE DAY TASTING. Teste de software: introdução, conceitos básicos e tipos de testes, 2017. Disponível
em: https://blog.onedaytesting.com.br/teste-de-software/ Acesso em: 11 nov. 2019.
WIKIPEDIA. Glenford Myers, 2019. Disponível em: https://en.wikipedia.org/wiki/Glenford_Myers Acesso
em: 25 nov. 2019.
https://www.researchgate.net/publication/306255146_INTRODUCAO_AO_TESTE_DE_SOFTWARE
https://www.researchgate.net/publication/306255146_INTRODUCAO_AO_TESTE_DE_SOFTWARE
http://repositorio.roca.utfpr.edu.br/jspui/bitstream/1/706/1/CM_COINT_2012_1_02.pdf
http://repositorio.roca.utfpr.edu.br/jspui/bitstream/1/706/1/CM_COINT_2012_1_02.pdf
https://www.devmedia.com.br/introducao-a-garantia-de-qualidade-de-software-e-ferramentas-para-teste/28027
https://www.devmedia.com.br/introducao-a-garantia-de-qualidade-de-software-e-ferramentas-para-teste/28027
https://www.devmedia.com.br/plano-de-teste-um-mapa-essencial-para-teste-de-software/13824
https://www.devmedia.com.br/plano-de-teste-um-mapa-essencial-para-teste-de-software/13824
https://www.devmedia.com.br/testes-de-desempenho-carga-e-stress/26546
https://www.devmedia.com.br/testes-de-desempenho-carga-e-stress/26546
http://gtsw.blogspot.com/2008/02/casos-de-teste-fundamentais.html
http://gtsw.blogspot.com/2008/02/casos-de-teste-fundamentais.html
https://gtsw.blogspot.com/2007/10/como-elaborar-um-roteiro-de-testes.html
http://www.matera.com/blog/post/planejamento-de-testes-de-sistema
http://www.matera.com/blog/post/planejamento-de-testes-de-sistema
https://www.researchgate.net/profile/Arilo_Neto/publication/266356473_Introducao_a_Teste_de_Software/links/5554ee6408ae6fd2d821ba3a/Introducao-a-Teste-de-Software.pdf
https://www.researchgate.net/profile/Arilo_Neto/publication/266356473_Introducao_a_Teste_de_Software/links/5554ee6408ae6fd2d821ba3a/Introducao-a-Teste-de-Software.pdf
https://blog.onedaytesting.com.br/teste-de-software/
https://en.wikipedia.org/wiki/Glenford_Myers
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
77
Unidade 6 Fases ou níveis do teste de software
Objetivo de aprendizagem:
• Apresentar as fases ou níveis de teste de software.
Tópicos de estudo:
• Teste de unidade;
• Teste de integração;
• Teste de sistema.
Iniciando os estudos:
Nesta unidade, você poderá compreender como os testes de software podem diferir quanto a sua granu-
laridade. No teste de software, você encontrará as fases ou níveis de teste de unidade, teste de inte-
gração e teste de sistema. A questão-chave para a compreensão de cada um desses níveis é entender o
objetivo de teste em cada um deles.
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
78
1 TESTE DE UNIDADE
O teste de unidade tem como foco as menores unidades de um programa, que podem ser funções,
procedimentos, métodos ou classes. Nesse contexto, espera-se que sejam identificados erros relacio-
nados a algoritmos incorretos ou mal implementados, estruturas de dados incorretas ou simples erros
de programação. Como cada unidade é testada separadamente, o teste de unidade pode ser aplicado à
medida que ocorre a implementação das unidades e pelo próprio desenvolvedor, sem a necessidade de
dispor-se do sistema totalmente finalizado (DELAMARO et al., 2016).
Para você compreender melhor o conceito, observe o pseudocódigo abaixo:
função soma(a, b)
início
retorne a + b;
fim
Seja soma uma função hipotética de soma, que recebe dois parâmetros e retorna a soma entre eles.
Para que o teste seja realizado é necessário executar ao menos uma vez essa função:
resultado <= soma (1, 2);
se resultado é igual a 3 então
imprima (“Função está correta”);
Ao programar os trechos exibidos, você terá concluído um teste unidade ou unitário.
Título: C#: como criar e executar testes de unidade
Acesso em: 27/11/2019.
Disponível em: https://youtu.be/uBI2vtflrRo
Aprofunde-se
Veja, foi construído um novo código para realizar o teste de unidade. Em um primeiro momento pode
parecer tentador não escrever um novo código para validar um outro código. Porém, ressalta-se que no
ciclo de vida de um produto de software esse mesmo software passará por sucessivos ciclos de manu-
tenção, com a adição de novas funcionalidades ou correções de funcionalidades já existentes. Nesse
contexto, o código-fonte base, ao final de vários ciclos, será grande o suficiente para tornar a manu-
tenção custosa e realizar testes nesse código de forma manual será uma tarefa humanamente difícil,
dado seu tamanho. Com essa motivação, a construção de testes de unidade surge como alternativa para
https://youtu.be/uBI2vtflrRo
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
79
facilitar a manutenção do produto de software, frente a sucessivas modificações/inclusões de código no
ciclo de vida do produto de software, utilizando-se, inclusive, de recursos para automatização desses
testes (LIMA, 2017).
Título: 5 maneiras de aplicar ou otimizar seus testes de unidade
Acesso em: 27/11/2019.
Disponível em: https://youtu.be/oIMsTXRN8QgAprofunde-se
Acesse na plataforma o vídeo: Custo dos testes unitários
Assista
Para resumir a importância do teste unitário hoje na cadeia de desenvolvimento de software, considere
a imagem a seguir:
Na figura acima, é exemplificado que testes de unidade ou unitários são mais baratos e rápidos (como
coelhos) que testes de usuários (UI) que são mais caros e lentos (como tartarugas).
Figura 1 - Relação em testes unitários e de interface de usuário.
Fonte: Lima (2017).
https://youtu.be/oIMsTXRN8Qg
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
80
2 TESTE DE INTEGRAÇÃO
No teste de integração, que deve ser realizado após serem testadas as unidades individualmente, a
ênfase é dada na construção da estrutura do sistema. À medida que as diversas partes do software
são colocadas para trabalhar juntas, é preciso verificar se a interação entre elas funciona de maneira
adequada e não leva a erros. Também nesse caso é necessário um grande conhecimento das estruturas
internas e das interações existentes entre as partes do sistema e, por isso, o teste de integração tende a
ser executado pela própria equipe de desenvolvimento (DELAMARO et al., 2016).
O teste de integração possui duas estratégias para sua realização: as abordagens bottom-up e top-down
(LOURENÇO, 2010).
Na abordagem bottom-up, o software é desenvolvido a partir de rotinas, funções e métodos básicos
que fornecem serviços às demais rotinas, funções ou métodos de uma camada superior do software.
Por exemplo, uma verificação de CPF pode ser chamada em vários pontos de um sistema de software.
Provavelmente será uma das primeiras a serem implementadas.
Já na abordagem top-down, faz-se o contrário. O desenvolvedor elabora seu código supondo que o
código de uma camada inferior do sistema de software já esteja pronto. Utilizando-se o exemplo anterior
de verificação de CPF, o desenvolvedor pode codificar chamadas (fazer o uso nominal da função) para a
verificação de CPF, mesmo sabendo que ela ainda não existe. Nesse exemplo, utiliza-se o recurso conhe-
cido como stubs, que são rotinas vazias que retornam valores explícitos, definidos pelo programador.
Na realização de testes para a abordagem de desenvolvimento bottom-up, devem ser escritos códigos
que invoquem as rotinas de camadas inferiores, testando-as com diversas combinações de parâmetros.
As rotinas escritas para esses testes são conhecidas como drivers (você viu um breve exemplo no tópico
1, no teste de unidade ou unitário), pois sua função é acionar o código que deve ser testado.
Muitas organizações encontram dificuldades com as atividades de teste. Em geral,
tal situação é justificada pela falta de profissionais especializados na área ou
mesmo uma dificuldade de implementar os processos de teste. Para esses casos,
o CenPRA (Centro de Pesquisas Renato Archer) desenvolveu uma metodologia
para auxiliar as empresas nesses processos. Saiba mais em: http://tecnologia.
alinebossi.com/2010/09/20/teste-de-software-no-contexto-da-melhoria/
Reflita
Há testes que necessitam de dados oriundos de arquivos. Nessa situação, é comum que testadores
criem bases de dados falsas contendo registros para realizá-los, simulando os dados necessários para o
teste. Esses dados, inclusive, podem ser inconsistentes, contendo informação incorreta para verificar o
comportamento de rotinas.
http://tecnologia.alinebossi.com/2010/09/20/teste-de-software-no-contexto-da-melhoria/
http://tecnologia.alinebossi.com/2010/09/20/teste-de-software-no-contexto-da-melhoria/
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
81
Uma vez que cada componente tenha sido testado, seja com os drivers ou os stubs, esses elementos são
substituídos pelas rotinas reais. Após a substituição, é recomendado que os testes de integração sejam
executados novamente, de modo que o processo todo se repita até a conclusão do projeto.
Título: Testes de integração: comece a pensar no todo!
Acesso em: 27/11/2019.
Disponível em: https://youtu.be/sa448ZG9p9U
Aprofunde-se
2.1 TESTE DE REGRESSÃO E ACEITAÇÃO
Existem também os testes de aceitação e testes de regressão. O teste de aceitação (também conhecido
por UAT, do inglês User Acceptance Tests) tem por objetivo verificar a conformidade com os requisitos
de negócio e usuário na última fase do ciclo de desenvolvimento, validando o produto para entrega. Eles
são realizados geralmente por um grupo restrito de usuários finais do sistema.
Figura 2 - Utilização de drivers e stubs para uso em
testes de integração.
Fonte: adaptado de Albano et al. (2015).
ED
+
Co
nt
en
t H
ub
©
2
01
9
https://youtu.be/sa448ZG9p9U
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
82
Acesse na plataforma o vídeo: Testes de regressão e teste de aceitação
Assista
Já o teste de regressão acontece a cada modificação efetuada no sistema após a liberação de nova
versão. Nesses processos, corre-se o risco de que novos defeitos sejam introduzidos. Por esse motivo,
é necessário, após a manutenção, realizar testes que mostrem que as modificações efetuadas estão
corretas, ou seja, que os novos requisitos implementados (se for o caso) funcionam como o esperado e
que os requisitos anteriormente testados continuam válidos. De maneira geral, os testes de regressão
tratam de uma nova execução do conjunto de casos de teste já executados (DELAMARO et al., 2016).
Esse artigo confronta as características do paradigma de orientação a
objetos para a criação de testes de integração.
Título do artigo: Testes de integração aplicados a software orientado a
objetos: heurísticas para ordenação de classes
Link: https://www.cos.ufrj.br/uploadfile/es63204.pdf
Aprofunde-se
3 TESTE DE SISTEMA
Depois que se tem o sistema completo, com todas as suas partes integradas, inicia-se o teste de sistema.
O objetivo é verificar se as funcionalidades especificadas nos documentos de requisitos estão todas
corretamente implementadas. Aspectos de correção, completude e coerência devem ser explorados,
bem como requisitos não funcionais como segurança, performance e robustez. Muitas organizações
adotam a estratégia de designar uma equipe independente para realizar o teste de sistema (DELAMARO
et al., 2016).
Acesse na plataforma o vídeo: Ambientes de teste
Assista
https://www.cos.ufrj.br/uploadfile/es63204.pdf
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
83
Os seguintes pontos sumarizam o teste de sistema (SOMMERVILLE, 2011):
• Se os componentes são compatíveis;
• Se eles interagem corretamente;
• Se transferem os dados certos no momento certo, por meio de suas interfaces.
Título: Testes de aceitação
Acesso em: 27/11/2019.
Disponível em: https://youtu.be/0B3dKp07Qe4
Aprofunde-se
Ainda, segundo Sommerville (2011), os testes de sistema se sobrepõem aos testes de integração,
possuindo as seguintes diferenças entre eles:
1. Durante o teste de sistema, os componentes reusáveis que tenham sido desenvolvidos
separadamente e os sistemas de prateleira que eventualmente foram adquiridos,
podem ser integrados com componentes recém-desenvolvidos. Então, o sistema
completo é testado.
2. Nesse estágio, componentes desenvolvidos por diferentes membros da equipe ou
grupos podem ser integrados. O teste de sistema é um processo coletivo, não indivi-
dual. Em algumas empresas, o teste de sistema pode envolver uma equipe indepen-
dente, sem participação de projetistas e programadores.
https://youtu.be/0B3dKp07Qe4
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
84
Esse artigo lista seis regras práticas para melhorar o teste de sistemas
em geral.
Título do artigo: 6 regras simples para melhorar o teste de sistemas
Link: https://blogbrasil.comstor.com/6-regras-simples-para-melhorar-o-
teste-de-sistemas
Aprofunde-se
Infográfico 1 - Comparação entre as fases ou níveis de teste.
Fonte: adaptado de https://bit.ly/2OszyiL Acesso em:5 dez. 2019.
ED
+
Co
nt
en
t H
ub
©
2
01
9
https://blogbrasil.comstor.com/6-regras-simples-para-melhorar-o-teste-de-sistemas
https://blogbrasil.comstor.com/6-regras-simples-para-melhorar-o-teste-de-sistemas
https://bit.ly/2OszyiL
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
85
CONSIDERAÇÕES FINAIS
Nesta unidade, os chamados níveis ou fases de teste foram apresentados detalhando seus escopos e em
qual ponto do desenvolvimento devem ocorrer.
De posse das informações aqui apresentadas, você poderá avaliar quando e onde poderá aplicar testes
de unidade, de integração ou sistema durante o desenvolvimento de um produto de software.
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
86
GLOSSÁRIO
Drivers: são responsáveis pelo controle do teste de uma unidade ou conjuntos de unidades de um
sistema. É uma operação que exercita o módulo sob teste, envia valores (dados de entrada dos casos de
teste), coleta e compara resultados.
Stubs: são implementações que simulam determinadas situações esperadas. Normalmente possuem a
mesma assinatura dos métodos, funções ou rotinas que se deseja simular, porém retornam um compor-
tamento fixo determinado pelo desenvolvedor.
UI (User Interface): dispositivo pelo qual o usuário troca informações com o software. É o meio pelo qual
o usuário comunica-se com o software.
Qualidade e testes de software | Unidade 6 - Fases ou níveis do teste de software
87
REFERÊNCIAS
ALBANO, Edson Lucas; AMARAL, Eduardo; BENITTI, Fabiane Barreto Vavassori, 2015. Teste de Integração.
Disponível em: https://www.inf.ufsc.br/~fabiane.benitti/byebug/objetos/OA31/integracao/presentation_html5.html.
Acesso em: 23 nov. 2019.
DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mário. Introdução ao Teste de Software.
2. ed. Rio de Janeiro: Campus - Elsevier, 2016.
LIMA, Dayvson. Entenda de uma vez por todas o que são testes unitários, para que servem e como fazê-los,
2017. Disponível em: https://medium.com/@dayvsonlima/entenda-de-uma-vez-por-todas-o-que-s%C3%A3o-tes-
tes-unit%C3%A1rios-para-que-servem-e-como-faz%C3%AA-los-2a6f645bab3. Acesso em: 23 nov. 2019.
LOURENÇO, Marcelo. Teste de Integração, 2010. Disponível em: http://qualidade-de-software.blogspot.
com/2010/01/teste-de-integracao.html. Acesso em: 24 nov. 2019.
SOMMERVILLE, I. Engenharia de Software. Tradução Ivan Bosnic e Kalinga G. de O. Gonçalves. 9. ed. São
Paulo: Pearson Prentice Hall, 2011.
https://www.inf.ufsc.br/~fabiane.benitti/byebug/objetos/OA31/integracao/presentation_html5.html
https://medium.com/@dayvsonlima/entenda-de-uma-vez-por-todas-o-que-são-testes-unitários-para-que-servem-e-como-fazê-los-2a6f645bab3
https://medium.com/@dayvsonlima/entenda-de-uma-vez-por-todas-o-que-são-testes-unitários-para-que-servem-e-como-fazê-los-2a6f645bab3
http://qualidade-de-software.blogspot.com/2010/01/teste-de-integracao.html
http://qualidade-de-software.blogspot.com/2010/01/teste-de-integracao.html
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
88
Unidade 7 Técnicas de teste de software
Objetivo de aprendizagem:
Apresentar técnicas de teste de software.
Tópicos de estudo:
• Técnicas de teste funcionais;
• Técnicas de teste estruturais;
• Técnicas de teste baseado em erros.
Iniciando os estudos:
Nesta unidade, você encontrará apoio para compreender as principais técnicas de teste de software e
seus conceitos. A partir do conhecimento dessas técnicas, você será capaz de utilizá-las para o planeja-
mento de sessões de teste bem como de escolher a técnica que melhor se encaixará para o seu projeto
de software.
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
89
1 TÉCNICAS DE TESTE FUNCIONAIS
As técnicas de teste funcionais, ou teste funcional, são conhecidas como teste caixa-preta. Essa alcunha
surgiu porque nessa técnica o software em si é considerado uma caixa-preta e a sua implementação,
seu código-fonte, não é conhecido. Para a realização dos testes nessa técnica, são fornecidos dados de
entradas e as saídas produzidas pelo software são avaliadas para verificar se estão em conformidade
com os objetivos especificados. O software é avaliado do ponto de vista do usuário.
De maneira geral, o teste funcional pode detectar todos os defeitos, uma vez que você pode submeter
um programa ou sistema a todas as entradas possíveis, o que é denominado teste exaustivo (DELA-
MARO et. al., 2016 apud MAYERS et al., 2004). No entanto, o domínio de entrada pode ser infinito ou ainda
muito grande, de modo a tornar o tempo da atividade de teste inviável, fazendo assim com que essa
alternativa se torne impraticável. Essa limitação da atividade de teste, que não permite afirmar no geral
que o programa esteja correto, fez com que fossem definidas as técnicas de teste e os diversos critérios
pertencentes a cada uma delas. Assim, é possível conduzir essa atividade de maneira mais sistemática e,
dependendo do critério utilizado, ter uma avaliação quantitativa da atividade de teste.
Figura 1 - Na técnica de teste funcional ou caixa-preta, o
testador não possui conhecimento da implementação do
software. Apenas são conhecidas as entradas fornecidas
pelo usuário e as saídas produzidas pelo software.
ED+ Content Hub © 2019
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
90
Esse artigo apresenta um jogo utilizado para o ensino de teste funcional.
Título: Avaliando a viabilidade do BlackBox em sala de aula: um jogo sério
para ensino de teste funcional de software
Link: https://br-ie.org/pub/index.php/sbie/article/view/7610/5406
Aprofunde-se
Acesse na plataforma o vídeo: Teste funcional ou caixa-preta
Assista
1.1 CRITÉRIOS DE TESTE FUNCIONAL
Os critérios mais conhecidos da técnica de teste funcional são Particionamento de equivalência, Análise do
valor limite, Grafo causa-efeito e Error guessing. Além desses, também existem outros como, por exemplo,
Teste funcional sistemático, Syntax testing, State transition testing e Graph matrix (DELAMARO et al., 2016).
Como todos os critérios da técnica funcional baseiam-se apenas na especificação do produto testado, a
qualidade de tais critérios depende diretamente da existência de uma boa especificação de requisitos.
Especificações ausentes ou mesmo incompletas tornarão difícil a aplicação dos critérios funcionais.
Esses mesmos critérios também podem apresentar a limitação de não garantir que partes essenciais
ou críticas do produto em teste sejam exercitadas. Por outro lado, os critérios funcionais podem ser
aplicados em todas as fases de testes e em produtos desenvolvidos com qualquer paradigma de progra-
mação, pois não levam em consideração os detalhes de implementação.
https://br-ie.org/pub/index.php/sbie/article/view/7610/5406
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
91
1.1.1 PARTICIONAMENTO DE CLASSES DE
EQUIVALÊNCIA
Esse critério divide o domínio de entrada de um programa em classes de equivalência a partir das quais
os casos de teste são criados. Ele tem por objetivo minimizar o número de casos de teste, selecionando
apenas um caso de teste de cada classe, pois a princípio todos os elementos de uma classe devem se
comportar de maneira equivalente. Eventualmente, pode-se também considerar o domínio de saída
para a definição das classes de equivalência (NETO, 2007 apud ROCHA et al., 2001). Uma classe de equi-
valência representa um conjunto de estados válidos e inválidos para uma determinada condição de
entrada. Tipicamente uma condição de entrada pode ser um valor numérico específico, uma faixa de
valores, um conjunto de valores relacionados ou, ainda, uma condição lógica. As seguintes diretrizes
podem ser aplicadas:
• Se uma condição de entrada especifica uma faixa de valores ou requer um valor espe-
cífico, uma classe de equivalência válida (dentro do limite) e duas inválidas (acima e
abaixo dos limites) são definidas.
• Se uma condiçãode entrada especifica um membro de um conjunto ou lógica, uma
classe de equivalência válida e uma inválida são definidas.
Você deve seguir tais passos para geração dos testes usando estes critérios:
• Identificar classes de equivalência (um processo heurístico):
• Condição de entrada;
• Se são válidas e inválidas.
• Definir os casos de teste:
• Enumerar as classes de equivalência;
• Casos de teste para as classes válidas;
• Casos de teste para as classes inválidas.
Barbosa et al. (2000) apresenta a aplicação do critério de Particionamento por equivalência utilizando um
programa que verifica se uma cadeia de caracteres é um identificador de variáveis válido ou não para a
linguagem C. Para exemplificar o uso desse critério de teste, atente na descrição de um identificador na
linguagem C:
“Um identificador válido deve começar com uma letra e conter apenas letras ou dígitos. Além disso, deve
ter no mínimo um caractere e no máximo seis de comprimento. Exemplo: ‘abc12’ (válido), ‘cont*1’ (invá-
lido), ‘1soma’ (inválido) e ‘a123456’ (inválido)”.
O primeiro passo é a identificação das classes de equivalência. A tabela abaixo mostra essa identificação:
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
92
Encontradas as classes de equivalência, consegue-se definir quais serão os casos de teste necessários.
Veja que, para ser válido, um identificador deve atender às condições (1), (3) e (5), portanto é preciso
definir um caso de teste válido que cubra todas essas condições. Além disso, será necessário um caso
de teste para cada classe inválida: (2), (4) e (6). Assim, o conjunto mínimo de casos de teste é composto
por quatro elementos, sendo uma das opções possíveis: T0 = {(a1, Válido), (2B3, Inválido), (Z-12, Inválido),
(A1b2C3d, Inválido)}.
1.1.2 ANÁLISE DO VALOR LIMITE
Por razões não completamente identificadas, um grande número de erros tende a ocorrer nos limites
do domínio de entrada ao invés do “centro”. Esse critério de teste explora os limites dos valores de cada
classe de equivalência para preparar os casos de teste, sendo um complemento do critério de Particio-
namento de classes de equivalência (PRESSMAN et al., 2016). Se uma condição de entrada especifica uma
faixa de valores limitada em a e b, casos de teste devem ser projetados com valores a e b e imediata-
mente acima e abaixo de a e b. Exemplo: seja o seguinte intervalo igual a {1..10}. Os possíveis casos de
teste são {1, 10, 0,11}. Como exemplo, veja a seguinte regra de negócio de um hipotético sistema que
calcula descontos em planos de saúde:
O cálculo do desconto por dependente é feito da seguinte forma: a entrada é a idade do dependente
que deve estar restrita ao intervalo [0..24]. Para dependentes até 12 anos (inclusive) o desconto é
de 15%. Entre 13 e 18 (inclusive) o desconto é de 12%. Dos 19 aos 21 (inclusive) o desconto é de 5%,
e dos 22 aos 24 de 3% (BARBOSA et al., 2000).
Considerando a descrição dessa regra, se você aplicar o teste de valor limite você poderá obter casos de
teste semelhantes a esses:
{-1,0,12,13,18,19,21,22,24,25}.
Tabela 1 - Classes de equivalência para o
programa que verifica identificadores.
Fonte: Neto (2007).
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
93
Título: Casos de teste funcional de software
Acesso em: 12/12/2019.
Disponível em: https://youtu.be/Z8n5wxIXQ8o
Aprofunde-se
1.1.3 TESTE FUNCIONAL SISTEMÁTICO
Esse critério é uma combinação dos critérios Particionamento de equivalência e Análise do valor limite
(DELAMARO et al., 2016). Uma vez que os domínios de entrada e de saída foram particionados, esse
critério requer no mínimo dois casos de teste de cada partição para minimizar o problema de que
defeitos coincidentes ocultem falhas. Ele também requer a avaliação no limite de cada partição e subse-
quente a ele. Para facilitar a identificação desses casos de teste, o critério fornece as seguintes diretrizes:
A. Valores numéricos
Para o domínio de entrada, selecionar os seguintes valores:
(a) Valores discretos: testar todos os valores;
(b) Intervalo de valores: testar os extremos e um valor no interior do intervalo.
Para o domínio de saída, selecionar valores de entrada que resultem nos valores de saída que
devem ser gerados pelo software. Os tipos das saídas podem não coincidir com os tipos dos
valores de entrada. Por exemplo, valores de entrada distintos podem produzir um intervalo de
valores de saída, dependendo de outros fatores, ou um intervalo de valores de entrada pode
produzir somente um ou dois valores de saída como verdadeiro e falso. Portanto, os valores
de saída devem ser escolhidos da seguinte forma:
(a) Valores discretos: gerar cada um deles;
(b) Intervalo de valores: gerar cada um dos extremos e ao menos um valor no interior
do intervalo.
B. Tipos de valores diferentes e casos especiais
Tipos de valores diferentes devem ser utilizados na entrada e na saída como, por exemplo, um
espaço em branco, que pode ser interpretado como zero em um campo que aceite números.
Casos especiais como zero sempre devem ser selecionados individualmente, mesmo que ele
esteja dentro de um intervalo de valores. O mesmo serve para valores nos limites da repre-
sentação binária dos dados. Por exemplo, para campos inteiros de 16 bits, os valores -32768 e
+32767 deveriam ser selecionados.
https://youtu.be/Z8n5wxIXQ8o
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
94
C. Valores ilegais
Valores que correspondem a entradas ilegais (entradas não permitidas pelo software) também
devem ser incluídos nos casos de teste para se certificar que o software os rejeita. Deve-se
também tentar utilizar valores ilegais que não sejam bem-sucedidos. É importante que sejam
selecionados os limites dos intervalos numéricos, tanto inferiores quanto superiores, valores
imediatamente fora dos limites desses intervalos e também os valores imediatamente subse-
quentes aos limites do intervalo e pertencentes a ele.
D. Números reais
Valores reais envolvem adicionar novos problemas, além de problemas similares aos valores
inteiros, uma vez que na entrada são apresentados como números decimais, no processa-
mento são armazenados na forma binária e na saída são convertidos em decimais novamente.
Verificar o limite para números reais pode não ser exato, mas, ainda assim, essa verificação
deve ser incluída como caso de teste. Deve ser definida uma margem de erro de tal forma que,
se ultrapassada, então o valor pode ser considerado distinto. Além disso, devem ser selecio-
nados números reais bem pequenos e também o zero.
E. Intervalos variáveis
Acontece quando o intervalo de uma variável depende do valor de outra variável. Suponha que
o valor da variável x pode variar de zero ao valor da variável y e que y é um inteiro positivo.
Nesse caso, os seguintes dados de entrada devem ser definidos:
1. i) x = y = 0;
2. ii) x = 0 < y;
3. iii) 0 < x = y;
4. iv) 0 < x < y.
Os valores ilegais também devem ser selecionados:
1. y = 0 < x;
2. 0 < y < x;
3. x < 0; e
4. y < 0.
F. Arranjos (Arrays)
Quando se usa um arranjo, tanto como entrada quanto saída, deve-se considerar o fato de o
tamanho do arranjo ser variável bem como os dados também serem variáveis. Os elementos
do arranjo devem ser testados como se fossem variáveis comuns, como mencionado nos itens
anteriores. Além disso, o tamanho do arranjo deve ser testado com valores intermediários,
com os valores mínimo e máximo. Para simplificar o teste, podem-se considerar as linhas e
colunas de um arranjo como se fossem subestruturas a serem testadas separadamente. Assim,
o arranjo deve ser testado primeiro como uma única estrutura, depois como uma coleção de
subestruturas e cada subestrutura deve ser testada independentemente.
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
95
G. Texto ou string
Nesse caso, o dado de entrada deve explorar comprimentos variáveis e também validar os
caracteresque o compõe, pois algumas vezes o dado de entrada pode ser apenas alfabético,
ou alfanumérico, e outras pode possuir caracteres especiais.
Além desses casos, o critério funcional sistemático requer que dois elementos de uma mesma classe de
equivalência sejam explorados para evitar erros do seguinte tipo: imagine que um programa receba um
valor de entrada e produza o quadrado desse valor. Se o valor de entrada for 2 e o valor produzido como
saída for 4, embora o resultado esteja correto, ainda assim não se pode afirmar qual das operações o
programa realizou, pois poderia ser 2 * 2 como também 2 + 2.
1.1.4 GRAFO CAUSA-EFEITO
Esse critério de teste checa o efeito combinado de dados de entrada. As causas (condições de entrada)
e os efeitos (ações) são identificados e combinados em um grafo a partir do qual é montada uma tabela
de decisão e, a partir dessa, são derivados os casos de teste e as saídas (NETO, 2007 apud ROCHA et
al., 2001). Esse critério é baseado em quatro passos. Para exemplificar esses passos, atente em outro
exemplo extraído de Barbosa et al. (2000):
“Em um programa de compras pela internet, a cobrança ou não do frete é definida seguindo tal regra:
se o valor da compra for maior que R$60,00 e foram comprados menos que três produtos, o frete é
gratuito. Caso contrário, o frete deverá ser cobrado”.
1. Para cada módulo, causas (condições de entrada) e efeitos (ações realizadas às dife-
rentes condições de entrada) são relacionados, atribuindo-se um identificador para
cada um.
• Causa: valor da compra > 80 e #produtos < 3
• Efeito: frete grátis.
2. Em seguida, um grafo de causa-efeito (árvore de decisão) é desenhado como na figura
abaixo:
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
96
3. Nesse ponto, o grafo é transformado em uma tabela de decisão, como exemplificado
na tabela abaixo:
4. As regras da tabela de decisão são, então, convertidas em casos de teste.
Para a elaboração dos casos de teste, você deve seguir todas as regras extraídas da tabela. Esse
critério deve ser combinado a outros já apresentados em tópicos anteriores para a criação de
casos de teste válidos (extraídos das regras) e inválidos (valores fora da faixa definida). Os
casos de teste que refletem somente as regras extraídas da tabela de decisão são os seguintes:
(valor, qtd produtos, resultado esperado) =
{ (61,2,“frete grátis”);
(61,3,“cobrar frete”);
(60, qualquer quantidade,“cobrar frete”) }.
Figura 2 - Árvore de decisão - grafo de causa-efeito.
Fonte: Neto (2007).
Tabela 2 - Tabela de decisão para programa de
compra pela internet.
Fonte: Neto (2007).
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
97
1.1.5 ERROR GUESSING
Essa técnica corresponde a uma abordagem ad-hoc, na qual é praticada por uma pessoa, inconscien-
temente, para projeto de casos de teste, supondo por intuição e experiência alguns tipos prováveis de
erros e, a partir disso, definem-se casos de teste que poderiam detectá-los (DELAMARO et al., 2016). A
ideia do critério é enumerar possíveis erros ou situações sujeitas a erros e então definir casos de teste
para explorá-los. Por exemplo, se o que está sendo testado é um módulo de ordenação de um programa,
as seguintes situações poderiam ser exploradas:
1. Uma lista de entrada vazia;
2. Uma lista com apenas uma entrada;
3. Todas as entradas com o mesmo valor;
4. Uma lista de entrada já ordenada.
2 TÉCNICAS DE TESTE ESTRUTURAIS
A técnica estrutural (ou caixa-branca ou ainda teste caixa de vidro) estabelece os requisitos de teste com
base na implementação fornecida de um programa, requerendo a execução de partes ou de compo-
nentes do programa. Os caminhos lógicos do software são testados, fornecendo-se casos de teste que
colocam à prova tanto conjuntos específicos de condições e/ou laços, quanto pares de definições e usos
de variáveis.
Figura 3 - Conceito do teste estrutural: construir casos
de teste baseados na implementação do software.
ED+ Content Hub © 2019
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
98
Em linhas gerais, usando métodos de teste de caixa-branca, o engenheiro de software pode criar casos
de teste que: (1) garantam que todos os caminhos independentes de um módulo foram exercitados
pelo menos uma vez; (2) exercitam todas as decisões lógicas nos seus estados verdadeiro e falso; (3)
executam todos os ciclos em seus limites e dentro de suas fronteiras operacionais; e (4) exercitam estru-
turas de dados internas para assegurar a sua validade (PRESSMAN; MAXIM, 2016).
Os critérios pertencentes à técnica estrutural são classificados com base na complexidade, no fluxo de
controle e no fluxo de dados. A técnica estrutural apresenta uma série de limitações e desvantagens
decorrentes das limitações inerentes à atividade de teste de programa como estratégia de validação.
Tais aspectos introduzem sérios problemas na automatização do processo de validação de software
(DELAMARO et al., 2016):
• Não existe um procedimento de teste de propósito geral que possa ser usado para
provar a correção de um programa;
• Dados dois programas, é indecidível se eles computam a mesma função;
• É indecidível, em geral, se dois caminhos de um programa, ou de programas diferentes,
computam a mesma função;
• É indecidível, em geral, se um dado caminho é executável, ou seja, se existe um
conjunto de dados de entrada que leve à execução desse caminho.
Existem também limitações que são inerentes à técnica estrutural:
• Caminhos ausentes: se o programa não implementa algumas funções, não existirá
um caminho que corresponda a essas mesmas funções; consequentemente, nenhum
dado de teste será requerido para exercitá-las.
• Correção coincidente: o programa pode apresentar, coincidentemente, um resultado
correto para um dado em particular de entrada, satisfazendo um requisito de teste
e não revelando a presença de um defeito; entretanto, se escolhido outro dado de
entrada, o resultado obtido poderia ser incorreto.
Independentemente dessas desvantagens, a técnica estrutural é vista como complementar às demais
técnicas de teste existentes, uma vez que cobre classes distintas de defeitos. De fato, os conceitos e
experiências obtidos com o teste estrutural podem ser abstraídos e incorporados às demais técnicas e,
ainda, as informações obtidas pela aplicação de critérios estruturais têm sido consideradas relevantes
para as atividades de manutenção, depuração e avaliação da confiabilidade de software.
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
99
2.1 CRITÉRIOS DO TESTE ESTRUTURAL
Os critérios estruturais são, em geral, classificados em:
• Critérios baseados na complexidade;
• Critérios baseados em fluxo de controle;
• Critérios baseados em fluxo de dados.
A seguir são apresentados e discutidos os principais critérios de teste associados a cada uma dessas
classes, em nível de unidade.
2.1.1 CRITÉRIOS BASEADOS NA COMPLEXIDADE
Os critérios baseados na complexidade utilizam informações sobre a complexidade de um programa
para derivar os casos de teste. Um critério bastante conhecido dessa classe é o critério de McCabe (ou
teste de caminho básico), que utiliza a complexidade ciclomática de um Grafo de Fluxo de Controle
(GFC – veja um exemplo na figura abaixo) para derivar os casos de teste. A complexidade ciclomática
é uma métrica de software que proporciona uma medida quantitativa da complexidade lógica de um
programa. Utilizado no contexto do teste de caminho básico, o valor da complexidade ciclomática esta-
belece o número de caminhos linearmente independentes do conjunto básico de um programa, ofere-
cendo um limite máximo para o número de casos de teste que devem ser derivados a fim de garantir
que todas as instruções sejam executadas pelo menos uma vez (DELMARARO et al., 2016).
Figura 4: Exemplo de Grafo de Fluxo de Controle (GFC).
Fonte: adaptado de Delamaro et al. (2016).
Qualidade e testes de software| Unidade 7 - Técnicas de teste de software
100
Acesse na plataforma o vídeo: Grafo de Fluxo de Controle
Assista
Um caminho linearmente independente é qualquer caminho do programa que introduza pelo menos
um novo conjunto de instruções de processamento ou uma nova condição. Quando estabelecido em
termos de um GFC, um caminho linearmente independente deve incluir pelo menos um arco que não
tenha sido atravessado antes que o caminho seja definido. Assim, cada novo caminho introduz um arco.
Caminhos linearmente independentes estabelecem um conjunto básico para o GFC.
Ou seja, se casos de teste puderem ser projetados a fim de forçar a execução desses caminhos (um
conjunto básico), cada instrução do programa terá a garantia de ser executada pelo menos uma vez e
cada condição terá sido executada com verdadeiro e falso. Observe que o conjunto básico não é único.
Podem existir diferentes conjuntos básicos derivados para um determinado GFC. Para saber quantos
caminhos devem ser procurados, é necessário calcular a complexidade ciclomática V (G), que pode ser
computada de três maneiras (DELMARARO et al., 2016):
1. O número de regiões em um GFC. Uma região pode ser informalmente descrita como
uma área inclusa no plano do grafo. O número de regiões é computado contando-se
todas as áreas delimitadas e a área não delimitada fora do grafo; ou
2. V (G) = E − N + 2, tal que E é o número de arcos e N é o número de nós do GFC G; ou
3. V (G) = P + 1, tal que P é o número de nós-predicativos (nós-predicativos são aqueles que
podem desviar o fluxo da execução: if, while, switch etc.) contido no GFC G.
O valor da complexidade ciclomática V (G) oferece um limite máximo para o número de caminhos linear-
mente independentes que constitui o conjunto básico e, consequentemente, um limite máximo do
número de casos de teste que deve ser projetado e executado para garantir a cobertura de todas as
instruções de programa. Segundo Pressman e Maxim (2016), visto que o número de regiões aumenta
conforme o número de caminhos de decisão e laços, a métrica de McCabe acaba por oferecer uma
medida quantitativa da dificuldade de conduzir os testes e uma indicação da confiabilidade final.
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
101
2.1.2 CRITÉRIOS BASEADOS EM FLUXO DE CONTROLE
Os critérios baseados em fluxo de controle utilizam apenas características de controle da execução do
programa, como comandos ou desvios, para determinar quais estruturas são necessárias. Os critérios
mais conhecidos dessa classe são:
• Todos-nós: exige que a execução do programa passe, ao menos uma vez, em cada vértice
do GFC, ou seja, que cada comando do programa seja executado pelo menos uma vez.
• Todas-arestas (ou Todos-arcos): requer que cada aresta do grafo, isto é, cada desvio
de fluxo de controle do programa, seja exercitado pelo menos uma vez;
• Todos-caminhos: requer que todos os caminhos possíveis do programa sejam execu-
tados.
Ressalta-se que a cobertura do critério Todos-nós é o mínimo esperado de uma boa atividade de teste,
pois, do contrário, o programa testado é entregue sem a certeza de que todos os comandos presentes
foram executados ao menos uma vez.
Além disso, apesar de desejável, executar todos os caminhos de um programa é, na maioria dos casos,
uma tarefa impraticável. Isso se deve ao fato de que, na presença de laços, o número de caminhos de um
programa pode ser muito grande ou até mesmo infinito. Essa foi uma das motivações para a introdução dos
critérios baseados em fluxo de dados (DELAMARO et al., 2016), que serão apresentados no próximo tópico.
Título: Teste de software: técnica de teste de caixa-branca
Acesso em: 12/12/2019.
Disponível em: https://youtu.be/UtN4BGK82Ew
Aprofunde-se
https://youtu.be/UtN4BGK82Ew
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
102
2.1.3 CRITÉRIOS BASEADOS EM FLUXO DE DADOS
Os critérios baseados em fluxo de dados utilizam a análise de fluxo de dados como fonte de informação
para derivar os requisitos de teste. Uma característica comum aos critérios dessa categoria é que eles
requerem o teste das interações que envolvam definições de variáveis e referências posteriores a essas
definições. Uma motivação para a introdução dos critérios baseados em fluxo de dados foi a indicação
de que, mesmo para programas pequenos, o teste baseado unicamente no fluxo de controle não era
eficaz para revelar a presença mesmo de defeitos simples e triviais. Nesse sentido, a introdução dessa
classe de critérios procurou estabelecer uma hierarquia entre os critérios Todas-arestas e Todos-cami-
nhos, visando tornar o teste estrutural mais rigoroso.
De acordo com Delamaro et al. (2016 apud URAL, 1988), critérios baseados em fluxo de dados são mais
adequados para certas classes de defeitos, tais como defeitos computacionais, uma vez que dependências
de dados são identificadas e, portanto, segmentos funcionais são requeridos como requisitos de teste.
Entre os principais critérios baseados em fluxo de dados que você encontrará, têm-se os critérios de
Rapps e Weyuker (DELAMARO et al., 2016). Esses critérios são caracterizados pelo uso de um Grafo
Def-Uso, que consiste em uma extensão de um CFG. Nesse grafo estendido, são adicionadas informa-
ções a respeito do fluxo de dados do programa, caracterizando associações entre pontos nos quais esse
valor é utilizado (referência ou uso de variável). Os casos de teste são determinados com base nessas
associações. Outro critério que pode ser encontrado é o dos Potenciais-usos. De maneira geral, esses
critérios requerem associações independentemente da ocorrência explícita de uma referência (um uso)
a uma definição de variável. Portanto, se essa definição tiver um uso definido (há um caminho livre de
definição até certo nó ou arco, isto é, um Potencial-uso), a Potencial-associação entre a definição e o
Potencial-uso é caracterizada e eventualmente requerida.
Este artigo investiga critérios estruturais, com foco no software livre e em
aumentar a confiança nesses produtos.
Título: Qualidade de conjuntos de teste de software de código aberto: uma
análise baseada em critérios estruturais
Link: https://bit.ly/36zEZmf
Aprofunde-se
https://bit.ly/36zEZmf
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
103
3 TÉCNICAS DE TESTE BASEADO EM ERROS
Nessa técnica são utilizados defeitos típicos do processo de implementação de software para que sejam
derivados os requisitos de teste. Um critério conhecido dentro dessa técnica é o teste de mutação ou
análise de mutante. No caso do teste de mutação, o programa que está sendo testado é alterado diversas
vezes, criando-se um conjunto de programas alternativos conhecidos como mutantes, como se defeitos
estivessem sendo inseridos no programa original. O trabalho do testador é escolher casos de teste que
mostrem a diferença de comportamento entre o programa original e os programas mutantes.
Assim como nas demais técnicas, cada mutante determina um subdomínio do domínio de entrada,
formado por aqueles dados capazes de distinguir o comportamento do programa original e do mutante.
A diferença, nesse caso, é que cada subdomínio está claramente relacionado com a capacidade de
revelar um defeito específico. Por fim, a partir da “hipótese do programador competente” e do “efeito de
acoplamento”, pode-se argumentar que um conjunto de casos de teste capaz de distinguir um conjunto
de mutantes escolhido de forma criteriosa, e que represente boa parte dos defeitos mais comuns, seria
capaz de revelar, também, outros tipos de defeitos (DELAMARO et al., 2016).
A “hipótese do programador competente” diz que
programadores experientes escrevem programas corretos ou
bem próximos dos corretos. Já o “efeito de acoplamento” diz
que casos de teste capazes de revelar erros simples são tão
sensíveis que, implicitamente, também são capazes de revelar
erros mais complexos.
Reflita
Título: Teste de mutantesAcesso em: 12/12/2019.
Disponível em: https://youtu.be/LfC4j7qq1Sg
Aprofunde-se
https://youtu.be/LfC4j7qq1Sg
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
104
Infográfico 1 - Como se configura o teste de mutação.
Fonte: adaptado de Delamaro et al. (2016).
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
105
Este artigo apresenta os resultados de um experimento baseado no teste
de mutação.
Título: Equivalência de programas e o teste de software: resultados de um
experimento de aplicação do critério análise de mutantes
Link: https://www.inf.pucrs.br/~zorzo/iiiwtf/camera/m.pdf
Aprofunde-se
Acesse na plataforma o vídeo: Análise de mutantes - mutante
Assista
https://www.inf.pucrs.br/~zorzo/iiiwtf/camera/m.pdf
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
106
CONSIDERAÇÕES FINAIS
Esta unidade trouxe até você o conceito e técnicas do teste de software, uma atividade fundamental
para a busca de qualidade em um produto de software – objetivo primordial da engenharia de software.
Entre as técnicas apresentadas, destaco a você a técnica funcional (caixa-preta), baseada nas possí-
veis entradas de um software e as saídas que ele produz; a técnica estrutural (caixa-branca), que exige
do testador o conhecimento estrutural do software, ou seja, sua implementação; e, por fim, a técnica
baseada em erros, o teste de mutação, que cria a partir do código-fonte original versões alteradas a
partir dos erros mais comuns cometidos pelos desenvolvedores.
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
107
GLOSSÁRIO
Ad-hoc: significa “para esta finalidade”, “para isso” ou “para este efeito”. É uma expressão latina, geral-
mente usada para informar que determinado acontecimento tem caráter temporário e que se destina
para aquele fim específico. Um exame ad-hoc, um método ad-hoc, um cargo ou uma função ad-hoc são
exemplos que definem a criação de algo provisório, que vai atender apenas determinado propósito.
Complexidade ciclomática (ou complexidade condicional): é uma métrica de software usada para
indicar a complexidade de um programa de computador. Mede a quantidade de caminhos de execução
independentes a partir de um código-fonte.
GFC (Grafo de Fluxo de Controle ou Grafo de Programa): um programa P pode ser decomposto em
um conjunto de blocos disjuntos de comandos. A execução do primeiro comando de um bloco acarreta
a execução de todos os outros comandos desse bloco na ordem dada. Todos os comandos de um bloco,
possivelmente com exceção do primeiro, têm um único predecessor e exatamente um único sucessor,
exceto possivelmente o último comando.
Qualidade e testes de software | Unidade 7 - Técnicas de teste de software
108
REFERÊNCIAS
BARBOSA, Ellen Francine et al. Introdução ao teste de software, 2000. Disponível em: https://www.
researchgate.net/publication/306255146_INTRODUCAO_AO_TESTE_DE_SOFTWARE Acesso em: 3 fev. 2020.
DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mário. Introdução ao Teste de Software.
2. ed. Rio de Janeiro: Campus - Elsevier, 2016.
NETO, Arilo. Introdução a teste de software. Engenharia de Software Magazine, v. 1, p. 22, 2007. Dispo-
nível em: https://www.researchgate.net/profile/Arilo_Neto/publication/266356473_Introducao_a_Teste_de_
Software/links/5554ee6408ae6fd2d821ba3a/Introducao-a-Teste-de-Software.pdf. Acesso em: 17 dez. 2019.
PRESSMAN, Roger S.; MAXIM, Bruce R. Engenharia de Software - uma abordagem profissional. 8. ed.
Porto Alegre: Amgh Editora, 2016.
https://www.researchgate.net/publication/306255146_INTRODUCAO_AO_TESTE_DE_SOFTWARE
https://www.researchgate.net/publication/306255146_INTRODUCAO_AO_TESTE_DE_SOFTWARE
https://www.researchgate.net/profile/Arilo_Neto/publication/266356473_Introducao_a_Teste_de_Software
https://www.researchgate.net/profile/Arilo_Neto/publication/266356473_Introducao_a_Teste_de_Software
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
109
Unidade 8 Outros aspectos do teste de software
Objetivo de aprendizagem:
Apresentar outros aspectos do teste de software, novas técnicas, abordagens e ferramentas.
Tópicos de estudo:
• Outras técnicas de teste de software;
• TDD;
• Automatização.
Iniciando os estudos:
Nesta unidade, você conhecerá outras técnicas e demais aspectos, como automatização que envolvem
a atividade de teste de software. Novas técnicas serão apresentadas, inclusive uma técnica que permite
que desenvolvimento e testes sejam conciliados para facilitar a construção de um sistema de software.
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
110
1 OUTRAS TÉCNICAS DE TESTE DE SOFTWARE
Além das técnicas de testes encontradas na literatura como particionamento de classes de equivalência
ou a técnica de análise de mutantes (DELAMARO et al., 2016), existem outras técnicas que são utilizadas
no dia a dia de empresas que produzem software. Neste tópico, você conhecerá em detalhes alguma das
técnicas mais utilizadas.
1.1 TESTE DE PERFORMANCE
O teste de performance se divide em três tipos: teste de carga (testa o software sob as condições normais
de uso. Exemplos: tempo de resposta, número de transações por minuto, usuários simultâneos etc.);
teste de stress (testa o software sob condições extremas de uso, como grande volume de transações
e usuários simultâneos. Considera-se também a situação na qual ocorrem picos excessivos de carga
em curtos períodos de tempo); e teste de estabilidade (testa se o sistema se mantém funcionando de
maneira satisfatória após um período de uso) (DRATOVSKY, 2017).
Te
m
po
d
e
re
sp
os
ta
Carga
0 segundos
Experiência aceitável
Experiência questionável
Experiência inaceitável
Crise
? segundos
? segundos
? segundos
Figura 1 - Gráfico que representa o teste de performance.
Fonte: adaptado de Prime Control (2019).
ED
+
Co
nt
en
t H
ub
©
2
01
9
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
111
A figura acima ilustra como é realizada uma parte dos testes de performance. Para cada volume de
acessos, é medido o tempo de resposta. Os critérios de aceitação são então estabelecidos de acordo
com o tipo do projeto e com a necessidade do demandado pelo cliente.
De modo geral, o teste de performance é organizado da seguinte maneira:
• Em conjunto com o cliente, são mapeadas as principais operações realizadas nos
sistemas e identificadas as que exigem mais recursos.
• Na etapa seguinte, são criados scripts de automação que simularão as operações simul-
tâneas de diversos usuários. Tais scripts serão executados estrategicamente, podendo
focar na performance da aplicação, do banco de dados, do ambiente ou das redes.
• Novamente junto ao cliente, com base preferencialmente nas estatísticas de uso
anteriores, é estimado o volume de acesso esperado nos picos, estabelecendo uma
referência. Os testes simularão uma quantidade igual, inferior e superior à referência,
medindo o tempo de resposta dos sistemas em cada cenário.
Neste artigo, os autores fazem a proposta de uma abordagem para o teste
de performance em aplicações distribuídas desde os estágios iniciais do
desenvolvimento, baseados nos middlewares existentes na composição
desse tipo de software.
Título do artigo: Early performance testing of distributed software
applications
Link: https://discovery.ucl.ac.uk/id/eprint/871/1/3.6_paper.pdf
Aprofunde-se
Dessa forma, os administradores terão uma visão bastante confiável da carga suportada pelos seus
sistemas e infraestrutura. Poderão inclusive utilizar os resultados como base de comparação para a
implantação de atualizações e melhorias (PRIME CONTROL, 2019).
A empresa Testar.me possui um processo específico para o teste de
performance, onde é possível encontrar desde o planejamento do
mesmo até sua execução. Veja mais detalhes em: https://www.testar.me/
teste-de-performance
Reflita
https://discovery.ucl.ac.uk/id/eprint/871/1/3.6_paper.pdfhttps://www.testar.me/teste-de-performance
https://www.testar.me/teste-de-performance
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
112
1.2 TESTE DE CONFIGURAÇÃO
O teste de configuração ou de instalação verifica o comportamento do sistema em diferentes configura-
ções de software e hardware. Testa se o software funciona no hardware a ser instalado e sob diferentes
condições (DRATOVSKY, 2017).
Em relação à questão envolvendo software, pontos que podem ser abordados:
• Sistema operacional: se o software possui como requisito ser executado em sistemas
operacionais diferentes como Windows, Linux ou Unix, é necessário configurá-lo e
executá-lo em todos eles.
• Bibliotecas: se o software utiliza alguma biblioteca de desenvolvimento ou API, é
necessário checar sua compatibilidade em relação a diferentes versões existentes.
• Navegadores: se o sistema testado é uma aplicação web, é necessário checar sua
execução em diferentes navegadores.
Quanto ao hardware, os seguintes pontos podem ser questionados:
• Processador: se o software executa tarefas críticas, verificar se o processador é capaz
de suprir o processamento necessário.
• Memória: verificar se a memória que existe no ambiente onde o software será utili-
zado é suficiente e não provoque lentidão.
• Espaço em disco: verificar se o espaço disponível no ambiente é capaz de permitir a
instalação do software.
• Rede: se o software funcionará em um ambiente seja de uma rede corporativa (intranet)
ou uma rede aberta (internet), verificar se há conectividade para os recursos existentes.
Acesse na plataforma o vídeo: Testes além do código
Assista
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
113
1.3 TESTE DE USABILIDADE
O teste de usabilidade valida atributos que evidenciam o esforço necessário para utilizar o produto. Em
geral são considerados os seguintes aspectos:
• Fatores humanos: verifica a curva de aprendizagem, o quão fácil ou difícil é para um
software ser aprendido.
• Estéticos ou de interface: verifica se a utilização de cores, utilização de fontes com
boa legibilidade, consistência da interface (elementos são parecidos entre si, botões
aparecem sempre na mesma ordem) ajudam ou interferem na utilização do software.
• Documentação: verifica se há documentação disponível (online, impressa) para os usuá-
rios e permite então, que os mesmos possam utilizar o software de maneira autônoma.
Decorrente dos aspectos relacionados, você pode encontrar como exemplo de um problema de usabi-
lidade determinadas circunstâncias quando uma característica do sistema ocasiona perda de tempo,
compromete a qualidade da tarefa ou mesmo inviabiliza sua realização, aborrecendo o usuário da apli-
cação. Geralmente um problema de usabilidade pode decorrer de um problema de ergonomia. Por sua
vez, problemas de ergonomia decorrem de aspectos da interface que tornam a operação do sistema
desagradável, ineficiente, custosa ou impossível para um usuário típico (um usuário que tenha recebido
treinamento básico para a operação do software e possua conhecimento da operação de um compu-
tador) em uma situação típica (tarefa cotidiana para executar o trabalho do usuário) (WITCZAK et al., 2009).
Esse artigo, focado na área de Interação Homem-Computador, aborda oito
fatores humanos para diferentes tipos de teste de usabilidade.
Título do artigo: A proposed index of usability: a method for comparing
the relative usability of different software systems
Link: https://bit.ly/3baTfoK
Aprofunde-se
https://bit.ly/3baTfoK
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
114
2. TDD
O TDD (do inglês Test-Driven Development), desenvolvimento orientado a testes, é uma técnica para
o desenvolvimento de software na qual você mescla a escrita de testes e a codificação do software em
si. Basicamente, você escreve seu código de forma incremental (cada funcionalidade do software, por
exemplo) ao mesmo tempo que escreve outro código que testa a funcionalidade codificada. Você não
inicia a escrita da próxima funcionalidade até que o código escrito passe no teste (no código que testa a
funcionalidade implementada) (SOMMERVILLE, 2011).
Essa técnica de desenvolvimento foi introduzida como parte de métodos ágeis de desenvolvimento como
a Programação Extrema (Extreme Programming). Entretanto, pode ser utilizada com outros processos
de desenvolvimento de software.
Acesse na plataforma o vídeo: O processo do TDD
Assista
Processo básico do TDD
O desenvolvimento orientado a testes é um processo que envolve a alternância da escrita de testes e a escrita do
próprio código-fonte do software. Veja abaixo.
Escreva um
teste (automatizado)
para essa
funcionalidade.
Executa o teste.
Como a funcionalidade
ainda não foi codificada,
o teste na primeira
execução falhará.
Você então implementa
a funcionalidade e executa o
teste novamente para
verificar se as condições do
teste foram satisfeitas. Se
necessário, refatore o código
e repete-se esse ciclo.
Depois que todos
os testes foram criados
para a funcionalidade e
executados com sucesso,
você então estará apto
para seguir com a
implementação de novas
funcionalidades.
Identificar nova
funcionalidade
Implementar
funcionalidade
e refatorar
Escrever
teste
FalhaPassa
Identifique a
funcionalidade que se
deseja implementar, de
preferência que seja um
incremento pequeno
para seu software.
Executar
o teste
3 5421
Infográfico 1 - Como funciona o processo básico do TDD.
Fonte: adaptado de Sommerville (2011).
ED+ Content Hub © 2019
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
115
Um importante argumento sobre o TDD é que ele auxilia desenvolvedores a clarear suas ideias sobre o
que um trecho de código deve fazer exatamente. Para escrever um teste, você deve entender para o que
ele foi requisitado e esse entendimento torna mais fácil a escrita do código. Claro que se não existir a
compreensão e o conhecimento a respeito dos requisitos, você será incapaz de escrever o código deman-
dado e a técnica de TDD não o ajudará. Por exemplo, se o seu software utiliza a operação matemática
de divisão, é necessário checar se a divisão por zero não ocorre. Nesse caso, se a escrita de um teste for
esquecida, então o código que checa dentro do programa a divisão por zero, nunca será implementado.
Segundo Sommerville (2011), além da melhor compreensão do problema a ser resolvido com o software,
pode-se destacar os seguintes benefícios do TDD:
1. Cobertura de código: em princípio, todo segmento de código que você escreve deve
ter pelo menos um teste associado. Portanto, você pode ter certeza de que todo o
código no sistema foi realmente executado. Cada código é testado enquanto está sendo
escrito; assim, os defeitos são descobertos no início do processo de desenvolvimento.
2. Teste de regressão: um conjunto de testes é desenvolvido de forma incremental
enquanto um programa é desenvolvido. Você sempre pode executar testes de
regressão para verificar se as mudanças no programa não introduziram novos bugs.
3. Depuração simplificada: quando um teste falha, a localização do problema deve ser
óbvia. O código recém-escrito precisa ser verificado e modificado. Você não precisa
usar as ferramentas de depuração para localizar o problema. Alguns relatos de uso
de desenvolvimento dirigido a testes sugerem que quase nunca é necessário usar um
sistema automatizado de depuração.
4. Documentação de sistema: os testes em si mesmos agem como uma forma de docu-
mentação que descreve o que o código deve fazer. Ler os testes pode tornar mais fácil
a compreensão do código.
Título: TDD com Python
Acesso em: 21/12/2019.
Disponível em: https://youtu.be/M3zKKCJG71k
Aprofunde-se
Um dos benefícios mais importantes trazido pelo TDD é que ele reduz os custos dos testes de regressão.
O teste de regressão envolve a execução de conjuntos de teste que tenham sidoexecutados com sucesso,
após terem sido feitas alterações em um software. O teste de regressão verifica se essas mudanças não
introduziram novos bugs no software e se o novo código interage com o código existente conforme o
esperado. O teste de regressão é muito caro e geralmente impraticável quando um sistema é testado
manualmente, pois os custos com o tempo e esforço são muito altos. Nessas situações, você precisa
tentar escolher os testes mais relevantes para executar novamente – é fácil perder testes importantes.
Vale ressaltar que testes automatizados reduzem drasticamente os custos com teste de regressão. Os
testes existentes podem ser executados novamente de forma rápida e barata.
https://youtu.be/M3zKKCJG71k
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
116
TDD
Verde
Vermelho
Refatorar
1- Escreva
um teste
que falhe
2- Faça o
código funcionar3- Eliminarredundância
Por fim, outros aspectos podem ser observados em relação ao TDD:
• É útil para o desenvolvimento de software novos;
• Pode ser ineficaz para softwares que possuem multi-thread;
• Apesar da criação de teste, requer um processo para teste de sistemas;
• Tem-se mostrado como uma abordagem de sucesso para pequenas e médias empresas.
Título: Testes no NodeJS aplicando TDD com Jest
Acesso em: 21/12/2019.
Disponível em: https://youtu.be/2G_mWfG0DZE
Aprofunde-se
Figura 2 - O conceito do TDD: escreva um teste que
falhe (vermelho), faça-o funcionar (verde) e o refatore,
de modo que o teste sempre seja satisfatório.
Fonte: adaptado de http://bughuntinginbinary.com/?m=201404
Acesso em: 14 jan. 2020.
ED+ Content Hub © 2019
https://youtu.be/2G_mWfG0DZE
http://bughuntinginbinary.com/?m=201404
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
117
3. AUTOMATIZAÇÃO
Neste tópico, você será apresentado a alguns exemplos de ferramentas e frameworks desenvolvidos
que contribuem para a automatização da atividade de teste. A automatização da atividade de teste pode
ser justificada pelas seguintes vantagens (CODE A TEST, 2016):
• Tarefas repetidas são possivelmente sujeitas a erro. É comum o testador ignorar
ou esquecer parte do que precisa ser testado; isso não ocorre quando automatizamos,
pois os passos descritos são seguidos à risca pelo computador.
• A capacidade de teste do ser humano é limitada. Se hoje um testador testa cinco
funcionalidades por hora, é muito provável que amanhã ele continue testando a
mesma quantidade nesse intervalo de tempo. Já a bateria de testes realizada por um
computador (ou vários, pois você pode montar um cluster e paralelizar a execução)
tem uma curva de crescimento muito mais acentuada.
• A regressão diminui com o uso de ferramentas automatizadas. A regressão ocorre
quando novas funcionalidades de um sistema fazem com que funcionalidades preexis-
tentes deixem de funcionar. Nos testes manuais, principalmente em grandes sistemas,
a regressão ocorre com alguma frequência, pois os testadores nem sempre conseguem
testar todos os cenários possíveis. Já com os testes automatizados, isso diminui consi-
deravelmente já que ele executa sempre todos os testes: tanto os das novas funcio-
nalidades quanto os antigos. Assim, ele é capaz de pegar erros em testes antigos que
podem ter sido gerados pela inclusão de novas funcionalidades.
Nos próximos tópicos, veja alguns exemplos de ferramentas utilizadas no dia a dia de muitas organiza-
ções que possuem o teste de software como prática no desenvolvimento de seus produtos.
Acesse na plataforma o vídeo: O processo do TDD
Assista
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
118
3.1 SELENIUM
O Selenium é um framework para a automatização de navegação web e utiliza as melhores técnicas dispo-
níveis para controlar remotamente navegadores e simular a interação do usuário com esse navegador.
Esse framework permite simular as atividades comuns executadas pelos usuários: digitação de textos
nos campos de um formulário, seleção de valores em listas drop-down e checking boxes, e cliques do
mouse em links de páginas web. Ainda fornece controles para o movimento do mouse e execução arbi-
trária de JavaScript, por exemplo (SELENIUM, 2019).
Quando o Selenium é usado para fazer testes automatizados, basicamente há três ferramentas para
utilizar (CODE A TEST, 2016):
• Selenium IDE: é uma ferramenta que permite a rápida prototipagem de scripts de
testes. É um plugin do Firefox que possibilita gravar o comportamento do usuário –
página que ele acessou, textos escritos em formulários, cliques em links e botões etc.
Depois de gravadas, essas ações podem ser exportadas para um script de teste em
diversas linguagens de programação, como Java, Python, Perl, JavaScript etc.
• Selenium WebDriver: é uma ferramenta que oferece uma API que permite a escrita
de forma mais produtiva e organizada de scripts de testes. Essa é a escolha natural
quando você deseja escrever testes automatizados para aplicações web utilizando o
Selenium.
• Selenium Grid: permite a criação de uma rede de máquinas de testes conectadas que
é chamada de nós. Toda essa rede é controlada por hub. O papel do hub é distribuir os
testes em diferentes nós conectados. Cada nó basicamente pode ser um computador
com uma combinação de Sistema Operacional e navegadores.
O Selenium suporta praticamente todos os navegadores web existentes: Google Chrome, Firefox,
Internet Explorer, Safari, Opera.
Título: Selenium (Testes automatizados)
Acesso em: 21/12/2019.
Disponível em: https://youtu.be/Fw9YW5_MZRs
Aprofunde-se
https://youtu.be/Fw9YW5_MZRs
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
119
3.2 JUNIT
JUnit (THE JUNIT TEAM, 2019) é um framework simples para escrever testes repetíveis automatizados
com suporte na linguagem de programação Java. Com o JUnit é possível criar testes para verificar funcio-
nalidades de classes e seus métodos. Você pode automatizar também a execução de todos os testes de
forma que, quando for criada uma nova versão estável do sistema, o framework execute todos os testes
para garantir a integridade e estabilidade do sistema desenvolvido (DEXTRA, 2013).
Ressalta-se que o JUnit fornece apoio ao teste unitário, com foco na técnica caixa-branca, uma vez que
o código do software a ser testado é conhecido. Além disso, o apoio desse framework é fundamental na
utilização de técnicas com o TDD (Test-Driven Development).
Título: Java: usando JUnit para testes
Acesso em: 21/12/2019.
Disponível em: https://youtu.be/yn7PorbkZ18
Aprofunde-se
3.3 JMETER
Quando é necessário um teste de performance, sempre a primeira ferramenta que vem à cabeça é
o JMeter (THE APACHE, 2019), isso porque é um software que está há um tempo no mercado e tem
vários projetos de sucesso relatados na comunidade. Foi criado em 2007 pela Apache Software e é a
ferramenta mais utilizada nesse segmento. Pelo fato de ser gratuito e ter o código aberto, é possível
desenvolver melhorias para atender o projeto, como plugins para gerar outros relatórios além dos que
a ferramenta já oferece.
A ferramenta tem muitos recursos para atender ao projeto, como componentes:
• Que auxiliam na gestão dos scripts de teste e no controle de cenários aplicados, facili-
tando a manutenção dos mesmos;
• Para configurações de ambientes de testes para execução em servidores e vários terminais;
• Para auxiliar nas avaliações das respostas recebidas para as requisições enviadas aos servidores.
https://youtu.be/yn7PorbkZ18
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
120
Esses são os principais recursos da ferramenta. Outras características existentes no JMeter são:
• Os controles de gravação são importantes no momento da gravação dos scripts,
ajudando a economizar tempo no projeto;
• O extrator de expressão regular auxilia a coleta de dados dos resultados retornados
para o JMeter, o que torna possível realizarvalidações durante o teste;
• Utilização de variáveis no script de teste para deixar o teste o mais próximo do
cenário real do sistema.
O JMeter em geral é utilizado para o teste de performance, porém, também é possível criar e executar
testes funcionais e em banco de dados, embora existam outras ferramentas no mercado com melhores
recursos para executar esses tipos de avaliação (DEVMEDIA, 2016).
Na figura abaixo, você pode ver uma representação de uma possível configuração de ambiente onde o
JMeter client gerencia todo o teste e, ao iniciar a execução, ele distribui todos os usuários nos quatro IPs
que são os JMeter servers, que por sua vez enviam requisições acessando o alvo de teste.
Título: Teste de login com Jmeter
Acesso em: 21/12/2019.
Disponível em: https://youtu.be/a-HvpsfPS54
Aprofunde-se
ED
+
Co
nt
en
t H
ub
©
2
01
9
Figura 3 - Exemplo de uma configuração
de uso do JMeter.
Fonte: adaptado de DevMedia (2016).
https://youtu.be/a-HvpsfPS54
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
121
CONSIDERAÇÕES FINAIS
Nesta unidade você viu que o teste de software abrange, além da verificação do código em si da apli-
cação, a verificação da funcionalidade por meio da execução dos mesmos, checando seu desempenho
frente à demanda de utilização.
Pôde ver também que desenvolver uma aplicação centrando esforços na construção em conjunto de
testes traz benefícios para o ciclo de desenvolvimento.
Por fim, na busca por otimização e melhoria no processo de teste, a automatização da atividade, por
meio de ferramentas que auxiliam essa tarefa, refina os processos já existentes.
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
122
GLOSSÁRIO
Framework: segundo alguns autores, um framework ou arcabouço, no desenvolvimento de software,
é uma abstração que une códigos comuns entre vários projetos de software, provendo uma funcionali-
dade genérica. É uma espécie de caixa de ferramentas que você pode utilizar em seus projetos.
Qualidade e testes de software | Unidade 8 - Outros aspectos do teste de software
123
REFERÊNCIAS
CODE A TEST. Testes de aceitação automatizados com Selenium, 2016. Disponível em: http://www.
codeatest.com/testes-aceitacao-automatizados-selenium/ Acesso em: 08 dez. 2019.
DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mário. Introdução ao Teste de Software.
2. ed. Rio de Janeiro: Campus - Elsevier, 2016.
DEVMEDIA. Teste de performance com JMeter, 2016. Disponível em: https://www.devmedia.com.br/
teste-de-performance-com-jmeter/34621 Acesso em: 13 dez. 2019.
DEXTRA. Tutorial, ou melhor, um passo a passo explicando o funcionamento do JUnit, 2013. Disponível
em: https://dextra.com.br/pt/tutorial-ou-melhor-um-passo-a-passo-explicando-o-funcionamento-do-junit-2/
Acesso em: 11 dez. 2019.
DRATOVSKY, M. Principais tipos de teste de software, 2017. Disponível em: https://www.linkedin.com/
pulse/principais-tipos-de-teste-software-marcus-dratovsky/ Acesso em: 07 dez. 2019.
PRIME CONTROL. Stress Test – Teste de carga. Disponível em: https://www.primecontrol.com.br/stress-
-test-teste-de-carga/ Acesso em: 07 dez. 2019.
SELENIUM. The Selenium project and tools. Disponível em: https://selenium.dev/documentation/en/
introduction/the_selenium_project_and_tools/ Acesso em: 08 dez. 2019.
SOMMERVILLE, I. Engenharia de Software. Tradução Ivan Bosnic e Kalinga G. de O. Gonçalves. 9. ed. São
Paulo: Pearson Prentice Hall, 2011. 529 p.
THE APACHE. Apache JMeter. Disponível em: https://jmeter.apache.org/ Acesso em: 21 dez. 2019.
THE JUNIT TEAM. JUnit 5. Disponível em: https://junit.org/junit5/ Acesso em: 21 dez. 2019.
WITCZAK, A. B.; MAYER, D.; CHIARELLO, M. Guia Técnicas de Teste - Metodologia Celepar. Disponível
em: http://www.documentador.pr.gov.br/documentador/pub.do?action=d&uuid=@gtf-escriba@d9bbb686-a-
5cd-432d-ad3f-ba77d6c427f2 Acesso em: 08 dez. 2019.
http://www.codeatest.com/testes-aceitacao-automatizados-selenium/
http://www.codeatest.com/testes-aceitacao-automatizados-selenium/
https://www.devmedia.com.br/teste-de-performance-com-jmeter/34621
https://www.devmedia.com.br/teste-de-performance-com-jmeter/34621
https://dextra.com.br/pt/tutorial-ou-melhor-um-passo-a-passo-explicando-o-funcionamento-do-junit-2/
https://www.linkedin.com/pulse/principais-tipos-de-teste-software-marcus-dratovsky/
https://www.linkedin.com/pulse/principais-tipos-de-teste-software-marcus-dratovsky/
https://www.primecontrol.com.br/stress-test-teste-de-carga/
https://www.primecontrol.com.br/stress-test-teste-de-carga/
https://selenium.dev/documentation/en/introduction/the_selenium_project_and_tools/
https://selenium.dev/documentation/en/introduction/the_selenium_project_and_tools/
https://jmeter.apache.org/
https://junit.org/junit5/
http://www.documentador.pr.gov.br/documentador/pub.do?action=d&uuid=@gtf-escriba@d9bbb686-a5cd-432d-ad3f-ba77d6c427f2
http://www.documentador.pr.gov.br/documentador/pub.do?action=d&uuid=@gtf-escriba@d9bbb686-a5cd-432d-ad3f-ba77d6c427f2