Buscar

Teste de software 4

Esta é uma pré-visualização de arquivo. Entre para ver o arquivo original

Conteudista: Prof. Me. Ariel da Silva Dias
Revisão Textual: Prof.ª M.ª Sandra Regina Fonseca Moreira
 
Objetivos da Unidade:
Compreender as medidas e critérios adotados para teste de
software automatizado;
Reconhecer as principais ferramentas de cobertura de teste;
Compreender o princípio FIRST.
QUESTION B AN KS
 Material Teórico
 Material Complementar
 Referências
Cobertura de Testes Automatizados
Principais Testes Automatizados e Ferramentas
A qualidade do produto é da maior importância em uma indústria B2B (business-to-business,
trata-se de uma forma de transação entre empresas, como uma que desenvolve software e um
atacadista, por exemplo). As organizações buscam sempre uma entrega oportuna e
econômica. Para alcançar a gestão da qualidade e do tempo em um mercado de
desenvolvimento de software, há um conjunto de etapas que devem ser seguidas. No entanto, a
etapa mais importante de todo o ciclo é o teste contínuo e vigoroso antes e durante o
desenvolvimento. Este método de desenvolvimento orientado a testes permite que as equipes
realizem etapas menores com precisão. 
Os recursos em um produto de software são implementados com base nos requisitos
mencionados na Especi�cação de Requisitos do Cliente, Especi�cação de Requisitos de
Software e Especi�cação de Requisitos Funcionais. Uma vez que os recursos documentados
são implementados, o código de teste deve ser escrito para veri�car se tais recursos foram
realmente desenvolvidos.
Para cada ciclo de teste realizado existem várias estratégias que conduzem o sistema a
resultados prováveis. Portanto, a cobertura do teste é administrada para maximizar os termos
do teste.
Ao medir a qualidade dos ciclos de teste realizados pelas equipes durante a entrega do
software, o processo completo é chamado de cobertura de teste. 
Em outras palavras, quando se trata de qualidade de software, queremos testar o máximo de
código humanamente (ou mecanicamente) possível, certo? Na verdade, sim e não. Para cada
1 / 3
 Material Teórico
