Definição: Os Requisitos de Teste de Fluxo de Controle (TRs) são condições específicas que devem ser satisfeitas para garantir que um programa seja adequadamente testado para vários critérios de cobertura. Os caminhos de teste são sequências de caminhos executáveis por meio do gráfico de fluxo de controle (CFG) de um programa que atende a esses requisitos.

Finalidade:

  • Definir critérios explícitos (por exemplo, cobertura de borda, cobertura de par de bordas, cobertura de caminho principal) que orientam a criação de casos de teste.
  • Para garantir que todos os caminhos significativos dentro do CFG sejam testados, minimizando o risco de defeitos no software.

Critérios de cobertura:

  1. Cobertura de borda:

    • Definição: Requer que cada borda do CFG seja percorrida pelo menos uma vez.
    • Meta: Garante que todas as ramificações no fluxo de controle sejam executadas, verificando as decisões de ramificação.
  2. Cobertura de pares de bordas:

    • Definição: Requer que todos os pares de bordas possíveis no CFG sejam percorridos consecutivamente pelo menos uma vez.
    • Objetivo: Testa a interação entre ramificações sucessivas, útil na detecção de falhas relacionadas à sequência.
  3. Cobertura do caminho principal:

    • Definição: Requer que todos os caminhos máximos (caminhos que não são subcaminhos de nenhum outro caminho) através do CFG sejam cobertos.
    • Meta: Fornece um exame completo, cobrindo todas as combinações de caminhos possíveis no código.

Exemplo de caminhos de teste:

  • Considere um CFG simples para um método com uma condicional e um loop:
  graph TD;

    A(Start) --> B{Condition: x > 10};
    B -->|True| C[Process A];
    C --> D{Loop: Iterate 5 times};
    D -->|Each iteration| E[Process B];
    E --> D;
    D --> F[End Loop];
    F --> G[End];
    B -->|False| H[Process C];
    H --> G;
  • Caminhos de teste:
    • Para cobertura de borda: [Início, Condição, Processo A, Loop, Processo B, Loop, Fim do Loop, Fim], [Início, Condição, Processo C, Fim]
    • Para cobertura de pares de bordas: Caminhos adicionais, incluindo [Condição, Processo A, Loop], [Loop, Processo B, Loop]
    • Para cobertura de caminho principal: Inclui todos os caminhos acima, além de caminhos que abrangem todo o loop e caminhos diretamente da condição até o final do loop.

Relevância:

  • Esses requisitos de teste são cruciais em metodologias de teste estruturadas para verificar a correção lógica e a confiabilidade operacional do software.
  • Ao definir e atender a esses critérios, os testadores podem abordar sistematicamente os possíveis pontos fracos da estrutura de controle do programa.

Atomic Note: Control Flow Testing Requirements (TRs) and Test Paths

Definition: Control Flow Testing Requirements (TRs) are specific conditions that must be satisfied to ensure a program is adequately tested for various coverage criteria. Test paths are sequences of executable paths through a program’s control flow graph (CFG) that meet these requirements.

Purpose:

  • To define explicit criteria (e.g., edge coverage, edge-pair coverage, prime path coverage) that guide the creation of test cases.
  • To ensure that all significant paths within the CFG are tested, minimizing the risk of defects in the software.

Coverage Criteria:

  1. Edge Coverage:

    • Definition: Requires every edge in the CFG to be traversed at least once.
    • Goal: Ensures that all branches in the control flow are executed, verifying branch decisions.
  2. Edge-Pair Coverage:

    • Definition: Requires every possible pair of edges in the CFG to be traversed consecutively at least once.
    • Goal: Tests the interaction between successive branches, useful in detecting sequence-related faults.
  3. Prime Path Coverage:

    • Definition: Requires every maximal path (paths that are not subpaths of any other paths) through the CFG to be covered.
    • Goal: Provides a thorough examination by covering all possible path combinations through the code.

Example of Test Paths:

  • Consider a simple CFG for a method with a conditional and a loop:
    graph TD;
    

    A(Start) B{Condition: x > 10};     B |True| C[Process A];     C D{Loop: Iterate 5 times};     D |Each iteration| E[Process B];     E D;     D F[End Loop];     F G[End];     B |False| H[Process C];     H G;


- **Test Paths**:
- **For Edge Coverage**: [Start, Condition, Process A, Loop, Process B, Loop, End Loop, End], [Start, Condition, Process C, End]
- **For Edge-Pair Coverage**: Additional paths including [Condition, Process A, Loop], [Loop, Process B, Loop]
- **For Prime Path Coverage**: Includes all paths above plus paths covering the entire loop and paths directly from the condition to the loop end.

**Relevance**:
- These testing requirements are crucial in structured testing methodologies for verifying the logical correctness and operational reliability of software.
- By defining and meeting these criteria, testers can systematically address potential weak points in the program’s control structure.

This atomic note provides an understanding of how control flow testing requirements and test paths are established to ensure comprehensive coverage, thereby enhancing software quality and reliability.