Relações entre diferentes critérios de cobertura:

  1. Cobertura de nós (NC):

    • Garante que cada nó do gráfico de fluxo de controle (CFG) seja visitado pelo menos uma vez durante o teste.
    • Subsumido por critérios mais abrangentes, como cobertura de borda e cobertura de caminho.
  2. Cobertura de borda (EC):

    • Requer que cada borda do CFG seja percorrida pelo menos uma vez durante o teste.
    • Mais abrangente do que a cobertura de nós, pois considera o fluxo de controle entre os nós.
  3. Cobertura de pares de bordas (EPC):

    • Amplia a cobertura de borda garantindo que cada par de bordas adjacentes no CFG seja percorrido pelo menos uma vez.
    • Fornece uma avaliação mais completa das interações do fluxo de controle.
  4. Cobertura de caminho principal (PPC):

    • Envolve a identificação e o teste de todos os caminhos principais no CFG, em que um caminho principal é um caminho exclusivo do nó inicial ao final que não contém nenhum subcaminho que também seja um caminho principal.
    • Oferece um nível mais alto de cobertura do que a cobertura de par de bordas, pois considera caminhos mais longos.
  5. Cobertura de caminho completo (CPC):

    • Requer que todos os caminhos possíveis no CFG, incluindo loops e condicionais, sejam percorridos pelo menos uma vez.
    • É o critério de cobertura mais completo, garantindo que todos os caminhos de execução possíveis sejam testados.
  6. Cobertura de todos os caminhos de UD (ADUP):

    • Assegura que todos os caminhos possíveis de def-use (caminho DU) no programa sejam cobertos por casos de teste.
    • Concentra-se no teste de fluxo de dados, garantindo que todas as interações entre definições e usos de variáveis sejam testadas.
  7. Cobertura de todos os usos (AUC):

    • Requer que cada uso de uma variável seja coberto por pelo menos um caso de teste.
    • Concentra-se em garantir que todos os possíveis usos de variáveis sejam testados, contribuindo para a cobertura do fluxo de dados.
  8. Cobertura de todas as definições (ADC):

    • Garante que cada definição de uma variável seja coberta por pelo menos um caso de teste.
    • Concentra-se em verificar se todas as definições de variáveis são utilizadas corretamente em todo o programa.

Relacionamentos:

  • Critérios mais específicos, como cobertura de nós e bordas, são subsumidos por critérios mais amplos, como cobertura completa de caminhos e cobertura de todos os caminhos duplos.
  • Os critérios de fluxo de dados (AUC, ADC, ADUP) concentram-se em definições e usos de variáveis e são complementares aos critérios de cobertura baseados em caminhos.

Conclusão: Compreender as relações entre os diferentes critérios de cobertura ajuda os testadores a escolherem as estratégias apropriadas para o projeto do caso de teste, equilibrando o rigor com a eficiência para obter testes eficazes dos sistemas de software.


Atomic Note: Graph Coverage Criteria Subsumption

Relationships Between Different Coverage Criteria:

  1. Node Coverage (NC):

    • Ensures that every node in the control flow graph (CFG) is visited at least once during testing.
    • Subsumed by more comprehensive criteria like edge coverage and path coverage.
  2. Edge Coverage (EC):

    • Requires that every edge in the CFG is traversed at least once during testing.
    • More comprehensive than node coverage as it considers the flow of control between nodes.
  3. Edge-Pair Coverage (EPC):

    • Extends edge coverage by ensuring that every pair of edges that are adjacent in the CFG is traversed at least once.
    • Provides a more thorough assessment of control flow interactions.
  4. Prime Path Coverage (PPC):

    • Involves identifying and testing all prime paths in the CFG, where a prime path is a unique path from the start to end node that does not contain any subpath that is also a prime path.
    • Offers a higher level of coverage than edge-pair coverage as it considers longer paths.
  5. Complete Path Coverage (CPC):

    • Requires that every possible path in the CFG, including loops and conditionals, is traversed at least once.
    • The most thorough coverage criterion, ensuring that every possible execution path is tested.
  6. All-DU-Paths Coverage (ADUP):

    • Ensures that every possible def-use path (DU path) in the program is covered by test cases.
    • Focuses on data flow testing, ensuring that all interactions between variable definitions and uses are tested.
  7. All-uses Coverage (AUC):

    • Requires that every use of a variable is covered by at least one test case.
    • Focuses on ensuring that all potential uses of variables are tested, contributing to data flow coverage.
  8. All-defs Coverage (ADC):

    • Ensures that every definition of a variable is covered by at least one test case.
    • Focuses on verifying that all variable definitions are correctly utilized throughout the program.

Relationships:

  • More specific criteria like node and edge coverage are subsumed by broader criteria such as complete path coverage and all-du-paths coverage.
  • Data flow criteria (AUC, ADC, ADUP) focus on variable definitions and uses and are complementary to path-based coverage criteria.

Conclusion: Understanding the relationships between different coverage criteria helps testers choose appropriate strategies for test case design, balancing thoroughness with efficiency to achieve effective testing of software systems.