Advertisement

RAMBUTANS: automatic AOP-specific test generation tool

  • Reza Meimandi PariziEmail author
  • Abdul Azim Abdul Ghani
  • Sai Peck Lee
  • Saif Ur Rehman Khan
Regular Paper

Abstract

Aspect-oriented programming (AOP) is a programmatic methodology to handle better modularized code by separating crosscutting concerns from the traditional abstraction boundaries. Automated testing, as one of the most demanding needs of the software development to reduce both human effort and costs, is a delicate issue in testing aspect-oriented programs. Prior studies in the automated test generation for aspect-oriented programs have been very limited with respect to the need for both adequate tool support and capability concerning effectiveness and efficiency. This paper describes a new AOP-specific tool for testing aspect-oriented programs, called RAMBUTANS. The RAMBUTANS tool uses a directed random testing technique that is especially well suited for generating tests for aspectual features in AspectJ. The directed random aspect of the tool is parameterized by associating weights to aspects, advice, methods, and classes by controlling object and joint point creations during the test generation process. We present a comprehensive empirical evaluation of our tool against the current AOP test generation approaches on three industrial aspect-oriented projects. The results of the experimental and statistical tests showed that RAMBUTANS tool produces test suites that have higher fault-detection capability and efficiency for AspectJ-like programs.

Keywords

Software testing Automated test generation Testing tool Aspect-oriented programming Object-oriented programming AspectJ 

Notes

Acknowledgments

R. Meimandi Parizi would like to thank the New York Institute of Technology (NYIT) for providing financial support. A.A. A. Ghani’s work was supported in part by Fundamental Research Grant Scheme with reference FRGS/2/2010 /SG/UPM/01/2. S. P. Lee’s work was carried out within the research project supported by High Impact Research Grant with reference UM.C/625/1/HIR/MOHE/FCSIT/13, funded by the Ministry of Education, Malaysia. S.U.R. Khan would like to acknowledge the financial support of the Bright Sparks Program at University of Malaya, Malaysia under reference BSP-151(3)-11.

