  During the software evolution, existing features may be adversely affected by
new changes, which is well known as regression errors. Maintaining a
high-quality test suite is helpful to prevent regression errors, whereas it
heavily depends on developers. Continuously augmenting the existing test suite
based on the new changes can assist developers in investigating the impact of
these new changes. And by comparing the executions of the generated test case
on two versions, existing techniques are able to detect some common errors.
However, the requirements and oracles on the new changes with existing program
behaviors are missing. In addition, the new changes may introduce new bugs when
they are not sufficiently examined with other unchanged code, which finally
fails to meet developers' real intentions on changes. In this paper, we propose
the notion of evolutionary conflict checking to validate new changes. By
extracting developers' intention reflected by new changes and transforming the
linear evolutionary process into one three-way merge, we detect conflicts
between existing behaviors and new changes. Our experimental results indicate
that evolutionary conflict checking is able to be applied for guaranteeing
software quality after changes.
