Prévia do material em texto
D Conceitos de Teste de Software e acordo com Sommerville (2019), os testes de software têm como objetivo mostrar que um programa faz o que foi destinado a fazer e descobrir defeitos antes que ele seja colocado em uso. Em um teste de software, um programa é executado com o uso de dados artificiais, e os resultados são conferidos em busca de erros, anomalias ou informações sobre os atributos não funcionais do programa. Quem testa um software, tenta fazer duas coisas: 1. Mostrar ao cliente e ao desenvolvedor que o software desenvolvido atende aos seus requisitos. No caso de software customizado, isso significa que deve haver pelo menos um teste para cada requisito no documento de requisitos. No caso de produtos de software genéricos, isso significa que devem haver testes para todas as características do sistema que serão incluídas no lançamento do produto. 2. Encontrar entradas ou sequências de entradas nas quais o software se comporta de modo incorreto, indesejável ou fora da conformidade com suas especificações. Esses fatores são causados por defeitos (bugs), e o teste de software busca encontrá-los a fim de erradicar comportamentos indesejáveis, como falhas de sistema, interações indesejadas com outros sistemas, processamentos incorretos e dados corrompidos. O teste de software é utilizado justamente para encontrar e resolver erros que um programa pré-desenvolvido apresenta, a fim de corrigi-los antes que a versão definitiva seja lançada no mercado. O teste de software se concentra nas últimas etapas na construção e implementação de um programa, visando garantir o seu nível de qualidade. AsIr para exercício 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 1/13 falhas, bugs ou defeitos que um teste busca identificar incluem erros de compatibilidade provenientes de algum algoritmo, requisitos que não podem ser implementados e limitação de hardware, por exemplo. A lista pode se tornar extensa e aumentar com a complexidade do sistema. Os testes fazem parte de um processo mais amplo de verificação e validação de software (V&V). A verificação e a validação não possuem o mesmo significado, embora sejam comumente confundidas. Barry Boehm, um dos pioneiros da engenharia de software, expressou de forma sucinta suas diferenças (BOEHM. 1979): Validação: Estamos construindo o produto correto? Verificação: Estamos construindo o produto corretamente? A realização de um teste de software é um trabalho complexo. São incontáveis os fatores que podem provocar erros, falhas ou defeitos. Desde a utilização de um algoritmo incorreto até a não utilização de uma política de segurança em alguma funcionalidade do software. Por outro lado, existem técnicas que podem ser aplicadas para diminuir esses fatores. Várias técnicas, fases e testes podem ser aplicados em um software para encontrar seus defeitos, erros ou falhas. Abaixo listo alguns deles: Fases ou níveis de testes: 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 2/13 Teste de unidade – Tem o objetivo de testar unidades menores de um software, de modo isolado. Foca nas menores unidades de um programa, que podem ser funções, procedimentos, métodos ou classes. Teste de integração – após o teste de unidade, realiza-se uma verificação para garantir que as unidades funcionem juntas de maneira integrada. A ênfase é dada à construção da estrutura do sistema. À medida que vários módulos do software são executados em conjunto, é necessário verificar se a interação entre eles ocorre de forma adequada e não resultará em erros. Teste de Sistema – após a conclusão e integração do sistema, inicia-se o teste de sistemas, cujo objetivo é verificar se as funcionalidades especificadas nos documentos de requisitos estão corretas e foram implementadas adequadamente. Os requisitos não funcionais, como segurança, performance e robustez, também devem ser avaliados. Teste de regressão – Esse teste tem como objetivo realizar novos testes a cada versão do software, na qual algumas funcionalidades podem ser modificadas. Isso evita a repetição de erros que já ocorreram. Esse tipo de teste ou estratégia não é realizado durante o processo “normal” de desenvolvimento, mas sim durante a manutenção do software. Técnicas ou tipos de testes: Técnica Estrutural ou Teste da caixa branca – Tem como objetivo analisar o comportamento interno do componente de software, ou seja, o código fonte. São avaliados aspectos como teste de condição, teste de fluxo de dados, teste de ciclos e teste de caminhos lógicos. Os aspectos avaliados nesta técnica de teste dependem da complexidade e da tecnologia que determinam a construção do componente de software. 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 3/13 Técnica Funcional ou Teste da caixa preta – tem como objetivo verificar os aspectos externos de um sistema. Na prática, são fornecidas entradas e avaliadas as saídas geradas para verificar se estão em conformidade com os requisitos especificados. Inicialmente, o teste pode identificar todos os defeitos, submetendo o software a todas as entradas possíveis, o que é chamado de teste exaustivo. No entanto, esse tipo de teste pode levar muito tempo para ser executado, tornando-o inviável. Teste da caixa cinza – tem como objetivo a combinação do teste funcional e estrutural, daí o termo ‘cinza’. Analisa tanto os aspectos internos quanto os externos, de entrada e saída. No entanto, como todos os trabalhos relacionados ao teste envolvem a aplicação simultânea de várias técnicas, é aconselhável utilizar os conceitos fundamentais de cada técnica. Teste de carga – tem como objetivo avaliar os limites de uso do software, ou seja, quanto ele pode suportar termos de volume de informações, tráfego e processamento sem ocorrer erros ou falhas. Teste de usabilidade – tem como objetivo avaliar a experiência de uso do software por um pequeno grupo de usuários, que verificarão se o software atende às suas necessidades em termos de facilidade de uso. Nesse teste, também são analisados os pontos em que os usuários encontram mais dificuldades. Teste de stress – Tem como objetivo levar o software ao limite de suas operações e funcionalidades, aplicando níveis mais altos e mais baixos de intensidade, para determinar em que ponto ele deixa de operar adequadamente de acordo com os requisitos estabelecidos. Técnicas de desenvolvimento para testes 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 4/13 TDD é a sigla para Test Driven Development ou Desenvolvimento Orientado a Testes. A premissa do TDD é trabalhar em ciclos, que ocorrem na seguinte ordem: Red: escreva um teste que, ao executá-lo, falhará; Green: escreva um código que seja suficiente para passar no teste; Refactor: refatore, melhorando o código e deixando-o mais funcional. Figura 1 – Ciclos de um TDD. Fonte: Treinaweb Estes ciclos são normalmente identificados como red-green-refactor. É importante frisar que TDD não é uma técnica de escrever teste, mas sim uma metodologia para 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 5/13 desenvolvimento e escrita de código baseado em testes. Ao usar esta metodologia, o desenvolvedor adquiremais segurança ao realizar alterações no código e obtém um feedback mais rápido, caso algo não saia como esperado durante a refatoração. As correções de falhas ou defeitos também são mais abrangentes, pois, na maioria dos casos, tanto o código quanto o teste serão corrigidos, resultando em um código de projeto com maior maturidade. A popularidade da prática de TDD tem crescido muito entre os desenvolvedores, uma vez que ela traz diversas vantagens: - Escrevendo o teste antes, garantimos que o código já se desenvolva testado; - Haverá segurança para refatorar, afinal sempre refatoraremos a partir de testes que garantam que o comportamento já existente não seja quebrado; - Efeitos no design; Se tornará comum percebermos que o projeto de classes de sistemas feitos com TDD será melhor do que sistemas feitos sem TDD. Em uma análise de alto nível, a ideia de começar pelo teste permite que naturalmente se escreva um código mais fácil de ser testado, que apresenta algumas características interessantes: • Ele é mais coeso. • Ele é menos acoplado. • A interface é mais simples. • As precondições são mais simples. Como toda prática de engenharia de software, ela deve ser usada no momento certo. TDD faz muito sentido ao implementar novas funcionalidades, ao corrigir bugs, ao trabalhar em códigos complexos etc. Mas às vezes não precisamos seguir 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 6/13 o fluxo da prática de TDD; em códigos mais simples, talvez a prática do TDD não seja necessária. O BDD é sigla para Behavior Driven Development, é uma metodologia de desenvolvimento orientada a comportamento. É uma técnica de desenvolvimento que visa integrar regras de negócios com linguagem de programação, focando principalmente no comportamento do software. Esta técnica utiliza uma linguagem natural e, desta forma, busca diminuir cada vez mais as brechas ou perdas existentes entre a área de negócio e a de desenvolvimento, disponibilizando uma documentação efetiva, que será de grande importância para todo o time envolvido no desenvolvimento do projeto. Um objetivo do BDD era criar uma linguagem onipresente que os analistas de negócios pudessem usar para definir requisitos de forma inequívoca, e que também poderia facilmente ser transformado em testes de aceitação automatizados. Exemplo: Dado que um cliente tem uma conta corrente Quando o cliente transfere fundos desta conta para uma conta no exterior Em seguida, os fundos devem ser depositados na conta no exterior E a taxa de transação deve ser deduzida da conta corrente 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 7/13 Um analista de negócios pode facilmente entender um cenário escrito assim. Estão claramente definidas as metas objetivas para cada história em termos do que precisa ser desenvolvido e do que precisa ser testado. No BDD, não é uma boa prática tentar definir todos os requisitos de uma vez; as equipes que praticam BDD se envolvem em conversas contínuas com os usuários finais e outras partes interessadas para construir progressivamente um entendimento comum de quais recursos eles devem criar. A essência BDD é ser uma prática altamente colaborativa, tanto entre usuários quanto a equipe de desenvolvimento. Analistas de negócios, desenvolvedores e testadores trabalham juntos com os usuários finais para definir e especificar recursos, e os membros da equipe extraem ideias de sua experiência e know-how individuais. Essa abordagem é altamente eficiente. Como toda metodologia, o BDD também possui um ciclo, iniciando pela Descoberta, Definição, Formalização e Entrega. Figura 2: o processo do BDD. Fonte: Zoop, 2020. 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 8/13 No BDD não é apenas a equipe de desenvolvedores que fica responsável por escrever os cenários de testes. Com isso, três agentes interagem para criar o produto: o Product Owner (PO), o Quality Analyst (QA) e o developer, internacionalmente conhecido como regra dos três amigos. Em síntese, a escolha da metodologia baseada no comportamento do software com a utilização de uma linguagem natural traz vantagens como: • Reduz o desperdício: focar o esforço de desenvolvimento na descoberta e entrega do recursos que fornecerão valor comercial, evitando assim aqueles que não fornecem. • Melhora a Comunicação: desenvolvedores e testadores trabalham de forma integrada. Desta forma, a metodologia força o compartilhamento de conhecimento e informações entre toda a equipe. • Visão do todo: com o trabalho realizado de forma compartilhada e integrada, é possível ter uma visão de todas as etapas do processo de desenvolvimento e testagem do software. • Documentação Dinâmica: as equipes podem realizar o processo de documentação de forma mais abrangente e facilitada do sistema, sem despender um esforço adicional para isso. • Mudanças mais fáceis e seguras: O BDD torna consideravelmente mais fácil alterar e estender seus aplicativos. A documentação é gerada a partir das especificações executáveis usando termos que as partes interessadas estão familiarizadas. Por outro lado, o que não chega a ser uma desvantagem, mas sim um obstáculo natural nas empresas, é que o BDD requer um alto envolvimento e colaboração 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw/… 9/13 entre negócio e desenvolvimento. As práticas de BDD são baseadas em conversas e feedbacks. Se as partes interessadas não quiserem ou forem incapazes de se envolver em conversas e colaboração, ou esperam até o final do projeto antes de fornecer qualquer feedback, será difícil extrair todos os benefícios do BDD. Conteúdo Bônus Aperfeiçoe seus conhecimentos em Teste de Software. O vídeo abaixo acrescenta mais detalhes e conteúdo a nossa disciplina. Nome do vídeo: O que são testes de software ? Canal: Tu quer saber mais? Plataforma: Youtube Referência Bibliográfica MANOEL, S. da S. Governança de segurança da informação: como criar oportunidades para o seu negócio. Brasport: 2014. GALVÃO, M. da C. Fundamentos em segurança da informação. Pearson: 2015. FERNANDES, A. A.; ABREU, V. F. de. Implantando a governança de TI: da Estratégia à gestão de processos e serviços. 4.ed. Brasport: 2014. 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw… 10/13 SOMMERVILLE, IAN. Engenharia de software, 10ª ed. Pearson: 2019. DELAMARO, Márcio Eduardo; MALDONADO, José Carlos; JINO, Mário. Introdução ao teste de software. Elsevier, 2007. ANICHE, Mauricio. Testes automatizados de software: Um guia prático. Casa do Código, 2015. Atividade Prática O teste de Stress é muito importante para aplicativos e sistemas Web, principalmente E-commerce e Sistemas que podem alcançar milhares de acessos. Faça uma pesquisa e defina. - O que é Teste de Stress? - Qual a necessidade para se realizar o teste? - Qual o objetivo? - Liste pelo menos dois Tipos de Teste de Stress Gabarito Atividade Prática O que é teste de Stress. 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw… 11/13 É usado paragarantir a estabilidade e a confiabilidade do sistema. Os testes simulam uma alta taxa de dados e de tráfego e registram como o sistema responde nestas condições. Durante o teste de estresse, o software testado receberá uma alta carga de tráfego para saber o limite, até quando o software ou hardware suportarão. Isso permite melhorar o dimensionamento de infra, detectar scripts demasiadamente pesados e ter mais eficácia no gerenciamento de erros sob condições extremas. Qual a necessidade para realização deste teste. Considere os seguintes cenários: • Durante uma Black Friday, um e-commerce talvez alcance uma alta nos acessos, o sistema deve suportar o aumento. • Quando um Site é citado por um jornal ou canal de maior relevância, pode gerar um número de acessos que pode derrubar o site. • Campanhas de inscrições, matrículas ou atualizações cadastrais, com datas limites. • Algum serviço destinado a toda população, os sistemas devem estar preparados para receber milhares de acessos. Qual o Objetivo: O objetivo dos testes de estresse é verificar o sistema sob condições extremas. Essencialmente, há dois objetivos: - saber quanto o sistema suporta e qual seu comportamento após a falha. Para realizar o teste, pode ser preciso usar uma quantidade massiva de dados. Se o sistema se recuperar como deve quando sobrecarregado, terá atingido um ponto 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw… 12/13 crucial do teste, a recuperabilidade. Tipos de Teste de Stress Teste de Estresse Distribuído Teste de Estresse para Aplicações Teste de Estresse Sistêmico Teste de Estresse Exploratório Ir para exercício 17/09/2026, 10:50 Descomplica | Prática Integradora Governança E Segurança https://aulas.descomplica.com.br/graduacao/analise-e-desenvolvimento-de-sistemas/turma/pratica-integradora-governanca-e-seguranca-0t0xw… 13/13