Escolar Documentos
Profissional Documentos
Cultura Documentos
Objetivos da Unidade:
ʪ Material Teórico
ʪ Material Complementar
ʪ Referências
QUESTION B AN KS
1/3
ʪ Material Teórico
Acrescenta-se ainda que, com a forte concorrência comercial existente nos tempos atuais, as
empresas precisam lançar mais rapidamente (e com qualidade) seus softwares para atender à
crescente demanda de seus serviços e produtos. Eles estão adotando práticas ágeis e DevOps,
aproveitando o teste automatizado de software para obter lançamentos mais rápidos e
produtos de qualidade, além de um retorno mais rápido do investimento.
Automatizar os testes certos ajudará sua equipe, dando aos desenvolvedores e testadores um
tempo valioso. Eles podem então se concentrar em tarefas mais importantes. Por exemplo,
eles podem criar novos recursos, solucionar bugs complicados e fornecer software de alta
qualidade.
Tipos de Automatização
Antes de mais nada, é muito importante compreender que a maioria dos testes manuais
podem ser automatizados. Em outras palavras, existem diferentes tipos de testes, muitos dos
quais podem ser automatizados, logo, o que um usuário realiza manualmente pode ser
replicado com um script de automação. Entretanto, nem todos os testes devem ser
automatizados, veremos isso mais adiante.
Teste de Unidade
O teste de unidade é quando você isola uma única unidade de seu aplicativo do restante do
software e testa o seu comportamento. Esses testes não dependem de APIs, bancos de dados
externos ou qualquer outra coisa.
Se você tiver uma função na qual deseja realizar um teste de unidade e essa função usar
alguma biblioteca externa, ou até mesmo outra unidade do mesmo aplicativo, esses recursos
serão simulados.
O principal objetivo do teste de unidade é ver como cada componente do seu aplicativo
funcionará, sem ser afetado por mais nada. O teste de unidade é executado durante a fase de
desenvolvimento, e é considerado o primeiro nível de teste.
Teste de Integração
No teste de integração, você testa como as unidades são integradas logicamente e como
funcionam como um grupo.
Teste de API
O teste de API envolve testar as interfaces de programação de aplicativos (APIs) – diretamente
e como parte do teste de integração – para determinar se elas atendem às expectativas de
funcionalidade, con abilidade, desempenho e segurança. Como as APIs não possuem uma
GUI (interface grá ca do usuário), o teste da API é realizado na camada de mensagem. O teste
de API é crítico para ser automatizado porque as APIs servem como a interface primária para a
lógica do aplicativo e porque os testes de GUI são difíceis de manter com ciclos de lançamento
curtos e mudanças frequentes, comumente usados com o desenvolvimento de software Agile e
DevOps.
Quando uma nova versão do sistema é lançada (por exemplo, alterando alguns dos
componentes de negócios ou estruturas de dados internas), é necessário ter um conjunto de
testes de regressão de API rápidos e fáceis de executar, que veri cam se essas mudanças
internas não quebraram as interfaces de API e, deste modo, se os aplicativos cliente que
dependem das APIs continuarão a funcionar como antes.
Teste de Fumaça
O teste de fumaça é executado para examinar se a construção do sistema é estável ou não. Em
suma, seu objetivo é examinar se as principais funcionalidades funcionam corretamente para
que os testadores possam prosseguir com os testes.
Teste de Desempenho
Teste de carga, teste de estresse e teste de desempenho são todos nomes diferentes para um
conjunto de tipos de teste automatizado em que você usa uma ferramenta de teste de carga
para simular a carga de trabalho requerida por muitos usuários (chamados de usuários
virtuais) em um aplicativo que está sendo testado. A principal diferença nos termos é com
relação aos objetivos:
O primeiro passo para responder a esta pergunta é perceber que nenhum plano de teste pode
ser executado completamente com métodos automatizados. O desa o é determinar quais
componentes do plano de teste pertencem ao intervalo de teste manual e quais componentes
são mais bem atendidos no intervalo automatizado.
Trata-se de de nir expectativas realistas; a automação não pode fazer tudo. Os humanos são
mais espertos do que as máquinas (pelo menos atualmente) e podemos ver padrões e detectar
falhas intuitivamente de maneiras que os computadores não são capazes de fazer.
Talvez esta não seja a melhor abordagem, a nal, podemos automatizar testes que não
possuem impacto na satisfação do cliente, ou então, automatizar testes que poderiam sim ser
manuais (lembre-se de que automatizar não signi ca abandonar o teste manual!).
Que tal os 20% dos casos de teste usados com mais frequência, que têm o maior impacto na
satisfação do cliente e que consomem cerca de 70% do tempo da equipe de teste? Os 20% dos
casos de teste que reduzirão o tempo total de teste pelo maior fator, liberando a equipe para
outras tarefas.
Esses são os casos de teste aos quais você dedica muitas horas realizando, todos os dias, em
todos os lançamentos, em todas as builds. Esses são os casos de teste com os quais você
possui maior preocupação. Portanto, essas são as tarefas que compensam a existência da
empresa e da equipe de teste. Esses casos de teste são tediosos, mas importantes.
Exposto tudo isso, observe que um teste precisa atender a alguns critérios para ser
automatizado – caso contrário, pode acabar custando mais do que economizando. A nal, um
dos principais objetivos da automação é economizar tempo, esforço e dinheiro. Deste modo, a
seguir estão elencados três critérios essenciais para a automação de teste. Esses são pontos
de partida, ou seja, os seus critérios ou os de sua empresa podem ser diferentes, dependendo
de suas circunstâncias.
Por exemplo, digamos que queremos testar uma função de adição. Sabemos que 1 + 1 = 2 e que
752,78 + 247,22 = 1000,00. A adição é uma função determinante. Podemos usar qualquer valor
do lado esquerdo do operador de soma, bem como outros diversos valores no operador direito
do operador, e sempre teremos o resultado da adição.
O software, por outro lado, pode usar um número tão alto de entradas variáveis que é difícil
obter o mesmo resultado ao longo do tempo. Algumas variáveis podem até ser aleatórias, o
que pode di cultar a determinação do resultado especí co. O projeto do software pode
compensar isso, permitindo entradas de teste por meio de um.
Testes de fumaça, testes de sanidade e testes de regressão são bons candidatos para
automação – especialmente quando eles precisam ser testados em todas as versões e
lançamentos de um aplicativo.
A Tabela 1, a seguir, apresenta uma relação de testes que são adequados para serem
automatizados, e outros que não são adequados.
Etapas de Automação
Como em todo processo de teste, para a automação é necessário seguir algumas etapas
(MCGOVERN, 2021), conforme ilustra a Figura 1.
Figura 1 – Etapas para o Teste Automatizado
Observe na Figura 1 que a primeira etapa é a seleção da ferramenta de teste. Existem muitas
ferramentas disponíveis no mercado, cada uma com suas características e funcionalidade.
Dentre elas, destacam-se (MCGOVERN, 2021):
Após selecionar a ferramenta chega a hora de de nir o escopo da automação, ou seja, a área
do aplicativo que terá o teste automatizado. Para determinar o escopo, alguns pontos devem
ser levados em consideração (MCGOVERN, 2021):
Viabilidade técnica;
De nido o escopo, iremos para a terceira etapa, que é a criação da estratégia e o plano de
automação. Neste plano, deve ser considerado (MCGOVERN, 2021):
Aqui é possível executar o script diretamente pela ferramenta de automação ou usar uma Test
management, ferramenta que invocará a ferramenta de automação.
A última etapa diz respeito à manutenção do teste de automação, que consiste em veri car se
as funcionalidades adicionadas ao software estão funcionando bem (MCGOVERN, 2021).
Com o modelo em cascata, os projetos são bastante fáceis de gerenciar. Primeiro fazemos
isso, depois isso, e nalmente aquilo – todos sabem o que fazer em cada fase e (a princípio)
os prazos são claros. Na realidade, porém, as etapas muitas vezes não são concluídas no prazo
e o tempo alocado para as etapas posteriores deve ser reduzido para cumprir-se o prazo.
Por décadas, sabe-se que os defeitos são mais difíceis e caros de consertar quanto mais tarde
são encontrados no ciclo de vida. Esse fenômeno é um dos motivos pelos quais tratar o teste
como uma fase sequencial no nal do desenvolvimento em cascata tem sido visto, há muito
tempo, como uma grande armadilha dos testes de sistema e software. Exemplos de danos
causados pelo adiamento do teste incluem:
O encapsulamento torna mais difícil realizar o teste de caixa branca e atingir altos
níveis de cobertura de código durante o teste;
Sendo assim, empresas que se arriscam neste modelo tendem a ter di culdades de sobreviver
em um mercado com tantas concorrências. A nal, se eles lançam uma nova versão do seu
software 1 ou 2 vezes no ano, acabam por perder o interesse dos clientes.
Além disso, o teste shift-left tornou-se uma parte essencial do Agile para superar gargalos
causados por testes realizados muito tarde no ciclo de desenvolvimento.
Portanto, em vez de acumular todas as tarefas de teste para os últimos dias antes do
lançamento do seu aplicativo, sua equipe começa a realizar os testes no início do ciclo de
desenvolvimento. Encontrar e corrigir bugs o mais cedo possível ajuda a introduzir código de
alta qualidade desde o início e economizar tempo e recursos. Além disso, o design do seu
aplicativo melhora à medida em que sua equipe pode detectar e resolver possíveis problemas
de desempenho e outros gargalos mais cedo. Dessa forma, você pode garantir que apenas
aplicativos bem testados e altamente funcionais sejam publicados, permitindo que sua equipe
tenha tempo su ciente para respirar.
Em poucas palavras, observe que o Shift Left tem o objetivo de descobrir o máximo de
problemas possível, o mais cedo possível, no processo de desenvolvimento de software, para
que o custo de os corrigir esteja sob controle. Testando com frequência, sua equipe e as partes
interessadas podem garantir melhor visibilidade e controle sobre o estado atual do código e
tomar decisões informadas durante todo o projeto.
Mas, como tratamos nossos aplicativos após a implantação? Nós os deixamos fazer sua
mágica e torcer pelo melhor? Não, precisamos executar testes e obter o feedback de nossos
usuários após o lançamento também!
Para organizações cuja demanda por testes ultrapassou suas capacidades, o TaaS é um modelo
de terceirização no qual um provedor de serviços realiza atividades de teste em nome de
funcionários de empresas de desenvolvimento de software. Em outras palavras, um provedor
de serviços terceirizado é contratado para fornecer serviços de teste em conexão com as
principais atividades de negócios da organização. Os provedores de serviços TaaS alavancam
sua interface web existente, infraestrutura de teste existente e recursos de automação para
ajudar os desenvolvedores de software a trazerem novos produtos para o mercado com mais
rapidez e menos bugs.
TaaS pode assumir várias formas e formatos, geralmente fornecidos por empresas
especializadas em testes de software, ou empresas de desenvolvimento terceirizadas. Um ciclo
de teste completo pode incluir suporte ponta a ponta e recursos tecnológicos especí cos,
usados no planejamento e realização de tipos de teste de software.
Deve sempre haver uma preocupação quanto à privacidade, bem como realizar um contrato de
sigilo, uma vez que o provedor de serviço terá acesso ao seu produto de modo exclusivo e em
primeira mão.
A ideia básica com TDD e BDD é escrever o código de teste primeiro, e depois escrever apenas
o su ciente do código do aplicativo para passar no teste. Para pessoas com pressa, como
tentar cumprir o prazo de uma iteração do Agile, os programadores podem tentar enganar
certos itens, como escrever chamadas de banco de dados falsas. Então, na próxima iteração
do Agile, eles podem escrever o código para fazer com que funcionem de verdade. O objetivo é
continuar avançando.
Os programadores executam o teste e, quando ele falha, fazem a refatoração, o que signi ca
consertar o código. Grandes equipes usando Jenkins ou outros aplicativos para coordenar o
projeto maior podem até colocar uma tela na parede para mostrar quais seções do código
estão vermelhas (quebradas), ou verdes (funcionando), para permitir que todo o projeto veja
rapidamente qual é o status da construção.
BDD e TDD podem parecer muito semelhantes, pois ambos são estratégias de teste para um
aplicativo de software. Em ambos os casos, o desenvolvedor escreve o teste antes de escrever o
código para fazer o teste passar. E, em ambos os casos, os testes podem ser usados como
parte de um framework de teste automatizado para evitar bugs.
Por um lado, o BDD foi projetado para testar o comportamento de um aplicativo do ponto de
vista do usuário nal, por outro, o TDD se concentra em testar partes menores de
funcionalidade de forma isolada.
Nesta Unidade, você pôde compreender o conceito de teste automatizado e sua importância no
ciclo de vida do desenvolvimento de software. Pôde conhecer a de nição de teste manual e
teste automatizado, o qual é muito utilizado principalmente quando trabalhamos com
metodologias ágeis e DevOps. Conheceu também a técnica shift left, cuja proposta é iniciar os
testes da esquerda para a direita, tornando o teste mais constante no desenvolvimento do
software, prevendo assim comportamento inesperado desse. Por m, pôde conhecer dois dos
principais frameworks de testes: o TDD e o BDD.
2/3
ʪ Material Complementar
Livros
Teste de Software
No capítulo 9 do livro “Testes de Software”, o autor apresenta o conceito de automação do
processo de teste, bem como ilustra com alguns exemplos. Trata-se de uma literatura
recomendada para iniciantes e também para usuários intermediários.
Engenharia de Software Moderna
No livro “Engenharia de software moderna”, o autor dedica o capítulo
10 para falar sobre DevOps. Ele explica todos os conceitos
fundamentais e essenciais desta metodologia, bem como trata de testes
automatizados em DevOps. Trata-se de uma leitura indicada para
quem deseja se aprofundar nos conceitos sobre teste de software.
VALENTE, M. Engenharia de software moderna. São Paulo: Editora
independente, 2020.
Leitura
ACESSE
3/3
ʪ Referências
BRAGA, P. H. C. (org.). Teste de Software. São Paulo: Pearson Education do Brasil, 2016. (e-
book)
FERRONI, M. Erro da Nasa pode ter destruído sonda. 1999. Disponível em:
<https://www1.folha.uol.com.br/fsp/ciencia/fe0110199905.htm>. Acesso em 01/10/2021.
FERREIRA, V. Apocalipse ou enganação: o que foi o Bug do Milênio? 2017. Disponível em:
<https://www.uol.com.br/tilt/noticias/redacao/2017/08/20/apocalipse-ou-enganacao-o-que-
foi-o-bug-do-milenio.htm>. Acesso em 01/10/2021.