Aula Prática – Qualidade e Automação de Testes

R$80,00

Roteiro de Aula Prática da disciplina Qualidade e Automação de Testes, do curso de Analise e Desenvolvimento de Dados, relacionado à atividade U1_A3 – Diferentes Tipos de Testes. O material trabalha teste de caixa branca, grafo de fluxo de controle, caminhos de execução, escrita e validação de testes em código Python.

Descrição

O que é esta aula prática?

Esta atividade pertence à disciplina Qualidade e Automação de Testes e está associada à unidade U1 – Formas e Qualidade de Testes, aula A3 – Diferentes Tipos de Testes. O roteiro aborda conceitos de teste de caixa branca e análise do comportamento lógico de trechos de código, com atenção ao fluxo de execução e à cobertura das instruções.

Indicada para estudantes do curso de Analise e Desenvolvimento de Dados, a proposta envolve a representação de um fluxo de controle e a validação de testes em um ambiente de programação. O conteúdo também orienta a organização de um relatório eletrônico relacionado às atividades desenvolvidas.

O que é solicitado no trabalho?

A aula prática solicita a compreensão dos caminhos que um programa pode percorrer e a elaboração de uma representação gráfica capaz de demonstrar esses caminhos. Também faz parte da atividade a escrita e a validação de testes estruturais, considerando diferentes condições de execução e a comparação entre o comportamento esperado e o retorno observado.

  • Construção de um grafo de fluxo de controle;
  • Identificação de nós de decisão, sequência, convergência, início e término;
  • Análise de caminhos possíveis em uma função;
  • Elaboração de casos de teste para diferentes condições;
  • Uso de editor ou ambiente de desenvolvimento para executar o código;
  • Organização dos registros em um relatório de aula prática.

Como desenvolver a atividade?

O desenvolvimento começa pela leitura cuidadosa do código fornecido e pela identificação das instruções que alteram o caminho de execução. Condições, atribuições, blocos alternativos e comandos de retorno devem ser observados para que o fluxo seja representado de forma clara e coerente.

Na etapa seguinte, o estudante deve relacionar cada caminho lógico a entradas adequadas para a validação. A técnica de cobertura de código ajuda a verificar se as principais instruções e possibilidades foram contempladas. O processo também exige atenção à sintaxe, à indentação e à interpretação dos valores retornados pelo programa.

O ambiente indicado no roteiro é o Replit Languages Python3, uma ferramenta online para edição e execução de código Python. A atividade também permite o uso de outro editor ou IDE compatível, desde que a estrutura do código e a lógica analisada sejam preservadas.

Quais conceitos são trabalhados?

O conteúdo explora fundamentos importantes da qualidade de software e da automação de testes. Entre eles estão o teste de caixa branca, a análise de fluxo de controle, a cobertura de código, o teste de caminhos e a validação de valores de entrada.

O grafo de fluxo de controle é utilizado para visualizar as possíveis rotas de execução de um programa. Seus nós representam instruções ou decisões, enquanto as arestas indicam as transições entre essas partes. Essa representação facilita a análise da lógica e auxilia na definição de casos de teste mais consistentes.

A escrita de testes, por sua vez, exige que cada cenário seja descrito com seus dados de entrada e seu comportamento esperado. A avaliação deve considerar tanto situações em que a função segue um caminho de sucesso quanto condições em que o fluxo alternativo é acionado.

O que normalmente compõe a entrega?

A entrega costuma reunir a representação gráfica do fluxo, a descrição dos caminhos analisados, os dados utilizados nos testes e os registros obtidos durante a execução. Também é importante apresentar uma avaliação organizada, relacionando o comportamento observado à lógica do código.

O relatório deve manter uma sequência compreensível, com identificação da atividade, descrição dos procedimentos, imagens ou representações necessárias e análise dos resultados. A clareza dos elementos visuais e a correspondência entre os casos de teste e os caminhos do programa são aspectos relevantes da apresentação.

O que você encontra no material?

Ao adquirir esta aula prática pronta, você encontrará o material completo relacionado à atividade U1_A3 – Diferentes Tipos de Testes. O arquivo reúne o roteiro da proposta, os objetivos, os conceitos envolvidos, os procedimentos gerais, o checklist e a orientação para elaboração do relatório.

O conteúdo foi organizado para facilitar a consulta durante a realização da atividade e ajudar na compreensão do que deve ser analisado em cada etapa. O arquivo fica disponível após a compra, permitindo o acesso ao material correspondente ao roteiro da disciplina.

Para quem este material é indicado?

Este material é indicado para estudantes que precisam organizar uma aula prática de Qualidade e Automação de Testes e compreender como funcionam os testes estruturais em código. Também pode ser útil para quem busca revisar conceitos de grafo de fluxo, cobertura de código e validação de caminhos de execução.

Antes de utilizar o conteúdo, confira as exigências da sua instituição e adapte a apresentação às orientações acadêmicas aplicáveis à sua turma. O material auxilia na organização da atividade, mas a conferência das regras de entrega permanece sob responsabilidade do estudante.

Entenda a proposta e organize sua atividade

