JaBÁ: A Java Bytecoder Analyser
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.
Referências
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.