Definição: A cobertura gráfica em testes de software envolve a análise dos caminhos dentro do código-fonte de um programa usando gráficos de fluxo de controle (CFGs). Esse método ajuda a garantir que vários caminhos de código sejam executados por meio de testes, aprimorando a cobertura de testes e identificando possíveis caminhos não testados.

Conceito: Um gráfico de fluxo de controle (CFG) é uma representação gráfica de todos os caminhos que podem ser percorridos por um programa durante sua execução. Os CFGs são usados para visualizar e analisar o fluxo de controle entre vários blocos de código.

Componentes do CFG:

  • Nós: Representam blocos de código ou instruções.
  • Bordas: Representam o fluxo de controle entre os nós.

Finalidade:

  • Testar sistematicamente todos os caminhos executáveis em um programa, garantindo que cada caminho seja percorrido pelo menos uma vez.
  • Identificar partes do código que não podem ser acessadas ou executadas, indicando código morto ou lacunas na cobertura do teste.

Example with MermaidJS:

graph TD;
    A[Start] -->|Initialize| B[If x < y];
    B -->|True| C[y = 0];
    C --> D[x = x + 1];
    D --> E[End];
    B -->|False| F[x = y];
    F --> E;

Uso em testes:

  • Cobertura de nós: Teste para garantir que cada nó no CFG seja executado pelo menos uma vez.
  • Cobertura de borda: Teste para garantir que cada borda do CFG seja percorrida pelo menos uma vez.

Relevância:

  • Oferece suporte direto a metodologias de teste rigorosas, fornecendo um mapa claro do comportamento do código, o que é essencial para detectar falhas e garantir a produção de software de alta qualidade.

Atomic Note: Graph Coverage for Source Code

Definition: Graph coverage in software testing involves analyzing the paths within a program’s source code using control flow graphs (CFGs). This method helps ensure that various code paths are executed through testing, enhancing test coverage and identifying potential untested paths.

Concept: A Control Flow Graph (CFG) is a graphical representation of all paths that might be traversed through a program during its execution. CFGs are used to visualize and analyze the flow of control between various blocks of code.

Components of CFG:

  • Nodes: Represent blocks of code or statements.
  • Edges: Represent the flow of control between nodes.

Purpose:

  • To systematically test all executable paths in a program, ensuring each path is traversed at least once.
  • To identify parts of the code that are not reachable or executed, indicating dead code or gaps in test coverage.

Example with MermaidJS:

graph TD;
    A[Start] -->|Initialize| B[If x < y];
    B -->|True| C[y = 0];
    C --> D[x = x + 1];
    D --> E[End];
    B -->|False| F[x = y];
    F --> E;

Usage in Testing:

  • Node Coverage: Test to ensure that every node in the CFG is executed at least once.
  • Edge Coverage: Test to ensure that every edge in the CFG is traversed at least once.

Relevance:

  • Directly supports rigorous testing methodologies by providing a clear map of code behavior, which is essential for detecting faults and ensuring high-quality software output.

This atomic note encapsulates the fundamental aspects of graph coverage for source code, highlighting its importance and implementation in software testing.