  One of the primary mechanisms by which developers receive feedback about
in-field failures of software from users is through bug reports. Unfortunately,
the quality of manually written bug reports can vary widely due to the effort
required to include essential pieces of information, such as detailed
reproduction steps (S2Rs). Despite the difficulty faced by reporters, few
existing bug reporting systems attempt to offer automated assistance to users
in crafting easily readable, and conveniently reproducible bug reports. To
address the need for proactive bug reporting systems that actively aid the user
in capturing crucial information, we introduce a novel bug reporting approach
called EBug. EBug assists reporters in writing S2Rs for mobile applications by
analyzing natural language information entered by reporters in real-time, and
linking this data to information extracted via a combination of static and
dynamic program analyses. As reporters write S2Rs, EBug is capable of
automatically suggesting potential future steps using predictive models trained
on realistic app usages. To evaluate EBug, we performed two user studies based
on 20 failures from $11$ real-world apps. The empirical studies involved ten
participants that submitted ten bug reports each and ten developers that
reproduced the submitted bug reports. In the studies, we found that reporters
were able to construct bug reports 31 faster with EBug as compared to the
state-of-the-art bug reporting system used as a baseline. EBug's reports were
also more reproducible with respect to the ones generated with the baseline.
Furthermore, we compared EBug's prediction models to other predictive modeling
approaches and found that, overall, the predictive models of our approach
outperformed the baseline approaches. Our results are promising and demonstrate
the potential benefits provided by proactively assistive bug reporting systems.
