Você está na página 1de 24

TESTE DE SOFTWARE

JESSICA LAISA DIAS DA SILVA


BRUNA RIBEIRO RODRIGUES

UNIDADE 2
Unidade 2| Introdução

Software O teste de software é uma etapa importante do


desenvolvimento de sistemas, então, para atingir a
qualidade de software desejada, é importante que
você saiba como utiliza-los.

Com os sistemas de software envolvem diferentes


aspectos, é esperado que os testes consigam ser
capazes de cobrir todas as áreas do sistema, mas
primeiramente, você precisa entender o que é
Fonte: Pixabay
validação e verificação e como o teste de software
faz parte deste processo.
Unidade 2| Objetivos

1. Analisar os conceitos básicos que fundamentam o teste de software


2. Entender como funcionam os testes estruturais.
3. Entender como funcionam os testes funcionais.
4. Identificar outras técnicas que podem ser utilizadas para testar software.
1. Fundamentos de Testes de Software

Teste de Software

Os testes são uma parte importante no


processo de software, pois por meio deles
podemos descobrir defeitos no sistema e
também validar se o software realmente faz
o que é proposto.
Fonte: Pixabay
Assim, o primeiro objetivo nos leva aos testes de validação, onde utilizamos
casos de teste para saber se o software funciona como o esperado, enquanto o
segundo busca encontrar defeitos, por meio de testes específicos.

O teste de software faz parte de um processo conhecido como Verificação e


Validação (V&V).

Segundo Pressman (2011), a verificação refere-se ao conjunto de tarefas que


garantem que o software implementa corretamente uma função específica,
enquanto que a validação assegura que o sistema foi desenvolvido e pode ser
rastreado de acordo com os requisitos do cliente.
Os processos de verificação e validação iniciam desde a especificação dos
requisitos e acontecem durante todo o processo de desenvolvimento.

Conforme Sommerville (2011), tem como objetivo verificar se o software em


desenvolvimento satisfaz suas especificações e oferece a funcionalidade
esperada pelas pessoas que estão pagando pelo software.

O sistema de software comercial passar geralmente por três estágios de teste


(SOMMERVILLE, 2011):
1. Testes de desenvolvimento - o sistema é testado durante o
desenvolvimento para descobrir bugs e defeitos (SOMMERVILLE, 2011), ou
seja, são testados seus componentes e códigos-fonte e geralmente são os
próprios desenvolvedores do software que realizam os testes.

2. Testes de release - o objetivo dos testes de release é verificar se o sistema


atende aos requisitos. Neste caso, segundo Sommerville (2011), uma
equipe de teste independente testa uma versão completa do sistema antes
que ele seja liberado para os usuários.

3. Testes de usuário – nesta etapa são os usuários do sistema que o testam.


Mas, se tratando de produtos de software, Sommerville (2011) destaca que
o usuário pode ser, por exemplo, um grupo de marketing interno que
decidirá se o software pode ser comercializado, liberado e vendido.
1.1. Teste Unitário / Teste de Integração

O teste unitário é responsável por testar as


Teste unitário unidade individuais do programa, que podem ser
módulos, funções, métodos etc.

Pressman (2011) destaca que esse teste enfoca a


lógica interna de processamento e as estruturas
de dados dentro dos limites de um componente.

Fonte: Pixabay
Você pode testar diversos componentes
paralelamente.
O objetivo do teste da integração é construir uma estrutura de programa
determinada pelo projeto a partir de componentes que já foram testados
individualmente.

O teste de integração é uma técnica sistemática para construir a arquitetura


de software, ao mesmo tempo que conduz testes para descobrir erros
associados com as interfaces (PRESSMAN, 2011).
2. Técnicas de testes estruturais

As técnicas e os critérios de teste fornecem ao Teste estruturais

projetista de software uma abordagem para a


condução da atividade de teste.

Jino, Maldonado, Delamaro (2016, p. 108) ressaltam


que “várias técnicas pode ser adotadas para
conduzir e avaliar a qualidade da atividade de teste,
sendo diferenciadas de acordo com a origem das
informações utilizadas para estabelecer os requisitos
de teste”. Fonte: Pixabay
Pressman (2011) destaca que qualquer produto de engenharia pode ser
testado por uma de duas maneiras:

1. Conhecendo a função especificada para o qual um produto foi projetado


para realizar podem ser feitos testes que demonstram que cada uma das
funções é totalmente operacional, ao mesmo tempo em que erros são
procurados em cada função.
2. Conhecendo o funcionamento interno de um produto podem ser
realizados testes para garantir que tudo está certo, isto é, que as
operações internas foram realizadas de acordo com as especificações e
que todos os componentes internos foram adequadamente exercitados.
2.1 Teste de caminho básico

Teste básico

O teste de caminho básico é uma técnica de


teste caixa-branca proposta por Tom
McCabe, que de acordo com Pressman
(2011), permite ao projetista de casos de
teste derivar uma medida da complexidade
lógica de um projeto procedimental e usar
essa medida como guia para definir um
conjunto base de caminhos de execução.
Fonte: Pixabay
Todas as instruções de um programa são executadas pelo menos uma vez
durante o teste, usando casos de teste criados para exercitar o conjunto base.
Podemos utilizar grafos de fluxo para representar o fluxo do programa, em que
um nó representa comandos procedurais e as arestas representam os fluxos de
controle. Uma aresta deve terminar em um nó e as áreas limitadas pelas
arestas e nós são chamadas de região.

Podemos ter caminhos de programas independentes. Pressman (2011) define


um caminho independente como “qualquer caminho por meio do programa
que introduz pelo menos um novo conjunto de comandos de processamento
ou uma nova condição”.

Assim, quando definido em um grafo de fluxo, um caminho independente deve