A análise de fluxo e a cobertura de código são recursos importantes para avaliar a lógica interna de programas. Com uma representação adequada dos caminhos e uma seleção coerente de cenários, torna-se mais fácil observar como as condições influenciam a execução.

Confira o material completo desta Aula Prática de Qualidade e Automação de Testes e tenha acesso ao conteúdo relacionado à atividade U1_A3, com foco em grafo de fluxo, testes de caixa branca, execução em Python e elaboração do relatório.

Veja o Manual / Enunciado Completo

Roteiro
Aula Prática

QUALIDADE E AUTOMAÇÃO DE TESTES

Público

ROTEIRO DE AULA PRÁTICA

NOME DA DISCIPLINA: Qualidade e Automação de Testes

Unidade: U1_FORMAS E QUALIDADE DE TESTES
Aula: A3_ DIFERENTES TIPOS DE TESTES

OBJETIVOS

Definição dos objetivos da aula prática:

Compreender e aplicar a técnica de teste de caixa branca para validar o comportamento lógico de trechos de código.

SOLUÇÃO DIGITAL:

Replit Languages Python3

Utilizar um computador com acesso à Internet. Necessário acessar o Replit Languages Python3, um website de edição de código para Python.

Link disponível em: https://replit.com/languages/python3

PROCEDIMENTOS PRÁTICOS E APLICAÇÕES

Procedimento/Atividade nº 1

Grafo de Fluxo

Atividade proposta: Desenvolva um grafo de fluxo de programa para o código que representa uma operação de saque.

Procedimentos para a realização da atividade:

O grafo de fluxo de controle (CFG, do inglês Control Flow Graph) é uma representação fundamental em muitas áreas da ciência da computação, especialmente no desenvolvimento de software e na análise de sistemas. Nos testes de software, os CFGs são utilizados para entender e analisar o fluxo de execução de programas. Eles são particularmente úteis para identificar e avaliar os caminhos de execução, permitindo uma série de atividades relacionadas aos testes, como a criação de casos de teste e a análise de cobertura de código.

Um grafo de fluxo de controle é um diagrama direcionado que consiste em um conjunto de nós, que representam instruções ou grupos de instruções, e um conjunto de arestas, que representam o fluxo de controle entre essas instruções. Cada nó no grafo corresponde a uma operação básica ou a uma decisão, enquanto as arestas indicam o caminho que o controle pode seguir durante a execução do programa.

Componentes-chave

  • Nós de Decisão: Estes são pontos no programa onde o fluxo de controle pode divergir. Exemplos incluem instruções condicionais como if, else, e laços como for e while.
  • Nós de Sequência: Representam a execução sequencial de instruções que não envolvem nenhuma tomada de decisão.
  • Nós de Convergência: Onde caminhos divergentes se reencontram. São críticos para entender como diferentes caminhos de execução se integram.
  • Nó de Início e de Término: Cada grafo possui um único nó de início e geralmente um nó de término, que indicam respectivamente o começo e o fim do fluxo de controle do programa.

Sabendo disso, crie um grafo para o código a seguir:

def saque(valor, saldo, limite_credito):
     status = False


     if valor <= saldo:
           saldo = saldo - valor
           status = True
     elif valor <= limite_credito:
           limite_credito = limite_credito - valor
           status = True


     return status, saldo, limite_credito

Avaliando os resultados:

Para esta atividade, deve-se construir o Grafo de Fluxo de Controle (CFG) para o método saque, apresentado no código fornecido. O CFG é uma representação gráfica que ilustra todos os possíveis caminhos de execução de um programa, sendo amplamente utilizado em testes de software para analisar o comportamento do código, verificar a cobertura de testes e garantir que todas as possibilidades de execução foram consideradas. A construção do grafo exige a identificação dos elementos fundamentais do código, como a inicialização de variáveis, as decisões condicionais e o retorno da função.

Ao construir o grafo, espera-se que a representação correta do início do método, a atribuição inicial da variável status, os dois pontos de decisão correspondentes às instruções if e elif, os blocos de instruções executados em cada caso, bem como o ponto de convergência onde os fluxos se unem antes da instrução de retorno. O grafo deve conter nós representando cada uma dessas etapas, conectados por arestas que indicam o fluxo de execução, com setas direcionadas que mostrem claramente os caminhos possíveis.

Procedimento/Atividade nº 2

Escrita e Validação da Escrita de Teste

Atividade proposta: Entender como funciona a escrita e validação de testes, através de um editor/IDE. Criar um relatório no final da atividade.

Procedimentos para a realização da atividade:

Os testes de caixa branca, também conhecidos como testes estruturais ou de código, visam avaliar o comportamento interno do sistema, testando a lógica, fluxo de dados, caminhos de execução, entre outros aspectos.

