Summary: | O teste de programas concorrentes e uma atividade desaadora, devido a fatores que não estão presentes em programas sequenciais, como comunicação, sincronização e não determinismo. Algumas técnicas de teste têm sido propostas para o contexto de programação concorrente, mas raramente sua aplicabilidade e avaliada por estudos teóricos ou experimentais. Este trabalho contribui nesse sentido, propondo e conduzindo um estudo experimental para avaliar o custo, eficácia e aspecto complementar dos critérios de teste estruturais para programas concorrentes no contexto de memória compartilhada, implementados usando o padrão PThreads (Posix Threads). A ferramenta de teste ValiPThread e usada para auxiliar a condução do experimento. Os programas usados no experimento foram selecionados de benchmarks, como o Inspect, Helgrind e Rungta. Esses benchmarks são comumente usados no estudo de técnicas de teste para programas concorrentes. Programas que resolvem problemas clássicos da programação concorrente também foram incluídos no estudo. Com base nos resultados obtidos foi definida uma estratégia de aplicação, considerando aspectos de custo e eficácia dos critérios de teste. Além disso, todo o material utilizado e gerado durante o experimento foi reunido em um pacote de laboratório, a fim de contribuir com a comunidade de pesquisa, possibilitando replicações e comparações desses critérios com outras técnicas de teste no contexto de programas concorrentes
===
Concurrent program testing is a challenging activity due to the communication, synchronization and nondeterminism of this application domain. Despite that, some testing techniques for concurrent programs have been proposed, but their applicability is rarely evaluated by theoretical or experimental studies. This work contributes in this direction proposing and conducting an experimental study to evaluate the cost, effectiveness and strength of structural testing criteria for multithreaded programs, implemented using the Pthreads standard (POSIX Threads). The testing tool ValiPThread is used to support the conduction of the experiment. The programs used in this experiment were selected from classical benchmarks, such as Inspect, Helgring and Rungta. These benchmarks are commonly used to study testing techniques for concurrent programs. We also include programs that solve concurrent classical problems. Based on the obtained results, we defined an application testing strategy, considering cost and effectiveness aspects of the testing criteria. Furthermore, all material used and generated during the experiment was incorporated in a lab package, in order to contribute with further research studies making possible replications and comparisons of these testing criteria with other testing techniques in context of concurrent programs
|