A structural testing tool for MPI programs with loops - Diaz, Silvia Diaz; Souza, Paulo Lopes; Souza, Simone (Anais do Simpósio em Sistemas Computacionais de Alto Desempenho (SSCAD); 2019: Anais do XX Simpósio em Sistemas Computacionais de Alto Desempenho, 2019)
Há uma alta demanda por programas paralelos corretos, principalmente devido às arquiteturas paralelas atuais, como clusters e processadores multi/many cores. O teste estrutural permite identificar defeitos pela cobertura de estruturas internas de programas paralelos. O não determinismo em programas paralelos traz novos desafios ao teste estrutural. Ele requer ferramentas e modelos de teste especı́ficos, capazes de cobrir primitivas de comunicação e sincronização com comportamentos dinâmicos, tais como os presentes em loops. Este artigo propõe uma nova ferramenta de software para o teste estrutural, com o objetivo de auxiliar testadores na revelação de defeitos desconhecidos associados a comunicação e presentes em estruturas de repetição de programas paralelos em C/MPI. Baseando-se na cobertura obtida, testadores podem escolher casos de teste especı́ficos e avaliar o progresso da atividade de teste. A ferramenta de teste proposta é validada com a ingestão de defeitos no código de um programa, e com a análise do suporte dado pela ferramenta para a geração de elementos requeridos e seleção de casos de teste. A ferramenta proposta automatiza parte da atividade de teste, especificamente a geração de elementos requeridos e guia a execução dos testes, reduzindo o tempo para a aplicação da atividade de teste. Nossos resultados mostram que a ferramenta de teste é capaz de revelar defeitos desconhecidos em primitivas de comunicação presentes em iterações de loops. There is a growing demand for correct parallel programs, mainly due to nowadays parallel architectures, such as clusters and multi/many-core processors. Structural testing allows the identification of defects by covering internal structures of parallel programs. Nondeterminism in parallel programs brings new challenges to the structural testing. It requires specific test model and tools, capable to cover communication and synchronization primitives with dynamic behaviors, such as those present inside of loops. This paper proposes a novel software tool for the structural testing, aiming to help testers in revealing defects associated to communication present in repetition structures of C/MPI parallel programs. Based on the obtained coverage, testers can choose specific test cases and evaluate the progress of the testing activity. We validate the proposed testing software tool by injecting a defect in a program code, and analyzing the support for generation of required elements and selection of test cases. ValiMPI tool automates part of the test activity, specifically the generation of required elements to guide test case selection, reducing the application cost of the testing activity. Our results demonstrate that the testing tool is capable to reveal unknown defects from communication in different loop iterations.