MuDeL: A Language and a System for Describing and Generating Mutants
Resumo
Mutation Testing is an approach for assessing the quality of a test case suite by analyzing its ability in distinguishing the product under test from a set of alternative products, the so-called mutants. The mutants are generated from the product under test by applying a set of mutant operators, which produce products with slight syntactical differences. The mutant operators are usually based on typical errors that occurs during the software development and can be related to a fault model. In this paper, we propose a language — named MuDeL — for describing mutant operators aiming not only at automating the mutant generation, but also at providing precision and formality to the operator descriptions. The language was designed using concepts that come from transformational and logical programming paradigms, as well as from context-free grammar theory. The language is illustrated with some simple examples. We also describe the mudelgen system, developed to support this language.
Palavras-chave:
Testing, Programming Language, Mutation Testing, Mutant Generation
Referências
Agrawal, H. (1989). Design of mutant operators for the C programming language. Technical Report SERC-TR-41-P, Software Engineering Research Center/Purdue University.
Bratko, I. (1990). Prolog Programming for Artificial intelligence. Addison-Wesley, 2 edition.
Budd, A. T. (1981). Mutation Analysis: Ideas, Examples, Problems and Prospects, pages 129-148. Computer Program Testing. North-Holland Publishing Company.
Cordy, J. R. and Shukla, M. (1992). Practical metaprogramming. In Centre for Advanced Studies Conference, Toronto.
Delamaro, M. E., Maldonado, J. C., and Mathur, A. P. (2001). Interface mutation: An approach for integration testing. IEEE Transactions on Software Engineering, 27(3):228-247.
DeMillo, R. A., Lipton, R. J., and Sayward, F. G. (1978). Hints on test data selection: Help for the practicing programmer. IEEE Computer, 11(4):34-41.
Fabbri, S. C. P. F. (1996). A Análise de Mutantes no Contexto de Sistemas Reativos: Uma Contribuição para o Estabelecimento de Estratégias de Teste e Validação. PhD thesis, IFSC/USP, São Carlos, SP.
Fabbri, S. C. P. F., Maldonado, J. C., Delamaro, M. E., and Masiero, P. C. (1999a). Proteum/FSM: A tool to support finite state machine validation based on mutation testing. In XIX SCCC International Conference of the Chilean Computer Science Society, pages 96-104, Talca, Chile.
Fabbri, S. C. P. F., Maldonado, J. C., Sugeta, T., and Masiero, P. C. (1999b). Mutation testing applied to validate specifications based on statecharts. In ISSRE - International Symposium on Software Reliability Systems, pages 210-219.
Fejer, P. A. and Simovici, D. A. (1990). Mathematical Foundations of Computer Science, volume I. Springer-Verlag.
Kotik, G. B. and Markosian, L. Z. (1989). Automating software analysis and testing using a program transformation system. In Proceedings of the ACM SIGSOFT'89 Third Symposioum on Software Testing, Analysis, and Verification, pages 75-84.
Mason, T. and Brown, D. (1990). Lex & Yacc. O'Reilly.
Nakagawa, E. Y. and Maldonado, J. C. (2001). Software-fault injection based on mutant operators. In Anais do XI Simpósio Brasileiro de Tolerância a Falhas, Florianópolis, SC.
Neighbors, J. (1984). The draco approach to constructing software from reusable components. IEEE Transactions on Software Engineering, 10(5).
Probert, R. L. and Guo, F. (1991). Mutation testing of protocols: Principles and preliminary experimental results. In Proceedings of the IFIP TC6 Third International Workshop on Protocol Teste Systems, pages 57-76, North-Holland.
Ritchey, R. W. (2000). Mutating network models to generate network security test cases. In Mutation 2000, pages 101-108, San Jose, California.
Salomaa, A. (1973). Formal Languages. Academic Press, New York.
Santana, A. C. L., Prado, A. F., and Lopes de Souza, W. (1997). Utilização do paradigma Draco para implementar especificações Estelle na linguagem C++. In Anais do 15o Simpósio Brasileiro de Redes de Computadores, pages 118-134, São Carlos, SP.
Simão, A. S. and Maldonado, J. C. (2001). Denotational semantics of the MuDeL language. Technical report, ICMC/USP. (in preparation).
Simão, A. S., Maldonado, J. C., and Fabbri, S. C. P. F. (2000). Proteum-RS/PN: A tool to support edition, simulation and validation of Petri nets based on mutation testing. In Anais do XIV Simpósio Brasileiro de Engenharia de Software, pages 227-242, João Pessoa, PB.
Simão, A. S., Vincenzi, A. M., and Maldonado, J. C. (2001). Using MuDeL to describe java, c and petri net mutants. Technical report, ICMC/USP. (in preparation).
Souza, S. R. S., Maldonado, J. C., Fabbri, S. C. P. F., and Souza, W. L. (2000). Mutation testing applied to estelle specifications. Quality Software Journal, 8(4).
Vladimir, D. (1989). Formal Languages and Automata Theory. Computer Science Press.
Bratko, I. (1990). Prolog Programming for Artificial intelligence. Addison-Wesley, 2 edition.
Budd, A. T. (1981). Mutation Analysis: Ideas, Examples, Problems and Prospects, pages 129-148. Computer Program Testing. North-Holland Publishing Company.
Cordy, J. R. and Shukla, M. (1992). Practical metaprogramming. In Centre for Advanced Studies Conference, Toronto.
Delamaro, M. E., Maldonado, J. C., and Mathur, A. P. (2001). Interface mutation: An approach for integration testing. IEEE Transactions on Software Engineering, 27(3):228-247.
DeMillo, R. A., Lipton, R. J., and Sayward, F. G. (1978). Hints on test data selection: Help for the practicing programmer. IEEE Computer, 11(4):34-41.
Fabbri, S. C. P. F. (1996). A Análise de Mutantes no Contexto de Sistemas Reativos: Uma Contribuição para o Estabelecimento de Estratégias de Teste e Validação. PhD thesis, IFSC/USP, São Carlos, SP.
Fabbri, S. C. P. F., Maldonado, J. C., Delamaro, M. E., and Masiero, P. C. (1999a). Proteum/FSM: A tool to support finite state machine validation based on mutation testing. In XIX SCCC International Conference of the Chilean Computer Science Society, pages 96-104, Talca, Chile.
Fabbri, S. C. P. F., Maldonado, J. C., Sugeta, T., and Masiero, P. C. (1999b). Mutation testing applied to validate specifications based on statecharts. In ISSRE - International Symposium on Software Reliability Systems, pages 210-219.
Fejer, P. A. and Simovici, D. A. (1990). Mathematical Foundations of Computer Science, volume I. Springer-Verlag.
Kotik, G. B. and Markosian, L. Z. (1989). Automating software analysis and testing using a program transformation system. In Proceedings of the ACM SIGSOFT'89 Third Symposioum on Software Testing, Analysis, and Verification, pages 75-84.
Mason, T. and Brown, D. (1990). Lex & Yacc. O'Reilly.
Nakagawa, E. Y. and Maldonado, J. C. (2001). Software-fault injection based on mutant operators. In Anais do XI Simpósio Brasileiro de Tolerância a Falhas, Florianópolis, SC.
Neighbors, J. (1984). The draco approach to constructing software from reusable components. IEEE Transactions on Software Engineering, 10(5).
Probert, R. L. and Guo, F. (1991). Mutation testing of protocols: Principles and preliminary experimental results. In Proceedings of the IFIP TC6 Third International Workshop on Protocol Teste Systems, pages 57-76, North-Holland.
Ritchey, R. W. (2000). Mutating network models to generate network security test cases. In Mutation 2000, pages 101-108, San Jose, California.
Salomaa, A. (1973). Formal Languages. Academic Press, New York.
Santana, A. C. L., Prado, A. F., and Lopes de Souza, W. (1997). Utilização do paradigma Draco para implementar especificações Estelle na linguagem C++. In Anais do 15o Simpósio Brasileiro de Redes de Computadores, pages 118-134, São Carlos, SP.
Simão, A. S. and Maldonado, J. C. (2001). Denotational semantics of the MuDeL language. Technical report, ICMC/USP. (in preparation).
Simão, A. S., Maldonado, J. C., and Fabbri, S. C. P. F. (2000). Proteum-RS/PN: A tool to support edition, simulation and validation of Petri nets based on mutation testing. In Anais do XIV Simpósio Brasileiro de Engenharia de Software, pages 227-242, João Pessoa, PB.
Simão, A. S., Vincenzi, A. M., and Maldonado, J. C. (2001). Using MuDeL to describe java, c and petri net mutants. Technical report, ICMC/USP. (in preparation).
Souza, S. R. S., Maldonado, J. C., Fabbri, S. C. P. F., and Souza, W. L. (2000). Mutation testing applied to estelle specifications. Quality Software Journal, 8(4).
Vladimir, D. (1989). Formal Languages and Automata Theory. Computer Science Press.
Publicado
03/10/2001
Como Citar
SIMÃO, Adenilso da Silva; MALDONADO, José Carlos.
MuDeL: A Language and a System for Describing and Generating Mutants. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 15. , 2001, Rio de Janeiro/RJ.
Anais [...].
Porto Alegre: Sociedade Brasileira de Computação,
2001
.
p. 240-255.
DOI: https://doi.org/10.5753/sbes.2001.23992.