Engenharia de Software em Destaque: Testes de Software.
Introdução
Retomando os temas de Engenharia de Software, uma das áreas mais populares de Tecnologia da Informação (TI), escolhemos para o artigo de hoje um tópico clássico, mas que continua caindo em provas com força: Testes de Software.
Querida por uns e odiada por outros, a área de Testes possui uma variedade de nomenclaturas e subdivisões. Às vezes, dependendo do escopo de atuação, nem o próprio profissional da área consegue diferenciá-las. É por isso que a trouxemos hoje. Veja o nosso roteiro e fique por dentro de tudo:
- Conceitos Básicos
- Divisão Tradicional dos Testes
- Níveis de Testes de Software
- Técnicas de Testes de Software
- Tipos de Testes de Software
- Mapa Mental
Não há pré-requisitos para a leitura de hoje. Mesmo que seja iniciante em TI ou que seja de outra área, conseguirá entender os conceitos apresentados neste artigo, pois iremos apresentar tudo de uma maneira bem didática.
Atendendo a pedidos, este é mais um artigo elaborado em formato reduzido, de forma que você tenha bastante informação em pouco tempo. Sem mais delongas, vamos começar.
Tempo de leitura aproximada: 5 a 10 minutos
Conceitos Básicos
Primeiramente, os testes visam garantir a qualidade da solução, por meio da verificação e validação do comportamento e do funcionamento de uma aplicação na prática. De forma mais simples, é o momento de confrontar se o sistema faz o que se propôs e corresponde às expectativas do cliente.
Você Sabia? Existe uma diferença clássica entre o programa estar correto e certo. Uma aplicação pode estar correta, mas não estar certa (e vice-versa). Dê só uma olhada na esquematização que preparamos.
Um programa pode estar tecnicamente correto, mas ainda assim pode não ser útil ou eficaz para o usuário se não atender aos requisitos do cliente. Ou seja, os testes devem abranger não apenas a verificação técnica, mas também a validação das necessidades e expectativas do usuário (correto e certo).
Você Sabia? A conferência se o software está correto pode também ser chamada de verificação, enquanto a conferência se o software está certo pode ser também chamada de validação. Fique atento, pois esses conceitos são muito cobrados em prova.
A maior parte dos testes tende a ser realizada a partir da metade até o final dos projetos. Porém, isso não é regra, já que existem diversas metodologias de desenvolvimento de sistemas.
Divisão Tradicional dos Testes
No mundo dos testes, existe uma divisão tradicional entre níveis, tipos e técnicas. Apenas por preciosismo e por uma questão de organização das informações, vamos apresentar a diferença aqui, mas saiba que as bancas já não estão exigindo muito esse conceito em prova:
Para conhecimento, falaremos neste artigo sobre os seguintes níveis, técnicas e tipos de teste de software, apresentados no esquema abaixo:
O mais importante é que você saiba os nomes dos testes que vamos apresentar neste artigo e o foco de cada um deles. Se souber disso, já conseguirá acertar 80% das questões relacionadas.
Níveis de Testes de Software
Os principais níveis são teste de unidade / unitário, teste de componentes, teste de integração, teste de sistema, teste de regressão e teste de aceitação. Vamos falar um pouco sobre cada um deles:
Teste de Unidade / Unitário: prática de testar unidades isoladas do código-fonte, a fim de garantir que funcionem conforme o esperado. Executado durante o desenvolvimento, identifica erros em pequenas partes do sistema, promovendo a confiabilidade e facilitando a detecção precoce de falhas.
Teste de Componentes: concentra-se na avaliação individual de módulos ou componentes do software, garantindo que cada parte execute suas funções corretamente. Em outras palavras, visa identificar possíveis falhas no escopo do componente.
Teste de Integração: verifica a interação entre módulos ou sistemas do software, visando identificar e corrigir problemas de comunicação e comportamento conjunto. O objetivo é assegurar que as partes integradas operem harmoniosamente, promovendo estabilidade do sistema completo.
Teste de Sistema: valida o software como um todo, simulando o ambiente de produção para verificar se atende aos requisitos especificados. Seu objetivo é garantir a funcionalidade, desempenho e confiabilidade do sistema antes de sua implantação.
Teste de Regressão: verifica se as alterações recentes no código-fonte não afetaram negativamente funcionalidades existentes, garantindo a estabilidade do sistema por meio de novos testes. Ele é crucial para evitar a reintrodução de erros durante o desenvolvimento contínuo do software.
Teste de Aceitação: avalia se o software está pronto para ser utilizado e se atende às expectativas dos usuários. Admite subdivisões em sua categoria, tais como alfa (grupo pequeno e restrito, em ambiente controlado) e beta (usuários externos, em ambiente real), que são muito cobrados nas provas.
Técnicas de Testes de Software
As principais técnicas são teste caixa-branca / white-box / estrutural e teste caixa-preta / black-box / funcional. Vamos falar um pouco sobre cada uma delas:
Teste Caixa-Branca / White-Box / Estrutural: analisa a estrutura interna do código-fonte, examinando sua lógica e fluxo de controle. Podem ser utilizadas informações detalhadas sobre a implementação para criar casos de teste específicos, visando cobrir as trajetórias e condições do programa.
Teste Caixa-Preta / Black-Box / Funcional: concentra-se nas entradas e saídas esperadas, sem considerar a implementação interna. Os casos de teste baseiam-se nas especificações e funcionalidades, abstraindo o código-fonte (ou seja, sem depender do entendimento interno do sistema).
Tipos de Testes de Software
Os principais tipos são teste de usabilidade, teste de desempenho / performance, teste de carga, teste de estresse / esforço e teste de segurança. Vamos falar um pouco sobre cada um deles:
Teste de Usabilidade: avalia a facilidade de uso e a experiência do usuário ao interagir com o software. Ele identifica eficiência, satisfação e usabilidade geral, permitindo ajustes para aprimorar a interface e garantir uma experiência positiva para o usuário final.
Teste de Desempenho / Performance: avalia o desempenho do software em termos de velocidade, escalabilidade e resposta sob diferentes condições. O objetivo é garantir que o sistema atenda aos requisitos de desempenho / performance estabelecidos.
Teste de Carga: verifica como o sistema irá se comportar no mundo real, avaliando sua capacidade de resposta e tolerância ao lidar com períodos de cargas variáveis (incluindo picos). Pela sua característica, muitos chamam esse teste de volume (embora o nome carga seja mais comum nas provas).
Teste de Estresse / Esforço: submete o sistema a condições extremas ou além das capacidades normais, incluindo altas taxas de tráfego, buscando identificar seus limites e observar como ele se recupera de possíveis falhas. O objetivo é garantir a estabilidade do sistema.
Teste de Segurança: avalia a resistência do software a ameaças e tentativas de violação. Ele identifica vulnerabilidades de segurança, analisando possíveis pontos fracos no sistema e garantindo a proteção de dados sensíveis e a integridade contra potenciais ataques.
Mapa Mental
Para fechar o conteúdo, elaboramos um mapa mental exclusivo com os conceitos apresentados nesta publicação. Recomendamos que você salve-o para revisar posteriormente, pois o mapa é uma excelente estratégia para fixação do aprendizado:
Se você achou que o mapa mental ficou pequeno, nós temos uma solução para isso também: experimente baixar a imagem ou dar um zoom diretamente no seu navegador.
Conclusão
O artigo de hoje apresentou uma visão geral dos principais conceitos de Testes de Software. Se você entendeu as explicações apresentadas, o próximo passo é fazer muitas questões para treinar.
Concurseiro raiz precisa fazer exercícios. Saber o conteúdo é importante, mas somente as questões trarão a experiência prática que você precisa para as provas. O acesso ao Sistema de Questões do Estratégia é feito pelo link: https://concursos.estrategia.com/.
Além das questões, você também pode aprofundar o conteúdo por meio do material do Estratégia Concursos. Nós oferecemos diversos cursos em pdf, videoaulas e áudios para você ouvir onde quiser. Descubra tudo no link http://www.estrategiaconcursos.com.br/cursos/.
Por fim, se gostou desta publicação, então acompanhe sempre o Blog do Estratégia Concursos. Há muitos conteúdos gratuitos, objetivos e com qualidade esperando por você!
Bons estudos e até a próxima!
Cristiane Selem Ferreira Neves é Bacharel em Ciência da Computação e Mestre em Sistemas de Informação pela Universidade Federal do Rio de Janeiro (UFRJ), além de possuir a certificação Project Management Professional pelo Project Management Institute (PMI). Já foi aprovada nos seguintes concursos: ITERJ (2012), DATAPREV (2012), VALEC (2012), Rioprevidência (2012/2013), TJ-RJ (2022), TCE-RJ (2022) e CGE-SC (2022/2023). Atualmente exerce o cargo efetivo de Auditora de Controle Externo – Tecnologia da Informação no TCE-RJ, além de ser produtora de conteúdo dos Blogs do Estratégia Concursos, OAB e Carreiras Jurídicas.