ciclo de teste é importante considerar várias estratégias para medir a cobertura do teste e
colocar um sistema em funcionamento onde ele também possa ser maximizado a longo prazo
(CANDIDO, 2019).
O teste abrange diferentes tipos de metodologias de teste, como teste de usabilidade, teste
responsivo, teste entre navegadores e muito mais. A cobertura do teste é calculada com base
no número de recursos cobertos pelo código de teste.
Por exemplo, você recebe a tarefa de escrever testes para veri�car uma página de login. A
cobertura do teste deve veri�car as diferentes condições que podem ser encontradas em uma
página de login, ou seja, login bem-sucedido, login malsucedido, nome de usuário/senha em
branco, entre outras condições, a�nal, quanto mais recursos cobertos, melhor é a cobertura
do teste.
A cobertura do teste é uma das medidas da qualidade do teste que nos informa quanto do
aplicativo em teste foi testado. Você pode pensar nisso como varrer o chão de uma casa.
Imagine se você incluísse apenas a varredura dos quartos para seus critérios de cobertura de
varredura. Com esse critério, se você varresse 100% dos quartos, isso signi�caria que toda a
casa está limpa? Não, porque você deixou de lado a cozinha, a sala de jantar, banheiros, entre
outros. Portanto, devemos sempre ter cuidado com a cobertura de teste e reconhecer que, às
vezes, ela tem suas limitações.
A cobertura de teste é útil para de�nir certas partes do software a �m de cobri-las com testes.
Também nos informa quando testamos o su�ciente, nos dá ideias sobre o que mais testar
(expandindo assim a cobertura) e nos ajuda a saber quantitativamente a extensão de nossos
testes. Trata-se de uma ótima medida, mas mesmo com 100% de cobertura de teste, não
temos garantia de que nosso aplicativo seja 100% livre de bugs.
Mesmo que você consiga atingir apenas 20% de cobertura, pode não ser necessariamente uma
coisa ruim. A quantidade ideal de cobertura de teste a ser atingida deve ser baseada em suas
prioridades e análise de risco.
Existem muitas maneiras de considerar a cobertura de teste. Aqui, examinaremos a cobertura
de código, a cobertura orientada a dados e a abundância de outras técnicas à disposição do
testador (CANDIDO, 2019).
Cobertura de Código
A cobertura de código é a métrica mais popular para medir a cobertura de teste. Ela mede o
número de linhas cobertas pelos casos de teste, relatando o número total de linhas no código
e o número de linhas executadas pelos testes. Essencialmente, é o grau em que o código-
fonte de um programa é executado quando um conjunto de testes é executado (CANDIDO,
2019). Quanto mais cobertura de código, menor a chance de bugs não detectados chegarem à
produção. Essa medição também pode ser dividida em diferentes níveis; não apenas linhas de
código cobertas, mas também existem rami�cações, decisões dentro de construtores lógicos,
entre outros.
Figura 1 – Cobertura de código
Fonte: Freepik
A cobertura de código vem sob o teste de caixa branca, onde o programa não executado por
um conjunto de casos é relatado e o sistema coleta informações relevantes do programa em
execução.
A cobertura é ainda dividida em muitos subtipos: cobertura de função, cobertura de
rami�cação, cobertura de condição, cobertura de loop, cobertura de instrução e cobertura de
valor de parâmetro.
Por exemplo, suponha que um código tenha uma estrutura if ... else. A cobertura do código
será de 100% se a lógica implementada sob if e else for coberta (ou atravessada) pelo código de
teste. Por outro lado, a cobertura será de 50% se a lógica sob if (ou else) for coberta pelo
código de teste.
Código não testado pode resultar em problemas de qualidade. Portanto, é importante
maximizar a cobertura do código com 100%, considerado como a cobertura ideal.
Algumas considerações:
No caso ideal, para a cobertura da condição ser 100%, todas as condições com todas as
combinações possíveis de parâmetros de condição são testadas. A cobertura do valor do
parâmetro é veri�cada passando todos os valores comuns para os parâmetros na chamada de
função.
Formas de Cobertura de Código
Os testes de unidade são ótimos e funcionam bem para testar os recursos do produto em nível
de unidade (ou módulo). No entanto, a cobertura do código será calculada com base nos testes
Se os testes cobrirem todas as chamadas de função em código, a cobertura da
função é considerada 100%;
Da mesma forma, se todas as rami�cações no código, ou seja, todas as condições
if - else forem testadas com todas as entradas possíveis, então a cobertura da
rami�cação é considerada 100%;
Se todas as instruções de loop no código forem executadas, a cobertura de loop e a
cobertura de instrução serão 100%, respectivamente.
usados para veri�car essa unidade de código. Para melhorar a cobertura do código do ponto
de vista do produto, torna-se essencial solidi�car os conjuntos de teste que contêm cenários
de teste para veri�car diferentes módulos no produto (CANDIDO, 2019).
Isso é possível se as suítes de teste têm testes que veri�cam cada parte do código
implementado em detalhes. Isso ajuda a melhorar a cobertura do código, o que por sua vez
ajuda a melhorar a qualidade do código.
Resumindo, quanto maior a cobertura do código, menores são as chances de os clientes
encontrarem bugs em seu produto.
Cobertura Orientada a Dados
Com a cobertura orientada a dados você tem parâmetros de entrada e saída, cada um deles
com seu próprio domínio (o espectro de valores possíveis que eles podem ter). Se você pensar
em todas as possibilidades, acabará com um produto cartesiano porque pode testar todas as
combinações possíveis.
Cobertura funcional: a cobertura é calculada em uma função (ou nível de API). As
funções devem ser testadas contra diferentes combinações de entrada, incluindo
aquelas que cobrem as condições de nível de limite;
Cobertura de linha (ou instrução): esse tipo de cobertura é calculado com base
nos testes que cobrem instruções
executáveis no código;
Cobertura condicional: testa se diferentes instruções condicionais no código são
cobertas usando o código de teste relevante. Exemplo – Teste criado para veri�car
uma instrução switch ... case deve percorrer todas as condições implementadas sob
switch e case;
Cobertura de Loop: esta cobertura garante que todos os loops implementados no
código sejam testados pelo menos uma vez. Os loops que são acionados usando
valores de tempo de execução também devem ser testados quanto à cobertura do
loop.
Por outro lado, você pode testar menos e ir com a cobertura de cada escolha, o que signi�ca
que você escolhe em cada valor possível pelo menos uma vez. Há também todos os pares, que
empiricamente se diz ter a melhor relação custo-benefício, sendo o melhor mix entre cada
escolha e todas as combinações.
Outros Tipos de Cobertura
Existem muitas outras maneiras de cobrir os produtos de teste que usam uma teoria comum
– a “teoria do erro”, que explica os erros típicos que os programadores podem cometer.
Poucos estão listados abaixo: 
Algo muito importante de observar é que cada técnica é suportada por uma teoria do erro. A
teoria do erro leva em consideração os erros típicos que os programadores cometem. Por
Tabelas de decisão: onde as regras de negócios ou colunas da tabela de decisão
são testadas;
Valor Limite: é uma técnica de design de teste de caixa preta, que é usada para
encontrar os erros nos limites do domínio de entrada (testa o comportamento de
um programa nos limites de entrada), em vez de encontrar esses erros no centro
da entrada. Portanto, a ideia básica no teste de valor limite é selecionar os valores
das variáveis de entrada em seus: mínimo, logo acima do mínimo, logo abaixo do
mínimo, um valor nominal, logo abaixo do máximo, máximo e logo acima do
máximo. Ou seja, para cada intervalo, existem dois limites, o limite inferior (início
do intervalo) e o limite superior (�nal do intervalo), e os limites são o início e o
�m de cada partição válida. Devemos projetar casos de teste que exercitem a
funcionalidade do programa nos limites e com valores dentro e fora dos limites.
Considerando um conjunto de valores entre A e B, então projete casos de teste
para A, A + 1, A-1 e B, B + 1, B-1.  Por exemplo, suponha que um campo de texto
chamado idade deve aceitar apenas valores entre 18 e 56. Logo, um conjunto de
valores projetados para o teste são: 17, 18, 19 e 55, 56, 57;
Transição de estado: pode incluir a porcentagem de estados visitados, a
porcentagem de pares de transições válidas exercidas ou a porcentagem de
transições inválidas exercidas (da tabela de estado).
exemplo, os valores de limite consideram o erro de usar um “<” em vez de um “<=”.
Além disso, existem outros tipos de cobertura de teste que não estão relacionados a linhas de
código ou à entrada de dados de teste. Uma coisa que devemos cobrir é a fragmentação móvel
fazendo uma pergunta: estamos cobrindo os principais dispositivos móveis, sistemas
operacionais e tamanhos de tela? Quando se trata de navegadores e sistemas operacionais,
devemos considerar como nosso sistema web se comportará em qualquer combinação de
sistemas operacionais e navegadores, e quantas combinações devemos testar. Também é
necessário considerar o ambiente de teste, contexto, entre outros fatores que implicam na
execução da aplicação.
Cobertura de Código e Cobertura de Teste
A cobertura do código é a medida do grau em que o código do software foi executado. Ele cobre
testes automatizados e manuais e fornece a porcentagem de código que foi executado. Com
base nessas informações, você pode implementar testes adicionais para o produto e torná-lo
muito mais abrangente.
A principal diferença entre a cobertura de teste e a cobertura de código é que, embora a
cobertura de teste seja uma medida qualitativa, a cobertura de código é mais sobre medida
quantitativa em termos de teste. 
A cobertura de código ajuda a determinar quanto do código é executado enquanto o aplicativo
está em execução, por sua vez, a cobertura de teste é útil para descrever casos de teste que
podem ser escritos em relação ao documento de requisitos.
Análise de Código: Estática e Dinâmica
Vamos começar com uma analogia esportiva para ajudar a ilustrar a diferença entre essas duas
metodologias. 
Considere, por exemplo, que você é um goleiro e está treinando cobrança de pênaltis. Em um
primeiro caso, existe uma máquina que arremessa a bola, mecanicamente, sempre na mesma
posição programada por você. O primeiro arremesso pode lhe surpreender, mas o restante
(como são todos no mesmo local), incorre em surpresas mínimas. Bem, a análise de código
estático é semelhante a praticar pênalti com uma máquina de arremesso. Depois de algumas
defesas, você sabe exatamente onde a bola vai estar todas as vezes. Isso ajuda a trabalhar os
fundamentos e a garantir que você tenha uma boa forma. Embora isso ajude a melhorar seu
jogo, só pode levar você até certo ponto.
A análise de código estático é um método de depuração feito examinando-se o código-fonte
de um aplicativo antes que um programa seja executado. Isso geralmente é feito analisando o
código em relação a um determinado conjunto de regras ou padrões de codi�cação.
Ainda neste exemplo, considere que você deixou a máquina de lado e agora quem está te
treinando é o preparador de goleiros, um humano. A análise dinâmica de código é como
praticar seu treino contra uma pessoa ou um jogador real, com variação nos tipos, forças e
localizações de cada chute. Ele testa não apenas seus fundamentos, mas sua capacidade de
reagir a situações diferentes e inesperadas. 
A análise dinâmica de código é o método de depuração que examina um aplicativo durante ou
após a execução de um programa. Uma vez que o código-fonte pode ser executado com uma
variedade de entradas diferentes, não existe um determinado conjunto de regras que possa
abranger esse estilo.
Métricas e Ferramentas de Cobertura
As métricas de cobertura de teste medem o esforço do teste e ajudam a responder pergunta
como: "Quanto do aplicativo foi testado?". As métricas de cobertura de teste podem ser
divididas em três partes: métricas de nível de código, métricas de teste de recursos e métricas
de nível de aplicativo. Existem várias fórmulas de cobertura de teste para calcular esses
resultados e gerar relatórios de cobertura de teste. Por exemplo, “Destes testes que estão
passando ou falhando, quais são os artefatos ou área de minha aplicação que são projetados
para garantir que meus produtos sejam produzidos em alta qualidade?”. Abaixo estão 5
principais métricas de cobertura de teste.
Métricas de Nível de Código
A primeira métrica é a porcentagem de cobertura de execução de teste, trata-se da
porcentagem de testes aprovados ou executados em relação ao número total de testes.
Observe a fórmula a seguir:
Onde:
A vantagem é que você obtém uma visão geral do progresso do teste, contando o número de
testes aprovados e reprovados.
A desvantagem é que a contagem dos casos de teste aprovados não diz nada sobre a qualidade
desses testes. Por exemplo, alguns testes podem ser aprovados porque veri�ca-se a condição
trivial ou algum erro no código de teste enquanto não está funcionando de acordo com o
requisito.
Métricas de Nível de Recursos
TE: Testes executados ou porcentagem de cobertura de execução de teste;
NTE: Número de testes executados;
NTTE: Número total de testes a serem executados.
Existem duas principais métricas de nível de recurso: a cobertura de requisitos e os casos de
teste pelo requisito.
A cobertura de requisitos é usada para determinar quão bem os casos de teste cobrem os
requisitos de software. Para isso, basta dividir o número de requisitos cobertos pelo número
total de requisitos com escopo para um sprint, release ou projeto.
Onde:
A cobertura de teste avalia o impacto de uma mudança no teste ou requisito. Em vez de cobrir
cada requisito apenas no nível do teste, você pode cobrir
um requisito por meio de
con�gurações de teste. Uma con�guração de teste representa um caso de uso especí�co de
um teste. Cobrir con�gurações de teste com requisitos fornece granularidade mais �na,
abrangendo vários casos de uso.
No entanto, certos processos são mais adequados para automação do que outros. Existem
sinais indicadores a serem observados, os quais indicam que um processo está preparado para
a automação, conforme podemos ver a seguir.
Os benefícios da automação são bem documentados; aumenta a produtividade, reduz custos e
minimiza erros. Elimina tarefas manuais repetitivas, liberando-nos para sermos mais
CR: Cobertura de requisitos;
NRC: Número de requisitos cobertos;
NTR: Número total de requisitos.
inovadores. Por essa lógica, com certeza, devemos automatizar tudo o que for possível, certo?
Então, tentar automatizar tudo é uma meta sensata – até mesmo viável? Em uma palavra: não.
Se os processos são de baixo volume, requerem poucas pessoas no seu desenvolvimento, não
têm prazo, não se conectam com outros sistemas e não precisam de transparência, aplicar a
automação pode ser uma perda de tempo e um investimento perdido, pois demoraria muito
para ver qualquer ROI (retorno sobre o investimento) nesses itens de �uxo de trabalho.
Os casos de teste pelo requisito são usados para ver quais recursos estão sendo testados e o
número de testes alinhados a um requisito (Tabela 1). A maioria dos requisitos contém vários
casos de teste. É muito importante saber quais casos de teste falharam para um requisito
especí�co para reescrever os casos de teste para requisitos especí�cos.
Tabela 1 – Casos de Teste
Requisitos Caso a testar Resultado
Requisito 1 Caso de teste 1 Passou
Requisito 2 Caso de teste 2 Falhou
Requisito 3 Caso de teste 3 Incompleto 
Essa métrica é muito importante para as partes interessadas (stakeholders), pois mostra o
andamento do desenvolvimento do aplicativo/software.
Métricas de Nível de Aplicativo
Existem duas principais métricas de nível de aplicativo: o teste sem cobertura de requisitos e a
métrica de densidade de defeitos.
A densidade de defeito é uma medida do total de defeitos conhecidos, dividida pelo tamanho
da entidade de software que está sendo medida. Observe a fórmula a seguir.
Onde:
Nesta métrica é importante considerar a prioridade do defeito (baixa ou alta) ao avaliá-los. Por
exemplo, vários defeitos de baixa prioridade podem ser aprovados porque os critérios de
aceitação foram satisfeitos. Por outro lado, apenas um defeito de alta prioridade pode impedir
que os critérios de aceitação sejam satisfeitos. Defeitos de prioridade alta geralmente são
ponderados mais fortemente como parte dessa métrica.
Depois de calcular a cobertura de requisitos, você encontrará alguns requisitos que não são
cobertos. Agora, é importante saber sobre cada requisito que não foi coberto e em que estágio
o requisito se encontra.
Tabela 1 – Nome da Tabela
DD: densidade de defeito;
NRC: número de defeitos conhecidos;
NTR: tamanho da entidade de software. 
É usada para identi�car as áreas que requerem automação. Se a densidade do
defeito for alta para a funcionalidade especí�ca, será necessário um novo teste.
Para reduzir os esforços de reteste, casos de teste para defeitos conhecidos podem
ser automatizados.
Requisitos Nome do requisito Status
Requisito 1 Requisito A A fazer
Requisito 2 Requisito B Feito
Essa métrica ajuda os engenheiros de teste e desenvolvedores a identi�carem e eliminarem os
requisitos não cobertos dos requisitos totais antes de enviá-los para a fase de produção.
Limitações e Benefícios dos Testes
Automatizados
Feita estas considerações, é importante destacar que realizar testes 100% automatizados é
muito difícil. Por natureza, os testes automatizados são limitados aos casos de teste que são
escritos para eles. Eles não são capazes de testar nenhum bug fora desse escopo.
Um software em um ponto de venda (PDV) ou uma máquina registradora em um
supermercado podem possuir uma e�ciência de tempo. Mas quando necessitam de um
humano para intervir e tomar uma decisão, por exemplo, para veri�car se um cliente está
acima da idade legal para beber, eles perdem um de seus principais benefícios.
Somado a isso, a implementação e manutenção contínua da automação exigem um
investimento signi�cativo de tempo e dinheiro.
Um equívoco comum sobre automação é que ela elimina completamente o elemento humano.
Mas quem escreve os casos de teste ou scripts? O teste automatizado requer intervenção
humana para funcionar. É por isso que qualquer estratégia de teste de software deve ter uma
abordagem integrada.
Os desenvolvedores e testadores internos nem sempre criam os melhores casos de teste. Isso
é ainda mais verdadeiro para áreas menos comuns de um aplicativo que são mais difíceis de
automatizar – por exemplo, ter um testador interagindo pessoalmente com um aplicativo na
localização geográ�ca em que você deseja testar.
Isso também vale para casos de teste que são executados várias vezes. Novos bugs podem ser
introduzidos em seu aplicativo após cada melhoria ou correção do produto. Os casos de teste
em automação tornam-se ine�cazes sem a intervenção humana contínua.
Princípios FIRST
Em qualquer aplicação que resolve problemas do mundo real, ter problemas em seus testes de
unidade é a coisa menos desejável. Os bons testes escritos são ativos, enquanto os testes mal
escritos são um fardo para a sua aplicação. 
Ao escrever testes de unidade, os desenvolvedores tentam seguir o princípio FIRST tanto
quanto possível, o qual é uma combinação de vários princípios (RAHMAN, 2019).
Fast (Rápido)
A primeira letra do princípio FIRST signi�ca – Fast ou Rápido. Os testes de unidade são
pequenos pedaços de código que executam uma tarefa especí�ca. Os testes de unidade são
pequenos e, ao contrário dos testes de integração, os testes de unidade não se comunicam
pela rede e não executam operações de banco de dados. Como os testes de unidade não se
comunicam com servidores ou bancos de dados remotos, eles são executados muito
rapidamente. Os desenvolvedores que praticam o desenvolvimento orientado a testes,
executam testes de unidade com muita frequência à medida em que implementam recursos do
aplicativo (RAHMAN, 2019).
Uma das principais causas de testes lentos é a dependência que deve lidar com necessidades
malignas externas, como bancos de dados, arquivos e chamadas de rede. Eles levam milhares
de milissegundos. Portanto, para tornar a suíte mais rápida, você deve evitar a criação dessas
dependências, usando testes de simulação.
Independent (Independente)
A próxima letra no princípio FIRST signi�ca – Independente. Os testes de unidade devem ser
independentes uns dos outros. Um teste de unidade não deve depender do resultado
produzido por outro teste de unidade. Na verdade, na maioria das vezes, os testes de unidade
são executados em uma ordem aleatória. O código que você está testando ou o sistema em
teste também deve ser isolado de suas dependências. Para garantir que o bug em uma
dependência não in�uencie em um teste de unidade, as dependências geralmente são
simuladas ou fragmentadas com dados prede�nidos. Dessa forma, um teste de unidade pode
testar um sistema em teste isolado de suas dependências e produzir um resultado preciso
(RAHMAN, 2019).
Fazendo testes independentes é fácil manter seus testes focados apenas em uma pequena
quantidade de comportamento. Quando esse teste falha, você sabe exatamente o que deu
errado e onde. Não há necessidade de depurar o próprio código.
Se lá em orientação a objetos as classes são de�nidas como unidades que devem ser pequenas
e de �nalidade única, isso também pode ser aplicado aos seus testes. Se um de seus métodos
de teste pode falhar por mais de um motivo, considere dividi-lo em testes separados.
Repeatable (Repetível)
A próxima letra no princípio FIRST signi�ca – Repetível. Um teste de unidade deve ser repetido
e, se executado várias vezes,
deve produzir o mesmo resultado. Se um teste de unidade for
executado em um computador diferente, também deverá produzir o mesmo resultado. É por
isso que os testes de unidade são feitos independentemente do ambiente e de outros testes de
unidade (RAHMAN, 2019).
Os parâmetros de entrada que a função em teste requer são geralmente prede�nidos e
codi�cados. E se a função no teste precisar ser testada com parâmetros de entrada válidos e
inválidos, dois ou três testes de unidade diferentes serão criados. Cada teste de unidade testa a
função nos testes com seu próprio conjunto de parâmetros prede�nidos. Dessa forma, o teste
de unidade se torna repetível e pode ser executado várias vezes em ambientes diferentes e
ainda produzirá o mesmo resultado a cada vez que for executado.
Self-Validating (Auto-Validação)
A próxima letra signi�ca Auto-validação. Isso signi�ca que para saber se um teste de unidade
foi aprovado ou não, o desenvolvedor não deve fazer nenhuma veri�cação manual adicional
após a conclusão do teste (RAHMAN, 2019). 
O teste de unidade validará o resultado que a função em teste produziu, e ele próprio decidirá
se passa ou falha. Após a conclusão do teste, o resultado será claro.
Timely (Imediatamente e Completo)
Praticamente, você pode escrever testes de unidade a qualquer momento. Você pode esperar
até que o código esteja pronto para a produção, ou é melhor se concentrar em escrever testes
de unidade em tempo hábil (RAHMAN, 2019).
Como sugestão, você deve ter diretrizes ou regras rígidas sobre os testes de unidade. Você
pode usar processos de revisão, ou mesmo ferramentas automatizadas para rejeitar código
sem testes su�cientes.
Quanto mais você testa a unidade, mais você descobrirá que vale a pena escrever pedaços
menores de código antes de realizar um teste de unidade correspondente. Em primeiro lugar,
será mais fácil escrever o teste e, em segundo lugar, o teste será recompensado
imediatamente quando você detalhar o resto dos comportamentos no código circundante.
Nesta unidade, você pôde compreender o conceito de cobertura de teste. Como apresentado,
atualmente o desenvolvimento de software é mais sistemático e as organizações buscam
medidas de integridade e e�cácia do teste para mostrar os critérios de conclusão. De todos
eles, a cobertura de teste é considerada especialmente valiosa. 
Você também conheceu um pouco mais sobre as métricas de cobertura de testes e, por �m,
pôde compreender o conceito dos princípios FIRST.
Indicações para saber mais sobre os assuntos abordados
nesta Unidade:
  Livros  
