Integration Testing of Aspect-Oriented Programs: a Structural Pointcut-Based Approach
Resumo
Várias abordagens de teste focam o descobrimento de falhas em implementações de unidades de software. Um problema não tratado pelo teste de unidade é a interação entre unidades, no que diz respeito à corretude das interfaces. Em Programação Orientada a Aspectos, esse problema é dificultado por mecanismos de conjuntos de junção, que definem interfaces implícitas no programa base. Neste trabalho é apresentada uma abordagem de teste de integração estrutural baseada no mecanismo de conjuntos de junção para programas AspectJ. Um modelo chamado PCCFG (Pointcut-based Control Flow Graph) é definido para representar regiões de execução afetadas por conjuntos de junção. Baseado nesse modelo, dois critérios de fluxo de controle para uma medida de cobertura transversal são propostos: todos-nós-de-adendo e todas-arestas-de-adendo. Como avaliação preliminar da aplicabilidade e efetividade da abordagem proposta, os critérios são implementados em uma ferramenta de teste chamada JaBUTi/PC-AJ e é apresentado um exemplo de aplicação. O exemplo mostra evidências da efetividade dos critérios quando comparados com critérios de teste de unidade.
Referências
Elrad, T., Kiczales, G., Aksit, M., Lieberher, K., and Ossher, H. (2001). Discussing aspects of AOP. Communications of the ACM, 44(10):33–38.
Franchin, I. G. (2007). Teste estrutural de integração par-a-par de programas orientados a objetos e a aspectos: Critérios e automatização. Master’s thesis, ICMC-USP, São Carlos, SP.
Franchin, I. G., Lemos, O. A. L., and Masiero, P. C. (2007). Pairwise structural testing of object and aspect-oriented Java programs. In Proceedings of the 21st Brazilian Symposium on Software Engineering, pages 377–393, Porto Alegre, RS, Brasil. SBC Press.
Harrold, M. J. and Rothermel, G. (1994). Performing data flow testing on classes. In SIGSOFT ’94: Proceedings of the 2nd ACM SIGSOFT symposium on Foundations of software engineering, pages 154–163, New York, NY, USA. ACM Press.
Kiczales, G., Irwin, J., Lamping, J., Loingtier, J.-M., Lopes, C., Maeda, C., and Menhdhekar, A. (1997). Aspect-oriented programming. In Aksit, M. and Matsuoka, S., editors, Proceedings of the ECOOP, volume 1241, pages 220–242, Berlin, Heidelberg, and New York. Springer-Verlag.
Kiczales, G. and Mezini, M. (2005). Aspect-oriented programming and modular reasoning. In Proceedings of the 27th International Conference on Software Engineering (ICSE’2005), pages 49–58. ACM Press.
Lemos, O. A. L., Ferrari, F. C., Masiero, P. C., and Lopes, C. V. (2006). Testing aspect-oriented programming pointcut descriptors. In WTAOP ’06: Proceedings of the 2nd workshop on Testing aspect-oriented programs, pages 33–38, New York, NY, USA. ACM Press.
Lemos, O. A. L., Franchin, I. G., and Masiero, P. C. (2008). Integration testing of objectoriented and aspect-oriented programs: a structural pairwise approach for Java. (submitted for publication).
Lemos, O. A. L., Vincenzi, A., Maldonado, J. C., and Masiero, P. C. (2007). Control and data-flow structural testing criteria for aspect-oriented programs. Journal of Systems and Software, 80(6):862–882.
Mortensen, M. and Alexander, R. T. (2005). An approach for adequate testing of AspectJ programs. In Proceedings of the 1st Workshop on Testing Aspect Oriented Programs – in conjunction with AOSD’2005, Chicago/IL, USA.
Rapps, S. and Weyuker, E. J. (1985). Selecting software test data using data flow information. IEEE Trans. Softw. Eng., 11(4):367–375.
Vincenzi, A. M. R., Delamaro, M. E., Maldonado, J. C., and Wong, W. E. (2006). Establishing structural testing criteria for java bytecode. Softw. Pract. Exper., 36(14):1513–1541.
Vincenzi, A. M. R., Maldonado, J. C., Wong, W. E., and Delamaro, M. E. (2005). Coverage testing of java programs and components. Science of Computer Programming, 56(1–2):211–230.
Zhao, J. (2003). Data-flow-based unit testing of aspect-oriented programs. In Proceedings of the 27th Annual IEEE International Computer Software and Applications Conference (COMPSAC’2003), pages 188–197, Dallas/Texas USA. IEEE Computer Society.