incluir pelo menos uma aresta que não tenha sido atravessada antes de o
caminho ser definido.
Existem variações do teste de estrutura de controle que ampliam a
abrangência e melhoram a qualidade do teste caixa branca.

Dentre estas variações, temos: teste de condição, teste de fluxo de dados e


teste de ciclo.

O teste de condição é um método de projeto de caso de teste que exercita as


condições lógicas contidas em um módulo de programa (PRESSMAN, 2011).
3. Técnicas de testes funcionais

O teste funcional é uma técnica utilizada para se Teste Funcionais


projetarem casos de teste na qual o sistema é
considerado uma caixa preta. Também chamado de
teste comportamental, ele focaliza os requisitos
funcionais do software (PRESSMAN, 2011).

Em outras palavras, o software é avaliado do ponto


de vista do usuário e os detalhes de implementação Fonte: Pixabay

não são considerados.


As técnicas de teste caixa-preta permitem derivar séries de condições de entrada
que utilizarão completamente todos os requisitos funcionais para um programa.

Conforme Pressman (2011), tenta – se encontrar erros nas seguintes categorias:

1. Funções incorretas ou faltando.


2. Erros de interface.
3. Erros em estruturas de dados ou acesso a bases de dados externas.
4. Erros de comportamento ou de desempenho.
5. Erros de inicialização e término.
Jino, Maldonado, Delamaro (2016) explicam que em princípio o teste funcional pode
detectar todos os defeitos, submetendo o programa ou sistema a todas as possíveis
entradas, o que chamamos de teste exaustivo. Porém, nem sempre isso é viável, pois o
domínio da entrada pode ser muito grande o que torna a atividade de teste
impraticável.

Por causa disso, foram definidas técnicas de teste e critérios pertencentes a elas, o que
faz com que o teste possa ser conduzido de forma sistemática (JINO; MALDONADO;
DELAMARO, 2016). Os critérios mais conhecidos da técnica de teste funcional são:

• Baseado em Grafos.
• Particionamento de Equivalência.
• Análise de Valor Limite.
• Teste de Matriz Ortogonal.
• Error-Guessing.
3.1 Método Baseado em Grafos

Notação de um Grafo Pressman (2011) descreve que o primeiro passo


no teste caixa-preta é entender os objetos que
Objeto são modelados no software e as relações que
1 os unem.

Objeto Objeto Se você conseguiu isso, o próximo passo é


2 3 definir uma série de testes que verificam se
todos os objetos se relacionam da forma
Fonte: Baseado em Pressman (2011) esperada.
Assim, o teste do software começa criando um grafo de objetos importantes e
suas relações em que cada objeto e relação sejam exercitados para que os erros
sejam descobertos.

Para executar esses passos, Pressman (2011) explica que você começa criando
um grafo, em que os nós são representados como círculos unidos por ligações
que assumem várias formas diferentes. Podemos ter três tipos de ligações:
1. Ligação direta - indica que uma relação se move apenas em uma direção. É
representada por uma seta.

2. Ligação bidirecional - significa que a relação se aplica em ambas as


direções. Também é conhecida como ligação simétrica.

3. Ligações paralelas - são usadas quando várias relações diferentes são


estabelecidas entre os nós do grafo (PRESSMAN, 2011).
O particionamento de equivalência é um método de teste funcional que divide o
domínio de entrada de um programa em classes de dados a partir das quais
podem ser criados casos de teste (PRESSMAN, 2011).

Um caso de teste para ser considerado ideal tem que descobrir sozinho uma
classe de erros, evitando assim, que fossem executados muitos casos de teste
até que o erro geral aparecesse.

A análise de valor limite leva a uma seleção de casos de teste que utilizam
valores limites, pois os erros ocorrem em um número maior nas fronteiras do
domínio de entrada e não no meio.

Pressman (2011) relata que por essa razão que foi desenvolvida a análise do
valor limite (Boundary Value Analisys - BVA) como uma técnica de teste.
Pressman (2011) explica então que o teste de matriz ortogonal pode ser aplicado
a problemas nos quais o domínio de entrada é relativamente pequeno, mas
muito grande para acomodar o teste exaustivo.

O método de teste de matriz ortogonal é particularmente útil para encontrar


erros associados com falhas de regiões, que é uma categoria de erro associada
com lógica defeituosa em um componente de software.

A última técnica de teste funcional que vamos falar é o error guessing, que
segundo Jino, Maldonado, Delamaro (2016), é uma abordagem na qual a pessoa
pratica uma técnica para projeto de casos de teste, supondo por intuição e
experiência alguns tipos de erros. A partir daí, define casos de teste que
poderiam detectá-los.
4. Outras Técnicas de teste de Software

Ao construir um software não temos como Usuário testando sistema

prever ele será usado de fato. Pressman (2011)


afirma que é praticamente impossível para um
desenvolvedor prever como o cliente realmente
usará um programa.

Um resultado que parece transparente para o


desenvolvedor, para o usuário que irá utilizar o
sistema, pode ser confuso. Isso pode fazer com
que as instruções de uso sejam mal
interpretadas ou combinações estranhas de Fonte: Freepik
dados sejam usadas.
4.1 Teste de regressão

O teste de regressão pode ser executado tanto de


Teste de regressão
forma automática, por meio da utilização de
ferramentas de captura e reexecução, assim como de
forma manual, reexecutando um subconjunto de
todos os casos de teste. Segundo Pressman (2011), as
ferramentas de captura e reexecução permitem que
o engenheiro de software capture casos de teste e
resultados para reexecução e comparação posterior.

O teste de regressão apoia o teste de integração na


busca por defeitos. Existem testes específicos para
Fonte: Pixabay testar os requisitos não funcionais do software, como
o desempenho ou para testar ambientes e
arquiteturas.

Você também pode gostar