Injeção de Falhas na Fase de Teste de Aplicações Distribuídas

  • Juliano C. Vacaro UFRGS
  • Taisy S. Weber UFRGS

Resumo


Injeção de falhas de comunicação visa emular falhas comuns a sistemas baseados em rede para assim observar o comportamento de aplicações em resposta a diferentes condições de falha. Apesar de eficiente, a técnica não é suficiente para validar outras características funcionais importantes de uma aplicação. Para aumentar a cobertura dos testes, injeção de falhas deve ser usada de forma complementar a técnicas convencionais de teste e operar integrada a plataformas de desenvolvimento e teste de sistemas. Visando atender estes requisitos, este trabalho apresenta um injetor de falhas para a avaliação de aplicações distribuídas baseadas em RMI, e sua integração aos frameworks JUnit e ANT.

Referências

Apache Software Foundation (2000). ANT. http://ant.apache.org/.

Apache Software Foundation (2002). BSF. http://jakarta.apache.org/bsf.

Beck, K. and Andres, C. (2004). Extreme Programming Explained : Embrace Change. Addison-Wesley Professional, Workingham, 2 edition.

Birman, K. P. (1996). Building Secure and Reliable Network Applications. Prentice Hall, 1 edition.

Chandra, R., Lefever, R., Joshi, K., Cukier, M., and Sanders, W. (2004). A global-state-triggered fault injector for distributed system evaluation. IEEE Transactions on Parallel and Distributed Systems, 15(7):593–605.

Chang, T. and Aharnad, M. (2004). GT-P2PRMI: improving middleware performance using peer-to-peer service replication. In Proceedings of the 10th IEEE International Workshop on Future Trends of Distributed Computing Systems (FTDCS’04), pages 172–177, Suzhou, China. IEEE Computer Society Press.

Chen, C.-W., Chen, C.-K., Chen, J.-C., Ko, C.-T., Lee, J.-K., Lin, H.-W., and Wu, W.-J. (2004). Efficient support of java rmi over heterogeneous wireless networks. IEEE International Conference on Communications, 3(1):1391–1395.

Chiba, S. (1998). Javassist a reflection-based programming wizard for java. In Proceedings of OOPSLA’98 Workshop on Reflective Programming in C++ and Java, Vancouver, Canada.

Dawson, S., Jahanian, F., Mitton, T., and Tung, T.-L. (1996). Testing of fault-tolerant and real-time distributed systems via protocol fault injection. In Proceedings of the 26th IEEE International Symposium on Fault-Tolerant Computing (FTCS ’96), pages 404–414, Sendai, Japan. IEEE Computer Society Press.

Delamaro, M. E., Maldonado, J. C., and Mathur, A. P. (2001a). Interface mutation: An approach for integration testing. IEEE Trans. Software Engineering, 27(3):228–247.

Delamaro, M. E., Pezzè, M., Vincenzi, A. M. R., and Maldonado, J. C. (2001b). Mutant operator for testing concurrent java programs. In Anais do 15th Simpósio Brasileiro de Engenharia de Software (SBES’2001), pages 386–391, Rio de Janeiro/RJ. SBC.

Drebes, R. J., Leite, F. O., Jacques-Silva, G., Mobus, F., and Weber, T. S. (2005). ComFIRM: a communication fault injector for protocol testing and validation. In IEEE Latin American Test Workshop, 6th (LATW’05), pages 115–120, Salvador, Brazil.

Farchi, E., Krasny, Y., and Nir, Y. (2004). Automatic simulation of network problems in UDP-based Java programs. In Proceedings of the International Parallel and Distributed Processing Symposium, 18th (IPDPS’04), page 267, Santa Fe, New Mexico, USA. IEEE Computer Society.

Gamma, E. and Beck, K. (2001). Junit. http://www.junit.org.

Gamma, E., Helm, R., Johnson, R., and Vlissides, J. (1994). Design Patterns: Elements of Reusable Object-Oriented Software. Addison-Wesley Professional Computing Series. Addison-Wesley, 1st edition.

Gerchman, J., Jacques-Silva, G., Drebes, R., and Weber, T. S. (2005). Ambiente distribuído de injeção de falhas de comunicação para teste de aplicações java de rede. In Anais do 19 Simpósio Brasileiro de Engenharia de Software (SBES 2005), pages 232–246, Uberlândia, MG. SBC.

Han, S., Shin, K. G., and Rosenberg, H. (1995). DOCTOR: An integrateD sOftware fault injeCTiOn enviRonment for distributed real-time systems. In Proceedings of the International Computer Performance and Dependability Symposium, pages 204–213, Erlangen, Germany. IEEE Computer Society Press.

Hsueh, M.-C., Tsai, T. K., and Iyer, R. K. (1997). Fault injection techniques and tools. IEEE Computer, 30(4):75–82.

Jacques-Silva, G., Drebes, R. J., Gerchman, J., and Weber, T. S. (2004). FIONA: A fault injector for dependability evaluation of Java-based network applications. In Proceedings of the 3rd IEEE International Symposium on Network Computing and Applications (NCA’04), pages 303–308, Washington, DC, USA. IEEE Computer Society.

Java Community Process (2005). JSR-000223 scripting for the javatm platform. http://jcp.org/aboutJava/communityprocess/pr/jsr223/.

Martins, E., Rubira, C. M. F., and Leme, N. G. M. (2002). Jaca: A reflective fault injection tool based on patterns. In Proceedings of the International Conference on Dependable Systems and Networks (DSN’02), pages 483–487, Washington, DC. IEEE Computer Society Press.

Niemeyer, P. and Knudsen, J. (2000). Learning Java. O’Reilly, 1 edition.

OurGrid (2005). Ourgrid online manual. http://www.ourgrid.org/.

Pedroni, S. and Rappin, N. (2002). Jython Essentials. O’Reilly, 1 edition.

Stott, D. T., Floering, B., Kalbarczyk, Z., and Iyer, R. K. (2000). NFTAPE: A framework for assessing dependability in distributed systems with lightweight fault injectors. In Proceedings of the IEEE International Computer Performance and Dependability Symposium (IPDS 2000), pages 91–100, Chicago, Illinois, USA. IEEE Computer Society Press.

Sun Microsystems (1997). Java RMI specification. http://java.sun.com/j2se/1.4.2/docs/guide/rmi/spec/rmiTOC.html.
Publicado
16/10/2006
Como Citar

Selecione um Formato
VACARO, Juliano C.; WEBER, Taisy S.. Injeção de Falhas na Fase de Teste de Aplicações Distribuídas. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 20. , 2006, Florianópolis. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2006 . p. 161-176. DOI: https://doi.org/10.5753/sbes.2006.21211.