Skip to main content
Log in

RAMBUTANS: automatic AOP-specific test generation tool

  • Regular Paper
  • Published:
International Journal on Software Tools for Technology Transfer Aims and scope Submit manuscript

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.

This is a preview of subscription content, log in via an institution to check access.

Access this article

Price excludes VAT (USA)
Tax calculation will be finalised during checkout.

Instant access to the full article PDF.

Fig. 1
Fig. 2
Fig. 3
Fig. 4
Fig. 5
Fig. 6

Similar content being viewed by others

References

  1. Kiczales, G.: Aspect-oriented programming. ACM Comput. Surv. 28 (1996)

  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)

  3. Hoffman, K., Eugster, P.: Cooperative aspect-oriented programming. Sci. Comput. Program. 74, 333–354 (2009)

    Article  MathSciNet  MATH  Google Scholar 

  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)

    Article  Google Scholar 

  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)

  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)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  8. Linehan, E., Clarke, S.: An aspect-oriented, model-driven approach to functional hardware verification. J. Syst. Archit. 58, 195–208 (2012)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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)

  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)

  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)

  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)

    Article  Google Scholar 

  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)

  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)

    Article  MathSciNet  MATH  Google Scholar 

  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)

    Article  Google Scholar 

  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)

  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)

  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)

  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)

  21. Duran, J.W., Ntafos, S.C.: An evaluation of random testing. IEEE Trans. Softw. Eng. 10, 438–444 (1984)

  22. Arcuri, A., Iqbal, M.Z., Briand, L.: Random testing: theoretical results and practical implications. IEEE Trans. Softw. Eng. 38, 258–277 (2012)

    Article  Google Scholar 

  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)

  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)

  25. Bertolino, A.: Software testing research: achievements, challenges, dreams. In: Proceedings of the 2007 Future of Software Engineering Conference, pp. 85–103 (2007)

  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)

    Article  Google Scholar 

  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)

    Article  Google Scholar 

  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)

  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)

  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)

  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)

  32. Csallner, C., Smaragdakis, Y.: JCrasher: an automatic robustness tester for Java. Softw Pract. Exp 34, 1025–1050 (2004)

  33. Parasoft Jtest. http://www.parasoft.com/jsp/products/jtest.jsp. Accessed 7 June 2015

  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)

  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-1052003

  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)

  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)

  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)

    Article  Google Scholar 

  39. Soares, S., Borba, P., Laureano, E.: Distribution and persistence as aspects. Softw. Pract. Exp. 36, 711–759 (2006)

  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)

  41. Wappler, S.: Automatic generation of object-oriented unit tests using genetic programming, Ph.D. thesis, Technical University of Berlin (2008)

  42. Jia, Y., Harman, M.: An analysis and survey of the development of mutation testing. IEEE Trans. Softw. Eng. 37, 649–678 (2011)

    Article  Google Scholar 

  43. Offutt, J.: A mutation carol: Past, present and future. Inf. Softw. Technol. 53, 1098–1107 (2011)

    Article  Google Scholar 

  44. Ferrari, F.C., Rashid, A., Maldonado, J.C.: Towards the practical mutation testing of AspectJ programs. Sci. Comput. Program. 78, 1639–1662 (2013)

    Article  Google Scholar 

  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)

  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)

  47. Andrews, J.H., Menzies, T., Li, F.C.H.: Genetic algorithms for randomized unit testing. IEEE Trans. Softw. Eng. 37, 80–94 (2011)

    Article  Google Scholar 

  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)

  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)

  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)

    Article  Google Scholar 

  51. Novikov, E.M.: An approach to implementation of aspect-oriented programming for C. Program. Comput. Softw. 39, 194–206 (2013)

    Article  Google Scholar 

Download references

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.

Author information

Authors and Affiliations

Authors

Corresponding author

Correspondence to Reza Meimandi Parizi.

Appendices

Appendix A

Internal algorithms of components used in RAMBUTANS can be found at: http://goo.gl/DG0OGv.

Appendix B

The number of the final mutants was made to the programs during the experiment. The following table shows the distribution of mutants per mutation operator in relation with the three programs (Table 10).

Table 10 Details of mutants

Rights and permissions

Reprints and permissions

About this article

Check for updates. Verify currency and authenticity via CrossMark

Cite this article

Parizi, R.M., Ghani, A.A.A., Lee, S.P. et al. RAMBUTANS: automatic AOP-specific test generation tool. Int J Softw Tools Technol Transfer 19, 743–761 (2017). https://doi.org/10.1007/s10009-016-0432-3

Download citation

  • Published:

  • Issue Date:

  • DOI: https://doi.org/10.1007/s10009-016-0432-3

Keywords

Navigation