The code instrumentation way that we learnt in the class has to modify the bytecode file on the file system. There are several limitations for that.

computer science

Description

Phase-1 (Due: Oct. 25th) 

Use ASM byte-code manipulation framework [1] to build an automated coverage collection tool that can capture the statement coverage for the program under test. Then, apply your tool to 10 real-world Java projects (>1000 lines of code) with JUnit tests (>50 tests) from GitHub [2] to collect the statement coverage for its JUnit tests. Note that your tool should (1) use Java Agent [3] to perform on-the-fly code instrumentation, (2) be able to store the coverage for each test method in the file system, and (3) be integrated with the Maven build system [4] so that your tool can be triggered by simply typing “mvn test” after changing the pom.xml file of the project under test. More implementation details are shown in the appendix.


Phase-2 (Due: Dec. 8th) 

Choose any ONE from the following two automated test generation projects. Note that your score will be graded based on your own implementation of the existing techniques. You are also highly encouraged to come up with your own refinements and optimizations to earn extra credits! 

• Automated test generation tool for Java library code, such as commons-utils and jodatime.


 Automated test generation tool for detecting bugs in popular JVM implementations. The Oracle HotSpot JVM [9] is recommended for evaluation


Java Agent 

The code instrumentation way that we learnt in the class has to modify the bytecode file on the file system. There are several limitations for that. First, the time can be wasted when reading and writing back the bytecode files from/to file systems. Second, the bytecode file on the file systems may be changed into a mess. Therefore, Java Agent [1] was proposed to change the bytecode file only in the memory during the JVM load time. Whenever, a Java bytecode file is loaded into JVM (for execution), Java Agent will transform that file and add instrumentations in the memory, leaving the actual bytecode file on file systems unchanged. There is a much cleaner and faster way to do code instrumentation. Java Agent can be directly combined with ASM to do bytecode instrumentation on-the-fly [5].


Related Questions in computer science category