References

  1. 1.
    Kiczales, G.: Aspect-oriented programming. ACM Comput. Surv. 28 (1996)Google Scholar
  2. 2.
    Kiczales, G., Lamping, J., Lopes, C.V., Hugunin, J.J., Hilsdale, E.A., Boyapati, C.: Aspect-oriented programming, United States Patent 6467086, Xerox Corporation Patent (2002)Google Scholar
  3. 3.
    Hoffman, K., Eugster, P.: Cooperative aspect-oriented programming. Sci. Comput. Program. 74, 333–354 (2009)MathSciNetCrossRefzbMATHGoogle Scholar
  4. 4.
    Nakagawa, E.Y., Ferrari, F.C., Sasaki, M.M.F., Maldonado, J.C.: An aspect-oriented reference architecture for Software Engineering Environments. J. Syst. Softw. 84, 1670–1684 (2011)CrossRefGoogle Scholar
  5. 5.
    Kallel, S., Charfi, A., Mezini, M., Jmaiel, M.: Combining formal methods and aspects for specifying and enforcing architectural invariants. In: Proceedings of the \(9{\rm th}\) International Conference on Coordination Models and Languages, pp. 211–230 (2007)Google Scholar
  6. 6.
    Garcia, A., Batista, T., Rashid, A., Sant’Anna, C.: Driving and managing architectural decisions with aspects. ACM SIGSOFT Softw. Eng. Notes 31, 1–8 (2006)CrossRefGoogle Scholar
  7. 7.
    Mets, J., Maoz, S., Katara, M., Mikkonen, T.: Using aspects for testing of embedded software: experiences from two industrial case studies. Softw. Qual. J. 22, 185–213 (2013)CrossRefGoogle Scholar
  8. 8.
    Linehan, E., Clarke, S.: An aspect-oriented, model-driven approach to functional hardware verification. J. Syst. Archit. 58, 195–208 (2012)CrossRefGoogle Scholar
  9. 9.
    Driver, C., Reilly, S., Linehan, E., Cahill, V., Clarke, S.: Managing embedded systems complexity with aspect-oriented model-driven engineering. ACM Trans. Embed. Comput. Syst. 10, 1–26 (2010)CrossRefGoogle Scholar
  10. 10.
    Cleland-Huang, J., Settimi, R., Zou, X., Solc, P.: The detection and classification of non-functional requirements with application to early aspects. In: Proceedings of the \(14{\rm th}\) IEEE International Conference Requirements Engineering, pp. 39–48 (2006)Google Scholar
  11. 11.
    Amar, B., Leblanc, H., Coulette, B., Nebut, C.: Using aspect-oriented programming to trace imperative transformations. In: Proceedings of the \(14{\rm th}\) IEEE International Enterprise Distributed Object Computing Conference, pp. 143–152 (2010)Google Scholar
  12. 12.
    Voelter, M., Groher, I.: Product line implementation using aspect-oriented and model-driven software development. In: Proceedings of the \(11{\rm th}\) International Software Product Line Conference, pp. 233–242 (2007)Google Scholar
  13. 13.
    Lee, J.-S., Bae, D.-H.: An aspect-oriented framework for developing component-based software with the collaboration-based architectural style. Inf. Softw. Technol. 46, 81–97 (2004)CrossRefGoogle Scholar
  14. 14.
    Filman, R.E., Friedman, D.P.: Aspect-oriented programming is quantification and obliviousness. In: Proceedings of Aspect-Oriented Software Development, pp. 21–35 (2005)Google Scholar
  15. 15.
    Lemos, O.A.L., Franchin, I.G., Masiero, P.C.: Integration testing of Object-Oriented and Aspect-Oriented programs: A structural pairwise approach for Java. Sci. Comput. Program. 74, 861–878 (2009)MathSciNetCrossRefzbMATHGoogle Scholar
  16. 16.
    Meimandi Parizi, R., Ghani, A.A.A., Abdullah, R., Atan, R.: Empirical evaluation of the fault detection effectiveness and test effort efficiency of the automated AOP testing approaches. Inf. Softw. Technol. 53, 1062–1083 (2011)CrossRefGoogle Scholar
  17. 17.
    Xie, T., Zhao, J., Marinov, D., Notkin, D.: Automated test generation for AspectJ programs. In: Proceedings of the \(1^{st}\) Workshop on Testing Aspect-oriented Programs, pp. 1–6 (2005)Google Scholar
  18. 18.
    Xie, T., Zhao, J.: A framework and tool support for generating test inputs of AspectJ programs. In: Proceedings of the \(5{\rm th}\) International Conference on Aspect-Oriented Software Development, pp. 190–201 (2006)Google Scholar
  19. 19.
    Xie, T., Zhao, J., Marinov, D., Notkin, D.: Detecting redundant unit tests for AspectJ programs. In: Proceedings of the \(17{\rm th}\) International Symposium on Software Reliability Engineering, pp. 179–190 (2006)Google Scholar
  20. 20.
    Harman, M., Islam, F., Xie, T., Wrappler, S.: Automated test data generation for aspect-oriented programs. In: Proceedings of the \(8{\rm th}\) International Conference on Aspect-Oriented Software Development, pp. 185–196. Charlottesville (2009)Google Scholar
  21. 21.
    Duran, J.W., Ntafos, S.C.: An evaluation of random testing. IEEE Trans. Softw. Eng. 10, 438–444 (1984)Google Scholar
  22. 22.
    Arcuri, A., Iqbal, M.Z., Briand, L.: Random testing: theoretical results and practical implications. IEEE Trans. Softw. Eng. 38, 258–277 (2012)CrossRefGoogle Scholar
  23. 23.
    Godefroid, P., Klarlund, N., Sen, K.: DART: directed automated random testing. In: Proceedings of the 2005 ACM SIGPLAN Conference on Programming Language Design and Implementation, pp. 213–223. Chicago (2005)Google Scholar
  24. 24.
    Ciupa, I., Leitner, A., Oriol, M., Meyer, B.: ARTOO: Adaptive random testing for object-oriented software. In: Proceedings of the \(30{\rm th}\) International Conference on Software Engineering, pp. 71–80. Leipzig (2008)Google Scholar
  25. 25.
    Bertolino, A.: Software testing research: achievements, challenges, dreams. In: Proceedings of the 2007 Future of Software Engineering Conference, pp. 85–103 (2007)Google Scholar
  26. 26.
    Tsoukalas, M.Z., Duran, J.W., Ntafos, S.C.: On some reliability estimation problems in random and partition testing. IEEE Trans. Softw. Eng. 19, 687–697 (1993)CrossRefGoogle Scholar
  27. 27.
    Meimandi Parizi, R., Ghani, A.A.A., Lee, S.P.: Automated test generation technique for aspectual features in AspectJ. Inf. Softw. Technol. 57, 463–493 (2015)CrossRefGoogle Scholar
  28. 28.
    Ferrari, F.C., Burrows, R., Lemos, O.A.L., Garcia, A., Maldonado, J.C.: Characterising faults in aspect-oriented programs: towards filling the gap between theory and practice. In: Proceeding of the 2010 Brazilian Symposium on Software Engineering, pp. 50–59 (2010)Google Scholar
  29. 29.
    Kiczales, G., Hilsdale, E.A., Hugunin, J.J., Kersten, M., Palm, J., Griswold, W.G.: An overview of AspectJ. In: Proceedings of the \(15{\rm th}\) European Conference on Object-Oriented Programming, pp. 327–353 (2001)Google Scholar
  30. 30.
    Lopes, C.V., Ngo, T.C.: Unit testing aspectual behavior. In: Proceedings of the \(1^{\rm st}\) Workshop on Testing Aspect Oriented Programs, pp. 1–6 (2005)Google Scholar
  31. 31.
    Yamazaki, Y., Sakurai, K., Matsuura, S., Masuhara, H., Hashiura, H., Komiya, S.: A unit testing framework for aspects without weaving. In: Proceedings of the \(1{\rm st}\) Workshop on Testing Aspect-oriented Programs, pp. 1–5 (2005)Google Scholar
  32. 32.
    Csallner, C., Smaragdakis, Y.: JCrasher: an automatic robustness tester for Java. Softw Pract. Exp 34, 1025–1050 (2004)Google Scholar
  33. 33.
    Parasoft Jtest. http://www.parasoft.com/jsp/products/jtest.jsp. Accessed 7 June 2015
  34. 34.
    Xie, T., Marinov, D., Notkin, D.: Rostra: A framework for detecting redundant object-oriented unit tests. In: Proceedings of the \(19{\rm th}\) IEEE International Conference on Automated Software Engineering, pp. 196–205 (2004)Google Scholar
  35. 35.
    Alexander, R.T., Bieman, J.M., Andrews, A.A.: Towards the systematic testing of aspect-oriented programs. Colorado State University, Technical Report CS-4-1052003Google Scholar
  36. 36.
    Meimandi Parizi, R., Ghani, A.A.A.: A theoretical evaluation of automated aspect-oriented program testing approaches. In: Proceedings of the Annual International Conference on Software Engineering, pp. 11–19. Phuket (2010)Google Scholar
  37. 37.
    Nakagawa, E.Y., Simo, A.d.S., Ferrari, F.C., Maldonado, J.C.: Towards a reference architecture for software testing tools. In: Proceedings of the \(19^{\rm th}\) International Conference on Software Engineering and Knowledge Engineering (2007)Google Scholar
  38. 38.
    Rashid, A., Cottenier, T., Greenwood, P., Chitchyan, R., Meunier, R., Coelho, R., et al.: Aspect-oriented software development in practice: Tales from AOSD-Europe. Computer 43, 19–26 (2010)CrossRefGoogle Scholar
  39. 39.
    Soares, S., Borba, P., Laureano, E.: Distribution and persistence as aspects. Softw. Pract. Exp. 36, 711–759 (2006)Google Scholar
  40. 40.
    Ferrari, F.C., Burrows, R., Lemos, O., Garcia, A., Figueiredo, E., Cacho, N., et al.: An exploratory study of fault-proneness in evolving aspect-oriented programs. In: Proceedings of the \(32{\rm nd}\) ACM/IEEE International Conference on Software Engineering, pp. 65–74 (2010)Google Scholar
  41. 41.
    Wappler, S.: Automatic generation of object-oriented unit tests using genetic programming, Ph.D. thesis, Technical University of Berlin (2008)Google Scholar
  42. 42.
    Jia, Y., Harman, M.: An analysis and survey of the development of mutation testing. IEEE Trans. Softw. Eng. 37, 649–678 (2011)CrossRefGoogle Scholar
  43. 43.
    Offutt, J.: A mutation carol: Past, present and future. Inf. Softw. Technol. 53, 1098–1107 (2011)CrossRefGoogle Scholar
  44. 44.
    Ferrari, F.C., Rashid, A., Maldonado, J.C.: Towards the practical mutation testing of AspectJ programs. Sci. Comput. Program. 78, 1639–1662 (2013)CrossRefGoogle Scholar
  45. 45.
    Ferrari, F.C., Maldonado, J.C., Rashid, A.: Mutation testing for aspect-oriented programs. In: Proceedings of the \(1{\rm st}\) International Conference on Software Testing, Verification, and Validation, pp. 52–61 (2008)Google Scholar
  46. 46.
    Delamare, R., Baudry, B., Le Traon, Y.: AjMutator: A tool for the mutation analysis of AspectJ pointcut descriptors. In: Proceedings of the \(2{\rm nd}\) International Conference on Software Testing, Verification, and Validation Workshops, pp. 200–204 (2009)Google Scholar
  47. 47.
    Andrews, J.H., Menzies, T., Li, F.C.H.: Genetic algorithms for randomized unit testing. IEEE Trans. Softw. Eng. 37, 80–94 (2011)CrossRefGoogle Scholar
  48. 48.
    Pacheco, C., Ernst, M.D.: Randoop: feedback-directed random testing for Java. In: Proceedings of the Companion to the \(22{\rm nd}\) ACM SIGPLAN Conference on Object-oriented Programming Systems and Applications, pp. 815–816. Montreal (2007)Google Scholar
  49. 49.
    Oriat, C.: Jartege: A tool for random generation of unit tests for Java classes. In: Proceedings of the \(1{\rm st}\) International Conference on the Quality of Software Architectures, pp. 242–256 (2005)Google Scholar
  50. 50.
    Tsoukalas, M.Z., Duran, J.W., Ntafos, S.C.: On some reliability estimation problems in random and partition testing. IEEE Trans. Softw. Eng. 19, 687–697 (1993)CrossRefGoogle Scholar
  51. 51.
    Novikov, E.M.: An approach to implementation of aspect-oriented programming for C. Program. Comput. Softw. 39, 194–206 (2013)CrossRefGoogle Scholar

Copyright information

© Springer-Verlag Berlin Heidelberg 2016

Authors and Affiliations

  • Reza Meimandi Parizi
    • 1
    Email author
  • Abdul Azim Abdul Ghani
    • 2
  • Sai Peck Lee
    • 3
  • Saif Ur Rehman Khan
    • 3
  1. 1.School of Engineering and Computing SciencesNew York Institue of Technolgoy (NYIT)NanjingChina
  2. 2.University Putra MalaysiaSerdangMalaysia
  3. 3.University of MalayaKuala LumpurMalaysia

Personalised recommendations