JaBÁ: A Java Bytecoder Analyser

  • A. M. R. Vincenzi USP
  • M. E. Delamaro Fundação Eurípedes Soares da Rocha
  • A. S. Simão USP
  • W. E. Wong University of Texas at Dallas
  • J. C. Maldonado USP

Resumo


Many existing control-flow and data-flow based techniques for software testing and program analysis require source code instrumentation. However, this approach may not be feasible for component-based software as some of its components can be commercial off-the-shelf products or developed by a third party, and therefore the corresponding source code is not always available. For programs written in Java, this problem can be solved by conducting instrumentation directly on bytecode, instead of on the Java source code. In this paper, we present a Java Bytecode Analyzer (JaBÁ), developed to help programmers and testers collect control-flow and dataflow based information through bytecode instrumentation.

Palavras-chave: bytecode instrumentation, Java Virtual Machine (JVM), software testing, program analysis

Referências

H. Agrawal. "Dominators, super blocks, and program coverage". In Proceedings of the 21st Annual ACM SIGPLAN SIGACT Symposium on Principles of Programming Languages (POPL'9), pages 25-34, Portland, OR, January 1994.

The xSuds Team. "Mining system tests to aid software maintenance". IEEE Computer, 31(7):64-73, July 1998.

M. Dahm. Byte code engineering with the bcel api. Technical Report B-17-98, Freie Universität Berlin Institut für Informatik, Berlin German, April 2001. Avaliable on-line at: http://bcel.sourceforge.net/ [04-13-2002].

J. R. Horgan and S. A. London. "Data flow coverage and the C language". In Proceedings of the Fourth Symposium on Software Testing, Analysis, and Verification, pages 87-97, Victoria, Canada, October 1991.

C. S. Horstmann and G. Cornell. Core Java 2, volume I - Fundamentals. Prentice Hall, 2001.

J. A. Jones, M. J. Harrold, and J. Stasko. Visualization of test information to assist fault localization. In XXIV International Conference on Software Engineering - ICSE'2002, pages 467-477, Orlando, FL, May 2002. ACM Press.

W. Landi and B..G Ryder. A safe approximate algorithm for interprocedural pointer aliasing. In ACM SIGPLAN'92 Conference on Programming Language Design and Implementation, pages 235-248, June 1992.

H. B. Lee and B. G. Zorn. BIT: A tool for instrumenting Java btecodes. In USENIX Symposium on Internet Technologies and Systems (USITS 97), pages 73-82, Monterey, CA, December 1997. USENIX Association.

T. Lindholm and F. Yellin. The Java Virtual Machine Specification. Addison-Wesley, 2 edition, 1999.

S. Rapps and E. J. Weyuker. Selecting software test data using data flow information. IEEE Transactions on Software Engineering, 11(4):367-375, April 1985.

G. Rothermel, M. J. Harrold, and J. Dedhia. Regression testing for C++ software. Software Testing, Verification and Reliability, 10(2):77-109, June 2000.

R. Vallée-Rai. Soot overview/disassembling classfiles. Soot Web Page, March 2000. Avaliable on-line at: http://www.sable.mcgill.ca/soot/tutorial/ [04/13/2002].

C. Verbrugge. Using Coffi. School of Computer Science McGill University, Montréal, Québec, Canada, October 1996. Avaliable on-line at: [link] [04/13/2002].

W. E. Wong, S. S. Gokhale, J. R. Horgan, and K. S. Trivedi. "Locating program features using execution slices". In Proceedings of the Second IEEE Symposium on Application-Specific Systems and Software Engineering Technology, pages 194-203, Richardson, TX, March 1999.

W. E. Wong, J. R. Horgan, S. London, and A. P. Mathur. "Effect of test set size and block coverage on fault detection effectiveness". In Proceedings of the Fifth IEEE International Symposium on Software Reliability Engineering, pages 230-238, Monterey, CA, November 1994.
Publicado
16/10/2002
VINCENZI, A. M. R.; DELAMARO, M. E.; SIMÃO, A. S.; WONG, W. E.; MALDONADO, J. C.. JaBÁ: A Java Bytecoder Analyser. In: SIMPÓSIO BRASILEIRO DE ENGENHARIA DE SOFTWARE (SBES), 16. , 2002, Gramado/RS. Anais [...]. Porto Alegre: Sociedade Brasileira de Computação, 2002 . p. 414-419. DOI: https://doi.org/10.5753/sbes.2002.23968.