Teste de Software 
No capítulo 11 do livro “Testes de Software”, o autor apresenta uma extensa e importante
descrição das características e conceitos relacionados ao teste em aplicações web para
internet. Trata-se de uma literatura recomendada para iniciantes e também para usuários
intermediários. 
RIOS, E. Teste de Software. Rio de Janeiro: Alta books, 2013, p. 179.
Introdução ao Teste de Software 
No capítulo 8 do livro “Introdução ao Teste de Software”, os autores apresentam uma
introdução aos conceitos de testes para aplicações web. Partindo do teste estrutural, bem
como teste baseado em modelos de especi�cação e apresentação de ferramentas. Trata-se de
uma leitura indicada para compreender, principalmente, as fases e critérios de um teste de
software. 
DELAMARO, M.; MALDONADO, J.; JINO, M. Introdução ao teste de software. São Paulo:
Elsevier, 2007
2 / 3
 Material Complementar
Engenharia de Software Moderna 
No livro “Engenharia de software moderna”, o autor dedica o capítulo 8 para falar sobre testes,
explicando a de�nição de teste de integração e teste de unidade, além de abordar os testes
automatizados. Trata-se de uma leitura indicada para quem deseja se aprofundar nos
conceitos sobre teste de software. 
VALENTE, M. Engenharia de software moderna. Editora independente, 2020.
  Leitura  
