The Jenkins CI system is used in Solid Sands to keep about 25000 C and C++ tests in SuperTest healthy.
A variety of static and dynamic analysis techniques are configured to verify that the tests do not step outside of the boundary of the language specifications.
Among the analyzers used are different compilers, the “valgrind” dynamic memory analysis tool, and a number of “sanitizer” options, which instrument the code for the detection of undefined behavior. The most complex aspect to manage this are “false positives” - test cases that fail for the wrong reason. In such a case, we believe that our test is right, but that the analyzer is wrong. (From the perspective of the analyzer, it is a “true positive”, an actual error!) An important action for false positive tests is to annotate them after analysis so that we do not get a failure again and again. These annotations are not always performed correctly in the current setup.
In this project, you are expected to analyze tests that are marked false positive and find a way to reduce them by fine-tuning the analysis tools.
Secondly, annotations for false positives must be reviewed to determine that they are accurate enough. The project requires precision, a puzzle oriented attitude and the determination to perform root cause analysis. Every test is different and false positives are the most difficult to analyze. That makes this a challenging project.
We offer:
- A pleasant working environment in Amsterdam
- Guidance when you need it
- An internship compensation