AgradecimentosAgradeço a Deus por, a cada dia, dar-me o melhor dia da minha vida: o hoje. Agradeço também por fazer-me forte e perseverante frente aos desafios de cada dia.A minha família, em especial aos meus pais, pelo apoio que me deram e por acreditarem que eu estou fazendo um bom trabalho aqui, mesmo longe deles. Obrigado por entenderem a minha ausência e por sempre oferecerem palavras de apoio quando as coisas apertavam por aqui.A minha orientadora, Prof. a Simone e ao Prof. Paulo, que aqui na USP costumamos dar o título de Mãe e Pai e que, de fato, foram minhas figuras materna e paterna aqui em São Carlos e que, sem dúvida, merecem receber esse título. Obrigado pela atenção, disponibilidade, ajuda e, principalmente, pela paciência que tiveram comigo. Obrigado pelos conselhos e pelas chamadas de atenção sempre que necessários.Aos meus amigos de Ponta Grossa, por entenderem que nãoé fácil voltar para Ponta Grossa com tanta frequência quanto todos gostaríamos.Ao pessoal do Laboratório de Engenharia de Software -LabES pela ajuda e convivência durante esse período e, em especial ao nosso "grupo": Arineiza, Draylson, Eduardo, Eliana, Harry, Joice, Juliana e Silvana. Agradeço também a todos que me ajudaram de alguma forma com a ferramenta ValiMPI.A Universidade de São Paulo. A FAPESP pelo apoio financeiro.v Abstract Concurrent programming became a popular paradigm for software development. This paradigm is essential to build applications which aim to reduce the computational time in many areas, such as, weather forecast, image processing, among others. These programs present new features such as communication, synchronization, and nondeterminism, which must be considered during the testing activity. Software testing is an activity that looks to ensure quality by identifying faults in the product. Mutation Testing is a criterion based on the most common mistakes that might be made by software developers. However, the mutation testing cannot be applied in concurrent programs the same way as applied in sequential ones due to the peculiarities present in concurrent programs. One of the problems in applying mutation testing in this context is the non-deterministic behavior. This work investigates the definition of mutation testing for concurrent programs implemented in MPI (Message Passing Interface), which perform communication and synchronization using message passing. For this, typical faults in this area were considered in order to model mutation operators addressing the aspects of communication and synchronization of these applications. Also, we are proposing a new procedure to support the behavioral analysis of the mutants. The ideas were implemented in a testing tool called ValiMPI Mut.