Um Pouco Sobre Cobertura de Código e Cobertura de Testes 
No artigo “Um pouco sobre cobertura de código e cobertura de testes”, o autor relaciona e
diferencia estes dois tipos de coberturas, apresentando exemplos durante sua descrição. O
autor prende a atenção ao destacar detalhes importantes dos testes automatizados, bem como
cita bons exemplos.
Clique no botão ao lado para conferir o conteúdo.
ACESSE
https://medium.com/liferay-engineering-brazil/um-pouco-sobre-cobertura-de-c%C3%B3digo-e-cobertura-de-testes-4fd062e91007/
BRAGA, P. H. C. (org.). Teste de Software. São Paulo: Pearson Education do Brasil, 2016. (e-
book)
CANDIDO, A. Um pouco sobre cobertura de código e cobertura de testes. 2019. Disponível em:
<https://medium.com/liferay-engineering-brazil/um-pouco-sobre-cobertura-de-
c%C3%B3digo-e-cobertura-de-testes-4fd062e91007/>. Acesso em: 20/11/2021.
DELAMARO, M. E.; MALDONADO, J. C.; JINO, M. Introdução ao teste de software. Rio de
Janeiro: Elsevier, 2016. (e-book)
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.
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.
FOWLER, M. The Practical Test Pyramid. Disponível em:
<https://martinfowler.com/articles/practical-test-pyramid.html>. Acesso em: 01/10/2021.
MCGOVERN, G. O que é teste de automação. Disponível em:
<https://www.guru99.com/automation-testing.html>. Acesso em: 20/10/2021. 
RAHMAN, T. FIRST: Princípios de teste. 2019. Disponível em:
<https://medium.com/@tasdikrahman/f-i-r-s-t-principles-of-testing-1a497acda8d6>.
3 / 3
 Referências
Acesso em: 20/11/2021.
VALENTE, M. T. Engenharia de software moderna: princípios e práticas para desenvolvimento
de software com produtividade. Disponível em: <https://engsoftmoderna.info/>. Acesso em:
04/05/2021.

Teste o Premium para desbloquear

Aproveite todos os benefícios por 3 dias sem pagar! 😉
Já tem cadastro?

Continue navegando