Na prática, os testes de caixa branca envolvem a análise do código-fonte do software e a criação de casos de teste que cubram todas as possíveis condições de execução do código, incluindo casos de sucesso e de falha. Algumas técnicas comuns de teste de caixa branca incluem:

  1. Cobertura de código: essa técnica mede a quantidade de código que foi executada durante os testes. O objetivo é garantir que todas as instruções do código sejam executadas pelo menos uma vez;
  2. Análise de fluxo de dados: essa técnica verifica se os dados são processados corretamente dentro do sistema, identificando possíveis erros de lógica;
  3. Teste de caminho crítico: essa técnica visa identificar os caminhos mais importantes do código e testá-los minuciosamente para garantir que o software esteja funcionando corretamente.
  4. Teste de valores limite: essa técnica avalia o comportamento do software quando os valores de entrada são máximos, mínimos ou próximos aos limites especificados.

Os testes de caixa branca são importantes para garantir a qualidade do software, identificando possíveis falhas de lógica e comportamento. Esses testes são realizados por desenvolvedores ou profissionais de teste especializados em análise de código e podem ser automatizados para facilitar o processo de teste.

Nesta atividade você deverá:

Acessar o website https://replit.com/languages/python3. O replit é um website de edição de código para Python que permite a digitação e a validação de códigos. Pode-se utilizar outro editor/IDE para realizar essa atividade.

A função saque representa uma operação de retirada de dinheiro em uma conta bancária. Essa função verifica primeiro se há saldo suficiente disponível para realizar o saque. Caso não haja, tenta realizar a retirada utilizando o limite de crédito disponível. Se nenhuma das duas opções for suficiente, o saque não é realizado. A função retorna True quando o saque é efetuado com sucesso e False caso contrário. A seguir, temos o código, já com um exemplo de uso:

def saque(valor, saldo, limite_credito):
     status = False


     if valor <= saldo:
           saldo = saldo - valor
           status = True
     elif valor <= limite_credito:
           limite_credito = limite_credito - valor
           status = True


     return status, saldo, limite_credito


saldo = 1000
limite_credito = 500


status, saldo, limite_credito = saque(1200, saldo, limite_credito)
print("Saque realizado?", status)
print("Saldo:", saldo)
print("Limite de crédito:", limite_credito)

OBS: lembre-se que em Python é validado espaços em brancos e a identação do código.

Para realizar o teste de caixa branca da função acima, podemos utilizar a técnica de cobertura de código e criar casos de teste que cubram todas as instruções presentes na função. Sendo assim, crie uma sequência de testes que valide as seguintes questões:

  1. Analisar os caminhos possíveis da função saque, considerando as condições estabelecidas. Para isso, você pode utilizar o Grafo desenvolvido na Atividade 1.
  2. Criar três casos de teste distintos, cada um cobrindo um caminho de execução:
    • O primeiro caso deve verificar se a função realiza corretamente o saque quando o valor solicitado é menor ou igual ao saldo disponível.
    • O segundo caso deve testar a situação em que o valor excede o saldo, mas está dentro do limite de crédito disponível.
    • O terceiro caso deve verificar o comportamento da função quando o valor do saque ultrapassa tanto o saldo quanto o limite de crédito.
  3. Para cada teste, informe os valores de saldo, limite_credito, valor do saque e o resultado esperado da operação (True ou False).

Descreva a lista dos valores utilizados para responder as questões 1, 2 e 3 acima.

Avaliando os resultados:

Para realizar a atividade proposta, é necessário compreender os princípios dos testes de caixa branca, especialmente a técnica de cobertura de código. A primeira etapa consiste em analisar cuidadosamente o código da função saque, identificando os diferentes caminhos lógicos que podem ser percorridos durante sua execução. A partir dessa análise, devem ser definidos casos de entrada que levem a função a passar por cada uma das possibilidades: quando o valor do saque é menor ou igual ao saldo, quando o valor excede o saldo, mas está dentro do limite de crédito, e quando o valor ultrapassa ambos. Em seguida, é preciso implementar esses casos de teste em um ambiente de desenvolvimento, como o Replit, observando a resposta gerada pela função e comparando com o comportamento esperado. A execução correta dos testes dependerá da tradução precisa da lógica para os dados de entrada e da verificação atenta dos resultados retornados. Embora o exemplo esteja em Python, é possível realizar a atividade em outra linguagem de programação, desde que o código seja corretamente adaptado, respeitando a estrutura condicional e a lógica implementada. O importante é garantir que todos os caminhos possíveis do código sejam testados, assegurando uma análise completa da sua execução interna.

Checklist:

  • ✓ Saber criar um grafo de fluxo de controle para testes.
  • ✓ Utilizar um editor/IDE de Python ou da linguagem desejada.
  • ✓ Executar a função saque() para realizar os testes.
  • ✓ Analisar os testes desenvolvidos de acordo com a função dada.
  • ✓ Avaliar os resultados.

RESULTADOS

Resultados do experimento:

Desenvolvimento de um um relatório (documento eletrônico) com o grafo de fluxo referente a Atividade 1 e os resultados obtidos através do teste do código da Atividade 2.

Resultados de Aprendizagem:

Espera-se que o estudante seja capaz de entender os conceitos fundamentais de grafo de fluxo e da execução de um programa de computador , reconhecer a lógica dos comandos (comparação de valores) e os resultados apresentados, conforme os valores utilizados.