  Continuous integration testing is an important step in the modern software
engineering life cycle. Test prioritization is a method that can improve the
efficiency of continuous integration testing by selecting test cases that can
detect faults in the early stage of each cycle. As continuous integration
testing produces voluminous test execution data, test history is a commonly
used artifact in test prioritization. However, existing test prioritization
techniques for continuous integration either cannot handle large test history
or are optimized for using a limited number of historical test cycles. We show
that such a limitation can decrease fault detection effectiveness of
prioritized test suites.
  This work introduces DeepOrder, a deep learning-based model that works on the
basis of regression machine learning. DeepOrder ranks test cases based on the
historical record of test executions from any number of previous test cycles.
DeepOrder learns failed test cases based on multiple factors including the
duration and execution status of test cases. We experimentally show that deep
neural networks, as a simple regression model, can be efficiently used for test
case prioritization in continuous integration testing. DeepOrder is evaluated
with respect to time-effectiveness and fault detection effectiveness in
comparison with an industry practice and the state of the art approaches. The
results show that DeepOrder outperforms the industry practice and
state-of-the-art test prioritization approaches in terms of these two metrics.
