Design of ABCA - Code Shoppy
Android Project Center Kumbakonam - Code Shoppy
Design of ABCA
ABCA-instrumentor (ABCAI)
ABCAI runs with Soot1[2] which is capable of converting Java bytecode to an intermediate representation called
a Jimple program. A Jimple program roughly corresponds the original Java source program in control and invocation
structures. In the instrumentation stage, ABCAI uses Soot
for the following tasks. After that, ABCAI uses Soot to
convert the instrumented Jimple program back to an instrumented APK bytecode and saves it in the PC.
Statement coverage
We employed a Soot method:
getJavaSourceStartLineNumber()
that returns the Java source code line number of each Jimple statement. With this method, we have precise knowledge of the set of statement lines in the Java source code.
Statement coverage is then reported as the percentage of
executed statement lines in this set. https://codeshoppy.com/project-center-kumbakonam.html Then ABCAI inserts a Jimple statement, for dumping
statement coverage data, following each original Jimple
statement in the root package since intuitively the classes
outside the root package represent libraries or third-party
modules not implemented by the app developers.
There is
an attribute to each Jimple statement telling whether this
statement belongs to the root package.
Method coverage
This is pretty much like what we do for statement coverage except that we only count those Jimple statements that
are the destination of a method invocation Jimple statement.
We also insert a statement to each such destination Jimple
statement so that we know if the corresponding method has
been executed or not in test execution.
Class coverage
Once we have data for method coverage, then ABCA uses
the data to derive class coverage since the relation between
classes and their methods can be queried from Soot.
ABCA-reporter (ABCAR)
To use ABCAR, a test engineer provides the instrumented APK file in the PC as a parameter. The user can also
provide an optional coverage data file produced by ABCAR
in a previous test session. If the APK has not been installed
to the Android device, ABCAR can help us installing the
APK. Then ABCAR starts the APK to collect and accumulate coverage data by repetitively sending “adb pull"
commands to the device.
When the user is done with a test session, ABCAR generates a new coverage report that shows the percentage of
covered lines, methods, and classes in the original Java
source program.
Comments
Post a Comment