Details
-
Suggestion
-
Resolution: Unresolved
-
P3: Somewhat important
-
None
-
master
-
None
Description
we are wasting a lot of time on running tests that cannot have possibly been affected by the changes that are being integrated.
we should use call graph analysis to obtain reliable dependencies of test cases, and use the diffs of the integrated changes to select tests to run.
as a "side effect", this could also mark the likely culprits of integration failures (QTQAINFRA-424).
all information necessary to extract the call graph and monitor it for changes can be obtained from objcopy -r -s -t. of course, it would be way more efficient to use the respective libbfd functions directly.
the algorithm is roughly:
- dump section contents
- chop them up according to the symbol table
- hash the per-symbol section contents for later re-validation
- use the relocation entries (again per-symbol) to build the dependency graph
<more elaboration to come>
of course, Somebody Else ™ already had that idea as well: http://googletesting.blogspot.de/2011/06/testing-at-speed-and-scale-of-google.html