Prévia do material em texto
Disciplina
Testes e Manutenção de Software
Unidade 1
Conceitos, classi�cação, gestão e processos de testes
Aula 1
Introdução ao teste de software
Introdução
Olá, estudante!
Seja muito bem-vindo à disciplina, onde exploraremos os Fundamentos de Teste de Software,
essenciais para garantir a qualidade e con�abilidade de sistemas informáticos. Durante este
curso, entenderemos os princípios fundamentais dessa prática, que são cruciais para os
pro�ssionais de desenvolvimento de software. Abordaremos os Objetivos de Teste de Software,
estabelecendo metas especí�cas para assegurar a funcionalidade, segurança e performance do
software. Esses objetivos visam a entrega de um produto que atenda plenamente às
expectativas e requisitos do usuário. Além disso, vamos explorar os Benefícios de Teste de
Software, indo além da mera detecção de defeitos, incluindo a redução de custos, a melhoria da
Disciplina
Testes e Manutenção de Software
reputação da empresa e a garantia da satisfação do cliente. Estamos ansiosos para embarcar
nessa jornada de aprendizado com você!
Essenciais do teste de software: fundamentos, objetivos e benefícios
O campo do teste de software é intricado e crucial para assegurar a qualidade, o desempenho e a
con�abilidade dos sistemas informáticos. Os fundamentos de teste de software estabelecem a
base teórica e prática desta disciplina, sendo essenciais para pro�ssionais de desenvolvimento.
O entendimento profundo desses fundamentos permite a identi�cação e�ciente e a correção de
falhas, promovendo a criação de software robusto desde sua concepção.
Os fundamentos abrangem conceitos como a integridade da entrada, da saída e do
processamento, bem como a veri�cação de requisitos, rastreabilidade e a compreensão do
contexto de aplicação. Adicionalmente, a análise estática e dinâmica de código, a validação de
dados e a de�nição de casos de teste são elementos cruciais nesse estágio. Dominar esses
fundamentos não apenas aprimora a habilidade de identi�car problemas, mas também contribui
para a e�ciência global do processo de desenvolvimento de software (Delamaro, 2016).
Ao estabelecer os objetivos de teste de software, delineia-se o propósito e a direção do processo
de teste. Estes objetivos são multifacetados, visando não apenas a detecção de defeitos, mas
também a asseguração da funcionalidade, segurança e desempenho do software. Os testes de
Disciplina
Testes e Manutenção de Software
unidade, integração, sistema e aceitação são estratégias-chave para atingir esses objetivos.
Garantir que o software atenda aos requisitos especi�cados e satisfaça as expectativas do
usuário são metas centrais, enquanto a identi�cação precoce de defeitos contribui para a
economia de recursos e tempo.
Os objetivos incluem a veri�cação da conformidade com padrões e regulamentações, a análise
de vulnerabilidades de segurança e a avaliação da escalabilidade e manutenibilidade do sistema.
Estabelecer objetivos claros desde o início do ciclo de desenvolvimento permite uma abordagem
sistemática e abrangente ao teste de software, aumentando a probabilidade de sucesso na
entrega de um produto de alta qualidade (Delamaro, 2016).
Os benefícios de teste de software vão além da mera detecção de defeitos. Eles permeiam todo
o ciclo de vida do desenvolvimento de software, impactando positivamente a organização e seus
clientes. A redução de custos é um benefício tangível, uma vez que a identi�cação precoce de
falhas diminui os gastos associados a correções tardias. A con�ança na qualidade do software
resulta em maior satisfação do cliente, fortalecendo a reputação da empresa.
A melhoria contínua é um benefício intrínseco, pois o feedback obtido durante o processo de
teste alimenta diretamente o aprimoramento do produto. Além disso, a conformidade com
regulamentações e padrões é facilitada, reduzindo riscos legais e melhorando a posição
competitiva da organização no mercado. A segurança cibernética também é aprimorada, uma
vez que o teste de software é crucial para identi�car e corrigir vulnerabilidades. A estabilidade do
sistema, sua capacidade de resposta e e�ciência operacional são otimizadas, proporcionando
uma experiência do usuário superior (Delamaro, 2016).
Em resumo, a compreensão profunda dos fundamentos de teste de software, a de�nição clara
dos objetivos de teste de software e a realização e�ciente dos testes resultam em uma série de
benefícios de teste de software. Esses elementos interconectados formam a espinha dorsal de
um processo de desenvolvimento de software bem-sucedido, contribuindo não apenas para a
detecção e correção de falhas, mas também para a entrega de produtos con�áveis, e�cientes e
alinhados às expectativas do usuário e do mercado.
Desvendando o teste de software: interpretação, objetivos e benefícios
Disciplina
Testes e Manutenção de Software
O teste de software é uma disciplina fundamental no desenvolvimento de sistemas informáticos,
e a compreensão aprofundada de seus componentes essenciais é crucial para garantir a
excelência dos produtos. Os fundamentos de teste de software representam o alicerce teórico e
prático dessa prática, envolvendo conceitos que são fundamentais para pro�ssionais da área.
A interpretação correta dos fundamentos abrange a compreensão da integridade de entrada e
saída, processamento de dados, veri�cação de requisitos e a contextualização da aplicação. Por
exemplo, ao considerar um sistema bancário, a interpretação dos fundamentos incluiria a
validação correta de depósitos, a veri�cação precisa de transações e a garantia de que as
operações �nanceiras estejam em conformidade com as regras estabelecidas (Gonçalvez et al.,
2019).
Os fundamentos também abrangem a análise estática e dinâmica de código, na qual a
interpretação correta envolve a identi�cação de possíveis erros e a avaliação de como o código
se comporta durante a execução. Ao examinar um sistema de comércio eletrônico, a
interpretação dos fundamentos incluiria a análise do código para garantir que a funcionalidade
de carrinho de compras esteja correta.
Os objetivos de teste de software constituem o próximo nível de interpretação, delineando metas
especí�cas para o processo de teste. A correta interpretação desses objetivos é essencial para
orientar efetivamente o teste em direção aos resultados desejados. Por exemplo, em um
aplicativo de navegação, o objetivo pode ser assegurar que a funcionalidade de direções forneça
rotas precisas e e�cientes.
Os objetivos não se limitam à detecção de defeitos; buscam garantir a funcionalidade, segurança
e desempenho do software. A interpretação adequada desses objetivos implica a de�nição clara
de metas, como a validação de dados em um sistema de gerenciamento de saúde, em que a
Disciplina
Testes e Manutenção de Software
interpretação correta dos objetivos incluiria a veri�cação de dados de pacientes quanto à
precisão e segurança (Gonçalvez et al., 2019).
Ao estabelecer objetivos, a interpretação inclui a de�nição de estratégias de teste, como testes
de unidade, integração, sistema e aceitação. A interpretação e�caz garante que os testes
estejam alinhados com os requisitos do usuário e que a identi�cação precoce de defeitos
contribua para a economia de recursos.
Os benefícios de teste de software representam o ápice da interpretação correta desses
processos. Vão além da mera detecção de defeitos, proporcionando impactos positivos em toda
a organização e seus clientes. A interpretação adequada desses benefícios implica compreender
como eles permeiam o ciclo de vida do desenvolvimento de software (Gonçalvez et al., 2019).
Por exemplo, a interpretação correta dos benefícios incluiria compreender como a redução de
custos está relacionada à identi�cação precoce de falhas, diminuindo os gastos com correções
tardias. A interpretação também abrange a melhoria contínua, pois o feedback do teste alimenta
diretamente aprimoramentos do produto.
A interpretação correta dos benefícios envolve reconhecer como a conformidade com
regulamentações efuncionais, desenvolvedores e
testadores podem aprimorar a qualidade do software, identi�cando e corrigindo falhas de forma
e�ciente. Adicionalmente, os benefícios dos testes funcionais transcendem a mera detecção de
erros, abrangendo melhorias na experiência do usuário, conformidade com requisitos e
otimização do desempenho. Este panorama proporciona uma visão abrangente dos elementos
essenciais que orientam os testes funcionais, sublinhando sua relevância no ciclo de vida do
desenvolvimento de software.
Bons estudos!!
Tópicos essenciais em testes funcionais: fundamentos, critérios e benefícios
Disciplina
Testes e Manutenção de Software
Os critérios de testes funcionais orientam a escolha e execução dos casos de teste, visando
assegurar uma cobertura ampla do software. Diferentes critérios, tais como equivalência, limite e
combinatório, são empregados para maximizar a e�cácia dos testes. O critério de equivalência,
por exemplo, categoriza os dados em classes equivalentes, otimizando a cobertura. O critério de
limite foca nos valores nos extremos dos intervalos, enquanto o combinatório explora todas as
combinações possíveis de entradas. Ao aplicar esses critérios, os testadores conseguem
identi�car falhas em diversos aspectos do software, desde a lógica de negócios até o
processamento de dados, proporcionando uma abordagem metódica e completa.
Os benefícios dos testes funcionais extrapolam a simples detecção de falhas, contribuindo
signi�cativamente para a qualidade e para o êxito de um projeto de software. Em primeiro lugar,
esses testes garantem que o software esteja em conformidade com os requisitos estabelecidos.
Ao validar cada funcionalidade em relação às expectativas do usuário, os testes funcionais
minimizam a probabilidade de lacunas entre as especi�cações e a implementação real.
Adicionalmente, aprimorar a experiência do usuário representa um benefício inestimável.
Identi�car e corrigir problemas de usabilidade antes do lançamento é crucial para garantir a
satisfação do cliente.
Outro benefício crucial é a economia de custos a longo prazo. Identi�car e corrigir falhas durante
as fases iniciais do desenvolvimento é mais e�ciente e econômico do que abordar problemas
após o lançamento. Isso previne retrabalho, preserva a reputação e reduz os custos associados
ao suporte ao cliente. Os testes funcionais contribuem para a con�abilidade do software,
garantindo que o sistema permaneça estável e livre de erros, mesmo sob condições adversas
(Delamaro, 2016).
Tabela 1 | Benefícios dos testes funcionais
Disciplina
Testes e Manutenção de Software
Fonte: elaborada pelo autor.
Benefícios dos Testes Funcionais
Descrição
Conformidade com Requisitos
Garante que o software esteja em
conformidade com os requisitos
estabelecidos.
Aprimoramento da Experiência do Usuário
Identi�ca e corrige problemas de usabilidade
antes do lançamento, contribuindo para a
satisfação do cliente.
Economia de Custos a Longo Prazo
Identi�ca e corrige falhas nas fases iniciais,
prevenindo retrabalho e reduzindo custos pós-
lançamento.
Con�abilidade do Software
Garante que o sistema permaneça estável e
livre de erros mesmo sob condições
adversas.
Conformidade com Normas e Regulamentos
Em setores regulamentados, assegura
conformidade com requisitos legais e padrões
especí�cos do setor, garantindo segurança e
integridade das informações.
Disciplina
Testes e Manutenção de Software
A conformidade com normas e regulamentos também se destaca como um benefício essencial.
Em setores regulamentados, como saúde e �nanças, os testes funcionais ajudam a garantir que
o software esteja em conformidade com requisitos legais e padrões especí�cos do setor. Isso é
crucial para a segurança e a integridade das informações, além de evitar implicações legais.
Portanto, os testes funcionais são indispensáveis para o desenvolvimento de software,
fornecendo uma base sólida orientada por critérios abrangentes e oferecendo benefícios que
ultrapassam a simples detecção de falhas. Integrando esses conceitos de maneira e�caz, as
equipes de desenvolvimento podem garantir a entrega de produtos de alta qualidade que
atendam às expectativas dos usuários e estejam em conformidade com os padrões da indústria.
Desvendando testes funcionais: fundamentos, critérios e vantagens
Os testes funcionais representam um elemento fundamental no processo de desenvolvimento de
software, assegurando o correto desempenho das funcionalidades de um sistema. Vamos
explorar de maneira abrangente os elementos fundamentais, os critérios orientadores e os
ganhos proporcionados por esses testes, ressaltando sua relevância e aplicação prática
(Gonçalvez et al., 2019).
Para garantir que um software atenda às necessidades e expectativas dos usuários, é essencial
investir tanto em testes funcionais quanto em testes não funcionais. Enquanto os testes
funcionais se concentram na validação direta das funcionalidades do software, garantindo que
ele opere conforme as expectativas do usuário e identi�cando e corrigindo erros e bugs antes do
lançamento, os testes não funcionais vão além. Estes últimos avaliam aspectos mais
abrangentes do software, incluindo seu desempenho, segurança, usabilidade e capacidade de
Disciplina
Testes e Manutenção de Software
escalar. Ao focar na performance, os testes não funcionais ajudam a detectar e corrigir
problemas como lentidão e consumo excessivo de recursos, enquanto também são cruciais para
identi�car vulnerabilidades que possam comprometer a segurança do sistema, minimizando
riscos de invasões ou vazamentos de dados. Assim, ao combinar ambos os tipos de testes, é
possível assegurar não apenas a qualidade, mas também a con�abilidade e a segurança de um
produto digital.
A base dos testes funcionais reside na compreensão aprofundada das operações do software.
Consideremos um exemplo prático no desenvolvimento de um aplicativo de comércio eletrônico.
Um dos princípios fundamentais seria garantir que a funcionalidade de adicionar itens ao
carrinho de compras atenda aos requisitos estipulados. Estes testes abrangeriam não somente a
adição bem-sucedida, mas cenários como a inclusão de quantidades especí�cas, a remoção de
itens e a veri�cação da aplicação correta de descontos.
Os fundamentos incluem a validação de entradas do usuário. Num contexto de comércio
eletrônico, seria crucial testar como o sistema lida com diferentes formas de dados de entrada,
tais como códigos de cupons, endereços de entrega e métodos de pagamento.
Os critérios de testes funcionais constituem as orientações que moldam a criação de casos de
teste. Consideremos um exemplo utilizando o critério de equivalência. Se estivermos testando a
funcionalidade de pesquisa em um site de comércio eletrônico, podemos dividir as entradas em
classes equivalentes, como palavras-chave curtas, longas e incorretas. Isso assegura uma
cobertura e�ciente, testando representantes de cada classe (Gonçalvez et al., 2019).
O critério de limite também desempenha um papel relevante. Num contexto de aplicativo
�nanceiro, podemos aplicar esse critério para testar transações dentro e fora dos limites de
saldo, garantindo que o sistema responda de maneira adequada em ambas as situações.
O critério combinatório se mostra valioso quando há múltiplos fatores a serem considerados.
Suponhamos que estejamos testando um sistema de reservas de voos. Utilizando o critério
combinatório, podemos explorar diversas combinações de destinos, datas e número de
passageiros para garantir uma cobertura abrangente (Gonçalvez et al., 2019). Como exemplo na
Figura 1 a seguir:
Figura 1 | Base dos testes funcionais. Fonte: elaborada pelo autor.
Disciplina
Testes e Manutenção de Software
Os benefícios dos testes funcionais se manifestam em diversas áreas. Ao garantir a
conformidade do software com os requisitos, evitamos surpresas desagradáveis no momentodo
lançamento. Em um sistema de gerenciamento de projetos, por exemplo, testar a funcionalidade
de atribuição de tarefas garante que as responsabilidades sejam distribuídas corretamente,
alinhando-se aos objetivos do projeto.
A melhoria da experiência do usuário representa um benefício crucial. Num aplicativo de saúde,
testar a interface do usuário para garantir a clareza na apresentação de informações pode
impactar positivamente a compreensão do paciente sobre seus dados médicos.
A economia de custos torna-se palpável quando os testes funcionais são aplicados desde as
fases iniciais do desenvolvimento. Identi�car e corrigir problemas antes do lançamento é mais
e�ciente do que lidar com reclamações de usuários após o lançamento. Um exemplo prático
seria um sistema de pagamento on-line, em que testar a integração com diferentes provedores
de pagamento reduziria signi�cativamente os riscos de falhas nas transações (Gonçalvez et al.,
2019).
Em conclusão, os testes funcionais, quando aplicados com uma compreensão sólida dos
fundamentos, critérios bem de�nidos e consideração dos benefícios, são essenciais para
garantir a qualidade e o sucesso de um software. Ao utilizar exemplos práticos, podemos
visualizar a aplicação desses conceitos em cenários do mundo real, destacando sua importância
no desenvolvimento de sistemas con�áveis e e�cazes.
Explorando testes funcionais: fundamentos, critérios e vantagens
Disciplina
Testes e Manutenção de Software
Os testes funcionais assumem um papel vital na asseguração da qualidade do software,
garantindo a conformidade de cada função com suas especi�cações. Vamos explorar a
Disciplina
Testes e Manutenção de Software
implementação desses testes, utilizando exemplos concretos que evidenciam os princípios
fundamentais, critérios e benefícios dessa prática essencial no desenvolvimento de software.
Figura 2 | Fluxograma prático de teste funcional
I Teste de caixa branca (com conhecimento interno do código)
Exemplo: Analisar o código para identificar possíveis falhas na lógica de adição ao
carrinho.
Preparação do ambiente de teste
Exemplo: Configuração de uma versão de teste do site e-commerce, carregamento de
dados de produtos fictícios.
Execução dos testes
Testes unitários
Exemplo: Verificar se o botão de adicionar ao carrinho está funcional.
Testes de integração
Exemplo: Testar a interação entre o carrinho e o processo de pagamento.
Testes de sistema
Exemplo: Simular uma compra completa e verificar todo o fluxo do carrinho ao
checkout.
Registro e monitoramento de resultados
Exemplo: Anotar falhas encontradas, comportamentos inesperados e tempos de
resposta.
Identificação de bugs, erros e falhas
Exemplo: Notificar a equipe de desenvolvimento sobre problemas no processo de
adição ao carrinho.
Fim
nício
Definição do objetivo do teste
Exemplo: Garantir que o carrinho de compras de um site e-commerce adicione
produtos corretamente.
Seleção das funcionalidades a serem testadas
Exemplo: Carrinho de compras, processo de checkout.
Disciplina
Testes e Manutenção de Software
Desenvolvimento de cenários e casos de teste
Teste de caixa preta (sem conhecimento interno do código)
Exemplo: Simular a adição de um produto ao carrinho e verificar se ele aparece
corretamente.
Fonte: elaborada pelo autor.
Neste �uxograma, o processo de teste funcional é detalhado desde a de�nição do objetivo até a
identi�cação e correção de possíveis problemas. O exemplo do carrinho de compras de um site
e-commerce é utilizado para ilustrar cada etapa do processo, demonstrando como o teste
funcional pode ser aplicado em cenários práticos para garantir a qualidade e a funcionalidade de
um software ou sistema.
A base dos testes funcionais está na compreensão profunda das operações do software.
Consideremos um sistema de gestão de estoque em uma empresa de varejo. Um dos
fundamentos cruciais seria veri�car se a funcionalidade de atualização de estoque ocorre de
maneira precisa e e�ciente. Isso envolveria testar não apenas a inclusão de novos produtos, mas
também a remoção de itens obsoletos e a atualização de quantidades após transações de
vendas (Paula Filho, 2019).
Outro exemplo prático dos fundamentos inclui a validação de entradas do usuário. Em um
aplicativo de reservas de hotéis, seria essencial testar como o sistema lida com diversos
formatos de datas, opções de quartos e requisitos especí�cos do usuário, visando garantir uma
experiência isenta de erros e intuitiva (Paula Filho, 2019).
Tabela 2 | Critérios de testes funcionais
Critérios de Testes Funcionais
Descrição
Critério de Equivalência
Exemplo: Sistema bancário on-line - Casos de
teste para transferências dentro do limite,
excedendo o saldo e com valores negativos.
Critério de Limite
Exemplo: Sistema de registro acadêmico -
Testes de aceitação de notas, incluindo
limites mínimos e máximos.
Disciplina
Testes e Manutenção de Software
Fonte: elaborada pelo autor.
Os critérios de testes funcionais representam diretrizes vitais para a criação de casos de teste.
Considerando o critério de equivalência em um contexto de sistema bancário on-line, por
exemplo, a aplicação envolveria a criação de casos de teste para diversas faixas de valores,
como transferências dentro do limite de saldo, transferências excedendo o saldo e as
transferências com valores negativos (Paula Filho, 2019).
O critério de limite é igualmente importante. Em um sistema de registro acadêmico, por exemplo,
podemos testar a aceitação de notas, abrangendo limites superiores e inferiores, como notas
mínimas e máximas, para garantir que o sistema responda de maneira precisa em todas as
circunstâncias possíveis.
O critério combinatório é valioso em situações complexas. Para um sistema de comércio
eletrônico com várias opções de �ltragem, como categorias de produtos, preços e avaliações, a
aplicação do critério combinatório ajudaria a criar casos de teste abrangentes, contemplando
todas as combinações possíveis e garantindo uma avaliação completa do sistema.
Os benefícios dos testes funcionais tornam-se evidentes em cenários práticos. Ao garantir a
conformidade do software com os requisitos, evitamos falhas que podem impactar
negativamente o usuário �nal. Exempli�cando, em um sistema de reservas de passagens aéreas,
testar a funcionalidade de seleção de assentos assegura que os passageiros possam escolher
lugares de acordo com suas preferências, contribuindo para uma experiência mais positiva.
A melhoria da experiência do usuário é um benefício concreto. Em um aplicativo de saúde, testar
a usabilidade da interface do usuário para agendar consultas on-line garante que os usuários
possam navegar de forma intuitiva, agilizando o processo e elevando a satisfação do cliente
(Paula Filho 2019).
A economia de custos é um benefício expressivo. Em um sistema de processamento de pedidos,
testar a integração com sistemas de pagamento evita erros de transação e possíveis prejuízos
�nanceiros, destacando como os testes funcionais podem prevenir custos elevados relacionados
a falhas críticas após o lançamento.
Em resumo, a aplicação pragmática dos testes funcionais, com exemplos concretos que
abordam fundamentos, critérios e benefícios, destaca a importância dessa prática no
desenvolvimento de software resiliente e con�ável. Ao integrar esses elementos de maneira
e�ciente, as equipes de desenvolvimento podem garantir produtos de alta qualidade que
atendam às expectativas dos usuários e superem desa�os complexos do mundo real.
Videoaula: Testes funcionais
Critério Combinatório
Exemplo: Sistema de comércio eletrônico -
Casos de teste abrangentes para opções de
�ltragem como categorias, preços e
avaliações.
Disciplina
Testes e Manutenção de Software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou peloaplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Este vídeo explora os fundamentos, critérios e benefícios dos testes funcionais. Descubra a
importância de compreender a base dos testes, a aplicação de critérios estratégicos na
elaboração de casos de teste e os benefícios tangíveis, desde a melhoria da experiência do
usuário até a economia de custos. Aprofunde-se nos elementos essenciais para garantir a
e�cácia e a con�abilidade de software.
Saiba mais
Estudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
Técnicas para Construção de Testes Funcionais Automáticos.
Automação de testes funcionais: testes funcionais automatizados de software
https://d1wqtxts1xzle7.cloudfront.net/60239091/Tecnicas_para_Construcao_de_Testes_Funcionais_Auto20190808-127293-higwqj-libre.pdf?1565290889=&response-content-disposition=inline%3B+filename%3DTecnicas_para_Construcao_de_Testes_Funci.pdf&Expires=1702926760&Signature=eoTlRdnyrlPXGJbztYLPeXL3v9CY-OWlGpBAznjkv1tL6KLJP12oNAt3CVvCvIvM0I-N6ReNnKL1ybCyr6XpP4Ru-kgDQWTSofjImwcidzivRD3L0TIfIcT9Xu0L2~R44NW9ZwFbypCGx6iJVwo8RifjRDAEm25cvBjBb0FxS3khpndDbVsL9sG6OKV7rZdVqv0dT7QwvM6g6oPUWZSlTXOZIOFqF1l-VGkSpaGOXpta2b2Og9mwKuvV1yRA59ZrJZioG0lVeYy-hce1FCIEN9SiNlWlI-Dq3rOJWvH7KGkALpJeKjI6T-WoNc90P~RCA9uklDrt4~QHxJcY~YjQuw__&Key-Pair-Id=APKAJLOHF5GGSLRBV4ZA
https://exatastecnologias.pgsscogna.com.br/rcext/article/view/2311
Disciplina
Testes e Manutenção de Software
AutoTest–Um framework reutilizável para a automação de teste funcional de software.
Referências
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro: LTC, 2019.
Aula 2
Tipos de testes funcionais
Introdução
https://sol.sbc.org.br/index.php/sbqs/article/view/16195
Disciplina
Testes e Manutenção de Software
Olá, estudante!
Assegurar a qualidade em projetos de software é fundamental para garantir a entrega de
produtos sólidos e alinhados às demandas dos usuários. No âmbito dos testes, destacam-se o
teste de caso de uso e o teste de requisitos, que têm como objetivo veri�car a conformidade
entre a implementação e as especi�cações. Já o teste de usabilidade concentra-se na avaliação
da experiência do usuário, analisando a interface e a facilidade de interação. Por último, o teste
de aceitação do usuário desempenha um papel crucial ao con�rmar se o sistema atende
plenamente às expectativas �nais. A integração e�caz dessas práticas promove a entrega de
software funcional, intuitivo e completamente aceito pelos usuários.
Bons estudos!
Explorando testes de software: casos de uso, requisitos, usabilidade e
aceitação do usuário
Disciplina
Testes e Manutenção de Software
No contexto do desenvolvimento de software, a aplicação de testes desempenha um papel
crucial na garantia da qualidade e efetividade dos produtos. Três aspectos fundamentais nesse
cenário incluem o Teste de Caso de Uso e Teste de Requisitos, o Teste de Usabilidade e o Teste
de Aceitação do Usuário.
O Teste de Caso de Uso tem como objetivo veri�car se o software está em conformidade com as
especi�cações funcionais, examinando seu comportamento em cenários especí�cos. Ao
executar casos de uso, busca-se validar a implementação correta das funcionalidades propostas.
Já o Teste de Requisitos visa garantir que o software atenda a todos os requisitos estabelecidos,
incluindo aspectos não funcionais como desempenho e segurança (Delamaro, 2016).
Ao realizar o Teste de Caso de Uso, os testadores simulam interações do usuário, veri�cando se
o software responde conforme esperado. Concomitantemente, o Teste de Requisitos assegura a
conformidade de cada componente do software com as especi�cações, reduzindo riscos de
falhas originadas por interpretações equivocadas.
O Teste de Usabilidade foca na experiência do usuário, avaliando a facilidade de interação com a
interface do software. Este tipo de teste aborda aspectos como navegação intuitiva, clareza de
instruções e e�ciência na realização de tarefas. Os testadores observam a resposta do usuário
diante de diferentes cenários, identi�cando possíveis pontos de atrito e propondo melhorias.
A usabilidade não se limita à estética da interface, incluindo também a e�cácia do �uxo de
trabalho. Ao compreender como os usuários interagem com o sistema, é possível otimizar a
Disciplina
Testes e Manutenção de Software
interface para proporcionar uma experiência mais �uida e agradável. O Teste de Usabilidade,
portanto, não só valida a interface, mas também contribui para a satisfação global do usuário.
O Teste de Aceitação do Usuário representa a etapa �nal, con�rmando se o software atende às
expectativas do cliente. Nessa fase, os usuários �nais testam o sistema em um ambiente que
simula a produção, identi�cando possíveis problemas que poderiam ter passado despercebidos
nas etapas anteriores. Essa abordagem é crucial para validar não apenas os requisitos
funcionais, mas também a adequação do software ao contexto operacional real (Delamaro,
2016).
O processo de Teste de Aceitação do Usuário é colaborativo, envolvendo uma comunicação
estreita entre usuários �nais, desenvolvedores e testadores. Feedbacks valiosos são coletados,
ajustes �nais são realizados e, por �m, a aceitação do sistema é con�rmada. Essa etapa é
essencial para garantir não apenas a conformidade técnica, mas a satisfação do cliente
(Delamaro, 2016).
Tabela 1 | Aspectos de testes de software
Aspectos de Testes
de Software
Teste de Caso de Uso
e Teste de Requisitos
Teste de Usabilidade
Teste de Aceitação
do Usuário
Objetivo Principal
Veri�car
conformidade
funcional
Avaliar experiência do
usuário
Con�rmar
atendimento a
expectativas
Foco em Requisitos
Funcionais e não
funcionais
Principalmente
funcionais
Geralmente
funcionais e
expectativas do
cliente
Colaboração
Desenvolvedores e
testadores
Testadores e equipe
de design
Usuários �nais,
desenvolvedores e
testadores
Disciplina
Testes e Manutenção de Software
Fonte: elaborada pelo autor.
Em resumo, a implementação efetiva desses testes – Caso de Uso, Requisitos, Usabilidade e
Aceitação do Usuário – é vital para assegurar a qualidade do software, reduzindo riscos e
garantindo que o produto atenda às expectativas dos usuários. A integração desses processos
ao longo do ciclo de vida do desenvolvimento de software contribui para a criação de produtos
sólidos capazes de proporcionar uma experiência positiva aos usuários �nais.
Desvendando testes de software: caso de uso, requisitos, usabilidade e
aceitação do usuário
Resultados
Esperados
Con�rmação da
implementação
correta
Identi�cação de
pontos de atrito
Feedbacks sobre
adequação às
expectativas
Benefícios
Redução de riscos e
falhas
Melhoria na
experiência do
usuário
Garantia da
satisfação do cliente
Disciplina
Testes e Manutenção de Software
A execução e�ciente de testes de software desempenha um papel vital na garantia da qualidade
e na entrega de produtos con�áveis. Vamos analisar e esclarecer três aspectos cruciais nesse
cenário: Teste de Caso de Uso e Teste de Requisitos, Teste de Usabilidade e Teste de Aceitação
do Usuário, utilizando exemplos concretos para ilustrar sua aplicação.
O Teste de Caso de Uso tem como propósito validar se as funcionalidades do software estão
alinhadas com as especi�cações e se comportam conforme o esperado em situações
especí�cas. Por exemplo, em um sistema de comércio eletrônico, um caso de uso seria a
execução de uma compra on-line. Os testes consistiriam em simularcada etapa do processo,
desde a seleção de produtos até o pagamento, assegurando que o sistema execute cada passo
corretamente (Gonçalvez et al., 2019).
Quanto ao Teste de Requisitos, a abordagem é mais ampla, abarcando não apenas os aspectos
funcionais, mas também requisitos não funcionais. Em um software de processamento de
transações �nanceiras, um requisito funcional seria a capacidade de transferência de fundos,
enquanto um requisito não funcional seria o tempo máximo permitido para a conclusão da
transação. Os testes são elaborados para garantir a satisfação de ambos os requisitos
(Gonçalvez et al., 2019).
O Teste de Usabilidade concentra-se na experiência do usuário, avaliando a facilidade de
interação com a interface do software. Considere um aplicativo de redes sociais. Durante o teste
de usabilidade, os usuários são instruídos a realizar tarefas especí�cas, como publicar um novo
Disciplina
Testes e Manutenção de Software
conteúdo ou encontrar amigos. A e�cácia dessas interações é avaliada observando o tempo
necessário, os cliques realizados e a satisfação do usuário.
Tomando como exemplo um site de notícias, o teste de usabilidade pode envolver a avaliação da
clareza das manchetes, a facilidade de navegação entre diferentes seções e a intuitividade dos
controles de compartilhamento de notícias. Esses testes são cruciais para identi�car áreas de
aprimoramento na interface, garantindo uma experiência mais agradável para o usuário �nal.
O Teste de Aceitação do Usuário é conduzido pelos próprios usuários �nais, em um ambiente
simulado de produção. Continuando com o exemplo do aplicativo de redes sociais, durante o
teste de aceitação, os usuários reais explorariam livremente o aplicativo, fornecendo feedback
sobre qualquer aspecto que considerassem insatisfatório. Isso pode incluir a detecção de bugs,
sugestões de melhorias na interface ou até mesmo uma avaliação geral da adequação do
aplicativo às suas necessidades (Gonçalvez et al., 2019).
Figura 1 | Fluxo simpli�cado para testes de software. Fonte: elaborada pelo autor.
Em um sistema de gerenciamento de projetos, o teste de aceitação pode abranger a criação de
projetos �ctícios, a atribuição de tarefas e a avaliação da facilidade de acompanhamento do
progresso. Os usuários �nais desempenham um papel crucial em garantir que o software atenda
não apenas aos requisitos estabelecidos, mas também às suas expectativas práticas e
necessidades operacionais.
Resumidamente, a interpretação prática desses testes de software é fundamental para garantir
que um produto satisfaça tanto aos requisitos quanto às expectativas dos usuários. Os exemplos
fornecidos ilustram como cada tipo de teste é aplicado em contextos especí�cos,
Disciplina
Testes e Manutenção de Software
proporcionando insights valiosos para os desenvolvedores e contribuindo para a entrega de
software de alta qualidade e satisfação do usuário.
Aplicação efetiva: testes de caso de uso, requisitos, usabilidade e aceitação
do usuário
Os testes de software desempenham um papel fundamental na garantia da qualidade e na
entrega de produtos con�áveis. Vamos explorar a aplicação prática de três tipos essenciais de
testes: Teste de Caso de Uso e Teste de Requisitos, Teste de Usabilidade e Teste de Aceitação do
Usuário, por meio de exemplos reais que ilustram sua relevância.
No início do desenvolvimento, a identi�cação de funcionalidades e requisitos é crucial. Por
exemplo, considere a criação de um aplicativo de gestão �nanceira. O Teste de Caso de Uso pode
envolver a simulação de uma transação completa, desde a inserção de despesas até a geração
de relatórios. Para os requisitos, como segurança e desempenho, o teste pode garantir que as
transações sejam processadas de maneira segura e e�ciente (Paula Filho, 2019).
Outro exemplo seria o desenvolvimento de um sistema de reservas on-line para hotéis. O Teste
de Caso de Uso abrangeria desde a busca por disponibilidade até a con�rmação da reserva.
Simultaneamente, os Testes de Requisitos garantiriam que o sistema cumpra os requisitos de
desempenho, como tempos de resposta rápidos durante a reserva.
Ao criar um aplicativo de e-commerce, o foco no Teste de Usabilidade é crucial. Simulemos a
compra de um produto. Os testes podem avaliar a facilidade de encontrar o item desejado, a
clareza do processo de checkout e a e�ciência da con�rmação da compra. Esses testes práticos
Disciplina
Testes e Manutenção de Software
proporcionam insights valiosos sobre a experiência do usuário, permitindo ajustes na interface
para tornar o processo mais intuitivo e agradável (Paula Filho, 2019).
Considerando um software de edição de imagens, o Teste de Usabilidade poderia envolver
tarefas como aplicar �ltros ou redimensionar imagens. Os resultados desses testes podem
indicar a necessidade de otimizar o �uxo de trabalho, tornando a manipulação de imagens mais
e�ciente e acessível aos usuários.
Para um aplicativo de gerenciamento de projetos, o Teste de Aceitação do Usuário é vital. Os
usuários �nais poderiam simular a criação de projetos, atribuição de tarefas e monitoramento do
progresso. O feedback direto dos usuários nesta fase é essencial para garantir que o sistema
atenda às suas expectativas práticas. Por exemplo, a identi�cação de funcionalidades que
facilitam a colaboração entre equipes ou a geração de relatórios personalizados (Paula Filho,
2019).
Tabela 2 | Comparação dos aspectos essenciais dos testes
Fonte: elaborada pelo autor.
Em um sistema de suporte ao cliente, o Teste de Aceitação do Usuário pode envolver a
simulação de interações com clientes, desde a abertura de tíquetes de suporte até a resolução
Aspectos de Testes
de Software
Teste de Caso de Uso
e Teste de Requisitos
Teste de Usabilidade
Teste de Aceitação
do Usuário
Objetivo Principal
Veri�car
conformidade
funcional
Avaliar experiência do
usuário
Con�rmar
atendimento a
expectativas
Enfoque
Comportamento em
situações especí�cas
Facilidade de
interação com a
interface
Simulação de uso em
ambiente próximo à
produção
Execução
Casos de uso
especí�cos
Avaliação de
navegação e tarefas
Testes conduzidos
pelos usuários �nais
Disciplina
Testes e Manutenção de Software
de problemas. Este processo proporciona aos usuários �nais a oportunidade de validar se o
sistema atende às suas necessidades de atendimento ao cliente de maneira e�caz.
Portanto, a aplicação prática de Teste de Caso de Uso, Teste de Requisitos, Teste de Usabilidade
e Teste de Aceitação do Usuário é crucial para garantir que um software não apenas atenda às
especi�cações técnicas, mas também proporcione uma experiência positiva ao usuário �nal.
Exemplos reais destacam como esses testes podem ser incorporados em diversos contextos,
melhorando a qualidade do software, reduzindo riscos e garantindo a satisfação dos usuários.
Ao integrar essas práticas de teste ao longo do ciclo de desenvolvimento, as organizações
podem alcançar produtos mais robustos e alinhados com as expectativas do mercado.
Videoaula: Tipos de testes funcionais
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
O vídeo explorará a signi�cativa importância dos testes de software, destacando três aspectos
cruciais: Teste de Caso de Uso e Teste de Requisitos, Teste de Usabilidade e Teste de Aceitação
do Usuário. Com exemplos práticos, abordará a veri�cação da conformidade funcional, a
avaliação da experiência do usuário e a con�rmação do atendimento às expectativas. Uma
explicação objetiva destes temas essenciais fornecerá informações relevantes sobre como
garantir a qualidade e a satisfação do usuário no desenvolvimento de software.
Saiba mais
Disciplina
Testes e Manutenção de SoftwareEstudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
Estudo de caso: técnicas de teste como parte do ciclo de desenvolvimento de software.
Testes funcionais aplicados ao desenvolvimento de softwares: com ênfase na garantia da
qualidade de software.
Automatizando testes funcionais em uma esteira de desenvolvimento de software.
Referências
https://www.researchgate.net/profile/Diego-Kreutz-3/publication/267841817_Estudo_de_Caso_Tecnicas_de_Teste_como_parte_do_Ciclo_de_Desenvolvimento_de_Software/links/54a59e850cf256bf8bb4d7fe/Estudo-de-Caso-Tecnicas-de-Teste-como-parte-do-Ciclo-de-Desenvolvimento-de-Software.pdf
https://www.researchgate.net/profile/Diego-Kreutz-3/publication/267841817_Estudo_de_Caso_Tecnicas_de_Teste_como_parte_do_Ciclo_de_Desenvolvimento_de_Software/links/54a59e850cf256bf8bb4d7fe/Estudo-de-Caso-Tecnicas-de-Teste-como-parte-do-Ciclo-de-Desenvolvimento-de-Software.pdf
https://bdta.ufra.edu.br/jspui/handle/123456789/2689
https://bdta.ufra.edu.br/jspui/handle/123456789/2689
https://bdta.ufra.edu.br/jspui/handle/123456789/2689
https://repositorio.ufpb.br/jspui/handle/123456789/29068
Disciplina
Testes e Manutenção de Software
ELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeir: LTC, 2019.
Aula 3
Testes estruturais
Introdução
Disciplina
Testes e Manutenção de Software
Olá, estudante!
Este texto introduzirá os fundamentos essenciais dos testes estruturais, explorando os critérios
subjacentes e destacando os benefícios resultantes dessa abordagem. Nos testes estruturais, a
análise detalhada dos componentes internos do software é fundamental para garantir sua robust
Essenciais dos testes estruturais: conceitos, critérios e benefícios
Disciplina
Testes e Manutenção de Software
Os testes estruturais representam uma pedra angular na garantia da qualidade do software,
apoiando-se em conceitos fundamentais, critérios especí�cos e uma série de benefícios
substanciais. Vamos aprofundar nossa compreensão desses elementos essenciais para obter
uma visão abrangente do papel vital que desempenham no ciclo de vida do desenvolvimento de
software.
Os fundamentos dos testes estruturais residem na análise meticulosa da arquitetura interna do
software. Este processo exige uma imersão profunda no código-fonte, identi�cando nuances e
padrões que podem afetar o desempenho. O teste de cobertura de código é uma técnica
emblemática, rastreando quais porções especí�cas do código foram acionadas durante os
testes, enquanto o teste de caminhos percorre todas as possíveis trajetórias de execução do
programa, proporcionando uma análise holística e completa (Delamaro, 2016).
Entender os fundamentos é como desvendar os segredos do DNA do software. Cada linha de
código contribui para a funcionalidade global, e os testes estruturais atuam como uma
ferramenta de diagnóstico, identi�cando áreas especí�cas que exigem atenção. A análise
minuciosa do código-fonte não apenas revela falhas evidentes, mas também contribui para um
entendimento mais profundo da estrutura subjacente, resultando em software mais robusto e
e�ciente (Delamaro, 2016).
Os critérios de testes estruturais são os padrões pelos quais avaliamos a robustez e a e�cácia
dos testes implementados. A cobertura de instruções, um critério essencial, garante que cada
instrução do código seja testada pelo menos uma vez, enquanto a cobertura de decisão avalia
Disciplina
Testes e Manutenção de Software
todas as rami�cações condicionais. A aplicação rigorosa desses critérios assegura uma
abordagem abrangente, destacando áreas especí�cas do código que demandam atenção
adicional.
Pense nos critérios como diretrizes para uma exploração sistemática do software. Eles orientam
os testadores por todas as nuances do código, garantindo que cada caminho, cada condição seja
minuciosamente examinada. Essa abordagem estruturada não apenas melhora a con�abilidade
dos testes, mas também oferece uma garantia de que o software será resiliente mesmo diante
de cenários complexos e condições limite.
Os benefícios derivados dos testes estruturais são vastos, impactando positivamente na
qualidade e con�abilidade do software. A detecção precoce de falhas, uma das maiores
vantagens, economiza tempo e recursos, evitando desa�os onerosos após o lançamento. Os
testes estruturais oferecem uma visibilidade clara sobre a cobertura do código, permitindo que
os desenvolvedores identi�quem áreas especí�cas que exigem aprimoramentos, além da
detecção precoce, a manutenibilidade do código ao longo do tempo é um benefício crucial.
À medida que o software evolui, os testes estruturais garantem que alterações e adições não
comprometam a estabilidade do código existente. Isso cria um ambiente de desenvolvimento
mais ágil e adaptável, essencial em um cenário tecnológico dinâmico, na qual a mudança é
constante e inevitável (Delamaro, 2016).
Tabela 1 | Fundamentos de testes estruturais
Aspectos de Testes
Estruturais
Fundamentos
Critérios
Benefícios
De�nição
Análise interna do
software
Padrões de avaliação
Detecção precoce de
falhas,
manutenibilidade
aprimorada, melhoria
da con�ança na
entrega do software.
Disciplina
Testes e Manutenção de Software
Fonte: elaborada pelo autor.
A melhoria da con�ança na entrega do software é outro ponto-chave. Adotar testes estruturais
resulta em produtos mais estáveis e con�áveis, minimizando o risco de falhas críticas que
poderiam prejudicar a experiência do usuário. A reputação de um software muitas vezes se
baseia em sua capacidade de desempenho sem falhas, e os testes estruturais desempenham um
papel fundamental nesse aspecto.
Em resumo, a compreensão aprofundada dos fundamentos, critérios e benefícios dos testes
estruturais é crucial para o desenvolvimento de software de alta qualidade. Ao aplicar estratégias
de testes estruturais de maneira consistente, as equipes de desenvolvimento não apenas
aumentam a e�cácia dos testes, mas também oferecem produtos mais estáveis e adaptáveis às
mudanças.
Desvendando testes estruturais: fundamentos, critérios e benefícios
Ferramentas
Principais
Teste de cobertura de
código, teste de
caminhos
Cobertura de
instruções, cobertura
de decisão
Economia de tempo e
recursos, visibilidade
clara sobre a
cobertura do código.
Abordagem
Análise detalhada e
minuciosa
Exploração
sistemática
Estabilidade e
con�abilidade do
software em cenários
complexos.
Disciplina
Testes e Manutenção de Software
Os testes estruturais desempenham um papel fundamental na garantia da qualidade do software,
empregando uma abordagem que se baseia em sólidos fundamentos, critérios especí�cos e
proporciona inúmeros benefícios. Vamos aprofundar nossa interpretação desses temas
essenciais para compreender como eles moldam e otimizam o desenvolvimento de software.
Os fundamentos dos testes estruturais residem na análise profunda da arquitetura interna do
software. Ao contrário dos testes funcionais, que se concentram nas entradas e saídas do
sistema, os testes estruturais mergulham nas entranhas do código-fonte. Essa análise
meticulosa busca entender a lógica subjacente, os caminhos de execução e as interações entre
os componentes (Gonçalvez et al., 2019).
Imagine os fundamentos como a base de uma construção. Sem uma base sólida, qualquer
estrutura está sujeita a colapsos. Da mesma forma, compreender os fundamentos dos testes
estruturais é essencial para construir software robusto e con�ável. A utilização de técnicas como
teste de cobertura de código e teste de caminhos permite uma inspeção detalhada da estrutura
interna, identi�cando áreas propensas a falhas e garantindoque cada parte do código seja
minuciosamente examinada (Gonçalvez et al., 2019).
Os critérios de testes estruturais são as métricas que guiam a avaliação da e�cácia dos testes.
Cobertura de instruções, cobertura de decisão e cobertura de caminhos são exemplos de
critérios comuns. A cobertura de instruções garante que cada linha de código seja executada
durante os testes. Já a cobertura de decisão examina todas as condições de rami�cação,
Disciplina
Testes e Manutenção de Software
enquanto a cobertura de caminhos garante que todos os caminhos possíveis de execução sejam
percorridos.
Pense nos critérios como bússolas que orientam os testadores pelos meandros do código. Eles
asseguram uma abordagem abrangente, garantindo que nenhum aspecto crítico seja
negligenciado. Ao seguir esses critérios, os testes estruturais tornam-se uma exploração
minuciosa do software, aumentando a con�ança na integridade do código.
Os benefícios dos testes estruturais são vastos e impactam diretamente na qualidade do
software. A detecção precoce de falhas é um dos principais benefícios. Ao identi�car e corrigir
problemas durante as fases iniciais do desenvolvimento, os testes estruturais economizam
tempo e recursos que seriam gastos em correções complexas após o lançamento (Gonçalvez,
2019).
Figura 1 | Passos simples dos testes estruturais. Fonte: elaborada pelo autor.
Os testes estruturais desempenham um papel vital na preservação da integridade do código
durante as atualizações e modi�cações. Em um setor de tecnologia em rápida evolução, esses
testes atuam como um mecanismo de garantia, prevenindo que novas mudanças introduzam
instabilidades ou inconsistências ao sistema. Adicionalmente, a implementação de testes
estruturais fortalece a con�ança no software entregue. Ao assegurar que o software mantenha
sua performance e estabilidade, mesmo diante de alterações, as organizações solidi�cam sua
reputação no mercado, estabelecendo-se como fornecedoras de soluções con�áveis e de alta
qualidade (Gonçalvez et al., 2019).
Em conclusão, interpretar os fundamentos, critérios e benefícios dos testes estruturais é crucial
para um desenvolvimento de software bem-sucedido. Os fundamentos formam a base, os
Disciplina
Testes e Manutenção de Software
critérios são as bússolas orientadoras e os benefícios fortalecem a qualidade do software.
Integrar esses elementos nos processos de desenvolvimento não apenas aprimora a e�cácia dos
testes, mas resulta em um software mais con�ável e adaptável, preparado para enfrentar os
desa�os em constante evolução do cenário tecnológico.
Testes estruturais: fundamentos, critérios e vantagens na prática
A aplicação prática dos testes estruturais não apenas assegura o funcionamento efetivo do
software, mas também se torna um catalisador para a robustez e a con�abilidade do código.
Para ilustrar essa implementação, consideremos um cenário: um sistema de gerenciamento de
inventário em uma loja on-line.
Em um sistema de gerenciamento de inventário, os fundamentos dos testes estruturais se
manifestam na análise cuidadosa do código-fonte responsável por operações cruciais. Imagine a
função de adicionar produtos ao carrinho. Ao aplicar os fundamentos, os testes estruturais
buscam entender não apenas se a função está adicionando corretamente os itens, mas também
examinam a lógica subjacente (Paula Filho, 2019).
Ao mergulhar nesses fundamentos, a equipe de testes estruturais desenvolve uma compreensão
abrangente da arquitetura interna do software. O processo é semelhante a desvendar os
meandros de um quebra-cabeça, em que cada peça de código se encaixa para criar a
funcionalidade desejada. Essa análise minuciosa permite identi�car possíveis pontos de falha e
garantir que cada aspecto do código seja examinado de forma meticulosa.
Vamos avançar para a aplicação prática dos critérios de testes estruturais neste sistema de
gerenciamento de inventário. Considere o critério de cobertura de decisão: essencial para avaliar
Disciplina
Testes e Manutenção de Software
as condições lógicas. Ao adicionar um produto ao carrinho, é crucial veri�car se o sistema valida
a disponibilidade desse item em estoque. Os testes estruturais garantem que cada rami�cação
condicional, como a con�rmação da disponibilidade do produto, seja adequadamente testada
(Paula Filho, 2019).
O critério de cobertura de caminhos entra em cena para garantir uma abordagem abrangente. Em
um sistema de gerenciamento de inventário, diversos caminhos podem ser percorridos, desde a
seleção de produtos até a �nalização do pedido. Os testes estruturais se certi�cam de que todos
esses caminhos são devidamente explorados, minimizando assim o risco de falhas em situações
práticas.
A aplicação de critérios especí�cos não apenas valida a funcionalidade do software, mas
também oferece insights valiosos sobre a integridade do código-fonte. Essa abordagem
sistemática não deixa margem para ambiguidades, garantindo que todas as condições possíveis
sejam testadas, contribuindo para um software mais resiliente.
Os benefícios tangíveis dos testes estruturais se materializam na prática, in�uenciando
diretamente a experiência do usuário e a e�ciência da manutenção do software. Suponha que,
durante os testes, uma falha potencial seja detectada na validação do estoque. A aplicação de
testes estruturais permitiria que a equipe corrigisse essa falha antes mesmo do lançamento,
economizando tempo e recursos que seriam inevitavelmente consumidos em correções pós-
implantação (Paula Filho, 2019).
Tabela 2 | Tabela do teste estrutural
Aspectos dos Testes
Estruturais
Aplicação no Sistema de
Inventário
Benefícios na Loja Online
Fundamentos em Ação
Análise detalhada do código-
fonte
Compreensão aprofundada
da arquitetura interna,
identi�cação de pontos de
falha.
Critérios Especí�cos
Cobertura de decisão,
cobertura de caminhos
Validação rigorosa das
condições lógicas, garantindo
uma abordagem abrangente.
Disciplina
Testes e Manutenção de Software
Fonte: elaborada pelo autor.
A manutenibilidade do código é uma peça crucial desse quebra-cabeça. Suponha que seja
necessário introduzir uma nova funcionalidade, como um desconto em pedidos acima de um
certo valor. Com a con�ança proporcionada pelos testes estruturais, a equipe pode realizar essas
modi�cações com a garantia de que a integridade do sistema será preservada. Isso cria um
ambiente de desenvolvimento mais ágil, em que a evolução do software é facilitada, sem
comprometer a estabilidade existente (Paula Filho, 2019).
A integração sistemática dos testes estruturais no ciclo de vida do desenvolvimento além de
garantir a funcionalidade do software, estabelece um padrão de qualidade duradouro. A
aplicação prática desses princípios não é apenas um exercício técnico; é uma estratégia
abrangente para construir software que não apenas atenda, mas exceda as expectativas dos
usuários �nais. Portanto, a aplicação prática dos testes estruturais é uma jornada contínua para
construir software mais resiliente, e�ciente e con�ável.
Videoaula: Testes estruturais
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
O vídeo explorará os temas críticos dos testes estruturais, abordando seus fundamentos,
critérios e benefícios. Ele mergulhará na análise detalhada do código-fonte, destacando a
importância da cobertura de decisão e de caminhos. Enfatizará os benefícios práticos, como a
Realização de Benefícios
Práticos
Detecção precoce de falhas,
economia de recursos
Manutenibilidade e�ciente,
introdução de novas
funcionalidades sem
comprometer a estabilidade.
Impactos na Experiência do
Usuário
Operações e�cientes,
satisfação do cliente
Con�ança na entrega,reputação positiva da loja
online.
Disciplina
Testes e Manutenção de Software
detecção precoce de falhas e a e�ciência na manutenção do software. Uma breve e informativa
jornada pelos aspectos essenciais dos testes estruturais, proporcionando uma visão sucinta,
porém abrangente, desses conceitos fundamentais na engenharia de software.
Saiba mais
Estudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
Critérios potenciais usos: uma contribuição ao teste estrutural de software.
Geração automática de dados e tratamento de não executabilidade no teste estrutural de
software.
Teste estrutural de software: uma abordagem para aplicações de banco de dados relacional.
Referências
https://repositorio.unicamp.br/acervo/detalhe/31806
https://repositorio.unicamp.br/acervo/detalhe/31806
https://sol.sbc.org.br/index.php/sbes/article/view/23929
https://sol.sbc.org.br/index.php/sbes/article/view/23929
https://sol.sbc.org.br/index.php/sbes/article/view/25931
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro: LTC, 2019.
Aula 4
Tipos de testes estruturais
Introdução
Disciplina
Testes e Manutenção de Software
Olá, estudante!
Os processos de avaliação são essenciais para assegurar a integridade e e�cácia do software.
Técnicas como teste de cobertura e análise de �uxo de controle buscam determinar quais partes
do código são ou não executadas, identi�cando possíveis lacunas ou rotas não exploradas. O
método de teste de mutação, por sua vez, modi�ca sutilmente o código para simular possíveis
defeitos, avaliando a capacidade dos testes em detectar tais variações. O teste centrado em
chamadas de função examina a interação e o comportamento das funções dentro do sistema,
garantindo que sua execução ocorra de maneira adequada. Cada abordagem contribui para
aprimorar a qualidade e con�abilidade do software.
Bons estudos!
Conceitos essenciais de testes de software
Disciplina
Testes e Manutenção de Software
No universo da engenharia de software, garantir a qualidade de um programa é essencial. Entre
as diversas práticas e técnicas existentes, os testes de software ocupam um papel de destaque.
Vamos explorar três técnicas cruciais: teste de cobertura de código e teste de caminho de
controle, teste de mutação e teste de chamada de função.
O teste de cobertura de código é uma técnica que visa avaliar a quantidade de código-fonte que
foi executada durante a realização de testes. Em outras palavras, ele analisa a proporção do
código que foi efetivamente testada em relação ao total. Uma alta cobertura sugere que a
maioria das linhas de código foi avaliada, aumentando a con�ança na qualidade do software. No
entanto, uma cobertura completa não garante ausência de defeitos, apenas indica que
determinada parte do código foi veri�cada (Delamaro, 2016).
Por sua vez, o teste de caminho de controle aprofunda essa avaliação. Ele não se limita apenas a
veri�car se o código foi executado, mas também analisa os possíveis �uxos de execução dentro
do programa. Em termos práticos, isso signi�ca que, além de veri�car a execução linear do
código, busca-se avaliar as diferentes rami�cações e condições que podem ocorrer durante a
execução, garantindo uma análise mais abrangente e profunda do comportamento do software.
O teste de mutação é uma técnica avançada e desa�adora. Sua premissa fundamental é
introduzir pequenas alterações (mutações) no código original para simular possíveis defeitos ou
erros. Por exemplo, pode-se alterar um operador de comparação de "menor que" para "maior que"
em uma linha especí�ca do código. O objetivo é veri�car se os testes existentes são capazes de
detectar essas alterações. Se um teste não conseguir identi�car uma mutação, isso indica uma
falha na suíte de testes, pois a mutação introduziu um defeito e o teste deveria ter capturado.
A beleza do teste de mutação reside em sua capacidade de avaliar a robustez dos testes. Ele
além de veri�car se o código funciona como esperado, também avalia a capacidade dos testes
em identi�car e relatar desvios. No entanto, vale ressaltar que a aplicação do teste de mutação é
Disciplina
Testes e Manutenção de Software
complexa e pode ser intensiva em termos de recursos computacionais, especialmente para
programas extensos (Delamaro, 2016).
Por último, mas não menos importante, temos o teste de chamada de função. Esta técnica foca
na interação entre as funções dentro do software. Ao testar uma função especí�ca, veri�ca-se
não apenas seu comportamento isolado, mas também como ela interage e se comunica com
outras funções. Por exemplo, se uma função A chama uma função B, o teste de chamada de
função garantiria que essa interação ocorresse conforme o esperado, considerando todos os
possíveis cenários e dados de entrada (Delamaro, 2016).
Este tipo de teste é crucial para sistemas complexos, nas quais as funções não operam de
maneira independente, mas estão interligadas em uma teia complexa de dependências. Ao
garantir que as chamadas de função ocorram corretamente, minimiza-se o risco de erros
resultantes de falhas de comunicação ou integração entre componentes do software.
Em resumo, os testes de software são pilares fundamentais para garantir a qualidade,
con�abilidade e e�cácia dos programas desenvolvidos. As técnicas de teste de cobertura de
código e caminho de controle, teste de mutação e teste de chamada de função oferecem
abordagens complementares para avaliar e assegurar a integridade dos sistemas.
Decifrando técnicas de teste de software
O teste de cobertura de código visa avaliar quais partes do código foram efetivamente testadas.
Ele não apenas veri�ca se uma linha de código foi executada, mas também se todas as
rami�cações e condições do código foram exploradas. Já o teste de caminho de controle vai
Disciplina
Testes e Manutenção de Software
além, analisando os diferentes �uxos de execução do software, identi�cando os caminhos
possíveis e garantindo que todos sejam adequadamente avaliados (Gonçalvez et al., 2019).
Imagine um software simples de calculadora. Uma função divide dois números e, antes de fazer
a divisão, veri�ca se o divisor não é zero. Se estivermos testando essa função, a cobertura de
código nos diria se testamos tanto a divisão quanto a veri�cação do divisor. Por outro lado, o
teste de caminho de controle garantiria que testássemos a divisão quando o divisor é válido e
quando é zero.
Esta técnica envolve introduzir pequenas alterações no código-fonte para simular possíveis
defeitos. O objetivo é veri�car se os testes existentes são robustos o su�ciente para identi�car
essas alterações. Se um teste não detectar uma mutação, isso sugere que ele pode não ser
su�cientemente rigoroso ou detalhado (Gonçalvez et al., 2019).
Consideremos uma função que ordena uma lista de números. Uma mutação poderia alterar a
lógica de ordenação para inverter a ordem, como ordenar de forma decrescente em vez de
crescente. Se os testes não detectarem essa alteração, pode-se concluir que eles não são
e�cazes em capturar variações potenciais no comportamento da função.
Para ilustrar a situação, vou criar um cenário de testes usando a biblioteca unittest do Python.
Vamos criar testes para a função ordenar_crescente e depois veri�car o comportamento quando
usamos a função ordenar_decrescente, conforme a Figura 1 a seguir:
Figura 1 | Exemplo prático em Python com teste estrutural
import unittest
# Função Original (ordena de forma crescente)
def ordenar_crescente(lista):
n = len(lista)
for i in range(n):
for j in range(0, n-i-1):
if lista[j] > lista[j+1]:
lista[j], lista[j+1] = lista[j+1], lista[j]
return lista
# Função Mutada (ordena de forma decrescente)
def ordenar_decrescente(lista):
n = len(lista)for i in range(n):
for j in range(0, n-i-1):
if lista[j]exploraremos técnicas cruciais de teste de software. Abordaremos o teste de cobertura
de código, que avaliará a extensão do código a ser testada, e o teste de caminho de controle,
Exemplo Ilustrativo
Plataforma de e-
commerce testando
diferentes
combinações de
produtos e
promoções.
Software de
processamento de
imagens ajustando o
brilho das fotos com
possíveis variações.
Sistema bancário
realizando
transferências e
veri�cando saldos
após cada transação.
Objetivo Principal
Validar todas as
linhas e �uxos de
código.
Veri�car a robustez
dos testes frente a
alterações no código.
Garantir a integridade
e e�ciência da
comunicação entre
funções.
Disciplina
Testes e Manutenção de Software
focando nos �uxos de execução. Também discutiremos o teste de mutação, que simulará
alterações no código para avaliar a e�cácia dos testes, e o teste de chamada de função,
garantindo a correta interação entre as funções do software. Essas práticas serão fundamentais
para assegurar a qualidade e con�abilidade dos programas a serem desenvolvidos.
Saiba mais
Estudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
MARINKE, R.; VIJAYKUMAR, N. L.; SENNE, E. L. F. Geração de testes estruturais para aplicações
multithreads: abordagem por statecharts.
Resultados de um estudo de caracterização e avaliação de critérios de teste estruturais entre os
paradigmas procedimental e OO..
LEMOS, O. A. L. Teste de programas orientados a aspectos: uma abordagem estrutural para
AspectJ.
Referências
http://mtc-m16d.sid.inpe.br/col/sid.inpe.br/mtc-m19/2011/11.04.20.08/doc/publicacao.pdf
http://mtc-m16d.sid.inpe.br/col/sid.inpe.br/mtc-m19/2011/11.04.20.08/doc/publicacao.pdf
http://mtc-m16d.sid.inpe.br/col/sid.inpe.br/mtc-m19/2011/11.04.20.08/doc/publicacao.pdf
http://lens-ese.cos.ufrj.br/ese/artigos/
http://lens-ese.cos.ufrj.br/ese/artigos/
https://pdfs.semanticscholar.org/025f/bfda86cf92452610a6036ee9f2cb5142c931.pdf
https://pdfs.semanticscholar.org/025f/bfda86cf92452610a6036ee9f2cb5142c931.pdf
https://pdfs.semanticscholar.org/025f/bfda86cf92452610a6036ee9f2cb5142c931.pdf
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro: LTC, 2019.
Aula 5
Revisão da unidade
Visão geral: testes funcionais e estruturais e suas variações
Disciplina
Testes e Manutenção de Software
No universo do desenvolvimento de software, os testes desempenham um papel central, sendo
vitais para garantir a qualidade, a con�abilidade e o desempenho dos sistemas. Entre os
diferentes tipos de testes, os funcionais e estruturais destacam-se por suas abordagens
especí�cas e complementares. Vamos aprofundar nossa compreensão sobre essas técnicas.
Os testes funcionais são, muitas vezes, os primeiros a serem considerados, pois focam
diretamente nas funcionalidades visíveis do software. Eles se concentram em validar se o
sistema opera conforme as especi�cações e os requisitos previamente estabelecidos. Em
essência, os testes funcionais buscam responder à pergunta: "O sistema faz o que é esperado?"
(Delamaro, 2016).
Testes de unidade: neste nível, cada componente individual do software, como funções ou
métodos especí�cos, é testado isoladamente para assegurar que funcione corretamente.
Testes de integração: ao veri�car como diferentes módulos ou sistemas interagem, os
testes de integração garantem que não existam con�itos ou problemas de compatibilidade
entre as partes.
Testes de sistema: estes testes avaliam o software como um todo, considerando todas as
funcionalidades interconectadas, para con�rmar que ele atende aos requisitos globais
estabelecidos.
Testes de aceitação: essencialmente, são os testes �nais antes da entrega ao cliente,
validando se o software está alinhado com as expectativas e necessidades do usuário
�nal.
Disciplina
Testes e Manutenção de Software
Enquanto os testes funcionais observam o comportamento externo do software, os testes
estruturais mergulham na estrutura interna do código. Eles avaliam a implementação, a lógica e a
cobertura do código-fonte para garantir sua robustez e e�cácia (Gonçalvez et al., 2019).
Testes de declaração: este método veri�ca cada declaração no código-fonte, assegurando
que todas sejam executadas corretamente durante a execução do programa.
Testes de caminho: ao analisar os caminhos possíveis através do código, os testes de
caminho garantem que todas as trajetórias, mesmo as mais complexas, sejam veri�cadas e
validadas.
Testes de rami�cação: focando nas decisões de rami�cação do código, este tipo de teste
assegura que todas as condições, sejam elas verdadeiras ou falsas, sejam adequadamente
avaliadas.
Testes de condição: este teste aprofundado veri�ca as condições dentro das estruturas
condicionais do código, garantindo que todos os cenários possíveis sejam testados e
validados.
Em resumo, os testes funcionais e estruturais são pilares na jornada de desenvolvimento de
software. Enquanto os primeiros garantem que o software atenda às expectativas e funcione
corretamente para o usuário, os últimos asseguram que a estrutura interna do software seja
sólida, e�ciente e livre de falhas (Paula Filho, 2019).
Ao combinar ambas as abordagens, desenvolvedores e equipes de teste podem garantir que os
sistemas entregues sejam não apenas funcionais e fáceis de usar, mas também robustos,
seguros e con�áveis em sua implementação. Em um mercado tecnológico cada vez mais
competitivo e exigente, investir em testes rigorosos é fundamental para o sucesso e a reputação
de qualquer software ou aplicação.
Videoaula: Revisão da unidade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
No vídeo, exploraremos a essência dos testes em software, segmentando-os em duas categorias
principais: funcionais e estruturais. Investigaremos os testes funcionais, que validarão as
funcionalidades perceptíveis do sistema, e suas subdivisões, como testes de unidade e
integração. Adicionalmente, analisaremos os testes estruturais, que se concentrarão na lógica e
implementação do código, enfatizando testes de caminho e condição. O conteúdo proporcionará
Disciplina
Testes e Manutenção de Software
uma visão detalhada das práticas fundamentais para assegurar a qualidade e con�abilidade dos
softwares a serem desenvolvidos.
Estudo de caso
O crescimento exponencial do comércio eletrônico nos últimos anos reforçou a importância de
plataformas de e-commerce robustas e con�áveis. A Shop Tecnologia, uma startup em
ascensão, enfrentou desa�os inéditos ao desenvolver sua plataforma e-commerce. Para garantir
a excelência em sua oferta e manter-se à frente da concorrência, a empresa percebeu a
necessidade crítica de realizar testes detalhados e abrangentes.
A Shop Tecnologia emergiu no mercado com uma visão clara: revolucionar a experiência de
compra on-line. Com um design inovador e recursos avançados, a plataforma prometia facilidade
de uso, segurança robusta e e�ciência operacional. Contudo, antes de lançar o�cialmente, a
empresa reconheceu a necessidade de submeter sua plataforma a testes rigorosos para
identi�car e corrigir possíveis falhas.
Testes Funcionais:
Ao abordar a funcionalidade, a Shop Tecnologia precisa assegurar que todas as ferramentas,
desde o carrinho de compras até o sistema de pagamento, operem sem falhas. Uma abordagem
sistemática aos testes funcionais garantirá que o usuário tenha uma experiência contínua e
positiva.
Disciplina
Testes e Manutenção de Software
Como a Shop Tecnologia pode implementar testes funcionais abrangentes para avaliarcada aspecto da plataforma?
Quais benefícios tangíveis a Shop Tecnologia pode esperar ao priorizar e investir em testes
funcionais de alta qualidade?
Tipos de Testes Funcionais:
Considerando a complexidade do e-commerce, diversos tipos de testes funcionais são
essenciais. Estes incluem testes de regressão, testes de unidade, testes de integração e testes
de aceitação do usuário.
Como a Shop Tecnologia pode integrar esses diferentes tipos de testes funcionais em seu
ciclo de desenvolvimento?
Quais critérios a equipe de testes da Shop Tecnologia deve considerar ao selecionar e
priorizar diferentes tipos de testes funcionais?
Testes Estruturais e Tipos de Testes Estruturais:
Além dos testes funcionais, os testes estruturais oferecem uma perspectiva interna sobre como
o software opera. Eles se concentram em avaliar o código subjacente e identi�car possíveis
vulnerabilidades ou ine�ciências.
Como a Shop Tecnologia pode integrar testes estruturais para complementar seus esforços
de teste funcional?
Quais são os principais desa�os que a Shop Tecnologia pode enfrentar ao implementar e
interpretar resultados de testes estruturais?
A Shop Tecnologia, ao abraçar uma abordagem proativa em relação aos testes, está
posicionando sua plataforma para o sucesso. Em um ambiente competitivo, garantir que a
plataforma seja robusta, segura e e�ciente é fundamental. Ao considerar as nuances e
complexidades dos testes funcionais e estruturais, a Shop Tecnologia pode assegurar uma
experiência de usuário superior e consolidar sua posição no mercado de e-commerce.
_______
Re�ita
O estudo de caso da Shop Tecnologia destaca os desa�os e as nuances enfrentados na
implementação de testes funcionais e estruturais em sua plataforma de e-commerce. Esta
narrativa ressalta a essência e a profundidade das práticas modernas de desenvolvimento de
software.
A Shop Tecnologia, ao embarcar nessa jornada, evidencia a relevância contínua de inovação no
setor de e-commerce. Em uma era digital dominada pela concorrência, a con�ança do
consumidor torna-se um bem inestimável. Ao priorizar uma plataforma robusta, a Shop
Tecnologia reforça a ideia de que a qualidade do software não se limita apenas à sua aparência
ou funcionalidade externa. A verdadeira qualidade é intrínseca, ligada à integridade e robustez do
sistema como um todo.
A diversidade de testes mencionados – de regressão a aceitação do usuário – sublinha a
multifacetada natureza do desenvolvimento de software. Cada teste atua como uma camada de
proteção, garantindo que todas as funcionalidades operem em harmonia e sem interrupções.
Disciplina
Testes e Manutenção de Software
Este mosaico de testes nos lembra da necessidade de abordagens adaptativas, moldadas para
atender às peculiaridades de cada projeto.
A integração de testes estruturais pela Shop Tecnologia não apenas realça a busca pela
excelência operacional, mas também sinaliza um compromisso inabalável com a segurança
cibernética. Em um mundo digital permeado por ameaças, a Shop Tecnologia demonstra uma
postura proativa, assegurando que seus usuários estejam protegidos contra possíveis
vulnerabilidades.
Concluindo, a re�exão sobre o estudo de caso da Shop Tecnologia serve como um testemunho
da importância das práticas meticulosas no desenvolvimento de software. Em um setor tão
dinâmico e competitivo quanto o e-commerce, a excelência, segurança e con�abilidade são
imperativos. O estudo da Shop Tecnologia reitera que o sucesso duradouro no mundo digital é
alcançado por meio de uma combinação equilibrada de inovação visível e integridade estrutural.
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
O cenário contemporâneo do comércio eletrônico exige plataformas robustas, con�áveis e
seguras. A Shop Tecnologia, enfrentando os desa�os inerentes ao desenvolvimento de sua
plataforma de e-commerce, reconheceu a importância crítica dos testes funcionais e estruturais.
Esta resolução busca responder às questões propostas, delineando estratégias e abordagens
para garantir a qualidade e segurança da plataforma.
1. Como a Shop Tecnologia pode implementar testes funcionais abrangentes para avaliar cada
aspecto da plataforma?
Para uma implementação e�caz de testes funcionais, a Shop Tecnologia deve adotar uma
abordagem sistemática:
Identi�cação de requisitos: primeiramente, é essencial mapear todas as funcionalidades da
plataforma e seus respectivos requisitos.
Desenvolvimento de casos de teste: com base nos requisitos identi�cados, a equipe de
testes deve desenvolver casos de teste especí�cos para cada funcionalidade. Estes casos
devem abordar cenários típicos, excepcionais e de limite.
Automação de testes: para garantir e�ciência e reprodutibilidade, é recomendável
automatizar testes funcionais sempre que possível. Ferramentas como Selenium ou
TestNG podem ser úteis nesse contexto.
Disciplina
Testes e Manutenção de Software
Execução e monitoramento: uma vez que os testes estejam con�gurados, eles devem ser
executados regularmente. Qualquer falha ou anomalia deve ser prontamente identi�cada,
registrada e corrigida.
2. Como a Shop Tecnologia pode integrar diferentes tipos de testes funcionais em seu ciclo de
desenvolvimento?
A integração e�caz dos testes funcionais requer uma sincronia estreita entre as equipes de
desenvolvimento e testes:
Integração Contínua (CI): a adoção de práticas de CI permite que os testes sejam
executados automaticamente sempre que uma nova funcionalidade for adicionada ou
modi�cada. Isso garante que as regressões sejam identi�cadas precocemente.
Feedback iterativo: estabelecer um ciclo de feedback contínuo entre desenvolvedores e
testadores facilita a identi�cação e resolução rápidas de problemas.
Priorização: nem todos os testes funcionais terão a mesma relevância. A Shop Tecnologia
deve priorizar testes com base no impacto potencial sobre os usuários e na complexidade
da funcionalidade.
3. Como a Shop Tecnologia pode integrar testes estruturais para complementar seus esforços de
teste funcional?
Os testes estruturais, centrados no código e na arquitetura da aplicação, desempenham um
papel crucial na garantia da robustez e segurança:
Análise estática de código: utilizando ferramentas de análise estática, a Shop Tecnologia
pode identi�car potenciais vulnerabilidades, erros de codi�cação e padrões não conformes
no código.
Testes de integração e unidade: estes testes, focados em componentes individuais e na
interação entre eles, ajudam a garantir que o software funcione como um todo coeso.
Auditorias de segurança: periodicamente, a plataforma deve ser submetida a auditorias de
segurança para identi�car e corrigir vulnerabilidades potenciais.
O desenvolvimento de uma plataforma de e-commerce bem-sucedida não se resume apenas à
funcionalidade visível ao usuário. Requer uma abordagem holística que combine testes
funcionais e estruturais para garantir qualidade, segurança e con�abilidade. Com estratégias
adequadas e práticas recomendadas, a Shop Tecnologia está bem-posicionada para oferecer
uma experiência de e-commerce excepcional aos seus usuários.
Resumo visual
Disciplina
Testes e Manutenção de Software
Veja o resumo visual da unidade:
Referências
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao este de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro : LTC, 2019.
,
Unidade 3
Técnicas de testes
Aula 1
Técnicas de testes
Introdução
Disciplina
Testes e Manutenção de Software
Olá, estudante! Muito seja muito bem-vindo a esta aula sobre testes de software! Aqui
exploraremos os fundamentos das técnicas de teste de software, além de conceituarmos o teste
depadrões reduz riscos legais e melhora a competitividade no mercado. Em um
contexto de segurança cibernética, a interpretação abrange a compreensão de como o teste de
software é vital para identi�car e corrigir vulnerabilidades, aprimorando a estabilidade e a
e�ciência.
Em resumo, a interpretação profunda dos fundamentos de teste de software, dos objetivos de
teste de software e dos benefícios de teste de software é essencial para o sucesso do
desenvolvimento de software. Ela não apenas viabiliza a detecção e correção de falhas, mas
também contribui para a entrega de produtos de alta qualidade, e�cientes e alinhados às
expectativas do usuário e do mercado.
Aplicação efetiva no teste de software: objetivos e benefícios
Disciplina
Testes e Manutenção de Software
A aplicação efetiva dos elementos fundamentais no teste de software desempenha um papel
crucial no desenvolvimento de sistemas con�áveis e e�cientes. Os fundamentos de teste de
software representam a base teórica e prática, e sua aplicação correta se traduz na capacidade
de identi�car e corrigir falhas desde as fases iniciais do desenvolvimento. Por exemplo, em um
sistema de reservas aéreas, ao aplicar corretamente os fundamentos, o teste garantiria que os
dados de voos, como horários e disponibilidade, são validados de forma rigorosa.
A análise estática e dinâmica de código faz parte da aplicação desses fundamentos. No contexto
de um aplicativo de processamento de pagamentos on-line, ao realizar a análise estática, os
testadores podem identi�car potenciais vulnerabilidades de segurança no código, enquanto a
análise dinâmica pode veri�car se a integração com serviços de pagamento ocorre conforme o
esperado (Paula Filho, 2019).
Os objetivos de teste de software orientam a aplicação prática do teste, delineando metas
especí�cas. Em um sistema de gerenciamento de e-commerce, os objetivos podem incluir a
veri�cação da funcionalidade do carrinho de compras, assegurando uma experiência de compra
�uida para o usuário. A aplicação efetiva dos objetivos concentra-se em estratégias de teste
especí�cas, como a realização de testes de integração para garantir a comunicação harmoniosa
entre os módulos do sistema (Paula Filho, 2019).
Além da detecção de defeitos, a aplicação dos objetivos abrange a validação de requisitos. Em
um aplicativo de saúde, a aplicação correta dos objetivos de teste garantiria que os dados dos
Disciplina
Testes e Manutenção de Software
pacientes sejam armazenados de forma segura e que o sistema atenda às regulamentações de
privacidade.
Os benefícios de teste de software se manifestam de maneiras tangíveis e intangíveis na
aplicação prática. A redução de custos é um benefício evidente, especialmente quando a
aplicação efetiva do teste identi�ca e corrige falhas nas fases iniciais do desenvolvimento. O
teste de software é uma peça crucial no processo de desenvolvimento, proporcionando uma
série de vantagens que impactam positivamente a qualidade, con�abilidade e e�cácia dos
produtos tecnológicos. Entre os benefícios mais signi�cativos estão
1. Identi�cação de defeitos precocemente:
O teste de software permite a detecção antecipada de defeitos, evitando que problemas se
tornem mais complexos e onerosos de corrigir ao longo do desenvolvimento.
2. Garantia da qualidade do software:
Assegura a qualidade do software, certi�cando-se de que ele atenda aos requisitos funcionais e
não funcionais estabelecidos, proporcionando uma experiência positiva ao usuário �nal.
3. Economia de recursos �nanceiros:
A identi�cação precoce de falhas reduz os custos de correção, uma vez que é mais barato
corrigir defeitos durante as fases iniciais do desenvolvimento do que após o lançamento do
produto.
4. Aumento da satisfação do cliente:
Testes rigorosos resultam em um produto mais con�ável, atendendo às expectativas dos clientes
e gerando satisfação. Isso contribui para a reputação positiva da empresa no mercado.
5. Melhoria da produtividade da equipe de desenvolvimento:
Ao identi�car e corrigir problemas de maneira e�ciente, a equipe de desenvolvimento pode
concentrar-se em melhorar e inovar, em vez de lidar com retrabalho constante.
6. Conformidade com padrões e normas:
O teste de software é essencial para garantir que o produto atenda aos padrões e às normas da
indústria, garantindo conformidade regulatória e evitando possíveis penalidades.
7. Redução de riscos:
Identi�car e mitigar riscos relacionados ao software, como vulnerabilidades de segurança, ajuda
a evitar consequências negativas para a empresa e seus usuários.
8. Facilitação de atualizações e manutenção:
Testes contínuos facilitam a implementação de atualizações e manutenção, garantindo que
novas funcionalidades não introduzam problemas no software existente.
9. Estabelecimento de métricas de desempenho:
Os testes fornecem dados valiosos sobre o desempenho do software, permitindo a análise de
métricas que ajudam a otimizar a e�ciência e aprimorar futuras versões do produto.
Em um projeto de software de automação industrial, a identi�cação precoce de falhas no
controle de máquinas pode evitar custosos retrabalhos. A aplicação correta também contribui
para a satisfação do cliente. Em um aplicativo de redes sociais, a garantia de que as atualizações
e novas funcionalidades são testadas adequadamente antes do lançamento assegura uma
experiência positiva para os usuários (Paula Filho, 2019).
A melhoria contínua é outro benefício notável. A aplicação correta do teste gera feedback valioso
que alimenta aprimoramentos contínuos. Em um sistema de gestão �nanceira, a aplicação
Disciplina
Testes e Manutenção de Software
efetiva do teste pode destacar áreas de otimização no processamento de transações,
melhorando a e�ciência operacional ao longo do tempo.
A conformidade com regulamentações e padrões é um benefício crítico, especialmente em
setores altamente regulamentados. A aplicação correta do teste em um sistema de saúde digital
assegura que o software atenda às normas de segurança e privacidade de dados do setor.
Em um cenário de segurança cibernética, a aplicação efetiva do teste de software pode revelar
vulnerabilidades em um sistema de pagamento on-line, permitindo correções proativas antes que
se tornem alvos de ataques.
Em resumo, a aplicação prática dos fundamentos de teste de software, os objetivos de teste de
software e os benefícios de teste de software é crucial para o sucesso do desenvolvimento de
software. Exemplos reais, como os mencionados, ilustram como a correta aplicação desses
elementos não apenas identi�ca e corrige falhas, mas também contribui para a e�ciência,
satisfação do cliente e conformidade regulatória.
Videoaula: Introdução ao teste de software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
No vídeo, exploraremos os fundamentos cruciais do teste de software, enfatizando a importância
de compreender a base teórica e prática dessa prática. Discutiremos os objetivos especí�cos do
teste, delineando metas para assegurar a funcionalidade, a segurança e o desempenho do
software. Finalmente, abordaremos os benefícios tangíveis e intangíveis do teste de software,
destacando como sua aplicação efetiva contribuirá não apenas para a detecção de defeitos, mas
para a e�ciência, satisfação do cliente e conformidade regulatória.
Saiba mais
Disciplina
Testes e Manutenção de Software
Estudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
Introdução a teste de software.
Introdução a veri�cação, validação e teste de software.
Uma metodologia para teste de Software no Contexto da Melhoria de Processo.
Referências
https://www.researchgate.net/profile/Arilo-Neto/publication/266356473_Introducao_a_Teste_de_Software/links/5554ee6408ae6fd2d821ba3a/Introducao-a-Teste-de-Software.pdf
http://www.univasf.edu.br/~ricardo.aramos/disciplinas/ES_I_2013_2/V&VTesteSoftware.pdfunidade e os testes de caixa preta e testes de caixa branca. Começaremos nossa jornada pelo
mundo dos testes de software, estabelecendo os fundamentos essenciais que são a base de
qualquer estratégia de teste. Em seguida, mergulharemos nos testes de unidade, uma prática
fundamental para identi�car e corrigir erros no nível mais granular do código-fonte.
Posteriormente, exploraremos os testes de caixa preta e branca, abordando como essas técnicas
se diferenciam e quando são mais apropriadas.
Ao �nal desta aula, você estará equipado com um entendimento dessas técnicas e será capaz de
aplicá-las de em seus projetos de desenvolvimento de software. Portanto, prepare-se para
adquirir conhecimento valioso que o tornará um testador de software mais competente e
con�ável.
Então prepare-se para embarcar nessa jornada e conhecer as técnicas de testes utilizadas
atualmente. Bons estudos!
C onhecendo o mundo dos testes
Disciplina
Testes e Manutenção de Software
Para iniciar sua jornada, é crucial compreender os fundamentos das técnicas de teste de
software. O teste de software é um elemento de algo maior: Veri�cação e Validação, também
conhecido como V&V. Esse processo crítico visa identi�car defeitos, erros e problemas em um
sistema de software, por meio da criação de casos de testes e dos resultados esperados.
Os testes podem ser classi�cados em diferentes tipos, como testes de unidade, testes de
integração, testes de sistema e testes de aceitação, entre outros. Cada tipo de teste tem um foco
especí�co e é aplicado em momentos distintos do processo de desenvolvimento. Pressman &
Maxim (2021) apresentam a Figura 1, exempli�cando e relacionando o processo de
desenvolvimento de software com diferentes camadas de testes, utilizando um modelo em
espiral. Em cada etapa do processo de software, uma ou mais técnicas de testes podem ser
utilizadas para veri�cação e/ou validação. Para melhorar a qualidade do software, recomenda-se
aplicar mais de uma técnica de teste em cada camada do processo.
Nesta aula iremos focar em duas dessas técnicas: os testes de unidade e os testes de caixa
preta e caixa branca. Os outros níveis de testes serão abordados em aulas subsequentes.
Disciplina
Testes e Manutenção de Software
Figura 1 | Espiral de testes Fonte: Presman e Maxim (2021, p. 375).
Os testes de unidade, também conhecidos como testes unitários é uma técnica de testes focada
em veri�car as menores partes do código, como funções, métodos ou classes, de forma isolada.
O princípio-chave é isolar uma unidade de código e testá-la independentemente de outras partes
do sistema (Pezzè; Young, 2008).
Essa técnica é aplicada durante a fase de codi�cação ou implementação do projeto e
usualmente é feita pelos próprios desenvolvedores, mas também pode ser codi�cada pelos
membros da equipe de qualidade. Caso seja encontrado algum erro, o desenvolvedor pode
corrigi-lo antes mesmo que o código seja integrado ao sistema como um todo. Isso contribui
para a promoção da manutenção do código e sua con�abilidade, visto que, caso uma unidade
(função) do código seja alterada, o teste garante que ela continue funcionando como deveria.
Caso seu objetivo tenha sido alterado intencionalmente, o teste unitário também deve ser
adaptado.
Os testes de caixa preta estão focados na funcionalidade externa do software, sem a
necessidade de conhecer a estrutura interna do código. Os testadores avaliam o comportamento
do software com base nos requisitos e nas entradas especí�cas.
Por outro lado, os testes de caixa branca examinam o código-fonte interno do software. Os
testadores e/ou desenvolvedores projetam casos de teste com base na estrutura do código e na
lógica subjacente. Isso ajuda a identi�car possíveis erros de programação e garante que todas as
partes do código sejam testadas minuciosamente.
Ambos os tipos de testes são executados manualmente em cima de uma versão executável do
software, não sendo obrigatório que ele esteja 100% concluído, mas que tenham alguns �uxos já
criados, como o log in em uma plataforma.
Em conclusão, a compreensão dos fundamentos das técnicas de teste de software, integradas
ao processo mais amplo de Veri�cação e Validação (V&V), é essencial para garantir a qualidade
e con�abilidade dos sistemas de software. Lembre-se que a diversidade de tipos e níveis de
Disciplina
Testes e Manutenção de Software
testes, como os testes de unidade, caixa preta e caixa branca, desempenham papéis cruciais em
diferentes estágios do desenvolvimento.
Compreendendo melhor os termos
Os testes de software fazem parte do conceito V&V. De acordo com Pressman & Maxim (2021, p.
373) esses conceitos podem ser de�nidos como: “Veri�cação refere-se ao conjunto de tarefas
que garantem que o software implemente corretamente uma função especí�ca. Validação refere-
se ao conjunto de tarefas que asseguram que o software foi criado e pode ser rastreado segundo
os requisitos do cliente”.
Outro ponto que deve ser compreendido e reforçado é a diferença entre erro, defeito e falha. O
erro, ou engano, pode ser descrito como uma interação humana que resulte em algo não
desejado no sistema. O defeito é uma inconsistência na implementação do programa. Já a falha
é a realização do defeito ou vários defeitos. É importante notar que se algo estiver implementado
incorretamente, mas nunca for utilizado, nunca resultará em uma falha (Gonçalvez et al., 2019).
Disciplina
Testes e Manutenção de Software
Figura 2 | Relação erro, defeito e falha. Fonte: elaborada pelo autor.
Outra coisa que você deve compreender são os casos de testes. Na maioria das técnicas de
testes, são planejados cenários ou casos que serão testados, tentando cobrir todos os �uxos
possíveis do sistema, incluindo casos em que esperamos que o sistema retorne um erro.
Para que os testes sejam criados corretamente, deve-se primeiro analisar a função, identi�cando
quais dados ela aceita como entrada e quais são as possíveis saídas. A partir disso, os casos de
testes e os resultados esperados podem ser elaborados.
Tomando como exemplo o cenário da calculadora, e que uma de suas funções no código é
responsável apenas por somar dois números, um caso de teste para essa função seria: ao
receber dois números inteiros e positivos, a função deve retornar um número inteiro equivalente à
soma. Outro caso de teste seria quando a função recebe um número inteiro positivo e um
número inteiro negativo, resultando em diferentes possibilidades: o retorno pode ser um número
negativo, um número positivo, ou zero.
Usualmente, os testes unitários são con�gurados para serem executados automaticamente em
determinados momentos, como no �nal do processo de compilação.
O método da caixa preta é valioso para veri�car se o software atende aos requisitos
especi�cados, ou seja, se o programa está fazendo o que foi solicitado pelo cliente, sem
necessariamente importar-se com a maneira como é feito internamente, então pode-se dizer que
o teste de caixa preta se foca nos requisitos funcionais (Pressman & Maxim, 2021, p. 388).
Retomando o exemplo da calculadora, se um dos requisitos do cliente é que o programa some
dois números, no teste de caixa preta, o foco está na veri�cação se, ao digitar os números para a
soma, o programa apresenta a resposta correta na tela.
Disciplina
Testes e Manutenção de Software
Já nos testes de caixa branca, a ênfase está na estrutura do código. Essa abordagem é e�caz
para identi�car falhas na implementação e garantir que todas as partes do código sejam
testadas minuciosamente. Aqui, é necessário criar casos de testes olhando o �uxo do código do
programa, considerando quais são os dados de entrada, por quais funções esses dados devem
passar e como devem se comportar dependendo do seu tipo, e qual é o retorno esperado
(Gonçalvez et al., 2019, p. 38).
No exemplo da calculadora, o resultado correto na tela não é o su�ciente para aceitar o sucesso
do teste, pois além de mostrar o resultado correto na tela, os números recebidos devem passar
pelas funções corretas e seremtratados da maneira como foi planejado, caso contrário o teste
pode ser considerado como um teste falho.
Em resumo, podemos então dizer que o defeito é a concretização da falha e o erro e a interação
do usuário com esse defeito, além disso para que os testes possam trazer os melhores
resultados é necessário a elaboração criteriosa dos casos de testes, lembre-se disso!
Criando Casos de testes
No exemplo da calculadora, o V&V pode ser aplicada considerando a seguinte perspectiva: a
veri�cação, realizada antes e durante o desenvolvimento do código e dos testes, assegura que a
calculadora faça corretamente o que foi elencado nos requisitos. Já a Validação certi�ca-se de
Disciplina
Testes e Manutenção de Software
que a calculadora atende às reais necessidades dos usuários, ou seja, se o produto entregue para
o cliente é de fato uma calculadora funcional.
Considerando que o usuário cometeu um erro ao digitar os números 5,5 e 6,5 para realizar a
soma e obteve como resultado 11. Essa falha ocorreu porque, ao executar a função de soma,
apresentada na Figura 4, o código possui um defeito ao aceitar apenas números inteiros como
entrada, desconsiderando os valores da casa decimal e usando apenas a parte inteira para
calcular a soma.
Atualmente, há diversas linguagens de programação no mercado com bibliotecas e frameworks
para a criação de testes unitários, como o Junit em JAVA, Pytest em Python, Nunit em C#, entre
outros.
Cada uma dessas bibliotecas possui suas especi�cidades na hora de con�gurar e executar os
testes. O código abaixo mostra um exemplo de teste unitário para o cenário da função de soma
da calculadora, utilizando o Junit em JAVA.
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CalculadoraTest {
@Test //Anotação que indica a função como um teste
public void testSoma() {
//Aqui é criada uma instância para meu Objeto da calculadora
Calculadora calc = new Calculadora();
//ASSERTEQUALS é uma função presente na biblioteca do JUnit que recebe dois
parâmetros,
//indicando para o JUnit se a comparação dos mesmos é verdadeira ou falsa.
//Nesse caso estamos passando o número 4 (resultado esperado)
//e o resultado da função somar (Resultado obtido)
//se ambos foram iguais, o teste foi aprovado.
assertEquals(4, calc.adicao(2, 2));
}
}
Ao contrário de outros testes e até mesmo do teste de caixa branca, para os testes de caixa preta
não é necessário conhecimento em programação. Veja agora o caso de teste para a operação de
soma da calculadora.
Caso de teste 1: Dados de entrada 2 e 3. Resultado esperado: 5
Caso de teste 2: Dados de entrada −2 e 5. Resultado esperado: 3
Caso de teste 3: Dados de entrada 0 e 0. Resultado esperado: 0
Com os casos de testes criados, basta utilizar a calculadora desenvolvida, inserir os dados
selecionados e veri�car se o resultado exibido é igual ao resultado esperado.
Passando para os testes de caixa branca, é necessário analisar o código da função e seus �uxos,
como mostrado no trecho de código logo a seguir:
Disciplina
Testes e Manutenção de Software
public static Object adicao(int a, int b) {
if (ao banco de dados corretamente. Para
termos essa garantia utilizamos os testes de integração. Segundo Pressman & Maxim (2021):
O teste de integração é uma técnica sistemática para construir a arquitetura de
software, ao mesmo tempo em que se realizam testes para descobrir erros
associados às interfaces. O objetivo é construir uma estrutura de programa
determinada pelo projeto a partir de componentes testados em unidade.
Após ter sido garantido que as unidades do sistema estejam funcionando de maneira integrada,
pode-se dizer que temos em mãos uma versão prévia do sistema, em que conseguimos ver
rotinas funcionando por completo. A partir disso você deve começar a pensar: está funcionando,
Disciplina
Testes e Manutenção de Software
mas será que era isso que o cliente queria? Tendo essa ideia em mente, você pode utilizar outra
técnica de testes para fazer essa validação, a técnica de testes de aceitação.
A frase de Valente (2021, cap. 8) traz uma sumarização do que é essa técnica: “São testes
realizados pelo cliente, com dados do cliente. Os resultados desses testes irão determinar se o
cliente está de acordo ou não com a implementação realizada”. Sendo assim, essa técnica de
testes foca mais em garantir que os requisitos do sistema estão corretos, do que encontrar
falhas.
Por �m, o último tópico que será abordado nesta aula será os testes de sistemas, que seria mais
um nível de teste do que uma técnica, visto que aqui dentro podem ser feitos diversos testes.
Segundo Zanin & Morais (2017), o teste de sistema é o tipo de testes mais comum nas
empresas, constituindo-se como uma avaliação completa do sistema em seu conjunto,
veri�cando sua funcionalidade global, feito, usualmente, de maneira manual.
Conforme orientação do conselho brasileiro de quali�cações de software, o Brazilian Software
Testing Quali�cations Board – BSTQB, os testes de sistemas vão além da funcionalidade,
trazendo testes não funcionais para validar características que vão além do funcionamento direto
do sistema, tópicos como a usabilidade, segurança, e�ciência de performance, também são
avaliados (BSTQB, 2023). Em resumo, os testes de sistemas representam a avaliação �nal e
abrangente do software, englobando tanto aspectos funcionais quanto não funcionais.
Em conclusão, os testes de integração garantem uma arquitetura sólida, enquanto os de
aceitação buscam a conformidade com os requisitos do cliente. Já os testes de sistemas
representam a avaliação completa, abordando tanto aspectos funcionais quanto não funcionais.
Se aprofundando nas camadas de testes
Disciplina
Testes e Manutenção de Software
O teste de integração está a um nível acima dos testes de unidade, pois seu objetivo é focar nas
diferentes unidades do sistema e veri�car se elas integram corretamente umas com as outras.
Considere novamente o exemplo da calculadora, você terá funções responsáveis pelas
operações básicas, e um módulo responsáveis por capturar e mostrar os dados da tela e enviar
para as funções básicas.
O teste de unidade considera cada uma dessas funções individualmente, mas o teste de
integração irá analisar e desenhar o caso de teste considerando mais de uma função. Então você
terá, por exemplo, um teste que irá receber os dados do input, tratar eles conforme desejado,
enviar para uma função de operação matemática, tratar o resultado de retorno e mostrar na tela
novamente. A Figura 1 traz esse comparativo entre o teste de unidade e o teste de integração.
Figura 1 | Diferenciando teste unitário do teste da integração. Fonte: elaborada pelo autor.
Lembrando que o teste de integração pode ser feito integrando duas funções apenas, ou como
no exemplo, em mais de uma função, desde que elas possam ser consideradas um módulo.
Disciplina
Testes e Manutenção de Software
Vimos que o teste de aceitação é feito com o cliente presente observando ou pelo próprio cliente,
simulando, com a maior precisão possível, o contexto real a qual o sistema irá rodar, em que o
cliente irá validar os requisitos do sistema e dar sua aprovação ou rejeição. Usualmente os testes
de aceitação são executados ao �nal do ciclo de desenvolvimento, podendo ser no �nal da sprint
do Scrum ou na entrega do produto no modelo cascata.
Suponha que um dos requisitos apresentados pelo cliente seja que a calculadora mantenha um
histórico das últimas cinco operações realizadas pelo usuário possa voltar para elas caso deseje,
então o sistema deve suprir esse requisito, caso contrário quando o cliente utilizar o sistema
notará que esse requisito não foi atendido, e solicitará alteração no sistema para implementar o
que foi pedido originalmente, ou seja, um teste de aceitação falhado.
Os testes de sistemas representam uma fase crucial no ciclo de vida do desenvolvimento de
software, visando avaliar a e�cácia do sistema como uma entidade completa. Por focar em
testar o sistema como um todo, a equipe de qualidade executa testes funcionais, ou seja, testes
focados na funcionalidade do sistema, feitos de maneira manual ou automatizada, em que o
testador, ou a ferramenta de automatização, pode utilizar o sistema em sua totalidade, ou focar
em uma tarefa especí�ca implementada pela equipe de desenvolvimento, buscando erros no
sistema.
Além desses testes funcionais, a equipe de qualidade pode desenhar testes para veri�car pontos
não funcionais, mas importantes para a qualidade e para o contexto que o sistema está inserido,
como utilizar o teste de carga, que será visto na próxima aula, para validar se o sistema web irá
aguentar uma carga elevada de visitas.
Lembre-se de que o teste de integração pode validar apenas duas funções ou, como
exempli�cado, de várias funções agrupadas como módulos. Além disso os testes de aceitação
são conduzidos em etapas �nais de desenvolvimento, permitindo que o cliente tenha uma visão
mais completa do produto. Por �m, os testes de sistemas avaliam além das funcionalidades a
capacidade do sistema suportar diferentes cargas de dados, evidenciando o compromisso com a
qualidade em diferentes dimensões.
Exempli�cando casos de testes
Disciplina
Testes e Manutenção de Software
Agora, começamos pelo teste de integração e usamos o exemplo conhecido da calculadora, mas
vamos adicionar mais uma camada, essa calculadora salva o histórico das operações do usuário
em uma tabela no banco de dados. Então agora temos três módulos: o módulo de E/S, o Módulo
de operações e o módulo de comunicação com o banco. Vamos descrever um caso de teste para
o salvamento das operações no banco.
Caso de teste 1: Salvar corretamente a operação
Dados de entrada: 3+5*8.
Resultado esperado: A operação: 3+5*8 bem como seu resultado deve aparecer na tabela
do banco.
Caso de teste 2: Carregar corretamente a operação
Dados de entrada: pedido de histórico do usuário
Resultado esperado: a lista com as operações deve ser carregada corretamente do banco,
para uma lista no código e retornar essa lista para a função de escrever na tela.
Quando estamos testando integrações de funções ou módulos que não possuem uma interface
com o usuário, esses casos de testes podem ser codi�cados em funções semelhantes as que
foram apresentadas na aula passada nos exemplos de testes unitários, caso contrário podem ser
feitos manualmente.
Sua empresa estipulou que logo que os testes de integração forem aprovados, e tivermos uma
prévia do sistema, temos que submetê-lo para um teste de aceitação, dito isso sua equipe
Disciplina
Testes e Manutenção de Software
marcou um encontro com o cliente. Durante o encontro você deixa o cliente interagir com o
sistema, apresentando quais requisitos já estão presentes na versão em questão.
No entanto, durante a reunião, o cliente encontra uma inconsistência, relacionada ao seguinte
requisito: a calculadora deve oferecer resultados precisos, evitando erros de arredondamento que
possam comprometer a precisão dos cálculos, deve-se considerar uma precisão de cinco casas
decimais. Contudo, o sistema só estava fazendo operações até duas casas decimais. Vocêvolta
da reunião com esse feedback do cliente e sua equipe começa a corrigir o erro para em evento
futuro possam fazer um novo teste de aceitação com o cliente.
Durante o desenvolvimento da calculadora, toda vez que uma nova funcionalidade ou um
requisito era implementado, um protótipo era enviado para a equipe de qualidade que executava
testes no sistema para veri�car suas funcionalidades, ou seja, testes funcionais, e a cada teste
executado era criado um relatório com as tarefas aprovadas, e as tarefas falhadas, detalhando o
motivo da falha.
Além disso, a equipe de qualidade também aplica outro teste para validar questões não
funcionais, então em todos os protótipos recebidos a equipe aplica testes de usabilidade, para
garantir que a calculadora se mantenha amigável ao usuário e aos testes de performance, para
garantir que não ocorram travamentos ou lentidões na execução de cálculos.
Neste exemplo da calculadora, testamos a comunicação entre módulos, validamos requisitos
com o cliente e asseguramos precisão nos cálculos. A sinergia entre os testes de integração,
aceitação e os funcionais e não funcionais culmina em um produto robusto e con�ável. Dessa
maneira, �nalizamos o conteúdo desta aula! Bons estudos!
Videoaula: Técnicas de testes I
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo apresentarei a você o teste que está a um nível acima do teste de
unidade, o teste de integração, que se destaca em avaliar a interação entre diferentes partes do
sistema. Além disso, você também verá que o teste de aceitação é uma etapa crucial no qual o
cliente coloca o software à prova. E por �m, o vasto mundo dos testes de sistemas, um nível que
abrange a avaliação completa do software, indo além das funcionalidades.
Saiba mais
Disciplina
Testes e Manutenção de Software
Quer se aprofundar mais sobre os novos testes vistos nesta aula e o seu papel dentro do ciclo de
software? O livro Testes de software e gerência de con�guração, traz o capítulo Níveis de teste,
que pode te interessar. O livro pode ser acessado neste link:
Vai lá e dá uma conferida! Vale muito a pena!
Está gostando da área de testes e quer se aprofundar? Talvez até prestar a prova de certi�cação
internacional Certi�ed Tester Fundation Level – CTFL?
Referências
https://integrada.minhabiblioteca.com.br/reader/books/9788595029361/pageid/74
https://integrada.minhabiblioteca.com.br/reader/books/9788595029361/pageid/74
https://bstqb.org.br/b9/ctfl
https://bstqb.org.br/b9/ctfl
Disciplina
Testes e Manutenção de Software
BRAZILIAN SOFTWARE TESTING QUALIFICATIONS BOARD – BSTQB. Certi�ed Tester Foundation
Level Syllabus. BSTQB, versão 4.0, 2023. Disponível em:
https://bcr.bstqb.org.br/docs/syllabus_ct�_4.0br.pdf . Acesso em: Acesso em: 18 nov. 2023.
MORAIS, I. S.; ZANIN, A. Engenharia de software. Porto Alegre: SAGAH, 2017. Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/9788595022539/. Acesso em: 18 nov. 2023.
Valente, M. T. Engenharia de software moderna. 2021 Disponível em:
https://engsoftmoderna.info/cap8.html. Acessado em: 18 nov. 2023.
Aula 3
Técnicas de testes II
Introdução
https://bcr.bstqb.org.br/docs/syllabus_ctfl_4.0br.pdf
https://integrada.minhabiblioteca.com.br/#/books/9788595022539/
Disciplina
Testes e Manutenção de Software
Olá, estudante! Seja bem-vindo a mais uma aula. Vamos explorar a fundo três técnicas vitais no
universo dos testes de software. O primeiro será teste de regressão que recebe este nome, pois
seu objetivo é garantir que as funcionalidades já implementadas e testadas se mantenham
funcional enquanto o sistema cresce.
O segundo será o teste de carga, uma técnica essencial para avaliar a capacidade do software
lidar com demandas crescentes e identi�car possíveis gargalos de desempenho e por �m,
veremos o teste de segurança, que tenta veri�car se os mecanismos de proteção são robustos o
su�ciente para aguentar ataques.
Então prepare-se para aprofundar seus conhecimentos e consolidar habilidades essenciais no
vasto campo dos testes de software.
Garantindo a solidez do software: uma jornada pelos testes de regressão,
carga e segurança
Disciplina
Testes e Manutenção de Software
Durante o desenvolvimento de um software a equipe, conforme avançava, aplicava testes nas
novas funcionalidades do sistema, corrigindo os problemas encontrados o mais rápido possível
para dar por encerrada aquela etapa, no entanto, em um estágio avançado de desenvolvimento
ao apresentar uma versão beta ao cliente percebeu que diversas funcionalidades antigas não
estavam mais funcionando, ou seja, o sistema regrediu.
Isso ocorreu, pois testavam apenas as novas funcionalidades inseridas e esqueceram de testar
se isso não impactaria no funcionamento do que já existia no sistema. Para evitar esse problema
a equipe pode utilizar a técnica chamada de testes de regressão, exempli�cado na Figura 1 e
descrito por Gonçalvez et al. (2019) como: “O teste de regressão é, via de regra, a realização de
todos os testes novamente, como se fossem a sua repetição.
Figura 1 | Ilustrando a regressão. Fonte: elaborada pelo autor.
Disciplina
Testes e Manutenção de Software
A cada vez que o software sofre uma modi�cação, todas as suas partes são testadas
novamente, a �m de identi�car problemas. Então, o teste de regressão é aplicado ainda na fase
de desenvolvimento do projeto, e por ser feito nessa fase ajuda a encontrar e corrigir problema
antes que se propaguem.
O teste de carga tem por objetivo, assim como o nome diz, testar que o sistema suporta
diferentes níveis de cargas ou em condições especí�cas, como o número simultâneo esperado
na aplicação. Muitas vezes os autores trazem o teste de carga como uma especi�cação do teste
de performance, destes, temos Gonçalvez et al. (2019) que dividem o teste de performance em
teste de carga, teste de estresse e teste de estabilidade.
Além disso, os autores de�nem o teste de carga como:
Veri�ca o software como um todo, em condições normais de uso, avaliando o tempo
de resposta das operações, quantas operações podem ser executadas em
determinado período de tempo, quantos usuários simultâneos gravando dados
podem existir, entre outros aspectos. (Gonçalvez et al., 2019, p. 181)
Resumindo, o teste de carga tem por objetivo principal identi�car os limites e as capacidades do
sistema, identi�cando quais são os gargalos do sistema.
Outra técnica de muita importância dentro do processo de desenvolvimento de software são os
chamados "testes de segurança". Esse tipo de teste é frequentemente utilizado não apenas por
ser necessário proteger e garantir a segurança dos dados do usuário, mas também para garantir
a segurança da própria empresa contra eventuais ataques ao seu software por terceiros.
Segundo a cartilha versão 1.0 de 2016 de orientação para o certi�cado de Security tester da
própria BSTQB, os testes de segurança não podem garantir, com 100% de certeza, que um
sistema �que a salvo, mas eles ajudam a identi�car riscos e avaliar a e�cácia das defesas do
sistema.
Vale ressaltar que os testes de segurança são vastos e podem ser aplicados de diferentes
formas e em diferentes locais do sistema, indo desde a veri�cação de segurança em processos
simples como criptogra�a de senhas dos usuários, até a execução automatizada de ataques de
força bruta sobre vulnerabilidades conhecidas no mercado.
Para �nalizar, o percurso pelo desenvolvimento de software evidencia a relevância de abordagens
de teste abrangentes, e nestes, o teste de regressão destaca-se como uma salvaguarda
preventiva, prevenindo que alterações impactem negativamente em funcionalidades já validadas.
Enquanto isso, o teste de carga emerge como um indicador crítico de desempenho, revelando
limites e gargalos. Já os testes de segurança trazem a garantia da proteção dos dados da
empresa e do cliente.
Fortalecendo ociclo de desenvolvimento: explorando testes de regressão,
carga e segurança
Disciplina
Testes e Manutenção de Software
O teste de regressão é responsável por veri�car se o sistema mantém seu comportamento
correto, mesmo que receba alterações durante o processo de desenvolvimento. No entanto, para
que os testes de regressão sejam bem-sucedidos, é necessária uma estratégia bem de�nida,
pois se criarmos casos de testes de baixa relevância, ou que focam em partes do sistema que
não recebem atualização, será um gasto de tempo indevido.
Tendo isso em vista, é necessário mapear o sistema e criar casos de testes para os diferentes
�uxos, e a partir disso podemos implementar uma bateria de testes automatizados que serão
sempre executados da mesma maneira para garantir a estabilidade do sistema.
No entanto, também é possível executar os testes de regressão de maneira manual, e neste caso
�ca inviável cobrir todo o sistema, então para esses casos podemos assumir duas estratégias,
sendo que a primeira foca em aplicar o teste de regressão nos pontos mais críticos do sistema,
elencados previamente. Já a segunda estratégia foca em aplicar o teste focando nos �uxos que
podem ter sido afetados pelas alterações mais recentes. A escolha das estratégias deve ser
tomada conforme a necessidade e disponibilidade do seu time, mas lembre-se, quando mais
cobrir menor a chance de deixar passar algo.
Voltando para o teste de carga, vimos que ele serve para identi�car os limites e gargalos do
sistema, como ilustrado na Figura 2, então é por meio dele que iremos identi�car qual parte do
sistema apresenta um maior risco para o desempenho geral, e a partir disso podemos focar com
maior precisão os esforços para otimizar uma sessão especí�ca do sistema.
Disciplina
Testes e Manutenção de Software
Figura 2 | Gargalo no processamento da carga do sistema. Fonte: elaborada pelo autor.
A execução bem-sucedida do teste de carga começa com a de�nição correta dos cenários, visto
que um cenário mais desenhado pode resultar em testes com resultados errados, dando uma
falsa impressão de que o sistema irá aguentar uma carga, mas quando é liberado para o cliente,
não é o que acontece.
Usualmente os testes de cargas são feitos de forma otimizada, ainda mais se o sistema for
grande e suportar uma carga elevada de dados, sendo assim são utilizadas ferramentas para
auxílio, como o JMeter, que é uma ferramenta em java para simular muitos usuários virtuais e
monitorar o desempenho do sistema.
Ao elaborar os testes de segurança é necessário ter bem de�nido quais são os pontos que se
deseja veri�car a segurança e quais são os ativos valiosos para a empresa e a classi�cação de
sua con�dencialidade, como a empresa pode de�nir que uma documentação especí�ca só pode
ser acessada apenas por usuários que detêm uma determinada autorização, sendo assim uma
informação privada, então isso deve ser um dos pontos a ser testado.
Além disso, deve-se levar em conta o tipo de sistema que temos em mãos, visto que um sistema
web, que possui uma API Rest no backend precisa se preocupar com a validade de permissões
de acesso em cada endpoint, para não deixar nenhuma rota liberada, questão essa que uma
aplicação puramente desktop não precisa considerar, no entanto, essa aplicação já precisa se
preocupar com acesso de memória e injeção de arquivos nas pastas de instalação.
Resumindo, os testes de regressão podem ser aplicados de maneira automatizada ou manual,
aplicando duas estratégias que focam apenas nos pontos críticos, ou então nas funcionalidades
alteradas. No tocante ao teste de carga, sua execução e�caz depende da de�nição precisa de
Disciplina
Testes e Manutenção de Software
cenários, destacando-se a importância de ferramentas auxiliares para a simulação dos cenários.
Quanto aos testes de segurança, se deve sempre analisar o contexto a qual sua aplicação estará
inserida para projetar o teste.
Nos bastidores da calculadora: testando regressão, carga e segurança com
precisão
Vamos agora trazer os conceitos já vistos sobre testes de regressão para um cenário, o nosso
querido exemplo da calculadora. Suponha que durante o processo de desenvolvimento a cada
nova funcionalidade inserida testes eram feitos.
Em um determinado momento, foi implementada uma nova rotina responsável por limpar todo o
histórico das operações do usuário, uma melhoria em relação à opção já existente, de apagar
uma operação especí�ca do histórico. Nesse caso, um teste de regressão focado apenas na
nova funcionalidade inserida, seria retestar a rotina de apagar apenas uma operação do histórico,
inserir novas operações no histórico e visualizar as operações do histórico, e só se tudo isso
estiver ok, o teste de regressão estaria aprovado.
Agora se quiséssemos assumir a estratégia de testarmos apenas pontos críticos e não os
alterados, quais são os pontos críticos da nossa calculadora que não podem parar de funcionar?
Disciplina
Testes e Manutenção de Software
Fazer as operações corretamente, mesmo que o histórico tenha algum defeito, se as operações
ainda funcionam podemos assumir, para esse caso, que o teste de regressão foi aprovado.
Como já de�nimos em aulas anteriores, a nossa calculadora armazena o histórico de operações
no usuário e para isso o usuário precisa de logar no sistema. Considerando esse cenário
podemos ter o seguinte teste de carga aplicado:
Objetivo do teste:
Avaliar a capacidade de resposta da calculadora com o log in simultâneo de diversos usuários,
incluindo consultas no histórico de operações.
Cenário:
Usuários Simultâneos: 100.
Taxa de transações: 10 transações por segundo.
Duração: 30 minutos.
Fluxo:
Os usuários devem se logar no sistema de maneira concorrente, e executar operações
matemáticas na calculadora de maneira ininterrupta por um período de 30 minutos, e ao �m de
cada operação devem veri�car o histórico.
Métrica de avaliação:
Tempo de resposta dos resultados das operações e do retorno do histórico.
Utilização de recursos de máquina, como CPU, disco e memória.
Análise das taxas de erro, como falha no log in, atrasos ou falha no processo nos cálculos e no
retorno do histórico.
Após executar esse cenário de testes, deve-se analisar os relatórios gerados pela ferramenta,
assumindo que foi utilizado o JMeter, e veri�car se os dados condizem com o resultado
esperado, que deve ser previamente estipulado pela sua equipe.
Tendo testado diversos cenários de cargas e garantido o funcionamento regressivo do nosso
sistema, agora vamos focar na segurança. Um bom exemplo de testes de segurança que
podemos aplicar para a nossa calculadora é a injeção de SQL, visto que esta possui um campo
para digitação livre e acesso ao banco de dados. A injeção de SQL ocorre ao inserir uma consulta
em SQL para ver se o sistema possui algum tratamento para esse tipo de input. Se retornar à
consulta inserida, o sistema é falho.
Outro exemplo para o contexto da calculadora é o acesso ao histórico das operações, no qual o
testador deve tentar solicitar o histórico de operações de um usuário que não seja o dele, e se
conseguir, é uma vulnerabilidade de segurança que pode ser explorada para obter outros dados
além das operações. Seria possível �car dando exemplo de testes de segurança por longas
páginas, mas �caremos por aqui, visto que, como já mencionado, os testes de segurança variam
muito em relação ao tipo de sistema e aos dados valiosos que se deseja proteger.
No contexto da calculadora, foram abordados os testes de regressão, destacando a importância
de estratégias bem de�nidas para avaliar mudanças, exempli�camos casos de testes para a
adição de uma nova funcionalidade. Além disso, foi explorado um cenário de teste de carga,
avaliando a capacidade de resposta da calculadora com 100 usuários simultâneos realizando
operações e consultando o histórico. Por �m, foram introduzidas diferentes perspectiva de testes
de segurança, concentrando-se em exemplos como a injeção de SQL e o acesso indevido ao
histórico de operações.
Disciplina
Testese Manutenção de Software
Videoaula: Técnicas de testes II
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo vou apresentar para você três testes presentes dentro dos testes de
sistemas, sendo eles o teste de regressão, que garantem a estabilidade do software ao longo do
tempo, o teste de carga que avalia a capacidade do sistema sob demandas crescentes e
garantindo uma experiência do usuário consistente e o teste de segurança, que assegura a
robustez contra explorações maliciosas.
Saiba mais
Para entender melhor como os testes abordados em aula se encaixam no processo de testes,
recomendo a leitura do capítulo de tipos de testes do livro Teste de software e gerência de
con�guração, disponível na biblioteca virtual.
https://integrada.minhabiblioteca.com.br/reader/books/9788595029361/pageid/1
https://integrada.minhabiblioteca.com.br/reader/books/9788595029361/pageid/1
Disciplina
Testes e Manutenção de Software
Quer conhecer um pouco mais sobre o JMeter e sua abrangência de uso? Esse artigo traz um
exemplo de um projeto utilizando a ferramenta, que você pode seguir para ver como funciona.
Referências
BRAZILIAN SOFTWARE TESTING QUALIFICATIONS BOARD – BSTQB. Certi�ed Tester, Security
Tester Syllabus. BSTQB, versão 1.0, 2016. Disponível em:
https://bcr.bstqb.org.br/docs/syllabus_ct_sec_1.0br.pdf. Acesso em: 2 dez. 2023.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788595029361/.
Acesso em: 27 nov. 2023.
Aula 4
Testes em Metodologias Ágeis
Introdução
https://medium.com/@samuellucas/primeiros-passos-com-testes-de-performance-e-jmeter-a96b4db360ab
https://bcr.bstqb.org.br/docs/syllabus_ct_sec_1.0br.pdf
https://integrada.minhabiblioteca.com.br/#/books/9788595029361/
Disciplina
Testes e Manutenção de Software
Olá, estudante, seja bem-vindo a mais uma envolvente aula sobre o mundo dos testes.
Começaremos a abordar as Metodologias Ágeis e Automação, em que entenderemos como elas
proporcionam uma abordagem �exível e e�ciente no ciclo de desenvolvimento.
Em seguida compreenderemos os princípios e benefícios do Desenvolvimento Orientado a
Testes (TDD), Desenvolvimento Orientado a Funcionalidades (FDD) e Desenvolvimento Orientado
ao Comportamento (BDD). Essas abordagens moldam a maneira como desenvolvemos software,
garantindo que os testes sejam uma parte intrínseca do ciclo de vida do desenvolvimento.
Por �m exploraremos o Extreme Programming (XP), uma metodologia ágil focada em pequenas e
médias equipes para que elas possam colaborar de maneira e�caz, promovendo a simplicidade,
a comunicação, constantes e práticas que visam entregar software de alta qualidade.
Complementando essa abordagem, a inspeção foca na revisão sistemática do código-fonte,
buscando identi�car e corrigir possíveis problemas antes que impactem o produto �nal.
Prepare-se para aprofundar seus conhecimentos e consolidar habilidades essenciais no vasto
campo das metodologias ágeis e práticas de desenvolvimento de software.
Agilizando o desenvolvimento de software
Disciplina
Testes e Manutenção de Software
Nos primórdios do desenvolvimento de software notou-se a necessidade da criação de
processos estruturados de desenvolvimento para organizar e melhorar o processo de construção
de um software, visto que muitas empresas atrasavam a entrega de seus contratos, como
apontado por Valente (2021, cap. 2), que apresenta um estudo feito pela empresa Standish
Group, em que mostra que até 1994 mais de 55% dos projetos de software atrasaram o
planejamento inicial em 51% e chegando até em 200%.
Com o passar do tempo diversas metodologias foram surgindo como o modelo em cascata,
modelo em V, RUP, entre outros. No entanto, todos esses processos não são considerados
adaptativos, coisa que no processo de desenvolvimento atual é crucial, visto que requisitos
mudam a todo o momento.
Até que um grupo se forma para criar uma nova �loso�a e assim surgiu o Manifesto Ágil, um
documento contendo quatro valores e doze princípios para nortear as metodologias de
desenvolvimento ágeis. Para de�nir e sumarizar o que é um método ágil, podemos utilizar a
descrição de Morais & Zanin (2017, p. 80):
Em métodos ágeis, coloca-se o cliente como centro de todo o processo e, desta
forma, mudanças de requisitos e negociações com o cliente são bem-vistas o tempo
todo. Os métodos ágeis seguem a essência do modelo iterativo e incremental,
trabalhando com entregas contínuas e frequentes. Paralelo a isso, os métodos ágeis
acrescentam valores relacionados a tornar o espaço de trabalho colaborativo no
sentido de que todo o produto é responsabilidade de todos os membros do time.
Disciplina
Testes e Manutenção de Software
Tendo conceituado o que é métodos ágeis, podemos conhecer os diversos métodos ágeis
disponíveis, começando com o Test driven development (TDD) ou desenvolvimento orientado a
testes. Esse método tem como diretriz efetuar primeiro o planejamento e a programação do teste
e a partir disso programar as funcionalidades do sistema, e assim garantindo que a
funcionalidade será desenvolvida de forma correta conforme o que foi planejado.
Figura 1 | TDD. Fonte: elaborada pelo autor.
Outra metodologia é o Behavior Driven Development (BDD) ou desenvolvimento baseado em
comportamento, uma metodologia que visa estruturar o código do sistema a partir da descrição
do comportamento especi�cado pelo usuário nos requisitos (Morais e Zanin, 2017, p. 80).
Disciplina
Testes e Manutenção de Software
Figura 2 | BDD. Fonte: elaborada pelo autor.
Já a metodologia Feature Driven Development (FDD) ou desenvolvimento baseado em
funcionalidades, fragmenta os projetos de gestão em feature, que podem ser consideradas
funcionalidades que tem maior relevância para o cliente no contexto do software, e essas fatures
deverão receber mais atenção pela equipe de desenvolvimento do que o restante das
funcionalidades, sendo desenvolvidas em até duas semanas (Maschietto et al., p. 136).
Além dessas metodologias temos outras metodologias e frameworks no mercado, alguns
inclusive que fazem uso de alguma dessas metodologias já citadas anteriormente, um exemplo é
o framework XP (Extreme Programming).
Esse framework descreve um conjunto de regras e práticas que são aplicadas em cima de quatro
atividades principais: Planejamento, Projeto, Codi�cação e Testes (Pressman e Maxim, 2021, p.
46). Essas atividades são executadas em ciclos incrementais, ou seja, no �m de cada ciclo um
protótipo do sistema em um estado de desenvolvimento mais avançado que no ciclo anterior.
Concluindo, conceituamos o manifesto ágil que norteia o desenvolvimento ágil, que possui uma
abordagem centrada no cliente, promovendo mudanças contínuas nos requisitos e nas entregas
iterativas. Vimos também os métodos TDD, BDD e FDD, que oferecem diretrizes especí�cas para
o desenvolvimento orientado a testes, comportamento e funcionalidades. Por �m, vimos um o XP
que possui quatro atividades executadas em ciclos incrementais.
Disciplina
Testes e Manutenção de Software
Explorando os fundamentos e métodos ágeis: padrões, ciclos e práticas no
desenvolvimento de software
O manifesto ágil apresenta quatro valores que de�nem o desenvolvimento ágil, conforme a
Figura 1. Podemos ler cada linha como: Software em funcionamento mais que documentação
abrangente. Interpretando assim: Em uma metodologia ágil é mais importante focarmos a
energia da equipe na entrega de um software funcionando corretamente do que criar uma
extensa documentação, mas a documentação ainda deve ser criada, só não será o foco principal.
Essa interpretação pode ser aplicada para os outros valores.
Disciplina
Testes e Manutenção de Software
Figura 3 | Valores do manifesto ágil. Fonte: elaborada pelo autor.
Além dissoos métodos ágeis têm por características criar ciclos curtos de desenvolvimento,
sendo que no �m de cada ciclo o sistema recebe um incremento de funcionalidade. A �gura a
seguir representa isso.
Figura 4 | Desenvolvimento usando um processo ágil. Fonte: Valente (2021, cap. 2).
Pressman e Maxim (2021) trazem a Figura 5 para exempli�car o funcionamento do TDD. Antes
de ser criado o primeiro código do sistema, os desenvolvedores planejam e implementam os
testes, para então �nalmente implementar o código da funcionalidade, lembre-se de que nunca
se deve codi�car funcionalidades que não tenham testes já implementados. Depois da
Disciplina
Testes e Manutenção de Software
funcionalidade estiver criada, o teste é aplicado, se ocorrer tudo bem segue-se o processo, caso
contrário volta e corrige a funcionalidade e assim por diante.
Figura 5 | O �uxo de desenvolvimento guiado por teste. Fonte: Pressman e Maxim (2021, p. 598).
Já o BDD tem por objetivo melhorar a comunicação na equipe, e inclusive pode conter dentro de
si o TDD. A ideia do BDD é que assim que seja entendido o comportamento de uma
funcionalidade, é feita uma reunião entre os membros da equipe (Desenvolvedores, QA e outros
membros), para que seja feito um entendimento do que deve ser testado, o porquê de um teste
falhar e onde iniciar os testes, sendo assim o BDD traz uma melhoria na comunicação, uma visão
melhorada do todo e uma documentação mais dinâmica.
Por �m o FDD, trabalha com o conceito de funcionalidades tendo dentro de si cinco processos:
Desenvolver um modelo geral: é feita uma análise geral dos requisitos e criado um modelo
abrangente do sistema.
Criação da lista de funcionalidades (Features): o modelo geral é destrinchado em uma lista
de funcionalidades.
Planejamento por funcionalidade: são planejadas as equipes responsáveis.
Disciplina
Testes e Manutenção de Software
Modelagem por funcionalidade: é feita a modelagem a nível de diagramas e código, criando
as classes, métodos e atributos da funcionalidade.
Construção por funcionalidade: efetivamente é feito a codi�cação da funcionalidade, testes
e no �m, o lançamento.
Uma representação visual dessas etapas pode ser vista na Figura 6.
Figura 6 | O �uxo de desenvolvimento guiado por teste. Fonte: elaborada pelo autor.
O framework XP, traz quatro atividades que são executadas em ciclos incrementais. A Figura 4
ilustra essas atividades junto com seus conceitos-chaves. A atividade de planejamento começa
com o “ouvir” o usuário, resultando em “histórias” que descrevem o resultado e as
funcionalidades pedidas pelo cliente. A partir disso clientes e desenvolvedores trabalham juntos
para decidir a prioridades das históricas para cada ciclo.
A atividade do projeto segue o princípio Keep it simple, stupid! (KISS), em resumo, não complique,
foque em fazer apenas o especi�cado, sem criar ou manter coisas que talvez sejam usadas no
futuro. Além disso são utilizados cartões CRC (classe-responsabilidade-colaborador), que
ajudam a exempli�car o sistema no contexto de orientação a objeto.
Disciplina
Testes e Manutenção de Software
Figura 7 | Processo do XP. Fonte: Pressman e Maxim (2021, p. 46).
A atividade de codi�cação é onde as histórias são traduzidas para código efetivamente, mas
antes disso são criados os testes, pois um dos princípios da XP é utilizar a metodologia TDD.
Além disso a programação em pares é bastante incentivada na equipe.
Por �m a atividade dos testes consiste em aplicar os testes no sistema, inclusive o teste de
aceitação com o cliente, a qual irá avaliar se o sistema está de acordo com as histórias
elencadas para aquele ciclo. Se estiver tudo correto, uma versão é lançada, um ciclo é encerrado
e outro é iniciado, seguindo assim até o �m do projeto.
Disciplina
Testes e Manutenção de Software
Nesse bloco vimos os pilares do manifesto ágil, explicando sua importância na priorização de
valores no desenvolvimento de software. Além disso, explora métodos ágeis como TDD, BDD,
FDD e XP, destacando suas abordagens e práticas. Os ciclos curtos e incrementais, a
comunicação efetiva da equipe e o foco na entrega de funcionalidades relevantes ao cliente são
aspectos-chave dessas metodologias.
Nos bastidores da calculadora: testando regressão, carga e segurança com
precisão
Considere que a sua equipe foi contratada para desenvolver um sistema de umacalculadora web,
sendo necessário o desenvolvimento FrontEnd, BackEnd e banco de dados. Além disso, lembre-
se de que os princípios das metodologias ágeis são a utilização de ciclos de desenvolvimentos
curtos, onde no início de cada ciclo são planejadas as tarefas que serão executadas, mas sempre
estando aberto a mudanças que o cliente possa sugerir durante o processo. Independente da
metodologia que sua equipe escolha para o desenvolvimento, a primeira etapa sempre deve ser
uma conversa com o cliente para entender suas necessidades.
Caso você tenha optado por utilizar apenas o TDD no seu processo, o que deve ser feito?
Primeiramente deve-se identi�car as funcionalidades ou os requisitos do sistema, que foram
coletados durante a conversa com o cliente, e então começar a codi�car os testes, por exemplo a
função de somar, no qual o teste pode ser visto a seguir:
@Test
public void testSomar() {
Disciplina
Testes e Manutenção de Software
Calculadora calculadora = new Calculadora ();
int resultado = calculadora.somar(2, 3);
assertEquals(5, resultado);
}
E depois que temos o teste pronto, cobrindo todas as possibilidades de entradas e saídas da
função somar, codamos efetivamente a função.
public int somar(int a, int b) {
return a + b;
}
Agora caso você opte por utilizar o BDD, você deve fazer inicialmente uma reunião com todos os
membros da equipe para que todos estejam na mesma página em relação ao que é o projeto.
Após isso são criados os cenários do projeto usando o padrão: Given, When, then, ou em
português: dado, quando, então. Para �car mais fácil de entender olhe o exemplo a seguir sobre o
cenário de soma:
Given a calculadora
When eu somo 3 e 3
Then o resultado deve ser 6
A partir desses cenários, criamos os testes da aplicação, os quais podemos utilizar bibliotecas
especializadas como o cucumber em JAVA para facilitar o trabalho, e só então começamos a
implementar as funcionalidades.
Se você optou por utilizar o FDD, após a reunião com o cliente deve-se criar um modelo geral com
as funcionalidades da calculadora como todas as funções responsáveis pelas operações
matemáticas, funções de interação com o usuário, as funções de interação e gerenciamento do
banco de dados.
Após, deve-se listar essas funcionalidades como tarefas de desenvolvimento e planejar sua
execução, um exemplo seria a função de soma que deve ser planejada e atribuída a um time que
iniciará o desenvolvimento da funcionalidade e logo após dos testes, para no �m apresentar ao
cliente.
Por �m, caso sua equipe decida utilizar o XP, o planejamento se dará em ciclos curtos (até duas
semanas), por exemplo, sua equipe após conversar com o cliente decidiu que a primeira coisa
que será implementada será a interface FrontEnd, então nesse primeiro ciclo, é feito o
planejamento, a divisão de tarefas e o implementação dos testes, a�nal o XP utiliza TDD,
desenvolvimento da funcionalidade com ênfase na prática de programação em pares, para no �m
fazer o teste de aceitação do sistema até o momento, ou seja, da interface.
Ao encerrar o primeiro ciclo, inicia-se o planejamento do segundo, que nesse nosso exemplo será
a implementação das funções de operações matemáticas, no qual repetiremos os mesmos
passos do ciclo anterior, planejando, dividindo tarefas, implementando os testes, implementando
as funcionalidades e apresentando o cliente. Essas atividades se repetem até que todos os
requisitos pedidos pelo cliente estejam �nalizados e a entrega do produto for feita.
Nesse texto vimos que existem diversos processos de metodologias ágeis disponíveis para o
uso, e que cada um possuisuas especi�cidades de uso, a escolha de qual processo sua equipe
vai utilizar irá depender das necessidades da equipe e da adaptação ao processo, pois membros
da equipe podem não se adaptar ao XP por exemplo e se sentirem mais confortáveis em usar o
Disciplina
Testes e Manutenção de Software
SCRUM, outra metodologia ágil que não abordamos nesta aula. Então análise as necessidades
da sua equipe e escolha a metodologia mais próxima das necessidades.
Bons estudos!
Videoaula: Testes em Metodologias Ágeis
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Bem-vindos ao nosso vídeo sobre Metodologias Ágeis! Além de conhecermos o Manifesto Ágil,
que originou todo o movimento, exploraremos as diferenças entre os processos de TDD, FDD e
BDD e como cada um pode ser utilizado para aprimorar o desenvolvimento e garantir a qualidade.
Você também irá descobrir como o XP contribui para entregas rápidas e de qualidade. Então
prepare-se e vamos mergulhar nesse universo de práticas ágeis para impulsionar seus projetos!
Saiba mais
Disciplina
Testes e Manutenção de Software
Ficou curioso sobre o manifesto ágil? Leia ele na íntegra em:
https://agilemanifesto.org/iso/ptbr/manifesto.html.
Quer se aprofundar mais em Extreme programming (XP), conhecendo melhor seus princípios e
valores? O capítulo 2.3 do livro Engenharia de software moderna, de Valente, traz um bom
detalhamento sobre o tema.
Para criar esta aula, a leitura do livro: Processos de desenvolvimento de software, foi bem útil,
principalmente o capítulo: Test-driven development, na página 205. Se quiser saber mais sobre
TDD, recomendo a leitura. O livro está disponível na biblioteca virtual.
Referências
https://agilemanifesto.org/iso/ptbr/manifesto.html
https://engsoftmoderna.info/cap2.html
https://integrada.minhabiblioteca.com.br/reader/books/9786556900520/pageid/204
Disciplina
Testes e Manutenção de Software
MORAIS, I. S.; ZANIN, A. Engenharia de software. Porto Alegre, SAGAH, 2017. Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/9788595022539/. Acesso em: 3 dez. 2023.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software. Porto Alegre: AMGH, 2021.
VALENTE, M. T. Engenharia de software moderna. 2021 Disponível em:
https://engsoftmoderna.info/cap8.html. Acesso em: 3 dez. 2023.
Aula 5
Revisão da unidade
Testes de software: a chave para qualidade
https://integrada.minhabiblioteca.com.br/#/books/9788595022539/
Disciplina
Testes e Manutenção de Software
Olá, estudante! Vamos iniciar relembrando que as técnicas de testes de software são utilizadas
para identi�car defeitos, erros e falhas, a �m de garantir a qualidade do software entregue ao
cliente. Mas não �que achando que basta abrir o sistema quando ele estiver pronto para tentar
encontrar um Bug, existem diversas técnicas de testes que devem ser aplicadas em diferentes
etapas das processo de desenvolvimento do sistema. Conforme pode ser visto na Figura 1.
Disciplina
Testes e Manutenção de Software
Figura 1 | Espiral de testes. Fonte: Presman e Maxim (2021, p. 375).
No primeiro nível está o teste de unidade que é construído ainda durante a fase de
desenvolvimento, pois foca-se na veri�cação isolada da menor unidade do sistema, a função. Ao
desenhar esses testes podemos seguir dois conceitos, caixa branca, na qual a pessoa que
desenha o teste unitário conhece o código do sistema e cria casos de testes para cobrir todas as
linhas. Mas você também pode seguir com a ideia de caixa preta, no qual quem escreve os casos
de testes, não possui conhecimento do código, criando os casos baseados apenas nos
requisitos do sistema.
No nível acima dos testes unitários temos os testes de integração, tendo o seu propósito de�nido
como: encontrar problemas gerados a partir da integração dos diferentes componentes ou das
unidades do software (Gonçalvez et al., 2019).
Subindo mais nos níveis dos testes, temos o teste de validação, ou também chamados de teste
de aceitação, o qual valida os requisitos do cliente. Usualmente esse teste é aplicado na fase
�nal do ciclo de desenvolvimento, seja nos métodos ágeis, ou em métodos sequenciais. Nesses
testes os usuários selecionados, recebem a tarefa de simular todas as operações que o sistema
deve executar de maneira rotineira (Gonçalvez et al., 2019).
No último nível você encontrará o teste de sistema. Esses testes estão no último nível não por
serem feitos por último no processo, mas sim pois testarem questões mais elevadas no conceito
do software. Esses testes são os mais comuns utilizados nas empresas, segundo Morais e Zanin
(2017), e testam questões funcionais como os requisitos e as questões não funcionais, como
desempenho, carga e segurança.
Aproveitando o gancho, dos testes de carga validam o sistema em situações normais de uso,
avaliando atraso no tempo de resposta e o número de operações suportadas (Gonçalvez et al.,
2019). Resumindo, eles identi�cam gargalos, vazamentos de memória e garantem a estabilidade
em situações de demanda intensa.
Disciplina
Testes e Manutenção de Software
Já o teste de segurança tenta veri�car se as linhas de defesa implantadas no sistema vão
protegê-lo contra ataques (Presman e Maxim, 2021). Diferentes testes podem ser aplicados
baseados no contexto de cada sistema, por exemplo, softwares que não possuem controle de
log in, não precisam se preocupar com testes relacionados à quebra de senha por força bruta.
Os testes de regressão são aplicados após alterações no código para garantir que as
modi�cações não afetem negativamente as funcionalidades existentes. Essenciais para evitar
retrocessos não intencionais.
As metodologias ágeis surgiram a partir do manifesto ágil que de�ne valores e pilares para
orientar os processos em equipes ágeis. Alguns exemplos são o TDD que envolve a criação de
testes antes do código, garantindo que cada funcionalidade seja validada. O BDD que alinha
desenvolvedores, testadores e partes interessadas na criação de testes baseados no
comportamento esperado do sistema. E por �m, o FDD que fragmenta projetos em features,
priorizando as funcionalidades mais relevantes. Além disso também conceituamos o Extreme
Programming (XP) uma metodologia ágil que enfatiza práticas como programação em pares,
desenvolvimento incremental e feedback contínuo.
Concluindo, a integração e�caz de diversas práticas de teste ao longo do ciclo de vida do
desenvolvimento, aliada a metodologias ágeis e à automação, é essencial para garantir a
qualidade e a con�abilidade dos softwares modernos. A partir desses entendimentos
apresentados você já tem o conhecimento necessário para aplicar esses conceitos no seu dia a
dia como membro de uma equipe de qualidade.
Videoaula: Revisão da unidade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante! Neste vídeo iremos ver o universo dos testes de software! Abordarei testes, desde
as menores unidades, passando pelas integrações, encarando a aceitação do usuário e testando
o sistema olhando para questões funcionais e não funcionais. Além disso, apresentarei métodos
ágeis como o TDD, FDD e BDD, bem como práticas como XP. Explore neste vídeo os detalhes que
moldam a qualidade do código e do sistema como um todo. Aproveite.
Estudo de caso
Disciplina
Testes e Manutenção de Software
Tendo visto várias técnicas de testes de software e métodos de desenvolvimento ágil vamos
tentar aplicar esses conceitos aprendidos nas aulas, contextualizando a sua aprendizagem
colocando-o em um cenário �ctício. Imagine a seguinte situação, você foi recrutado para liderar
uma equipe de qualidade em uma empresa no ramo de investimento, sendo que seu principal
produto é uma plataforma web voltada para investimentode renda variável. Essa empresa já
possui um tempo de mercado e por isso já possui sua cultura já enraizada, ou seja, já possui
processos de�nidos com os quais as equipes já estão familiarizadas e de certo modo
confortáveis. Com seu crescimento recente a gerência notou que era necessário a criação de
uma equipe de qualidade.
Após se enturmar com a equipe você recebe o briea�ng sobre o que é esperado da sua equipe:
“A nossa empresa tem a cultura de produzir com velocidade e sempre lançar novidades para o
cliente, nunca passamos mais do que duas semanas sem lançar uma atualização com
novidades, só que a satisfação do cliente está baixa e a principal reclamação são os bugs
ocorridos e a quantidade de vezes que precisamos lanças versões com correções. Atualmente,
para manter um mínimo de qualidade toda vez que um Dev �naliza uma tarefa, ele cria um Merge
request (ou Pull Request, dependendo de como você conhece) e o código é avaliado por outros
dois colegas necessitando as duas aprovações para ir para a master, mesmo assim
funcionalidades que já estavam funcionando param de funcionar com frequência. Além disso,
precisamos garantir que o desempenho do sistema esteja �uido sem travamentos. Então
queremos que você organize a equipe de qualidade para sanar esses problemas, mas não
podemos utilizar um processo muito rígido e que atrase o lançamento das versões no formato
que já possuímos pois faz parte da nossa cultura. Um último detalhe é que estamos com poucos
desenvolvedores disponíveis no momento, então precisamos que os novos processos de
qualidade não consumam muito tempo deles”
Disciplina
Testes e Manutenção de Software
Utilize o brie�ng passado para planejar qual metodologia e quais técnicas de testes devem ou
podem ser aplicadas nessa nova empresa que você agora é membro. Identi�que os pontos-
chaves nesse brie�ng e utilize os conceitos das técnicas de testes e métodos ágeis para criar
soluções de qualidade para essa empresa.
___________
Re�ita
Este estudo de teste foi criado com base em uma ampla variedade de experiências empresariais
reais, e tem por objetivo fazer com que você consiga identi�car as demandas esperadas de sua
equipe de qualidade resultantes de uma interação com as lideranças de sua empresa, em um
cenário muito comum no dia a dia da qualidade, a resistência dos processos pela gerência.
O brie�ng apresenta demandas do que a liderança necessita de você, algumas dessas demandas
são claras e objetivas, outras podem estar escondidas ou ainda nem são conhecidas.
No entanto, lembre-se de que é necessário analisar não apenas o pedido pelos donos da
empresa, mas também veri�car se existem outras necessidades que você ache importante com
sua expertise de qualidade, bem como considerar as restrições impostas pela empresa, mesmo
que o cenário ideal seria ter um processo bem de�nido e aplicar mais de uma técnica de testes,
muitas vezes a empresa não consegue se acostumar e você deve se adaptar a isso, achando
alternativas para garantir cada vez mais níveis altos de qualidade de software.
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Começaremos analisando o brie�ng apresentado para identi�car as demandas e as restrições da
empresa. Logo na primeira frase temos o trecho: “produzir com velocidade” indicando que a
empresa já utiliza ou está aberta a utilizar conceitos ágeis. Na frase seguintes temos “duas
semanas sem uma atualização com novidades”, esse período descrito já passa uma indicação
do intervalo dos ciclos de desenvolvimento e pode-se utilizar isso para planejar um �uxo de
testes ou aplicar uma metodologia já estabelecida como o XP.
Contudo, em contradição a isso temos a frase “mas não podemos utilizar um processo muito
rígido”, então aqui temos que cuidar para planejar algo que não traga tanta rigidez ao processo,
então talvez utilizar todos os processos do XP não seja a melhor ideia pois no processo de
planejamento do ciclo temos a utilização de cartões CRC e outras técnicas que demandam mais
tempo, além disso, também é mencionado que a empresa possui poucos devs, então utilizar
programação em pares poderá atrapalhar a produção de código desejado pela gerência, então
optaremos por metodologias mais simpli�cadas como o TDD.
Disciplina
Testes e Manutenção de Software
Tendo o TDD de�nido os testes unitários devem ser implementados antes das novas
funcionalidades, contudo, para as funções que já existiam, quando elas sofrerem atualizações os
testes devem ser implementados. Inclusive pela frase: “Dev �naliza uma tarefa ele cria um Merge
request” podemos deduzir que a empresa utiliza um controle de versionamento como o GitLab,
assim pode-se criar uma rotina automatizada dentro do Git para sempre que uma Merge request
for submetido, os testes unitários serão executados automaticamente.
Seguindo na avaliação, temos agora: “mesmo assim funcionalidades que já estavam
funcionando param de funcionar”, aqui podemos identi�car a necessidade de teste de regressão.
Lembrando, os testes de regressão podem ser aplicados apenas em funcionalidades que
possam ser afetadas pelas atualizações ou elencar pontos críticos que nunca podem parar de
funcionar. Para esse cenário você pode utilizar as duas estratégias, mas de maneiras distintas.
Elenque junto com os líderes quais são as principais funcionalidades que devem se manter
funcionando a qualquer custo e que devem sempre ser testadas. Pelo sistema ser uma aplicação
web, você pode facilmente automatizar esses testes, com auxílio do Cypress por exemplo, e
executá-los para validar essas funcionalidades, além disso faça testes manuais de regressão
para as funcionalidades afetadas pela atualização.
O último pedido no brie�ng pode ser visto nessa frase “precisamos garantir que o desempenho
do sistema esteja �uido”, ou seja, você precisa aplicar uma técnica de testes de desempenho
como o teste de carga.
Agora você atendeu a todos os pedidos do brie�ng e conseguiu se adaptar à restrição, também
pode adicionar mais uma técnica que não estava na lista, os testes de sistemas, que serão feitos
manualmente por membros da equipe de qualidade em cima de cada tarefa listada para a
atualização.
Assim terminamos o nosso estudo de caso, espero que tenha gostado da ideia e que ela tenha
servido para exempli�car melhor a aplicação das diversas técnicas vistas em aula em uma
situação mais próxima da realidade.
Resumo visual
Disciplina
Testes e Manutenção de Software
Veja o resumo visual da unidade:
Disciplina
Testes e Manutenção de Software
Disciplina
Testes e Manutenção de Software
Referências
Disciplina
Testes e Manutenção de Software
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019. Disponível em: https://integrada.minhabiblioteca.com.br/#/books/9788595029361/.
Acesso em: 14 dez. 2023.
MORAIS, I. S.; ZANIN, A. Engenharia de software. Porto Alegre: SAGAH, 2017. Disponível em:
https://integrada.minhabiblioteca.com.br/#/books/9788595022539/. Acesso em: 14 dez. 2023.
PRESSMAN, R. S.; MAXIM, B. R. Engenharia de software. Porto Alegre: AMGH, 2021.
,
Unidade 4
Tipos, processos e qualidade de manutenção
Aula 1
Tipos de manutenção
Introdução
https://integrada.minhabiblioteca.com.br/#/books/9788595022539/
Disciplina
Testes e Manutenção de Software
Olá, estudante!
Bem-vindo à aula sobre os diferentes tipos de manutenção de software. Durante esta aula, serão
explorados os pilares fundamentais que sustentam a estabilidade e a evolução dos programas
utilizados diariamente. A importância desses conceitos vai além do simples ajuste de erros,
sendo a parte primordial para a funcionalidade e durabilidade dos softwares.
Você compreenderá como a manutenção corretiva, preventiva, adaptativa e evolutiva se
entrelaçam para garantir a e�ciência dos sistemas. O objetivo é capacitarvocê, estudante, com o
conhecimento necessário para identi�car problemas, prevenir falhas, adaptar-se a novos
requisitos e evoluir constantemente no mundo tecnológico.
Lembre-se, a compreensão desses conceitos é a base para construir uma carreira sólida em
desenvolvimento de software. Ao longo desta aula, será explorado exemplos práticos que o
ajudarão a se tornar um pro�ssional mais capacitado a enfrentar os desa�os do mundo digital
em constante transformação.
Bons estudos!
Fundamentos dos tipos de manutenção de software
Disciplina
Testes e Manutenção de Software
Diante de um mundo cada vez mais dominado pela tecnologia, garantir a melhor qualidade
possível dos softwares tornou-se uma necessidade fundamental no desenvolvimento de
sistemas. No entanto, manter essa qualidade se tornou um desa�o diante das novas exigências
que surgem no mercado pro�ssional.
Neste contexto, é crucial entender que um software, mesmo após sua conclusão no
desenvolvimento, não chega a ser �nalizado de�nitivamente. Lembre-se de que a tecnologia é
mutável e evolui a passos largos, e isso afeta diretamente os softwares. Mesmo quando
aparentemente concluídos, eles precisam se adaptar a essas mudanças para se manterem
relevantes e úteis no mercado. Assim, é introduzido o conceito da manutenção do software, um
processo contínuo geral de modi�cação de um software, mesmo após ter sido colocado em uso
[ISO/IEC 14764 1999].
Os tipos de manutenção de software surgem para servir de base para garantir a estabilidade,
con�abilidade e adaptabilidade dos programas que o mundo utiliza diariamente. Cada forma de
manutenção desempenha um papel essencial na gestão da qualidade do software ao longo do
tempo. Dentre os tipos de manutenção existentes, quatro se destacam: corretiva, preventiva,
adaptativa e evolutiva.
Manutenção corretiva
A manutenção corretiva concentra-se na identi�cação e correção de falhas e erros presentes no
software em uso. Segundo Filgueiras e Neto (2007), essa forma de manutenção é realizada sob
demanda, em decorrência a falhas identi�cadas após o software já estar em funcionamento.
Disciplina
Testes e Manutenção de Software
Em resumo, quando os usuários identi�cam um bug, erro de funcionamento ou falha no software,
a manutenção corretiva é aplicada para solucionar esses problemas.
Manutenção preventiva
A abordagem da manutenção preventiva visa evitar a ocorrência de falhas, problemas ou
de�ciências no software antes mesmo que se manifestem. Conforme mencionado por P�eeger
(2004), ao longo do ciclo de vida do software, ele tende a se deteriorar devido a modi�cações e
mudanças tecnológicas. Com isso, a implementação dessa abordagem visa corrigir
antecipadamente possíveis problemas que podem surgir no sistema, permitindo que o software
seja mais facilmente ajustado e corrigido.
Ao contrário da manutenção corretiva, que reage a problemas já existentes, a manutenção
preventiva busca identi�car e corrigir possíveis fontes de erro antes que impactem o
funcionamento do programa.
Manutenção adaptativa e evolutiva
Quando o ambiente no qual o software está inserido sofre mudanças, como atualizações de
sistemas, surge a necessidade de manutenção adaptativa. Conforme ressalta Sommerville
(2016), esse tipo de manutenção busca ajustar o software para operar de maneira e�caz em
novas condições, sem comprometer sua funcionalidade principal. Com isso, a manutenção
servirá para manter o software em funcionamento, após os ajustes.
Já a manutenção evolutiva é essencial para a adaptação do software sobre as demandas em
constante evolução dos usuários e do mercado. Dessa forma, os dois tipos de manutenção
mesclam-se sobre um objetivo similar: acompanhar as evoluções das tecnologias e adaptar o
software para que funcionem mediante tais modi�cações, aumentando sua vida útil, Sommerville
(2016).
Compreender esses conceitos é fundamental não apenas para o desenvolvimento inicial, mas
também para a manutenção contínua do software ao longo do tempo. Esses princípios são a
base para uma compreensão mais abrangente da engenharia de software, in�uenciando
diretamente a maneira como os pro�ssionais abordam desa�os em projetos reais. O
conhecimento desses pilares não apenas amplia a capacidade técnica, mas também molda uma
visão estratégica sobre a durabilidade e a e�ciência dos softwares na era digital.
Explorando os fundamentos dos tipos de manutenção
Disciplina
Testes e Manutenção de Software
Em projetos de software, é comum interpretar que os produtos que são desenvolvidos possuem
um início, meio e �m. De fato, essa compreensão é verdadeira, porém é mais complexa do que se
possa imaginar. Isso se deve ao fato de que toda tecnologia possui um ciclo de vida útil e, assim
como ela começa, um dia terminará.
Desenvolver softwares requer muito tempo, esforço e, principalmente, dinheiro. Os altos
investimentos em sistemas têm se tornado cada vez maior e a necessidade de aumentar o
tempo útil de uso de um software, essencial. Dessa forma, surgiu a aplicação de mecanismos de
manutenção de softwares que servirão para garantir que, mesmo após o �m do desenvolvimento,
o software terá muito tempo de uso e que conseguirá atender às novas demandas e evoluções
tecnológicas.
Mas a�nal, o que é manutenção de software e por que isso é tão importante? A manutenção de
software refere-se a um conjunto de atividades realizadas para preservar, atualizar, adaptar e
aprimorar um programa de computador ou sistema após sua implementação e durante todo o
seu ciclo de vida. Ela compreende todas as ações destinadas a manter o software funcionando
de maneira e�ciente, con�ável e em conformidade com as necessidades dos usuários e do
ambiente em que está inserido.
Neste segmento do estudo, iremos adentrar mais profundamente nos pilares da manutenção de
softwares: a manutenção corretiva, preventiva, adaptativa e evolutiva. Esses elementos, embora
distintos em suas abordagens, desempenham papéis interligados e essenciais na sustentação e
no avanço contínuo dos programas que permeiam nosso cotidiano digital.
Disciplina
Testes e Manutenção de Software
Manutenção corretiva
Figura 1 | Manutenção corretiva. Fonte: elaborada pelo autor.
Concentra-se na identi�cação e correção de falhas ou problemas existentes no software após
sua implementação. É acionada como resposta a erros ou defeitos encontrados durante o uso do
programa.
Manutenção preventiva
Figura 2 | Manutenção preventiva. Fonte: elaborada pelo autor.
Visa antecipar e prevenir problemas futuros por meio de atividades como revisões, testes e
atualizações regulares. Seu objetivo é identi�car e corrigir potenciais fontes de erro antes que
afetem o funcionamento do software.
Manutenção adaptativa
Disciplina
Testes e Manutenção de Software
Figura 3 | Manutenção adaptativa e preventiva. Fonte: elaborada pelo autor.
Realizada quando o ambiente em que o software opera passa por mudanças, como atualizações
de sistemas ou novos requisitos.
Manutenção evolutiva: mescla-se à manutenção adaptativa envolvendo a implementação de
melhorias, adição de novos recursos e ajustes para acompanhar a evolução das necessidades
dos usuários e do mercado.
Existem diversas técnicas e abordagens empregadas na manutenção de softwares, cada uma
com seus propósitos especí�cos para preservar, melhorar e adaptar os programas ao longo do
tempo. Algumas das técnicas mais comuns são:
Figura 4 | Técnicas para manutenção de software. Fonte: elaborada pelo autor.
Disciplina
Testes e Manutenção de Software
1. Refatoração de código: o objetivo é melhorar a legibilidade e e�ciência do código.
2. Controle de versão: o uso de sistemas de controle de versão, como Git, é fundamental para
rastrear e gerenciar as mudanças no código-fonte ao longo do tempo.
3. Documentação: a criação e a manutenção de uma documentação clara e abrangente são
essenciais para facilitar o entendimento do código, o que ajuda na identi�cação de
problemas e na realização de manutenções corretivas.
4. Testes:https://sol.sbc.org.br/index.php/sbqs/article/view/16194
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de software - Produtos - Vol.1. Rio de Janeiro : LTC, 2019.
Aula 2
Classi�cação de testes de software
Introdução
Disciplina
Testes e Manutenção de Software
Olá, estudante!
Na complexa jornada do desenvolvimento de software, compreender os fundamentos é essencial
para garantir a qualidade do produto. Os tipos de testes de software delineiam abordagens
diversas para avaliar a robustez e a e�cácia de um sistema, incluindo testes unitários, de
integração, sistema e aceitação. As fases de testes de software representam etapas cruciais
nesse processo, desde a concepção até a entrega, garantindo a detecção precoce de falhas. Por
�m, a estratégia de teste de software estabelece o plano mestre, incorporando tipos e fases para
otimizar recursos e maximizar a e�ciência do teste. Esta introdução explorará esses temas vitais
no universo do teste de software.
Pilares do teste de software: conceitos, objetivos e benefícios
Disciplina
Testes e Manutenção de Software
O Teste de Software é um componente crítico no desenvolvimento de sistemas, garantindo a
qualidade e con�abilidade dos produtos. Entender os fundamentos de teste de software é
essencial para pro�ssionais na área. Isso abrange desde a integridade da entrada e saída até a
análise de código, garantindo um entendimento profundo do processo de desenvolvimento.
Os fundamentos também incluem a veri�cação de requisitos, rastreabilidade e a de�nição de
casos de teste. Por exemplo, ao validar um sistema de pagamento online, os fundamentos
garantiriam que todas as transações são processadas corretamente, mantendo a integridade
�nanceira do sistema (Delamaro, 2016).
Ao estabelecer os objetivos de teste de software, o propósito e a direção do processo de teste.
Os objetivos não se limitam apenas à detecção de defeitos, mas também visam assegurar a
funcionalidade, segurança e desempenho do software. Em um aplicativo de gerenciamento de
projetos, os objetivos incluiriam validar a funcionalidade de atribuição de tarefas e garantir que o
sistema suporte múltiplos usuários simultaneamente.
Os testes de unidade, integração, sistema e aceitação são estratégias-chave para atingir esses
objetivos. Estabelecer objetivos claros desde o início do ciclo de desenvolvimento permite uma
abordagem sistemática e abrangente ao teste de software. Por exemplo, em um sistema de
controle de estoque, os objetivos de teste garantiriam a precisão do registro de inventário e a
e�ciência na gestão de pedidos (Delamaro, 2016).
Assim, podemos destacar alguns benefícios que o teste de software apresenta, como:
Disciplina
Testes e Manutenção de Software
Detecção abrangente de defeitos: o teste de software vai além da simples identi�cação de
defeitos, proporcionando uma visão abrangente da funcionalidade e e�cácia do produto.
Redução tangível de custos: a capacidade de reduzir custos é um benefício palpável do
teste de software. a identi�cação precoce de falhas diminui os gastos associados a
correções tardias, resultando em e�ciência �nanceira.
Otimização em aplicativos especí�cos: em contextos especí�cos, como em aplicativos de
navegação, a correção antecipada de problemas, como falhas na localização, não apenas
evita custos adicionais, mas também aprimora signi�cativamente a experiência do usuário.
Esses benefícios destacam a importância do teste de software não apenas na detecção de
problemas, mas também na otimização contínua e na redução de despesas signi�cativas.
A con�ança na qualidade do software é crucial para a satisfação do cliente, fortalecendo a
reputação da empresa. Os benefícios incluem também a melhoria contínua, visto que o feedback
obtido durante o processo de teste contribui diretamente para aprimoramentos contínuos no
produto. Em um sistema de gerenciamento de documentos, a aplicação efetiva do teste pode
revelar oportunidades de melhorar a e�ciência na recuperação de dados (Delamaro, 2016).
A conformidade com regulamentações e padrões é facilitada por meio do teste de software,
reduzindo riscos legais e melhorando a posição competitiva da organização no mercado. Em um
aplicativo de saúde, a conformidade com regulamentos de privacidade é um benefício crucial.
A segurança cibernética é aprimorada, uma vez que o teste de software é vital para identi�car e
corrigir vulnerabilidades. A estabilidade do sistema, a capacidade de resposta e a e�ciência
operacional são otimizadas, proporcionando uma experiência do usuário superior. Em um
ambiente de comércio eletrônico, a segurança das transações on-line é fundamental para
construir a con�ança dos clientes.
Concluindo, compreender os fundamentos de teste de software, estabelecer objetivos claros e
colher os benefícios de um teste e�caz são elementos interligados que moldam o sucesso no
desenvolvimento de software. Essa abordagem holística não apenas identi�ca e corrige falhas,
mas garante a entrega de produtos con�áveis, e�cientes e alinhados às expectativas do usuário
e do mercado.
Decifrando teste de software: fundamentos, objetivos e benefícios
Disciplina
Testes e Manutenção de Software
Explorar os elementos fundamentais do teste de software é crucial no desenvolvimento de
sistemas, garantindo a qualidade do produto. Compreender os fundamentos de teste de software
signi�ca abordar conceitos essenciais que sustentam a avaliação da qualidade do software,
como a veri�cação minuciosa da integridade dos dados em um sistema de gerenciamento de
inventário.
A análise de código, tanto estática quanto dinâmica, faz parte dessa compreensão. Em um
aplicativo de comércio eletrônico, por exemplo, a veri�cação do código-fonte para identi�car
possíveis vulnerabilidades de segurança (análise estática) e a execução de testes para garantir o
processamento correto de pedidos (análise dinâmica) destaca como essa interpretação contribui
para a e�ciência do desenvolvimento (Gonçalvez et al., 2019).
Disciplina
Testes e Manutenção de Software
Figura 1 | Análise de código. Fonte: elaborada pelo autor.
Os objetivos de teste de software delineiam metas especí�cas para orientar o processo de teste.
Em um aplicativo de saúde, a interpretação correta dos objetivos envolveria a validação da
precisão dos cálculos de dosagem de medicamentos e a veri�cação do correto armazenamento
dos dados do paciente. De�nir objetivos claros guia os esforços de teste, garantindo que cada
componente do sistema atenda aos requisitos estabelecidos (Gonçalvez et al., 2019).
A interpretação efetiva dos objetivos também inclui a de�nição de estratégias de teste. Em um
sistema de controle de tráfego, por exemplo, implementar testes de carga para garantir que o
software lide e�cientemente com picos de demanda atende aos objetivos de desempenho
estabelecidos.
Disciplina
Testes e Manutenção de Software
Os benefícios de teste de software vão além da detecção de defeitos, oferecendo impactos
positivos em várias facetas do desenvolvimento. A interpretação desses benefícios destaca
como a identi�cação precoce de falhas, contribuindo para a e�ciência �nanceira do projeto, é
vital. Em um sistema de reservas de voos, a garantia de informações de voo precisas e con�áveis
contribui para a satisfação do cliente e a reputação da empresa (Gonçalvez et al., 2019).
A interpretação dos benefícios também abrange a melhoria contínua. Em um sistema de
educação on-line, a interpretação correta evidencia como o feedback obtido durante os testes
pode ser usado para aprimorar continuamente a plataforma, proporcionando uma experiência de
aprendizado cada vez melhor para os usuários.
Além disso, a conformidade com regulamentações e padrões é um benefício crítico,
especialmente em setores altamente regulamentados, como o da saúde. A interpretaçãosão cruciais para identi�car falhas e garantir que as alterações no software não
introduzem novos problemas.
Por �m, a manutenção de software é crucial para garantir que os programas permaneçam
funcionais, seguros e relevantes ao longo do tempo. Ela contribui para a e�ciência operacional
das empresas, a satisfação dos usuários e a adaptação às transformações tecnológicas e às
demandas do mercado. Além disso, ajuda a prolongar a vida útil do software, maximizando seu
valor e sua utilidade.
Aplicando os tipos de manutenção de softwares na prática
Até aqui, temos visto que a manutenção de software é um conjunto de práticas vitais para
garantir o funcionamento, a segurança e a e�cácia contínua dos programas de computador após
sua implementação inicial. Essa abordagem abrange diferentes tipos de manutenção, cada um
desempenhando um papel especí�co na preservação e no aprimoramento dos softwares ao
longo do tempo.
Disciplina
Testes e Manutenção de Software
Sua importância reside na capacidade de corrigir falhas, adaptar-se a mudanças, prevenir
problemas futuros e evoluir para atender às demandas do mercado. A aplicação dessas técnicas
no cotidiano pro�ssional é essencial para garantir que os softwares se mantenham funcionais,
seguros e relevantes.
Vamos explorar exemplos concretos de como cada tipo de manutenção – corretiva, preventiva,
adaptativa e evolutiva - é aplicado em contextos pro�ssionais distintos, ilustrando como essas
práticas são fundamentais para resolver problemas, prevenir falhas, adaptar-se a mudanças e
evoluir para atender às necessidades do mercado.
Manutenção corretiva
Imagine trabalhar em uma empresa de e-commerce e receber relatos de clientes sobre
di�culdades ao �nalizar compras. Após uma investigação, é descoberto que um bug impede a
�nalização do processo de pagamento para alguns usuários. A equipe de manutenção precisa
agir rapidamente para identi�car e corrigir esse problema no código do sistema, permitindo que
os clientes concluam suas compras sem di�culdades.
Manutenção preventiva
Em uma instituição �nanceira, o software que gerencia transações diárias está sujeito a
atualizações regulares de segurança devido a mudanças nas regulamentações. A equipe de
manutenção implementa rotinas automáticas de veri�cação de integridade dos dados e realiza
atualizações regulares de segurança para prevenir possíveis vulnerabilidades, garantindo que o
software esteja sempre protegido contra ameaças.
Manutenção adaptativa
Em uma empresa de telecomunicações, ocorre uma atualização de hardware em uma parte da
infraestrutura. Isso causa incompatibilidade com um software legado de gerenciamento de
redes. A equipe de manutenção precisa adaptar o software para funcionar perfeitamente com o
novo hardware, fazendo ajustes no código para garantir a compatibilidade e a continuidade das
operações.
Manutenção evolutiva
Uma empresa de redes sociais identi�ca a necessidade de integrar um novo recurso de análise
de dados para seus usuários corporativos. A equipe de manutenção trabalha no desenvolvimento
dessa nova funcionalidade, implementando ferramentas de análise avançada que permitirão aos
usuários obterem insights mais detalhados sobre o desempenho de suas campanhas e seus
conteúdos.
No contexto pro�ssional, a habilidade de aplicar cada tipo de manutenção adequadamente é
crucial. Além das competências técnicas, como programação e análise de código, as soft skills
são igualmente importantes. Comunicação e�caz para relatar problemas e soluções, trabalho em
equipe para coordenar esforços de manutenção e capacidade de adaptação para lidar com
mudanças são habilidades valorizadas nesse ambiente.
Compreender e aplicar os tipos de manutenção não apenas mantém o software funcional, mas
também permite que ele cresça, evolua e atenda continuamente às demandas dos usuários e do
mercado.
Ao combinar conhecimento teórico com exemplos práticos do cotidiano pro�ssional, você estará
preparado para enfrentar desa�os reais no mundo da manutenção de software, contribuindo para
o sucesso e a inovação no desenvolvimento de programas.
Disciplina
Testes e Manutenção de Software
Continue explorando e aplicando esses conceitos, pois é com a prática que se solidi�ca o
entendimento e a expertise nesse campo.
Videoaula: Tipos de manutenção
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Neste vídeo você aprenderá sobre manutenção de software, sua importância, particularidades e
desa�os no mercado pro�ssional atual. Aprenderá sobre os tipos mais utilizados, como
manutenção corretiva, preventiva, evolutiva e adaptativa e como diferenciá-las e utilizá-las na
prática de manutenção de software.
Não perca esta oportunidade, assista agora e eleve suas habilidades a um novo patamar!
Saiba mais
Disciplina
Testes e Manutenção de Software
Olá, estudante!
Após aprender sobre os tipos de manutenção de software, é fundamental aprofundar esse
conhecimento. Para isso, recomendo a leitura da Seção 1.2: Fundamentos da engenharia de
software do livro Análise e modelagem de sistemas, por Claudia Werlich et. al.
Referências
https://biblioteca-virtual-cms-serverless-prd.s3.us-east-1.amazonaws.com/ebook/analisee-modelagem-de-sistemas-1677603422699.pdf
Disciplina
Testes e Manutenção de Software
FILGUEIRAS, E. Q; WANDERLEY NETO, O. C. Manutenção de software e software livre: re�exões.
Facitec, v. 1, n. 1, jan. 2007.
ISO/IEC14764. Software Engineering -Software Maintenance, ISO and IEC, 1999.
PFLEEGER, S. Engenharia de software: teoria e prática. 2. ed. São Paulo: Prentice Hall, 2004.
SOMMERVILLE, I. Engenharia de software. 8. ed. São Paulo: Pearson Education Brasil, 2007.
Aula 2
Processos de manutenção
Introdução
Disciplina
Testes e Manutenção de Software
No universo do desenvolvimento de software, a criação não marca o �m do ciclo de vida de um
programa, mas sim o início de uma jornada contínua. Esta aula é um convite para adentrar aos
complexos processos de manutenção de software, desvendando os estágios vitais:
monitoramento, especi�cação e implementação, implantação e operação.
A importância desses processos não se limita à preservação da integridade dos programas, mas
se estende à capacidade de adaptar e aprimorar continuamente o software. Compreender como
cada etapa contribui para a manutenção e�caz é essencial para assegurar a funcionalidade,
con�abilidade e competitividade dos programas no dinâmico cenário tecnológico.
Ao desbravar esses estágios, você adquirirá habilidades fundamentais para enfrentar os desa�os
do mercado de trabalho. Dominar esses processos não apenas amplia sua compreensão técnica,
mas também abre portas para a solução de problemas reais na indústria de software. Aplique
esse conhecimento e descubra como os processos de manutenção se transformam em soluções
tangíveis, impulsionando o avanço pro�ssional e contribuindo diretamente para a inovação e a
excelência no desenvolvimento de software.
Fundamentos dos processos de manutenção de software
Disciplina
Testes e Manutenção de Software
No panorama dinâmico do desenvolvimento de software, compreender os processos de
manutenção é vital. Os estágios da manutenção – monitoramento, especi�cação e
implementação, implantação e operação – representam os pilares que sustentam a durabilidade
e a e�cácia dos programas ao longo do tempo.
Disciplina
Testes e Manutenção de Software
Figura 1 | Processos de manutenção de software. Fonte: elaborado pelo autor.
Diante desse contexto, vamos adentrar em cada um desses processos e entender como eles
atuam para garantir o sucesso na manutenção de um software.
Monitoramento da manutenção
O monitoramento da manutenção é uma fase crucial no ciclo de vida de um programa. Esta
etapa envolve uma análise contínua e sistemática do software em operação para identi�car
possíveisfalhas, comportamentos inesperados ou desvios dos requisitos iniciais, Sommerville
(2016). Está desde o início do software já em produção, até o seu �m, caracterizada pela análise
contínua do software em atividade. O monitoramento da manutenção de software oferece
insights valiosos sobre o funcionamento do programa em ambiente real, facilitando a tomada de
decisões informadas para melhorias e ajustes necessários.
Especi�cações e implementações
Representam o alicerce da adaptação do software às mudanças emergentes do sistema, como
solicitação do cliente, atualizações de sistemas ou mudanças de contexto técnico. Segundo
Belezza (2009), as especi�cações partem, na maioria das vezes, pelos usuários do sistema e
podem ter a forma de relato de um problema (bug) ou a requisição por uma funcionalidade nova.
Ou seja, é a partir da solicitação de uma mudança ou correção, que a especi�cação é organizada.
Disciplina
Testes e Manutenção de Software
É o momento de traduzir as necessidades identi�cadas na etapa anterior em ações tangíveis. Por
outro lado, a implementação é a ação de colocar em prática o que foi especi�cado
anteriormente. A especi�cação de�ne as alterações necessárias no software, enquanto a
implementação se encarrega de concretizá-las no código-fonte, garantindo a integridade e a
e�ciência do programa.
Implantação e operação
A fase de implantação e operação, conforme P�eeger (2004), é a concretização das
modi�cações planejadas. Nesse estágio, o software atualizado é introduzido e começa a operar
em ambientes produtivos. Bennett (2000) complementa que essa etapa visa implantar as
modi�cações realizadas anteriormente no sistema e lançá-las à operação por parte dos usuários.
É crucial garantir que as mudanças implementadas não prejudiquem a estabilidade ou o
desempenho do sistema. Rajlich (2000), aponta que a implantação das modi�cações feitas deve
se relacionar mais adequadamente com outros componentes, sem apresentar novos problemas.
A operação contínua, neste novo contexto, é monitorada para assegurar que as adaptações
funcionem de acordo com o planejado.
Compreender esses processos é como dominar as fases de evolução de uma obra. Desde a
identi�cação minuciosa dos problemas até a implementação meticulosa e a integração tranquila
no ambiente operacional, cada etapa representa um elo vital na corrente da manutenção de
software. Esses fundamentos não só garantem a estabilidade do software, mas também
possibilitam sua adaptação a um cenário em constante mudança.
Aprofundar-se nesses processos é crucial para pro�ssionais da área de desenvolvimento de
software. Compreender como cada fase se conecta, desde a detecção de problemas até a
implementação de soluções, é fundamental para adotar uma abordagem e�caz na manutenção
de software, resultando em sistemas robustos e adaptáveis.
Desvendando os processos de manutenção de software
Disciplina
Testes e Manutenção de Software
Sabemos que na jornada do desenvolvimento de software, é imprescindível compreender,
analisar e aplicar os processos de manutenção de software no contexto pro�ssional atual. Tão
crucial quanto dominar a criação inicial de um sistema, é fazer uso das práticas de processos de
manutenção nesses softwares. Cada estágio da manutenção tem sua particularidade e
importância. Desde o monitoramento à especi�cação e implementação, passando pela
implantação e operação dos sistemas. Todos são pilares que garantem a qualidade, a
adaptabilidade e a longevidade dos programas no ambiente tecnológico em constante
evolução.
Vamos entender, mais profundamente, como cada um desses estágios podem ser aplicados no
cotidiano da manutenção dos softwares.
Disciplina
Testes e Manutenção de Software
Figura 2 | Monitoramento da manutenção. Fonte: elaborada pelo autor.
Monitoramento: representa o ponto de partida, sendo uma fase contínua e proativa que visa
observar minuciosamente o desempenho do software. Aqui, cada detalhe do programa é
validado, desde sua estabilidade até possíveis falhas, permitindo a detecção precoce de
problemas. É como um olhar constante sobre o programa em ação, oferecendo insights valiosos
para intervenções precisas e oportunas.
Os métodos mais comuns do monitoramento de software são o monitoramento de logs do
sistema, desempenho das máquinas, integridade com os requisitos e o uso por parte dos
usuários dos sistemas.
Especi�cação e implementação: surgem como respostas aos insights obtidos no
monitoramento. Nessa fase, são planejadas e delineadas as melhorias, correções ou
atualizações necessárias. É a tradução das necessidades identi�cadas em ações concretas, em
que a especi�cação de�ne exatamente o que precisa ser alterado no software, enquanto a
implementação materializa essas mudanças no código-fonte, mantendo a integridade do
programa.
Disciplina
Testes e Manutenção de Software
Figura 3 | Especi�cação da mudança. Fonte: elaborada pelo autor.
Para o levantamento das especi�cações, é importante atuar na de�nição dos requisitos de
modi�cação, na análise de impacto para garantir que tais modi�cações não afetem o sistema em
sua totalidade e a documentação, cujo objetivo é organizar as informações do processo
especi�cado.
Figura 4 | Implementação da mudança. Fonte: elaborada pelo autor.
Para o cumprimento da implementação, é trabalhado a codi�cação do que foi especi�cado
anteriormente, os testes unitários, para garantir o funcionamento correto das partes do
Disciplina
Testes e Manutenção de Software
desenvolvimento, a integração e os testes gerais, realizando testes completos no requisito
desenvolvido e a revisão e aprovação da implementação.
Implantação e operação: marcam a culminação do processo de manutenção. É o momento em
que as alterações planejadas são lançadas e o software atualizado é introduzido no ambiente de
produção. Garantir que as mudanças não afetem negativamente a estabilidade ou o desempenho
do sistema é primordial. A operação contínua é monitorada para garantir que as adaptações
funcionem conforme o planejado, oferecendo um ambiente estável para a operação do software.
Aqui está uma visão sobre esses estágios:
Implantação
Figura 5 | Implantação da mudança. Fonte: elaborada pelo autor.
Planejamento: planejar a maneira de como as mudanças serão introduzidas no ambiente
de produção.
Execução das mudanças: as alterações desenvolvidas durante a fase de especi�cação e
implementação são agora implementadas no ambiente de produção, como atualizações de
código e correções de bugs.
Testes de aceitação: são realizados para veri�car se as mudanças feitas são consistentes
com os requisitos.
Operação
Disciplina
Testes e Manutenção de Software
Figura 6 | Operação e manutenção. Fonte: elaborada pelo autor.
Monitoramento contínuo: durante a operação, o software é constantemente monitorado
para garantir que funcione conforme o esperado. Isso envolve veri�car seu desempenho,
suas estabilidade e possíveis problemas que possam surgir.
Suporte e manutenção: caso surjam problemas após a implantação, uma equipe de suporte
pode ser acionada para resolver questões técnicas ou oferecer assistência aos usuários.
Gestão de mudanças: mesmo após a implantação, podem surgir novos requisitos ou
correções. A operação inclui o gerenciamento dessas mudanças adicionais, seguindo um
processo controlado para evitar impactos adversos.
Aplicação prática dos processos de manutenção de software
Disciplina
Testes e Manutenção de Software
Quando nos aventuramos no mundo do desenvolvimento de software, aprender os processos de
manutenção não é apenas teoria; é a aplicação do conhecimento no cotidiano pro�ssional.
Vamos explorar os estágios vitais – monitoramento, especi�cação e implementação,
implantação e operação – e descobrir como eles ganham vida no mundo pro�ssional.
Monitoramento de manutenção:
Lembre-se: o monitoramento no processo de manutenção de software é uma fase
fundamental para garantir a estabilidade, o desempenho e a detecção precoce de
problemas nos sistemas.Exemplo pro�ssional: imagine uma empresa de comércio eletrônico que detecta uma
diminuição nas conversões de vendas em seu aplicativo. Por meio do monitoramento
contínuo, eles identi�cam um problema no processo de compra que está afetando a
experiência do usuário. A equipe de desenvolvimento analisa os logs de erro e as métricas
de desempenho para identi�car a causa raiz, possibilitando correções imediatas para
otimizar o �uxo de compras.
Especi�cação e implementação:
Disciplina
Testes e Manutenção de Software
Lembre-se: a fase de especi�cação e implementação desempenham o papel de organizar a
informação da solicitação de mudança ou correção desejada e a estruturação do código de
desenvolvimento para realizar a mudança solicitada.
Exemplo pro�ssional: uma equipe de desenvolvimento de um software de gestão �nanceira
percebe que os usuários desejam uma funcionalidade de previsão de gastos baseada em
inteligência arti�cial. Durante a fase de especi�cação, eles de�nem os requisitos
detalhados, como fontes de dados, algoritmos a serem usados e a interface do usuário. Na
implementação, os desenvolvedores criam e integram o novo recurso ao software,
permitindo que os usuários prevejam seus gastos futuros com maior precisão.
Implantação e operação:
Lembre-se: implantação e operação no contexto da manutenção de software são fases que
visam colocar em prática as alterações propostas, além de garantir o funcionamento
contínuo e e�caz do software.
Exemplo pro�ssional: suponha que uma empresa de serviços de saúde atualize seu
sistema de agendamento on-line para incluir um recurso de telemedicina. Durante a
implantação, a equipe de TI lança a atualização para todos os dispositivos e realiza testes
extensivos para garantir que a nova funcionalidade seja integrada perfeitamente ao sistema
existente. Na operação contínua, monitoram a estabilidade do sistema durante as
consultas on-line para garantir que não haja interrupções no atendimento ao paciente.
Esses exemplos ilustram como cada fase da manutenção de software é aplicada em diferentes
contextos pro�ssionais, demonstrando a importância de monitorar, planejar e implementar
mudanças de maneira e�caz para garantir a qualidade e a funcionalidade contínua dos sistemas
utilizados no mundo corporativo.
Ao aprender esses processos, você não apenas adquire conhecimento teórico, mas também
habilidades práticas essenciais para o campo de desenvolvimento de software. A capacidade de
identi�car, descrever e solucionar problemas durante o ciclo de vida de um software é uma
competência valorizada no mercado de trabalho.
Aqui está a chave: a teoria é a base, mas é na aplicação prática que você se torna um pro�ssional
valorizado. Conforme mergulha nesses exemplos e nessas situações do mundo real, você
adquire uma compreensão mais profunda de como esses processos de manutenção são
essenciais para a excelência no desenvolvimento de software.
Lembre-se, cada fase desses processos é uma oportunidade para você aplicar seu conhecimento
teórico, enfrentar desa�os reais e aprimorar suas habilidades. Ao �nal deste bloco, você estará
mais con�ante para aplicar e adaptar esses processos em contextos diversos, promovendo o
sucesso de projetos de desenvolvimento de software.
Videoaula: Processos de manutenção
Disciplina
Testes e Manutenção de Software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Neste vídeo você irá aprofundar os seus conhecimentos em processos de manutenção de
software, bem como seus desa�os, sua importância, suas especi�cações e suas aplicações
unitárias dentro do processo da garantia da qualidade. Desenvolverá conceitos de aplicação das
mais diversas etapas da manutenção como monitoramento, especi�cação, implementação,
implantação e operação.
Não perca a oportunidade de se tornar um pro�ssional ainda mais quali�cado na área de
qualidade de software. Assista agora e eleve suas habilidades a um novo patamar!
Saiba mais
Olá, estudante!
Após aprender sobre os processos de manutenção de software, bem como as etapas para a sua
realização, é necessário aprimorar esse conhecimento. Para isso, recomendo a leitura do
Capítulo 9: Evolução de Software do livro Engenharia de Software, por Ian Sommerville (2016).
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=vxEYNH04ffmURy3jXWfOxLg+wPYRR9vAFckXvYcfhe9LxZS1DRuraifyf0myPV7zLLHrGYkaUVwDngux0XMACg==
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=vxEYNH04ffmURy3jXWfOxLg+wPYRR9vAFckXvYcfhe9LxZS1DRuraifyf0myPV7zLLHrGYkaUVwDngux0XMACg==
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=vxEYNH04ffmURy3jXWfOxLg+wPYRR9vAFckXvYcfhe9LxZS1DRuraifyf0myPV7zLLHrGYkaUVwDngux0XMACg==
Disciplina
Testes e Manutenção de Software
Referências
BELEZZA, L. M. Modelo para suportar a atualização de consistência de requisitos em processos
de manutenção de software. Dissertação (Mestrado em Ciência da Computação) – Pontifícia
Universidade Católica do Rio Grande do Sul. Porto Alegre, Rio Grande do Sul, 2009.
BENNETT, K. H. Software Maintenance and Evolution: a Roadmap. In: International Conference on
Software Engineering, 2000, Limerick, Ireland.
PFLEEGER, S. L. Engenharia de software: teoria e prática. 2. ed. São Paulo: Pearson Prentice Hall
Brasil, 2004.
RAJLICH, V. Modeling Software Evolution by Evolving Interoperation graphs. Annals of Software
Engineering, J. C. Baltzer AG, Science Publishers, Red Bank, NJ, v .9. 2000.
SOMMERVILLE, I. Engenharia de software. 10. ed. São Paulo: Pearson Education Brasil, 2016.
Aula 3
Processos avançados em manutenção
Introdução
Disciplina
Testes e Manutenção de Software
Prezado estudante, nesta aula vamos abordar sobre processos avançados em manutenção.
Vamos explorar os princípios fundamentais da metodologia Lean para o processo de
desenvolvimento de software, adentrar sobre o processo de entrega contínua e os mecanismos
de projeto e versionamento com DevOps e CI/CD.
Você vai aprender como esses princípios se aplicam à manutenção de software, contribuindo
para a otimização de processos, redução de desperdícios e aumento de velocidade de entrega. O
resultado esperado é que você consiga aprender e sair equipado com habilidades práticas e uma
compreensão profunda desses conceitos, prontos para implementar mudanças signi�cativas em
ambientes reais de trabalho.
Lembre-se, cada conhecimento adquirido aqui é uma ferramenta valiosa no seu arsenal
pro�ssional. Prepare-se para se surpreender com a forma como esses conceitos se traduzem em
resultados tangíveis no seu cotidiano, impulsionando não apenas sua carreira, mas também a
forma como encara desa�os e oportunidades na área de manutenção de software.
Fundamentos dos processos avançados em manutenção de software
Disciplina
Testes e Manutenção de Software
Na busca pela excelência na manutenção de software, é fundamental compreender princípios
mais avançados que adentram os conceitos do processo de manutenção e qualidade de um
sistema. Esses fundamentos revolucionaram a forma como as equipes de desenvolvimento
trabalham, priorizando a e�ciência, a qualidade e a agilidade.
Diante disso, esta aula abordará conceitos da metodologia Lean em softwares, a entrega
contínua, processos DevOps e CI/CD, dentro dos conceitos mais avançados em manutenção de
software.
Lean
Disciplina
Testes e Manutenção de Software
Figura 1 | Metodologia lean em projetos de software. Fonte: elaborada pelo autor.
Inspirado nos princípios do Lean Manufacturing, a metodologia Lean visa eliminar desperdícios,
reduzir o tempo de ciclo e aumentar a e�ciência na produção de software. Criado no Japão após
a Segunda Guerra Mundial na fábrica da empresa Toyota, o objetivo dessa metodologia,
adaptado para o processo de software, é criar mais valor para os clientes com menos trabalho,Bassi Filho (2008). Essa abordagem foca na entrega contínua de software de alta qualidade,
promovendo a colaboração entre equipes multidisciplinares e priorizando as necessidades do
cliente. De acordo com Zanetti (2022), essa metodologia busca gerar ganho de produtividade,
diminuindo o tempo de produção. Com isso, a qualidade do software aumenta, ao passo em que
o tempo de produção é reduzido.
Entrega contínua
Disciplina
Testes e Manutenção de Software
Figura 2 | Entrega contínua. Fonte: elaborada pelo autor.
A prática de entrega contínua é essencial para garantir que cada pequena alteração de código
possa ser entregue aos usuários de forma rápida e segura. Humble e Farley (2013) destacam que
a entrega contínua permite que as equipes entreguem com con�ança e rapidez, adaptando-se às
mudanças do mercado. Isso é possível por meio da automação de processos de build, testes e
deploy, reduzindo o tempo entre a concepção de uma ideia e sua disponibilidade para os
usuários.
Essa abordagem oferece benefícios como rápida resolução de problemas, maior qualidade do
software, agilidade e �exibilidade, além de um ciclo de feedback mais curto. No entanto, sua
implementação requer compromisso com a automação, testes abrangentes e uma cultura
organizacional que valorize a colaboração e a melhoria contínua, além de atenção à segurança e
estabilidade do ambiente de produção.
DevOps e CI/CD
Disciplina
Testes e Manutenção de Software
Figura 3 | DevOps e CI/CD. Fonte: elaborada pelo autor.
A integração entre Desenvolvimento e Operações (DevOps) e a prática de Integração Contínua e
Entrega Contínua (CI/CD) é crucial para acelerar o ciclo de vida do software. Kim, Humble e
Debois (2018) a�rmam que essas abordagens rompem as barreiras entre desenvolvimento,
testes e operações, promovendo a automação, a colaboração e a responsabilidade
compartilhada. Isso resulta em uma maior estabilidade do ambiente de produção e na
capacidade de responder rapidamente às demandas do mercado.
DevOps é uma cultura e conjunto de práticas que promove a colaboração entre equipes de
desenvolvimento de software e operações, visando à entrega contínua e à automação de
processos. É uma abordagem que busca integrar o desenvolvimento e a operação de software
para acelerar a entrega, melhorar a qualidade e aumentar a e�ciência dos produtos.
Enquanto o CI/CD (Integração Contínua/Entrega Contínua ou Implantação Contínua) são práticas
essenciais no DevOps. CI se refere à integração frequente e automática de código por meio de
testes regulares para identi�car erros rapidamente. Já o CD abrange a entrega ou implantação
contínua do código testado, permitindo que novas versões ou atualizações sejam entregues
rapidamente e com con�abilidade ao ambiente de produção. Essas práticas são fundamentais
para alcançar entregas de software mais rápidas, con�áveis e alinhadas com as necessidades do
cliente.
Ao compreender profundamente esses conceitos, você estará preparado para moldar processos
de manutenção de software mais e�cientes, ágeis e alinhados com as expectativas do mercado
atual.
Entendendo a metodologia Lean, a entrega contínua e a aplicação de DevOps
e CI/CD no processo de manutenção
Disciplina
Testes e Manutenção de Software
Temos visto a grande importância dos processos mais avançados de manutenção de software
para o desempenho tecnológico dos sistemas digitais atuais. Alguns princípios e técnicas são
usadas nessa conjunção para fortalecer cada vez mais a qualidade operacional e o melhor
resultado possível para um software já em produção. Princípios como a aplicação da
metodologia Lean em softwares com o uso da entrega contínua e aplicação de mecanismos
como DevOps e CI/CD são alicerces que transformam a maneira como desenvolvemos e
mantemos programas digitais. Esses pilares não só aceleram o ciclo de desenvolvimento, mas
também garantem qualidade, e�ciência e adaptação contínua às demandas do mercado. Vamos
explorar como essa sinergia revoluciona o universo da manutenção de software.
Metodologia Lean
No âmago da manutenção de software, os princípios Lean de Software permeiam cada etapa,
priorizando a e�ciência, a qualidade e a redução de desperdícios. O Lean atua como uma
bússola, guiando a eliminação de atividades que não agregam valor, promovendo um �uxo
contínuo de trabalho e direcionando esforços para as necessidades do cliente.
A importância desses princípios reside na otimização dos processos, desde a identi�cação e
eliminação de desperdícios, até a maximização do valor entregue ao usuário. Etapas-chave,
como mapeamento de �uxo de valor, permite visualizar e eliminar atividades que não agregam
valor ao processo. Ferramentas como o Kanban, ao proporcionar uma visão clara do �uxo de
trabalho, permitem a identi�cação de gargalos e aprimoramentos contínuos.
Entrega contínua
Disciplina
Testes e Manutenção de Software
É o coração pulsante que impulsiona a constante evolução dos programas digitais. A sua
importância reside na agilidade e na con�abilidade oferecidas. Ao integrar o DevOps, a entrega
contínua cria um �uxo de trabalho contínuo, facilitando a implementação de alterações de
maneira rápida e segura. Ferramentas como Jenkins ou GitLab CI/CD automatizam etapas
cruciais, permitindo testes regulares do código e entregas incrementais.
A entrega contínua não é apenas uma prática, mas um paradigma que assegura a adaptação às
mudanças do mercado. Ela transcende a simples distribuição de atualizações, garantindo um
processo de manutenção de software dinâmico, ágil e alinhado com as expectativas dos
usuários �nais. Ao compreender sua essência, os pro�ssionais se capacitam para atuar em um
ambiente de desenvolvimento que valoriza a qualidade, velocidade e adaptação contínua.
DevOps e CI/CD
O DevOps em conjunto com a metodologia CI/CD representa o alicerce da e�ciência na
manutenção de software. A integração desses dois conceitos não só estabelece uma cultura
colaborativa entre equipes de desenvolvimento e operações, como também garante a entrega
contínua de valor.
DevOps é uma cultura colaborativa que busca uni�car equipes de desenvolvimento e operações
para melhorar a e�ciência na entrega de software. Ele promove a automação, a integração
contínua e a entrega contínua, visando a colaboração entre times, a rápida resposta a mudanças
e a entrega con�ável de software.
Por sua vez, CI/CD são práticas fundamentais dentro do contexto DevOps. Envolve a
automatização de builds e testes sempre que novos códigos são integrados ao repositório
compartilhado, garantindo a detecção precoce de problemas. Em resumo, é o processo
automatizado de colocar em produção as alterações que passaram pela integração, permitindo
entregas rápidas e seguras.
A união entre DevOps e CI/CD promove não apenas uma entrega mais rápida e segura de
software, mas também uma cultura de colaboração e aprendizado contínuo. Compreender essa
sinergia é fundamental para pro�ssionais de manutenção de software, pois capacita a atuação
em ambientes ágeis e adaptativos, impulsionando a qualidade e a e�ciência dos processos de
desenvolvimento e manutenção.
Aplicação processos avançados de manutenção de software
Disciplina
Testes e Manutenção de Software
Na esfera da manutenção de software, a aplicação prática dos princípios mais avançados dos
processos de manutenção de software, como a metodologia Lean, a entrega contínua e a
integração do DevOps com CI/CD se manifestam como catalisadores da e�ciência,
transformando conceitos teóricos em ações concretas para otimizar processos e garantir a
excelência na entrega de produtos digitais.
Para entender cada um desses conceitos na prática, precisamos idealizar uma empresa: um
aplicativo de entregas possui mais de um milhão de usuários cadastrados em seu sistema.
Buscando sempre novas formas de melhorar sua estrutura tecnológica e proporcionar
experiências positivas aos seus usuários, a empresa visa aplicar constantes evoluções técnicas
e novos recursos que surgem da análise de mercado e das necessidadesdos usuários. Em
busca de satisfazer as solicitações desse cliente, a empresa que presta os serviços de
manutenção de software poderá trabalhar, usando os conceitos estudados nesta aula, da
seguinte forma:
Aplicando a metodologia Lean: como essa prática traz consigo a �loso�a de eliminação de
desperdícios, buscando otimizar �uxos de trabalho e direcionar esforços para atividades que
realmente agregam valor, ao adotar o Kanban, sendo uma metodologia ágil que utiliza os
conceitos Lean no desenvolvimento, ajudará na visualização do �uxo de trabalho de uma equipe
de desenvolvimento, sendo possível identi�car gargalos, reduzir a sobrecarga de tarefas e
promover uma distribuição mais equitativa do trabalho, resultando em um processo mais �uido e
e�ciente.
Disciplina
Testes e Manutenção de Software
Aplicando a entrega contínua com DevOps e CI/CD: já a entrega contínua se estabelece como um
pilar fundamental, automatizando testes e implantações sempre que um novo código é integrado
ao repositório principal. Ferramentas de CI/CD, como Jenkins ou GitLab CI/CD, desempenham
um papel crucial nesse processo, garantindo a estabilidade do código e reduzindo
signi�cativamente o tempo entre o desenvolvimento e a disponibilização do produto �nal. Em
uma situação real, isso pode signi�car a implementação ágil de correções de bugs em um
aplicativo, garantindo uma experiência contínua e con�ável para os usuários �nais.
Contudo, o ápice da e�ciência é alcançado com a integração do DevOps e CI/CD. O DevOps,
enquanto �loso�a cultural, promove a colaboração entre as equipes de desenvolvimento e
operações. Por meio dessa colaboração, é possível criar pipelines de entrega automatizados que
garantem a integração contínua do código e sua implantação no ambiente de produção sem
interrupções, tornando o processo de manutenção mais ágil e con�ável. No contexto prático, ao
realizar uma atualização em um sistema de pagamento do app de entregas, a integração perfeita
entre DevOps e CI/CD possibilita a implementação da mudança sem impactar a funcionalidade
do serviço, assegurando a continuidade das operações.
Essa sinergia não se limita apenas às habilidades técnicas, mas também promove
aprimoramento nas habilidades interpessoais. A colaboração fomentada pelo DevOps requer
uma comunicação e�caz e a capacidade de trabalhar em equipe, enquanto a abordagem
analítica do Lean exige pensamento crítico e a habilidade de identi�car ine�ciências para propor
melhorias.
A aplicação prática desses conceitos em cenários reais não apenas acelera o ciclo de vida do
desenvolvimento de software, mas também aprimora signi�cativamente a qualidade dos
produtos entregues. Esta abordagem integrada consolida a e�ciência como um pilar fundamental
do desenvolvimento de software, permitindo que equipes ofereçam produtos de alta qualidade de
forma consistente e ágil, enfrentando desa�os e oportunidades de maneira adaptável e e�caz.
Videoaula: Processos avançados em manutenção
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Bem-vindo ao mundo dos processos avançados de software. Nessa jornada de aprendizado,
você explorará os fundamentos da metodologia Lean no contexto de softwares, a entrega
contínua, o DevOps e o CI/CD, entendendo como cada um é utilizado no processo de construção
de um sistema digital e sua importância.
Disciplina
Testes e Manutenção de Software
Prepare-se para mergulhar em conceitos essenciais que transformam a maneira como se
desenvolvem e mantêm softwares.
Bons estudos!
Saiba mais
Olá, estudante!
Após aprender sobre os processos avançados de manutenção de software, é necessário
aprimorar esse conhecimento. Para isso, recomendo a leitura dos Capítulos 22, 23, 24 e 25 da
Parte 4: Gerenciamento de Software do livro Engenharia de Software, por Ian Sommerville
(2016).
Recomendamos o estudo do livro Jornada Kanban na Prática dos autores Antônio Muniz et al
(2021), para a �xação do aprendizado da metodologia Kanban para o aprimoramento dos
conceitos Lean no processo de software.
Recomendamos o estudo de ferramentas de versionamento como GitLab CI/CD e Jenkins para o
avanço e �xação dos conceitos de CI/CD e DevoOps.
Con�ra os links a seguir:
GitLab CI/CD.
Jenkins.
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=huy7ObbASn/jZDh1J9+SUedWtxV5T+GamsRcKs2EUa9DKX1JfDUvJh50Ul3B0KUHulGrGYpA+NhRxGbZVlEBMg==
https://plataforma.bvirtual.com.br/Leitor/Publicacao/187432/epub/0?code=MetDh+qhuxzrA1+A344z0hi+PEi03jm7FMjufMexQIYTKMrcewAD8dqVAdRdaexHuVSie2EJCKspqYhRYiyqYg==
https://docs.gitlab.com/ee/ci/
https://www.jenkins.io/doc/
Disciplina
Testes e Manutenção de Software
Referências
BASSI FILHO, D. L. Experiências com desenvolvimento ágil. São Paulo, 2010.
HUMBLE, J.; FARLEY, D. Entrega contínua. Como entregar software de forma rápida e con�ável.
Bookman. 1. ed. São Paulo, 2013.
KIM, G.; HUMBLE, J.; DEBOIS, P.; Willis, J. The DevOps Handbook: how to create world-class
agility, reliability, and security in technology organizations. 2. ed. 2016.
ZANETTI, D. Cinco princípios lean para desenvolvimento de software: como aplicar? Promove
Soluções, 2022.
Aula 4
Qualidade da manutenção
Introdução
Disciplina
Testes e Manutenção de Software
Bem-vindo à aula sobre a qualidade da manutenção de software. Nesse momento, vamos focar
na gestão de con�guração de software, con�abilidade e observabilidade, além da administração
de métricas e maturidade. Nessa aula, exploraremos a importância crucial desses elementos no
desenvolvimento de software.
Esta aula é fundamental para compreender como a gestão de con�guração de software
in�uencia diretamente na con�abilidade e observabilidade dos sistemas, permitindo uma
manutenção mais e�caz. Além disso, aprenderemos como a utilização adequada de métricas e a
busca por maior maturidade no processo contribuem para a excelência do produto �nal.
Ao �nal desta aula, você estará apto a aplicar estratégias que impactam diretamente na
qualidade do software, alcançando um entendimento mais amplo sobre a importância de cada
um desses conceitos na manutenção de software.
Lembre-se de que a compreensão desses conceitos não apenas ampliará suas habilidades
técnicas, mas também moldará seu papel como pro�ssional na construção de softwares mais
robustos e con�áveis. Aplique esse conhecimento no seu cotidiano pro�ssional e perceba como
cada detalhe faz a diferença no resultado �nal.
Fundamentos da qualidade da manutenção em software
Disciplina
Testes e Manutenção de Software
A qualidade da manutenção de software não é apenas uma medida de desempenho, mas um
re�exo direto de como esses pilares se entrelaçam na engrenagem do desenvolvimento. A busca
pela excelência na qualidade do processo de manutenção em sistemas digitais se ancora em
alguns pontos fundamentais que ajudam o sucesso dessas práticas voltadas para o
desempenho organizacional e da manutenção: gestão de con�guração, con�abilidade,
observabilidade, a gestão das métricas e a maturidade de um software. Compreender esses
conceitos é essencial para construir sistemas robustos e sustentáveis.
A gestão de con�guração é a base estrutural que permite o controle e�caz das mudanças,
assegurando a estabilidade e facilitando a evolução do software ao longo do tempo. Associada a
essa estrutura, a con�abilidade e a observabilidade garantem não apenas um funcionamento
consistente do software, mas também a capacidade de monitorar e compreender seu
comportamento interno, essenciais para identi�car e corrigir falhas.
A gestão de métricas e a maturidade complementam esse ciclo ao prover indicadores tangíveis
do processo de desenvolvimento. As métricas oferecem a visão objetiva do desempenho,
enquanto a busca pela maturidade, representada por níveis de disciplina e otimização, aponta
para a evolução contínua do processo deconstrução de software.
Vamos ver com mais detalhes como cada um desses conceitos se entrelaçam e se �rmam como
fundamentais para a qualidade da manutenção.
Gestão de con�guração de software (GCS)
A gestão de con�guração de software abrange desde a identi�cação de elementos até o controle
de mudanças, conforme Pressman (2016). Bersoff (1984) complementa que a GCS nasceu
observando erros durante os anos 1970, quando o gerenciamento dos projetos não evoluía com
as tecnologias da época. Dessa forma, notou-se a importância da disciplina para o
gerenciamento do projeto, permitindo executar tarefas mais complexas de uma maneira mais
Disciplina
Testes e Manutenção de Software
organizada, o que proporciona aumento de produtividade e redução de erros. Essa prática não
apenas documenta e controla versões do software, mas também viabiliza uma gestão e�ciente
das mudanças ao longo do ciclo de vida do sistema.
Con�abilidade e observabilidade
Já a con�abilidade e a observabilidade, como exposto por Tanenbaum (2015), são essenciais
para garantir que o software opere de forma previsível e para possibilitar a análise detalhada de
seu funcionamento. Para Sommerville (2016), a con�abilidade de um sistema é a probabilidade
de os serviços do sistema serem entregues, tal como de�nido na especi�cação, livres de falhas
durante um tempo especi�cado, em determinado ambiente e para uma �nalidade especí�ca. Já
Gupta (2009), aponta que um componente é observável se seu comportamento externo e interno
(em uso funcional pelos usuários e o código fonte em funcionamento) podem ser observados em
tempo real ou para análise posterior.
Dessa forma, a con�abilidade está diretamente relacionada à consistência do sistema, enquanto
a observabilidade permite a compreensão clara do que está ocorrendo dentro do software.
Gestão de métricas e maturidade
Quanto à gestão de métricas e maturidade, Humphrey (2000) destaca que as métricas são os
instrumentos que permitem avaliar quantitativamente o desempenho do processo, enquanto a
maturidade representa o grau de disciplina alcançado, direcionando o desenvolvimento para
níveis mais elevados de excelência.
Ao dominar esses pilares, você estará apto a perceber como a organização estruturada do
software, sua con�abilidade mensurável e a busca incessante pela melhoria contínua nos
processos de desenvolvimento convergem para uma manutenção de qualidade. Aprofunde-se
nesses conceitos, pois são eles que darão sustentação à sua jornada na construção de sistemas
con�áveis e duradouros.
Entendendo a metodologia Lean, a entrega contínua e a aplicação de DevOps
e CI/CD no processo de manutenção
Disciplina
Testes e Manutenção de Software
A compreensão aprofundada dos pilares da qualidade da manutenção de software é essencial
para se destacar no cenário do desenvolvimento de sistemas. Vamos aprofundar os conceitos de
gestão de con�guração de software, con�abilidade e a observabilidade, gestão de métricas e
maturidade do software, analisando suas interconexões.
Gestão de con�guração de software
Figura 1 | Gestão de con�guração de software. Fonte: elaborada pelo autor.
A gestão de con�guração não se limita apenas ao controle de versões do código-fonte, mas
engloba um conjunto de práticas e processos que visam identi�car, controlar e documentar todos
Disciplina
Testes e Manutenção de Software
os elementos que compõem o sistema, desde o código até a documentação e os artefatos
relacionados.
Essa gestão e�ciente permite rastrear e controlar mudanças, facilitando a manutenção e
evolução do software. Ela garante a integridade e consistência do sistema, permitindo que
diferentes versões ou variantes sejam gerenciadas de forma organizada e controlada.
Ferramentas como sistemas de controle de versão, como Git, desempenham um papel
signi�cativo na gestão de con�guração, possibilitando o controle preciso das mudanças
realizadas no código-fonte. Além disso, metodologias como DevOps integram o desenvolvimento
e a operação, promovendo a automação e padronização dos processos, o que contribui para uma
gestão de con�guração mais e�caz.
Con�abilidade e observabilidade
Figura 2 | Con�abilidade. Fonte: elaborada pelo autor.
A con�abilidade refere-se à capacidade do sistema de desempenhar suas funções de maneira
consistente, sem falhas inesperadas, mesmo diante de condições adversas. Ela é medida pela
probabilidade de o sistema operar corretamente durante um determinado período de tempo em
um ambiente especí�co. Para garantir a con�abilidade, é fundamental investir em testes
extensivos, uso de boas práticas de programação e aplicação de padrões de projeto robustos.
Disciplina
Testes e Manutenção de Software
Figura 3 | Observabilidade. Fonte: elaborada pelo autor.
Por outro lado, a observabilidade diz respeito à capacidade de compreender e monitorar o
comportamento interno do software. Isso inclui a capacidade de coletar dados, métricas e logs
de maneira estruturada e acessível para análise posterior. Ferramentas de monitoramento em
tempo real, logging (prática de registrar informações relevantes sobre o funcionamento de um
programa ou sistema em execução) estruturado e implementação de métricas-chave são
fundamentais para alcançar uma boa observabilidade. Essa visibilidade interna do sistema é
crucial para diagnosticar problemas, identi�car gargalos de desempenho e realizar melhorias
contínuas.
A relação entre con�abilidade e observabilidade é estreita: enquanto a con�abilidade assegura
que o sistema funcione sem falhas, a observabilidade oferece os meios para compreender o
comportamento do sistema em diferentes situações, permitindo a identi�cação ágil e precisa de
problemas.
Gestão de métricas e maturidade
Disciplina
Testes e Manutenção de Software
Figura 4 | Gestão de métricas e maturidade de software. Fonte: elaborada pelo autor.
As métricas de software são indicadores quantitativos que permitem medir diversos aspectos do
desenvolvimento e da manutenção do software. Elas podem abranger desde métricas de código,
como complexidade e linhas de código, até métricas de processo, como tempo médio para
resolver bugs e taxa de reabertura de bugs. Essas métricas oferecem uma visão objetiva do
desempenho do software, permitindo identi�car áreas de melhoria, prever problemas e tomar
decisões embasadas.
Já a maturidade de software está relacionada ao nível de disciplina, e�cácia e otimização
alcançados nos processos de desenvolvimento. Modelos como o Capability Maturity Model
Integration (CMMI) fornecem uma estrutura para avaliar e classi�car a maturidade de uma
organização no desenvolvimento de software. Eles estabelecem diferentes níveis de maturidade,
desde o inicial (nos quais os processos são imprevisíveis e variáveis) até o otimizado (nos quais
os processos são continuamente melhorados).
A relação entre gestão de métricas e maturidade de software é intrínseca: o uso adequado de
métricas pode impulsionar a busca pela maturidade, e organizações maduras tendem a ter
processos bem estabelecidos para a coleta e análise de métricas relevantes.
Aplicando os pilares da qualidade da manutenção em software
Disciplina
Testes e Manutenção de Software
Ao longo desta aula, você aprendeu sobre como a qualidade da manutenção de software é
importante e fundamental para o processo de manutenção e monitoramento de sistemas como
um todo. Você aprendeu os conceitos mais a fundo da gestão de con�guração, passou pelos
aspectos dentro da con�abilidade e observabilidade e da gestão de métricas e maturidade de
software.
A partir de agora, você irá mergulhar na aplicação de cada um desses conceitos, fundamentais
na qualidade da manutenção de software. Para aplicá-los, vamos idealizar algumas situações
pro�ssionais para cada conceito estudado. Vale salientar que essas situações são �ctícias,
porém comuns em diversas empresas do mercado tecnológico e que a solução para cada um
desses problemas provém da análise técnica e detalhada dos pontos a serem resolvidos,
podendo variar conformea avaliação de cada pro�ssional.
Gestão de con�guração na prática
Imagine uma equipe de desenvolvimento trabalhando em um projeto complexo. Para garantir a
integridade do código-fonte e facilitar a colaboração, eles utilizam uma ferramenta de controle de
versão, como o Git. Aqui entra a gestão de con�guração: cada alteração no código é registrada,
permitindo o rastreamento preciso das modi�cações ao longo do tempo. Isso não apenas facilita
a identi�cação de problemas, mas também promove um ambiente colaborativo, em que cada
membro da equipe pode trabalhar em seu próprio branch sem interferir no trabalho dos outros.
Con�abilidade e observabilidade
Disciplina
Testes e Manutenção de Software
Agora, considere que o sistema está em produção e uma falha ocorreu em um dos módulos.
Aqui entra a con�abilidade e a observabilidade: a equipe utiliza ferramentas de monitoramento
para coletar dados sobre o desempenho do sistema em tempo real. Por meio de métricas e logs,
eles identi�cam a origem da falha e implementam correções de forma ágil, minimizando o
impacto no usuário �nal. Essa capacidade de observar e entender o comportamento interno do
software é fundamental para resolver problemas rapidamente e manter a con�ança dos
usuários.
Gestão de métricas e maturidade
Quando falamos de gestão de métricas e maturidade, pense em uma empresa que busca
melhorar seus processos de desenvolvimento de software. Ela começa a coletar métricas sobre
o tempo médio para resolver bugs e a taxa de defeitos encontrados após a entrega do software.
Essas métricas fornecem insights valiosos para identi�car áreas de melhoria. Além disso, a
empresa adota práticas recomendadas pelo modelo CMMI, o que a leva a estabelecer padrões
mais sólidos, aumentando a previsibilidade e e�ciência em seus projetos.
Esses exemplos destacam como a aplicação desses conceitos é fundamental no dia a dia do
desenvolvimento de software. Além de conhecimento técnico, essas práticas desenvolvem
habilidades essenciais. A gestão de con�guração promove a colaboração e organização. A
con�abilidade e a observabilidade desenvolvem a capacidade de análise e solução de
problemas. Já a gestão de métricas e maturidade fortalece a visão estratégica e a busca por
melhorias contínuas.
Ao integrar esses conceitos em sua prática pro�ssional, você estará mais preparado para
enfrentar desa�os, tomar decisões embasadas em dados e contribuir para o desenvolvimento de
sistemas de software mais robustos e con�áveis. Use esses pilares como guias para aprimorar
seu trabalho e elevar a qualidade da manutenção de software em suas futuras experiências
pro�ssionais.
Videoaula: Qualidade da manutenção
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Olá, estudante!
Bem-vindo ao universo da manutenção de software. Nesta jornada de aprendizado, você irá
explorar os fundamentos e práticas para garantir a qualidade da manutenção dos softwares,
aprendendo conceitos teóricos e práticos sobre gestão de con�guração de software,
con�abilidade, observabilidade, gestão de métricas e maturidades dos sistemas digitais,
entendendo como cada um é aplicado na dinâmica da construção dos sistemas.
Disciplina
Testes e Manutenção de Software
Bons estudos!
Saiba mais
Olá, estudante!
Após aprender sobre os processos avançados de manutenção de software, é necessário
aprimorar esse conhecimento. Para isso, recomendo a leitura do Capítulos 11, Engenharia de
Con�abilidade do livro Engenharia de Software, por Ian Sommerville (2016).
Recomendamos o estudo da prática CMMI para melhor entendimento sobre gestão de métricas e
maturidade do software.
Referências
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=huy7ObbASn/jZDh1J9+SUedWtxV5T+GamsRcKs2EUa9DKX1JfDUvJh50Ul3B0KUHulGrGYpA+NhRxGbZVlEBMg==
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=huy7ObbASn/jZDh1J9+SUedWtxV5T+GamsRcKs2EUa9DKX1JfDUvJh50Ul3B0KUHulGrGYpA+NhRxGbZVlEBMg==
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=huy7ObbASn/jZDh1J9+SUedWtxV5T+GamsRcKs2EUa9DKX1JfDUvJh50Ul3B0KUHulGrGYpA+NhRxGbZVlEBMg==
https://plataforma.bvirtual.com.br/Leitor/Publicacao/168127/pdf/0?code=huy7ObbASn/jZDh1J9+SUedWtxV5T+GamsRcKs2EUa9DKX1JfDUvJh50Ul3B0KUHulGrGYpA+NhRxGbZVlEBMg==
https://cmmiinstitute.com/cmmi/intro
Disciplina
Testes e Manutenção de Software
BERSOFF, E. H. Elements of software con�guration management. IEEE Transactions on Software
Engineering, v. 10, n. 1, p. 79-87, jan. 1984.
GUPTA, S. C.; SINHA, M. K. Impact of software testability considerations on software
development life cycle. IEEE Computer Society, n., p. 105-110, 2009.
HUMPHREY, W. S. The personal software process (PSP). Carnegie Mellon. Software Engineering
Institute. Pittsburgh, PA, 2000.
PRESSMAN, R. Engenharia de software – Uma abordagem pro�ssional. 8 ed. AMGH Editora LTDA,
2016.
SOMMERVILLE, I. Engenharia de software. 10. ed. São Paulo: Pearson Education Brasil, 2016.
Aula 5
Revisão da unidade
Desvendando a manutenção de software: pilares e práticas fundamentais
Disciplina
Testes e Manutenção de Software
Bem-vindo à revisão sobre os fundamentos essenciais da manutenção de software. Nesta aula,
você emergirá nos aspectos cruciais que moldam e sustentam a e�cácia na gestão de
programas digitais. A manutenção de software não é apenas sobre correções; é um processo
dinâmico e estratégico que mantém o software relevante, con�ável e adaptado às demandas em
constante mudança.
A partir de agora, vamos passar por cada etapa e princípios fundamentais para a construção
mais e�caz da manutenção de software, o que pode garantir uma maior dinamicidade e resultar
na maior qualidade possível desse processo.
Tipos de manutenção:
Os tipos de manutenção de software servem basicamente como estratégias para garantir a
e�ciência, con�abilidade e relevância contínua dos sistemas digitais. Cada tipo desempenha um
papel especí�co no ciclo de vida do software:
Corretiva: serve para corrigir falhas e problemas identi�cados no software em produção.
Seu propósito é restaurar o funcionamento adequado do sistema após a detecção de um
defeito.
Preventiva: tem como objetivo evitar falhas futuras e garantir o desempenho otimizado do
software.
Adaptativa e evolutiva: serve para aprimorar o software, adicionando novas
funcionalidades, melhorias de desempenho e atualizações que atendam às demandas dos
Disciplina
Testes e Manutenção de Software
usuários e do mercado. Permite que o software se adapte e cresça com as necessidades
em constante mudança.
Processos de manutenção
Os processos de manutenção de software servem como um conjunto estruturado de atividades
que permitem gerenciar e melhorar continuamente os sistemas digitais. Eles desempenham
papéis especí�cos no ciclo de vida do software:
Monitoramento: serve para acompanhar continuamente o desempenho do software,
buscando identi�car possíveis problemas, permitindo respostas rápidas a questões que
possam surgir.
Especi�cação e implementação: envolvem a de�nição detalhada de mudanças ou
melhorias e a execução dessas solicitações, traduzindo os requisitos especi�cados em
códigos.
Implantação e operação: referem-se à introdução de mudanças no ambiente de produção.
Essa etapa é crucial para garantir que as alterações sejam lançadas de maneira
controlada.
Processos avançados
Tem o propósito de aprimorar a e�ciência, a con�abilidade e a agilidade no desenvolvimento e na
manutenção dos sistemas. Eles se concentram em metodologias e práticas mais avançadas
para otimizar o ciclo de vida do software.
Princípios lean: adaptados do Lean Manufacturing, visam eliminar desperdícios, focando
nas atividades que agregam valor ao produto. O objetivo é otimizar o processo de
desenvolvimento, reduzir atividades desnecessárias e melhorar a e�ciência do software.
Entregacontínua: busca automatizar e simpli�car o processo de entrega de software,
permitindo atualizações frequentes e consistentes. A ideia é que cada alteração no código
possa ser liberada para produção.
CI/CD e DevOps: envolvem a automação dos processos e o versionamento constante,
garantindo a entrega contínua e a colaboração entre as equipes de desenvolvimento e
operação, promovendo velocidade e e�ciência no ciclo de vida do software.
Qualidade da manutenção
A qualidade na manutenção de software é fundamental para garantir que os sistemas digitais
sejam con�áveis, seguros, e�cientes e capazes de atender às necessidades dos usuários e do
mercado.
Gestão de con�guração: atua no controle e rastreamento das mudanças feitas no software,
permitindo a manutenção de um registro completo de todas as versões e modi�cações
feitas no código.
Con�abilidade e observabilidade: visam garantir que o sistema opere conforme o esperado.
A con�abilidade diz respeito à capacidade do software em funcionar de maneira
consistente e sem falhas. Já a observabilidade refere-se à capacidade de monitoramento.
Disciplina
Testes e Manutenção de Software
Gestão de métricas e maturidade: a utilização de métricas buscam coletar dados
continuamente do software para medir o desempenho do sistema e identi�car áreas que
precisam de melhorias. A união e e�ciência dessa etapa proporciona a maturidade dos
sistemas. Quanto mais maduro e re�nado forem os processos, maior será a capacidade de
entregar um software de alta qualidade.
Videoaula: Revisão da unidade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Preparado para mergulhar ainda mais fundo na gestão de manutenção de software? Nesta aula
resumo, exploraremos os tipos, os processos e a qualidade da manutenção. Você recordará
sobre os tipos de manutenção, como corretiva, preventiva, adaptativa e evolutiva, passará pelos
processos de monitoramento, especi�cação, implementação, implantação e operação, adentrará
nos processos mais avançados com a metodologia Lean, entrega contínua e versionamentos e
aperfeiçoa seus conhecimentos com práticas de qualidade. Esteja pronto para aprofundar seus
conhecimentos e elevar suas habilidades em manutenção de software. Assista agora e fortaleça
sua jornada na área de manutenção de software.
Estudo de caso
Disciplina
Testes e Manutenção de Software
A SoftCare Solutions é uma empresa de médio porte, especializada no desenvolvimento de
sistemas de gestão empresarial para pequenas e médias empresas. Sua reputação no mercado é
reconhecida por soluções intuitivas, porém, recentemente, está enfrentando desa�os
signi�cativos em relação à qualidade de seu principal software, o “BizTrack”.
Você foi selecionado em um processo de trabalho para assumir o cargo de gerente de projeto do
software BizTrack. Sua missão é organizar, estruturar e aplicar medidas efetivas para aumentar a
con�abilidade e otimização dos processos para entregar o software com a maior qualidade
possível.
Você tem atuado com maestria, juntamente com a sua equipe de desenvolvimento, mantendo
sempre uma boa relação com o time de operação e com os clientes, o que aumenta os bons
resultados que a empresa recebe.
No entanto, os clientes começaram a perceber que precisam aplicar novas funcionalidades no
sistema para atender algumas mudanças nas regras de negócios do mercado empresarial, como
atendimento ao cliente e armazenamento de dados, além da correção de pequenos bugs que
foram encontrados durante o uso do sistema já em produção.
Cenário
Disciplina
Testes e Manutenção de Software
Figura 1 | Cenário de estudo de caso. Fonte: elaborada pelo autor.
A SoftCare Solutions ouviu os seus clientes para entender melhor o contexto atual e tecnológico
do software e aplicar mudanças efetivas dentro do mercado no aspecto digital. Com isso, a
empresa realizou melhorias no software BizTrack com o mapeamento de métricas e processos
de qualidade na manutenção e a sua missão foi trabalhar na implementação dessas
solicitações.
De forma efetiva, você e sua equipe realizou diversas mudanças e evoluções para o sistema,
além de corrigir falhas existentes nas versões anteriores. Com isso, o software recebeu uma
nova versão e pôde ser utilizado normalmente pelos clientes.
Problema
Figura 2 | Problema do estudo de caso. Fonte: elaborada pelo autor.
Porém, após a implantação das novas requisições, a empresa está enfrentando problemas
recorrentes de desempenho e funcionalidades inconsistentes. Isso resultou em feedbacks
negativos dos clientes, aumento de solicitações de suporte e uma diminuição na satisfação do
usuário.
Desa�o
Preocupada em atender as requisições dos clientes e manter a qualidade do seu produto, a
equipe de desenvolvimento está encarregada em melhorar a qualidade e a con�abilidade do
BizTrack.
O desa�o é seu, juntamente com sua equipe: identi�car e corrigir os problemas de desempenho,
estabilizar as funcionalidades e implementar um processo de manutenção que garanta a
satisfação contínua dos clientes.
Disciplina
Testes e Manutenção de Software
Este é um desa�o crítico, já que o BizTrack é um dos principais produtos da SoftCare Solutions e
sua qualidade afeta diretamente a reputação e a competitividade da empresa no mercado.
___________
Re�ita
A manutenção de software é um campo crucial e dinâmico no universo da tecnologia. Re�ete
não apenas a necessidade de corrigir falhas, mas também a busca incessante por melhorias
contínuas nos sistemas existentes. Ao considerar a resolução de problemas em um cenário
como o da SoftCare Solutions com seu software BizTrack, algumas re�exões se tornam
pertinentes.
Primeiramente, a compreensão dos tipos de manutenção, como corretiva, preventiva, adaptativa
e evolutiva, é essencial. Cada tipo desempenha um papel distinto na estabilização e no
aprimoramento do software, tornando-se um guia valioso para identi�car e abordar problemas
especí�cos. É necessário, então, discernir o tipo de manutenção mais adequada para resolver os
desa�os enfrentados.
Além disso, os processos de manutenção desempenham um papel crucial na gestão e�caz
dessas correções e melhorias. O uso de métricas para avaliar o desempenho, a gestão de
con�guração para rastrear mudanças e a con�abilidade observável do sistema são pilares
fundamentais na condução de uma manutenção e�ciente.
A re�exão sobre a qualidade na manutenção de software leva à compreensão de que sua
importância transcende a mera solução de problemas imediatos. A busca pela excelência na
manutenção implica em criar sistemas robustos, con�áveis e adaptáveis, que atendam às
necessidades em constante evolução do mercado e dos usuários.
No estudo de caso da SoftCare Solutions, a resolução dos problemas enfrentados com o
BizTrack não é apenas uma questão de corrigir bugs, mas de assegurar a satisfação do cliente, a
competitividade da empresa e a garantia de um produto con�ável para o mercado.
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Após entender toda a situação em que a empresa SoftCare Solutions está passando com o seu
software BizTrack, é necessário aplicar uma possível solução para resolver esses problemas.
Como gerente do projeto, sua missão é uma tarefa que exige muita atenção e muito
conhecimento de casos para resolver cada ponto de melhoria.
É importante deixar claro que a resolução de problemas como este pode variar conforme o
conhecimento e experiência do gerente e da equipe de desenvolvimento. Por esse motivo, vê-se a
Disciplina
Testes e Manutenção de Software
importância do estudo analítico de cada caso para o seu aperfeiçoamento pro�ssional.
No entanto, vamos apresentar umaproposta de resolução detalhada para que você consiga
entender melhor como resolver problemas como este. Lembre-se de que o seu papel foi ser
responsável por lidar com problemas de desempenho e funcionalidades inconsistentes no
software em questão após a implementação de novas funcionalidades. Aqui estão algumas
etapas para solucionar esses problemas:
1. Análise da situação: comece entendendo profundamente os problemas reportados pelos
clientes e as falhas de desempenho e funcionalidades identi�cadas. Isso requer uma
análise detalhada do sistema, examinando a nova versão implementada. A equipe deve
documentar minuciosamente cada falha, seu impacto nos usuários e o contexto no qual
ocorrem. Nesse momento, a atenção e a comunicação entre a equipe de desenvolvimento e
de operação com o cliente deve ser o mais próximo possível.
2. Priorização da resolução: priorize os problemas identi�cados com base no impacto que
têm no usuário e no negócio. Comece resolvendo as falhas que causam mais transtornos
aos clientes. Divida as tarefas em etapas claras e acionáveis, e estabeleça prazos realistas
para sua correção. Isso implica dizer que os prazos devem ser cumpridos conforme o
cronograma organizado, evitando atrasos.
3. Colaboração e comunicação: garanta que a equipe trabalhe em conjunto para resolver
esses problemas. A comunicação transparente e e�ciente é essencial. Todos devem
entender os objetivos, os prazos e o papel de cada um na solução. Mais do que nunca, a
boa relação e a comunicação entre o time de desenvolvimento devem ser fundamentais e
indispensáveis. O sucesso do sistema começa quando o sucesso das interações
interpessoais é bem realizado.
4. Implementação e testes: após corrigir as falhas, teste exaustivamente todas as mudanças
implementadas. Use testes de unidade, testes de integração e, se possível, envolva clientes
piloto para validar as correções antes do lançamento.
5. Monitoramento e melhoria contínua: após a implementação das correções, monitore
constantemente o desempenho do software. Esteja preparado para fazer ajustes rápidos se
novos problemas surgirem. A melhoria contínua é crucial para manter a satisfação do
cliente.
Competências essenciais:
Habilidade de resolução de problemas: capacidade de identi�car problemas complexos e
desenvolver soluções e�cazes.
Conhecimento técnico: compreensão profunda do software, suas funcionalidades e
arquitetura.
Habilidade de comunicação: capacidade de transmitir claramente problemas, soluções e
progresso para todas as partes envolvidas.
Gestão de equipe: saber liderar, motivar e coordenar a equipe para atingir os objetivos.
Foco no cliente: priorizar a satisfação e as necessidades dos clientes em todas as etapas
do processo.
Disciplina
Testes e Manutenção de Software
Resumo visual
Veja o resumo visual da unidade:
Disciplina
Testes e Manutenção de Software
Referências
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro LTC, 2019.
The School Librarian. ISSN: 1948-7428.correta
destaca como o teste de software contribui para garantir que um aplicativo de registro médico
eletrônico atenda aos requisitos legais de privacidade e segurança de dados.
Em um cenário de segurança cibernética, a interpretação correta dos benefícios abrange como o
teste de software é essencial para identi�car e corrigir vulnerabilidades, protegendo assim o
software contra potenciais ameaças.
Em resumo, a interpretação adequada dos fundamentos de teste de software, objetivos de teste
de software e benefícios de teste de software é fundamental para o sucesso do desenvolvimento
de software. Essa interpretação não apenas facilita a detecção e correção de falhas, mas
também contribui para a entrega de produtos de alta qualidade, e�cientes e alinhados às
expectativas do usuário e às demandas do mercado. Essa compreensão correta é o alicerce para
um software con�ável e bem-sucedido.
Implementação efetiva no teste de software: objetivos e vantagens
Disciplina
Testes e Manutenção de Software
A prática do teste de software vai além de simplesmente identi�car falhas; é uma disciplina
crucial que, quando executada adequadamente, in�uencia a qualidade e con�abilidade dos
produtos. Vamos explorar a aplicação dos fundamentos de teste de software e como eles se
materializam na prática.
Considere um sistema bancário on-line, na qual a aplicação e�caz dos fundamentos requer a
veri�cação da integridade dos dados �nanceiros, assegurando a precisão das transações. A
análise estática de código pode revelar vulnerabilidades em potencial, enquanto a análise
dinâmica garante a operação sem falhas na interação entre diferentes funcionalidades (Paula
Filho, 2019).
Ao discutir os objetivos de teste de software, pense em um aplicativo de comércio eletrônico. A
implementação correta dos objetivos envolveria a validação da funcionalidade do carrinho de
compras, garantindo uma experiência de compra sem problemas. A estratégia de teste poderia
incluir testes de integração para assegurar a operação harmoniosa dos diversos módulos.
Disciplina
Testes e Manutenção de Software
Figura 2 | Fluxograma do teste de software. Fonte: elaborada pelo autor.
Disciplina
Testes e Manutenção de Software
Os benefícios tangíveis e intangíveis do teste de software �cam evidentes com a prática. Em um
aplicativo de saúde, por exemplo, a detecção antecipada de falhas pode reduzir custos, e a
validação rigorosa dos requisitos garante a segurança dos dados dos pacientes em
conformidade com regulamentações de privacidade (Paula Filho, 2019).
O teste de software desempenha um papel vital na satisfação do cliente. Imagine um aplicativo
de streaming de vídeo; a execução e�caz do teste garante uma reprodução suave em diferentes
dispositivos, contribuindo para uma experiência do usuário positiva e, consequentemente,
fomentando a �delidade do cliente.
A melhoria contínua é um benefício valioso que surge com a execução correta do teste de
software. Em um sistema de gerenciamento de projetos, a implementação e�caz do teste pode
identi�car oportunidades de otimização na alocação de recursos, resultando em e�ciência
operacional aprimorada ao longo do tempo (Paula Filho, 2019).
Outro benefício crucial é a conformidade com regulamentações e padrões. Em um aplicativo de
serviços �nanceiros, a execução correta do teste garante que o software esteja em conformidade
com as normas de segurança e privacidade de dados do setor, evitando possíveis implicações
legais (Paula Filho, 2019).
A segurança cibernética também se bene�cia da execução e�caz do teste de software. Ao
examinar um sistema de pagamento online, por exemplo, a implementação correta do teste pode
identi�car e corrigir vulnerabilidades, protegendo os usuários contra ameaças cibernéticas.
Portanto, a aplicação prática dos fundamentos de teste de software, objetivos de teste de
software e benefícios de teste de software é essencial para garantir o sucesso no
desenvolvimento de software. Exemplos reais, como os mencionados, destacam como a
implementação correta desses elementos não apenas identi�ca e corrige falhas, mas contribui
para a e�ciência operacional, satisfação do cliente e conformidade com padrões e
regulamentações. Uma abordagem estratégica e abrangente ao teste de software é fundamental
para criar produtos robustos e con�áveis no mundo digital em constante evolução.
Videoaula: Classi�cação de testes de software
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
No vídeo, exploraremos os fundamentos essenciais do teste de software, abordando conceitos-
chave para garantir a qualidade do desenvolvimento. Analisaremos também os objetivos
especí�cos do teste, delineando metas que visarão assegurar a funcionalidade, a segurança e o
desempenho do software. Destacaremos os benefícios tangíveis e intangíveis do teste de
Disciplina
Testes e Manutenção de Software
software, evidenciando sua importância não apenas na detecção de defeitos, mas também na
e�ciência operacional, satisfação do cliente e conformidade regulatória.
Saiba mais
Estudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
Evolução do jogo itestlearning para o ensino de testes de software: do planejamento ao projeto.
Teste de software orientado a aspectos: uma revisão sistemática.
Jogos sérios em mundos virtuais: uma abordagem para o ensino-aprendizagem de teste de
software.
Referências
https://www.researchgate.net/profile/Emanuel-Coutinho/publication/269396034_Evolucao_do_Jogo_ItestLearning_para_o_Ensino_de_Testes_de_Software_Do_Planejamento_ao_Projeto/links/5488df6c0cf268d28f090069/Evolucao-do-Jogo-ItestLearning-para-o-Ensino-de-Testes-de-Software-Do-Planejamento-ao-Projeto.pdf
https://repositorio.usp.br/bitstreams/1664cf6c-bf5a-4b20-8087-8f4e53f22926
https://repositorio.usp.br/bitstreams/1664cf6c-bf5a-4b20-8087-8f4e53f22926
https://repositorio.ufsm.br/handle/1/5398
https://repositorio.ufsm.br/handle/1/5398
https://repositorio.ufsm.br/handle/1/5398
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro: LTC, 2019.
Aula 3
Gestão de testes
Introdução
Disciplina
Testes e Manutenção de Software
Olá, estudante!
O planejamento de testes, a preparação de cenários e a validação são elementos essenciais no
ciclo de desenvolvimento de software. O processo de planejamento de testes envolve a
elaboração de estratégias detalhadas para garantir a qualidade do produto. Nesse contexto, a
preparação de cenários de teste desempenha um papel crucial, pois visa simular condições do
mundo real, identi�cando possíveis falhas e otimizando a e�ciência dos testes. A validação, por
sua vez, assegura que os resultados obtidos estejam em conformidade com as expectativas e
requisitos estabelecidos. Juntos, esses temas formam a base para a construção de sistemas
robustos, con�áveis e alinhados com as necessidades dos usuários.
Bons estudos!!
Tríade e�ciente: planejamento, cenários e validação de testes
Disciplina
Testes e Manutenção de Software
O desenvolvimento de software é um processo complexo que exige uma abordagem metódica
para garantir a entrega de produtos con�áveis e e�cientes. Nesse contexto, o planejamento de
testes, a preparação de cenários e a validação desempenham papéis cruciais na construção de
software de alta qualidade (Delamaro, 2016).
O planejamento de testes é a espinha dorsal do processo de garantia de qualidade. Ele envolve a
de�nição de estratégias detalhadas para veri�car se o software atende aos requisitos
especi�cados. Essa fase começa identi�cando os objetivos dos testes, estabelecendo
cronogramas, alocando recursose de�nindo critérios de aceitação. Um plano de testes bem
elaborado serve como um guia abrangente, garantindo que todas as funcionalidades do software
sejam testadas de maneira sistemática.
Figura 1 | Planejamento de testes. Fonte: elaborada pelo autor.
Ao lado do planejamento, a preparação de cenários de teste destaca-se como uma prática
essencial. Cenários de teste são conjuntos de condições, entradas e ações que são projetados
Disciplina
Testes e Manutenção de Software
para simular situações do mundo real. A diversidade e a abrangência desses cenários são
fundamentais para identi�car possíveis falhas e garantir que o software funcione corretamente
em diferentes contextos. A preparação minuciosa desses cenários é vital para cobrir todas as
funcionalidades, �uxos de trabalho e casos de uso possíveis, contribuindo assim para a
construção de um software robusto.
A fase de validação de testes é a etapa �nal e crítica do processo. Validar os resultados dos
testes signi�ca garantir que o software atenda aos requisitos funcionais e de desempenho
estabelecidos. Isso envolve a análise dos dados coletados durante os testes, a veri�cação da
conformidade com os padrões e a con�rmação de que o software está pronto para ser
implantado. A validação não se limita apenas à conformidade técnica, mas também avalia se o
software atende às expectativas do usuário e se está alinhado com os objetivos de negócios.
A interconexão desses três conceitos é crucial para o sucesso do ciclo de vida do
desenvolvimento de software. O planejamento de testes fornece a estrutura necessária para
orientar as atividades de teste, enquanto a preparação de cenários assegura a cobertura
abrangente, identi�cando potenciais pontos fracos. A validação, por sua vez, con�rma a
conformidade e a qualidade global do software (Delamaro, 2016).
Além disso, é importante destacar que esses conceitos não são estáticos. Em um ambiente ágil,
em que as mudanças são frequentes, o planejamento, a preparação de cenários e a validação
são processos contínuos e iterativos. À medida que o software evolui, é essencial ajustar e
expandir os planos de teste, adaptar os cenários para re�etir novos requisitos e validar
continuamente para garantir a consistência e a qualidade ao longo do tempo (Delamaro, 2016).
Em resumo, o triunvirato composto por planejamento de testes, preparação de cenários e
validação de testes é essencial para construir software con�ável e de alta qualidade. Esses
conceitos colaboram entre si para garantir que cada aspecto do software seja minuciosamente
testado, resultando em produtos que atendem não apenas às expectativas técnicas, mas às
necessidades e expectativas dos usuários e das organizações.
Triunfo da qualidade: planejamento, cenários e validação de testes
Disciplina
Testes e Manutenção de Software
A busca pela excelência no desenvolvimento de software requer uma compreensão profunda e
e�ciente de três elementos cruciais: o planejamento de testes, a preparação de cenários de teste
e a validação. Estes não são apenas conceitos isolados, mas sim elos interligados que formam
uma abordagem robusta para garantir a qualidade do software (Gonçalvez et al., 2019).
Planejamento de testes: o planejamento de testes é a fase inicial e estratégica do ciclo de
vida do desenvolvimento de software. Nesta etapa, os engenheiros de teste e
desenvolvedores colaboram para criar um plano abrangente que delineia as estratégias e
abordagens para testar cada aspecto do software. Ao desenvolver um sistema de comércio
eletrônico, o planejamento de testes pode incluir casos especí�cos para veri�car a
funcionalidade de compra, o processamento de pagamentos e a integração com sistemas
externos, assegurando que cada parte essencial seja meticulosamente testada.
Preparação de cenários de teste: a preparação de cenários de teste é a implementação
prática do plano de testes. Aqui, os engenheiros criam situações que simulam condições
do mundo real, garantindo que o software reaja de maneira desejada em diversas
circunstâncias. No contexto do exemplo do sistema de comércio eletrônico, a preparação
de cenários de teste pode envolver a simulação de diferentes volumes de tráfego no site,
testes de carga para avaliar o desempenho em picos de uso e cenários de recuperação
após falhas no processamento de pagamento (Gonçalvez et al., 2019).
Disciplina
Testes e Manutenção de Software
Validação de testes: a fase de validação de testes representa a con�rmação de que o
software está pronto para ser implantado. Nesta etapa, os resultados dos testes são
analisados para garantir que todas as funcionalidades operem conforme o esperado.
Continuando com o exemplo do comércio eletrônico, a validação de testes envolveria a
veri�cação minuciosa de cada transação concluída, assegurando que os pedidos sejam
registrados corretamente, que os pagamentos sejam processados de forma segura e que a
comunicação com sistemas externos ocorra sem problemas.
É crucial entender a interdependência desses elementos. O planejamento de testes in�uencia
diretamente a preparação de cenários, fornecendo a estrutura para a criação desses cenários
especí�cos. Da mesma forma, os resultados da preparação de cenários impactam diretamente a
validação, pois é a qualidade e abrangência desses cenários que determinam a e�cácia da
validação.
Em ambientes ágeis, na qual a adaptação constante é a norma, a interpretação desses conceitos
é ainda mais vital. O planejamento de testes deve ser �exível o su�ciente para se ajustar a
mudanças nos requisitos, e a preparação de cenários de teste deve ser dinâmica o bastante para
incorporar novas situações. A validação, por sua vez, deve ser contínua e iterativa, assegurando
que cada iteração do software seja devidamente testada e validada.
Em resumo, a interpretação e�caz do planejamento de testes, preparação de cenários e
validação de testes é essencial para garantir a qualidade e con�abilidade do software. Esses
conceitos não são apenas etapas isoladas, mas componentes interconectados de um processo
contínuo e iterativo. Quando compreendidos e aplicados adequadamente, eles garantem não
apenas a conformidade técnica, mas a satisfação do usuário e o sucesso global do projeto de
desenvolvimento de software.
Excelência em desenvolvimento: planejamento, cenários e validação
Disciplina
Testes e Manutenção de Software
No dinâmico cenário do desenvolvimento de software, a aplicação efetiva de planejamento de
testes, preparação de cenários e validação é a chave para a construção de sistemas robustos e
con�áveis. Vamos explorar exemplos reais para entender como esses conceitos se aplicam e se
interconectam em um contexto prático.
Imagine o desenvolvimento de um aplicativo de gerenciamento �nanceiro pessoal. No estágio de
planejamento de testes, a equipe de�ne os objetivos especí�cos, cronogramas e recursos
necessários para garantir a qualidade do aplicativo. Por exemplo, uma meta pode ser garantir
que o aplicativo suporte múltiplas contas bancárias e categorias de despesas (Paula Filho,
2019).
Ao criar o plano de testes, a equipe identi�ca os casos de teste relevantes, como a veri�cação de
transferências entre contas e a correta categorização de despesas. O planejamento deve ser
�exível o su�ciente para se adaptar a possíveis mudanças, como a introdução de uma nova
funcionalidade de relatórios, garantindo que a estratégia de teste permaneça abrangente.
Agora, na fase de preparação de cenários de teste, a equipe traduz os planos em situações
práticas. Por exemplo, para testar a funcionalidade de transferência entre contas, a equipe cria
cenários que simulam diferentes cenários, como transferências entre contas do mesmo banco e
transferências interbancárias.
Além disso, ao preparar cenários para a funcionalidade de categorização de despesas, a equipe
pode criar casos que envolvem despesas regulares, despesas únicas e categorias
personalizadas. Essa abordagem assegura que o software seja testado em condições que
imitam a diversidade de usos queos usuários �nais podem encontrar.
Com os cenários preparados, a validação de testes entra em cena. Neste exemplo, a equipe
executa os testes, analisando se as transferências entre contas ocorrem sem falhas, se a
Disciplina
Testes e Manutenção de Software
categorização de despesas é precisa e se todas as novas funcionalidades, como relatórios,
funcionam conforme o esperado (Paula Filho, 2019).
Durante a validação, a equipe pode descobrir que o aplicativo precisa ser ajustado para lidar com
transferências de grandes quantias entre contas ou que certas categorias de despesas não estão
sendo reconhecidas corretamente. A validação é um processo iterativo, nos quais os resultados
dos testes informam ajustes no software e, por sua vez, geram novos testes para con�rmar as
melhorias (Paula Filho, 2019).
A interconexão desses elementos é evidente: o planejamento direciona a preparação de cenários,
que, por sua vez, impacta a validação. O sucesso de um está intrinsecamente ligado ao sucesso
dos outros.
Em um ambiente ágil, a aplicação desses conceitos é ainda mais crucial. À medida que novas
funcionalidades são introduzidas ou requisitos são modi�cados, a equipe deve ajustar
continuamente o planejamento de testes, criar cenários e validar constantemente. Isso garante
que o software evolua em conformidade com as necessidades do usuário e mantenha os mais
altos padrões de qualidade.
Em resumo, a aplicação prática de planejamento de testes, a preparação de cenários e a
validação são essenciais para o desenvolvimento de software bem-sucedido. Ao alinhar esses
conceitos com exemplos do mundo real, as equipes podem construir produtos que não apenas
atendam aos requisitos técnicos, mas superem as expectativas dos usuários �nais. Essa
abordagem metodológica contribui não apenas para a construção de software, mas para a
construção de con�ança e satisfação duradouras.
Videoaula: Gestão de testes
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
No vídeo que abordará planejamento de testes, preparação de cenários e validação,
destacaremos a importância estratégica de um planejamento detalhado. A preparação de
cenários, que será ilustrada com exemplos práticos, enfatizará a simulação de situações do
mundo real. A fase de validação será explorada, evidenciando como testes criteriosos
con�rmarão a conformidade e qualidade do software. Este conteúdo oferecerá conceitos
essenciais para equipes de desenvolvimento em busca de e�cácia na garantia de qualidade de
software.
Disciplina
Testes e Manutenção de Software
Saiba mais
Estudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
Arquitetura de software para um Sistema de Gestão de Testes Adaptativos Computadorizado.
Integrando requisitos, gestão de defeitos e gestão de testes de software.
Sistema de gestão de testes em dispositivos móveis.
Referências
https://www.researchgate.net/profile/Mehran-Misaghi/publication/275973305_Arquitetura_de_software_para_um_Sistema_de_Gestao_de_Testes_Adaptativos_Computadorizado_Software/links/554d86e308ae12808b34ee53/Arquitetura-de-software-para-um-Sistema-de-Gestao-de-Testes-Adaptativos-Computadorizado-Software.pdf
https://periodicos.univali.br/index.php/acotb/article/view/10747
https://repositorio.ipcb.pt/handle/10400.11/1706
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de . Engenharia de Software - Produtos - Vol. 1. Rio de Janeiro: LTC, 2019.
Aula 4
Processos de testes
Introdução
Disciplina
Testes e Manutenção de Software
Olá, estudante
A efetividade empresarial repousa na interação dinâmica entre estratégia e riscos, delineando um
percurso seguro em direção ao sucesso. Dentro desse cenário, o monitoramento e o controle se
destacam como elementos fundamentais, assegurando a constante harmonia com os objetivos
estratégicos e a antecipação ativa de possíveis riscos. Simultaneamente, as técnicas de teste
desempenham um papel crucial, garantindo con�abilidade e qualidade nos produtos e
processos. A revisão, inspeção, medição estática e análise estática convergem para formar um
conjunto sólido na busca pela excelência operacional. Este texto explora a interligação entre
esses tópicos, revelando como a sinergia entre estratégia, monitoramento e técnicas de teste é
essencial na jornada empresarial contemporânea.
Bons estudos!
Essenciais empresariais: estratégia, riscos e técnicas de teste
Disciplina
Testes e Manutenção de Software
A gestão contemporânea de empresas demanda uma compreensão profunda de três elementos
interligados: estratégia e riscos, monitoramento e controle, e técnicas de teste, que incluem
revisão, inspeção, medição estática e análise estática.
Estratégia e riscos são inseparáveis na busca pelo sucesso organizacional. A estratégia envolve
a formulação de um plano para atingir objetivos, enquanto os riscos representam as incertezas
inerentes a qualquer empreendimento. A capacidade de antecipar, avaliar e mitigar riscos é
fundamental. A estratégia e�caz não só orienta a organização, mas também incorpora uma
avaliação abrangente dos riscos associados. Compreender a inter-relação desses elementos é
crucial para tomadas de decisões informadas e adaptativas (Delamaro, 2016).
O monitoramento e o controle formam a bússola e o leme da navegação empresarial. O
monitoramento contínuo assegura que a execução esteja alinhada com a estratégia delineada,
permitindo ajustes ágeis quando necessário. O controle, por sua vez, é o mecanismo que garante
que as operações permaneçam no curso desejado. É uma função proativa que atua na prevenção
de desvios e na otimização constante dos processos. Esses elementos são sinônimos de
e�ciência operacional e resiliência organizacional (Delamaro, 2016).
As técnicas de teste desempenham um papel vital na garantia da qualidade e na validação dos
produtos e processos. A revisão, como primeira linha de defesa, envolve a veri�cação minuciosa
de documentos e códigos para identi�car possíveis falhas. A inspeção vai além, examinando de
perto a implementação prática. A medição estática envolve a análise de métricas para avaliar a
conformidade com padrões prede�nidos. Já a análise estática foca na compreensão
Disciplina
Testes e Manutenção de Software
aprofundada do comportamento do sistema. Integrar essas técnicas nos processos de
desenvolvimento é crucial para garantir a con�abilidade e a e�cácia dos produtos (Delamaro,
2016).
A coesão desses elementos é evidente ao considerar um exemplo prático. Se uma empresa
deseja expandir sua presença global, a estratégia delineará os mercados-alvo e as abordagens de
entrada, enquanto a gestão de riscos identi�cará e mitigará proativamente potenciais obstáculos
(Delamaro, 2016).
No contexto do monitoramento e controle, um sistema robusto permitiria o acompanhamento em
tempo real do desempenho nos novos mercados. Se houver desvios em relação aos objetivos, o
controle permitirá ajustes rápidos, garantindo a e�cácia contínua da estratégia.
Quanto às técnicas de teste, no contexto da expansão global, a revisão minuciosa dos
documentos legais e contratos seria essencial para garantir conformidade com regulamentações
locais. A inspeção das operações e processos nos novos locais seria crucial para evitar
problemas práticos. A medição estática e análise estática seriam aplicadas para avaliar o
impacto das mudanças nos sistemas existentes (Delamaro, 2016).
Tabela 1 | Fases do teste de software
Fases do Teste
Estratégia e Riscos
Monitoramento e
Controle
Técnicas de Teste
Planejamento de
Testes
De�ne estratégias
para testar cada
aspecto do software.Monitora o progresso
do plano de testes,
ajustando-o conforme
necessário.
Elaboração de casos
de teste especí�cos
para funcionalidades
e integrações do
software.
Preparação de
Cenários
Cria situações
simuladas,
considerando riscos
do mundo real.
Realiza o
monitoramento ativo
dos cenários de teste,
ajustando-os
conforme
necessário.
Simulação de
condições de tráfego,
testes de carga para
avaliar desempenho e
recuperação.
Disciplina
Testes e Manutenção de Software
Fonte: elaborada pelo autor.
Em resumo, a interconexão entre estratégia e riscos, monitoramento e controle, e técnicas de
teste é vital para a prosperidade empresarial. É por meio dessa sinergia que as organizações
podem não apenas planejar e enfrentar desa�os, mas garantir a consistência e a qualidade em
suas operações, adaptando-se dinamicamente às complexidades do ambiente empresarial
global.
Navegando nos elementos empresariais: estratégia, riscos, monitoramento e
técnicas de teste
Validação de Testes
Analisa riscos e
resultados para
garantir a prontidão
do software.
Monitora os
resultados dos testes,
assegurando a
conformidade das
funcionalidades
esperadas.
Veri�cação
minuciosa de
transações
concluídas,
assegurando registro
correto e
processamento.
Disciplina
Testes e Manutenção de Software
Em um contexto de teste de software, a interpretação e�caz de estratégia e riscos,
monitoramento e controle, e técnicas de teste é essencial para garantir a qualidade e
con�abilidade dos produtos. A estratégia nesse cenário refere-se à abordagem planejada para
testar um software, enquanto os riscos são potenciais falhas ou desa�os que podem surgir
durante o processo.
A estratégia de teste pode envolver a escolha de metodologias, como testes de caixa preta ou
branca, dependendo dos requisitos e da complexidade do software. Ao mesmo tempo, os riscos
podem incluir a falta de cobertura de teste em determinadas áreas críticas ou a presença de
dependências externas que podem impactar negativamente o processo de teste.
O monitoramento e controle no teste de software são comparáveis a um sistema de vigilância
constante. Ferramentas de monitoramento automatizado, juntamente com métricas de
desempenho, permitem que as equipes identi�quem rapidamente desvios nos resultados
esperados. Se, por exemplo, o tempo de resposta do software exceder os limites de�nidos, os
sistemas de controle permitem ajustes imediatos para otimizar o desempenho (Gonçalvez et al.,
2019).
As técnicas de teste, incluindo revisão, inspeção, medição estática e análise estática, são
cruciais no ciclo de vida do teste de software. A revisão de códigos por pares permite a detecção
precoce de erros, enquanto a inspeção minuciosa da documentação assegura uma compreensão
clara dos requisitos. A medição estática envolve a análise de métricas de código para identi�car
possíveis problemas de qualidade, como complexidade excessiva. Já a análise estática procura
entender o comportamento do sistema sem executar o código, proporcionando insights valiosos
antes mesmo da fase de teste funcional (Gonçalvez et al., 2019).
Um exemplo prático pode ser ilustrado ao considerar o desenvolvimento de um aplicativo de
comércio eletrônico. A estratégia de teste pode incluir a validação de funcionalidades críticas,
como processamento de pedidos, integração de pagamentos e segurança de dados. Os riscos
associados podem envolver a possibilidade de falhas nas transações �nanceiras ou
vulnerabilidades de segurança que podem comprometer informações do cliente (Gonçalvez et al.,
2019).
No monitoramento e controle, ferramentas automatizadas podem ser con�guradas para
monitorar continuamente o tempo de resposta do aplicativo durante picos de tráfego, garantindo
que ele atenda aos padrões de desempenho de�nidos. Se o tempo de resposta exceder os
limites aceitáveis, os controles automáticos podem ser acionados para otimizar a e�ciência do
código ou alocar mais recursos de servidor.
No âmbito das técnicas de teste, a revisão de código pode destacar problemas potenciais na
lógica de processamento de pedidos, enquanto a medição estática pode identi�car áreas de
código que exigem simpli�cação para melhorar a manutenção e a e�ciência. A análise estática
pode revelar possíveis vulnerabilidades de segurança, permitindo que a equipe de
desenvolvimento implemente correções antes da fase de testes funcionais.
Em síntese, a interpretação e�caz de estratégia e riscos, monitoramento e controle, e técnicas de
teste é crucial no teste de software. A aplicação estratégica desses conceitos, juntamente com a
identi�cação proativa de riscos e a implementação de técnicas de teste abrangentes, assegura a
entrega de software de alta qualidade, atendendo aos padrões de desempenho e às expectativas
dos usuários.
Disciplina
Testes e Manutenção de Software
Excelência em desenvolvimento: estratégia, riscos e técnicas de teste
Na indústria de desenvolvimento de software, a aplicação inteligente de estratégia e riscos,
monitoramento e controle, e técnicas de teste é vital para garantir a entrega de produtos robustos
e con�áveis. Vamos explorar exemplos concretos de como esses princípios são aplicados,
ampliando nosso entendimento de como eles moldam o desenvolvimento e teste de software.
Ao desenvolver um sistema de gestão �nanceira, a estratégia de testes vai além da mera
validação de funcionalidades. Ela envolveria uma abordagem planejada para testar aspectos
críticos, como cálculos de juros e integração com bancos. Aqui, a estratégia é essencial para
assegurar que o software atenda aos requisitos especí�cos do setor �nanceiro. Contudo, essa
estratégia também deve ser acompanhada de uma gestão e�caz de riscos, considerando a
possibilidade de erros nos cálculos �nanceiros ou os desa�os na integração com sistemas
externos. A identi�cação proativa desses riscos e a implementação de estratégias de mitigação
são cruciais para evitar impactos negativos na funcionalidade do software (Paula Filho, 2019).
Disciplina
Testes e Manutenção de Software
Figura 1 | Fluxo de testes para sistema de gestão �nanceira. Fonte: elaborada pelo autor.
Imagine um aplicativo de comércio eletrônico durante um evento de vendas sazonal, em que o
tráfego pode atingir níveis extraordinários. O monitoramento constante é essencial nesse
contexto dinâmico. Ferramentas automáticas de monitoramento podem rastrear métricas de
desempenho, como tempo de resposta e taxa de erros, em tempo real. A aplicação prática desse
monitoramento é evidente quando ocorre um aumento inesperado nos tempos de resposta
durante um pico de tráfego. Aqui, os controles automáticos entram em ação, otimizando o uso de
recursos para manter a estabilidade do sistema e garantir uma experiência contínua para os
usuários (Paula Filho, 2019).
Disciplina
Testes e Manutenção de Software
Figura 2 | Fluxo de processo de aplicativo de comércio eletrônico. Fonte: elaborada pelo autor.
No desenvolvimento de um sistema de gerenciamento de conteúdo, a aplicação de técnicas de
teste é multifacetada. A revisão de código por pares desempenha um papel crucial na
identi�cação precoce de erros na lógica de manipulação de dados. Simultaneamente, a inspeção
detalhada da interface do usuário garante que os elementos estejam alinhados com as diretrizes
de design, proporcionando uma experiência amigável ao usuário. A medição estática do código-
fonte é empregada para analisar a complexidade, identi�cando áreas que podem ser
simpli�cadas para facilitar futuras atualizações e manutenções. Já a análise estática é aplicada
para identi�car vulnerabilidades de segurança, como a validação inadequada de entradas,
proporcionando uma visão aprofundada do sistema sem a necessidade de execução.
Na prática, a aplicação integrada desses conceitos se traduz em qualidade e con�abilidade do
software. Ao desenvolver um sistema de gestão de projetos, porexemplo, a estratégia de teste
incluiria a veri�cação da funcionalidade de atribuição de tarefas e a geração de relatórios. Os
riscos associados poderiam incluir a falha na atualização em tempo real das informações. O
monitoramento constante durante a execução de tarefas críticas permitiria a detecção imediata
de quaisquer anomalias, enquanto as técnicas de teste, como a revisão de código, garantiriam a
precisão nas atribuições de tarefas (Paula Filho, 2019).
Em resumo, a aplicação efetiva de estratégia e riscos, monitoramento e controle, e técnicas de
teste é essencial no teste de software. Exemplos do mundo real destacam como uma
abordagem holística, combinando estratégias bem de�nidas, gestão proativa de riscos,
monitoramento constante e técnicas de teste abrangentes, contribui para o desenvolvimento de
software con�ável e capaz de enfrentar os desa�os do ambiente dinâmico de TI. Essa
Disciplina
Testes e Manutenção de Software
abordagem não apenas aprimora a qualidade do software, mas também aumenta a satisfação
do usuário e a con�ança no produto.
Videoaula: Processos de testes
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
No vídeo abordará os temas de estratégia e riscos, monitoramento e controle, e técnicas de teste
no contexto do desenvolvimento de software. Você explorará como a implementação de uma
estratégia de teste robusta, aliada a uma gestão proativa de riscos e ao monitoramento contínuo,
promoverá a excelência no processo de desenvolvimento. Serão destacadas as técnicas de teste,
como revisão, inspeção, medição estática e análise estática, fundamentais para garantir a
qualidade e a segurança do software. Esteja preparado para ampliar seus conhecimentos e
maximizar a e�cácia em cada etapa do ciclo de vida do teste de software.
Saiba mais
Disciplina
Testes e Manutenção de Software
Estudante, a seguir deixo algumas sugestões de leitura para que você possa aprimorar os seus
estudos!
iTest Learning: um jogo para o ensino do planejamento de testes de software.
Processos de Teste de Software.
GORAYEB, I. L.; OLIVEIRA, S. R B. Um relato de melhoria do processo de teste de software
aplicado a uma fábrica de software.
Referências
https://www.researchgate.net/profile/Emanuel-Coutinho/publication/269095672_iTest_Learning_Um_Jogo_para_o_Ensino_do_Planejamento_de_Testes_de_Software/links/547f50430cf25b80dd6e51d3/iTest-Learning-Um-Jogo-para-o-Ensino-do-Planejamento-de-Testes-de-Software.pdf
https://lyceumonline.usf.edu.br/salavirtual/documentos/1081.pdf
http://revistas.unama.br/index.php/revistatracos/article/view/527
http://revistas.unama.br/index.php/revistatracos/article/view/527
Disciplina
Testes e Manutenção de Software
DELAMARO, M. Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro : LTC, 2019.
Aula 5
Revisão da unidade
Explorando fundamentos: introdução, classi�cação e gestão de testes de
software e processos
Disciplina
Testes e Manutenção de Software
Olá, estudante!
O universo do teste de software desempenha um papel vital e insubstituível no âmbito do
desenvolvimento de produtos digitais, sendo um elemento essencial que garante a qualidade e
e�cácia das soluções oferecidas. O entendimento aprofundado desse campo é imprescindível
para compreender a sua posição crucial no ciclo de vida do software.
O teste de software, em sua essência, é uma prática sistemática projetada para avaliar se um
aplicativo ou sistema atende aos requisitos especi�cados e opera conforme as expectativas.
Esse estágio crítico não se limita a um momento especí�co, estendendo-se desde a concepção
inicial até a entrega �nal do produto. Compreender os fundamentos, como os objetivos do teste e
a importância do controle de qualidade, é um pré-requisito fundamental para estabelecer uma
base sólida no domínio do teste de software (Delamaro, 2016).
A classi�cação dos testes de software é uma estratégia crucial que abrange diversas categorias,
cada uma concentrada em aspectos especí�cos do software. Os testes de unidade são
direcionados para examinar componentes individuais, enquanto os testes de integração visam
veri�car a interação entre esses componentes. Adicionalmente, os Testes de Aceitação do
Usuário (UAT) entram em cena para avaliar se o sistema atende às necessidades dos usuários
�nais. Essa classi�cação desempenha um papel crucial ao assegurar que cada aspecto do
software seja minuciosamente avaliado, identi�cando falhas em vários níveis (Gonçalvez et al.,
2019).
A gestão de testes representa um componente vital para coordenar e otimizar as atividades de
teste. Este processo envolve o planejamento estratégico, a alocação e�ciente de recursos e o
acompanhamento contínuo do progresso. A de�nição clara de metas e a identi�cação de
métricas de desempenho são elementos essenciais para garantir uma gestão de testes e�caz.
Assegurar que as equipes de teste estejam alinhadas com os objetivos de desenvolvimento é
Disciplina
Testes e Manutenção de Software
crucial para garantir a e�cácia do processo de teste e, por conseguinte, a qualidade do produto
(Paula Filho, 2019).
Os processos de teste delineiam etapas sistemáticas que visam conduzir testes de software de
maneira abrangente. Essas etapas incluem desde a análise de requisitos até o design dos casos
de teste, execução, monitoramento e relatórios. A automação desempenha um papel signi�cativo
neste cenário, acelerando a execução de testes repetitivos e melhorando a e�ciência global.
Compreender esses processos é fundamental para garantir que o software seja submetido a
uma avaliação completa e rigorosa.
Em resumo, a introdução ao teste de software é a chave para compreender o seu papel integral
no ciclo de vida do desenvolvimento de software. A classi�cação de testes, que aborda
diferentes aspectos e níveis, proporciona uma visão abrangente das diversas abordagens
disponíveis. A gestão de testes é crucial para orquestrar uma estratégia e�caz, enquanto os
processos de testes delineiam as etapas essenciais para garantir a qualidade do software. Ao
incorporar e aplicar esses conceitos, as equipes de desenvolvimento podem fortalecer seus
esforços na busca constante pela excelência e con�abilidade em produtos de software.
Videoaula: Revisão da unidade
Este conteúdo é um vídeo!
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Assista ao nosso vídeo informativo explorando os fundamentos do teste de software. Descubra a
importância da introdução ao teste, explore a classi�cação de testes de software para
abordagens especí�cas, mergulhe na e�caz gestão de testes para otimizar recursos e
acompanhe os processos de testes, passando por etapas cruciais. Prepare-se para aprimorar seu
entendimento desses temas essenciais, fundamentais para garantir a qualidade e a e�ciência no
desenvolvimento de software.
Estudo de caso
Disciplina
Testes e Manutenção de Software
Uma empresa de desenvolvimento de software, denominada Tecnologia Soluções, enfrentava
desa�os relacionados à qualidade de seus produtos e ao tempo necessário para lançar novas
funcionalidades. Visando aprimorar seus processos de teste, a empresa decidiu realizar uma
análise abrangente que envolvesse a introdução de conceitos fundamentais de teste de software,
a classi�cação adequada dos testes, a implementação de uma gestão e�caz e a otimização dos
processos de teste. Você foi selecionado para ser o gerente e responsável por desenvolver essa
atividade, porém, existe algumas questões a serem abordadas para esses desa�os:
1. Introdução ao teste de software: Pergunta: Como oteste de software se integra ao ciclo de
vida do desenvolvimento e por que é crucial para garantir a qualidade dos produtos?
Explicação: o teste de software desempenha um papel vital no ciclo de vida do desenvolvimento,
garantindo a entrega de produtos de alta qualidade. Ele está intrinsecamente ligado a cada fase
do desenvolvimento de software, desde a concepção até a entrega �nal. Por meio de técnicas
sistemáticas de avaliação, o teste de software veri�ca se o software atende aos requisitos
especi�cados e funciona conforme o esperado. (Delamaro, 2016).
2. Classi�cação de testes de software: Pergunta: Explique a importância da classi�cação e�caz
dos testes e como diferentes estratégias podem ser aplicadas para otimizar os esforços de
teste.
Explicação: a classi�cação e�caz dos testes é essencial para direcionar esforços de maneira
e�ciente. Ao categorizar os testes em diferentes grupos, como testes de unidade, integração e
aceitação do usuário (UAT), a equipe de teste pode concentrar-se em aspectos especí�cos do
software, identi�cando e corrigindo falhas de maneira mais direcionada (Gonçalvez et al., 2019).
3. Gestão de testes e processos de testes: Pergunta: Quais são as estratégias práticas de gestão
que podem ser adotadas para monitorar e controlar e�cientemente o processo de teste durante o
ciclo de desenvolvimento?
Disciplina
Testes e Manutenção de Software
Explicação: a gestão e�ciente de testes é vital para o sucesso do ciclo de desenvolvimento.
Estratégias práticas incluem um planejamento estratégico, alocação e�ciente de recursos e
monitoramento contínuo do progresso. De�nir metas claras e identi�car métricas de
desempenho são componentes essenciais para assegurar o sucesso da gestão de testes (Paula
Filho, 2019).
Este estudo de caso antecipa que a Tecnologia Soluções integrará conceitos fundamentais,
classi�cará os testes de maneira e�caz e implementará uma gestão robusta. A empresa está
prevista para experimentar melhorias substanciais na qualidade do software e na e�ciência do
ciclo de desenvolvimento. A ênfase contínua na aprendizagem, adaptação e comunicação
transparente é projetada para ser essencial para o sucesso da Tecnologia Soluções na constante
busca pela entrega de produtos de alta qualidade e na satisfação contínua do cliente.
________
Re�ita
Este estudo de caso oferece uma visão de como a Tecnologia Soluções, no futuro, se prepara
para aprimorar signi�cativamente seus processos de teste de software. Ao antecipar a
integração de conceitos fundamentais, a classi�cação e�caz dos testes e uma gestão robusta, a
empresa se posiciona para elevar a qualidade de seus produtos e otimizar o ciclo de
desenvolvimento.
Na perspectiva da introdução ao teste de software, percebe-se que a TechSoft reconhece a
importância de começar o teste desde as fases iniciais do desenvolvimento, apostando na
identi�cação precoce de problemas. A detecção precoce de defeitos, prevista para ser
incorporada ao processo de teste, é essencial para aprimorar a qualidade �nal do software e a
e�ciência do desenvolvimento.
A classi�cação e�caz dos testes é destacada como uma estratégia crucial para direcionar os
esforços de teste de maneira mais e�ciente no futuro. A expectativa é de que a TechSoft escolha
estratégias adequadas para diferentes contextos de desenvolvimento, otimizando assim seus
processos de teste.
Na gestão de testes e processos de testes, a empresa está prevista para adotar práticas ágeis,
como reuniões de retrospectiva, para promover a melhoria contínua. A ênfase na aprendizagem
contínua, adaptação a mudanças e comunicação transparente sinaliza uma abordagem proativa
para lidar com os desa�os dinâmicos do desenvolvimento de software.
No futuro delineado neste estudo, a Tecnologia Soluções projeta não apenas uma melhoria
quantitativa em seus processos de teste, mas também uma mudança cultural que abraça a
inovação, aprendizado contínuo e a busca incessante pela excelência na entrega de produtos de
alta qualidade. Este cenário futuro promete posicionar a Tecnologia Soluções como líder em seu
setor, destacando a importância estratégica do teste de software na era da tecnologia em
constante evolução.
Videoaula: Resolução do estudo de caso
Este conteúdo é um vídeo!
Disciplina
Testes e Manutenção de Software
Para assistir este conteúdo é necessário que você acesse o AVA pelo
computador ou pelo aplicativo. Você pode baixar os vídeos direto no aplicativo
para assistir mesmo sem conexão à internet.
Em um cenário dinâmico de desenvolvimento de software, a busca por métodos e práticas que
aprimorem a qualidade dos produtos e otimizem os processos é constante. Nesse contexto, a
Tecnologia Soluções reconhece a necessidade de aprimorar sua abordagem ao teste de
software. A implementação de estratégias inovadoras e e�cientes torna-se imperativa para
atender às demandas crescentes do mercado e garantir a satisfação dos clientes.
Este conjunto de resoluções propõe uma transformação signi�cativa na abordagem da
Tecnologia Soluções ao teste de software. As soluções delineadas visam integrar de forma
e�caz os testes ao ciclo de desenvolvimento, classi�car os testes de maneira inteligente e adotar
estratégias ágeis de gestão para monitorar e controlar o processo de teste.
Integração ao ciclo de desenvolvimento:
Implementar uma abordagem de Desenvolvimento Orientado a Testes (TDD), incorporando
a prática de criar testes antes da implementação do código. Isso assegurará que os testes
se integrem organicamente ao ciclo de vida do desenvolvimento, promovendo a detecção
precoce de defeitos e melhorando a qualidade do produto.
Classi�cação e�ciente dos testes:
Adotar uma estratégia de classi�cação dos testes baseada na pirâmide de testes,
priorizando testes unitários na base, seguidos por testes de integração e, no topo, testes de
sistema e aceitação do usuário. Isso garantirá uma distribuição equilibrada dos esforços de
teste, com foco nas áreas críticas, otimizando a cobertura e melhorando a e�ciência
global.
Estratégias de gestão e�cientes:
Implementar práticas ágeis, como Scrum ou Kanban, para promover a gestão e�ciente do
processo de teste. Estabelecer reuniões regulares de retrospectiva para avaliar o progresso,
identi�car possíveis melhorias e adaptar os planos conforme necessário. A utilização de
ferramentas de gerenciamento de testes proporcionará maior visibilidade e controle,
permitindo uma tomada de decisões mais informada ao longo do ciclo de
desenvolvimento.
Essas soluções propostas visam transformar a abordagem da Tecnologia Soluções para o teste
de software, garantindo uma integração e�caz ao ciclo de desenvolvimento, uma classi�cação
inteligente dos testes e das estratégias de gestão ágeis para monitorar e controlar o processo de
teste. Ao implementar essas mudanças, a empresa estará bem posicionada para elevar a
qualidade de seus produtos, otimizar os esforços de teste e alcançar uma gestão mais e�ciente
ao longo do ciclo de desenvolvimento.
Disciplina
Testes e Manutenção de Software
Resumo visual
Veja o resumo visual da unidade:
Disciplina
Testes e Manutenção de Software
Referências
Disciplina
Testes e Manutenção de Software
DELAMARO, . Introdução ao teste de software. Rio de Janeiro: Elsevier, 2016.
GONÇALVEZ, P. F. et al. Testes de software e gerência de con�guração. Porto Alegre: SAGAH,
2019.
PAULA FILHO, W. de P. Engenharia de Software - Produtos - Vol.1. Rio de Janeiro: LTC, 2019.
,
Unidade 2
Testes funcionais e estruturais
Aula 1
Testes funcionais
Introdução
Disciplina
Testes e Manutenção de Software
Olá, estudante!
Os testes funcionais são cruciais no desenvolvimento de software, assegurando a efetividade e
con�abilidade das aplicações. A compreensão dos princípios subjacentes a esses testes é vital
para a construção de sistemas robustos. A avaliação, por meio de critérios especí�cos,
desempenha um papel central, orientando a escolha de casos de teste e garantindo uma
cobertura abrangente. Ao explorar os critérios dos testes