3TestingOne of the practical methods commonly used to detect the presence of errors (failures) in a computer program is to test it for a set of inputs.The outputis correct?Our programI1, I2, I3, …, In, …Expected results= =?Actual resultsBlack-box testing“Inputs”White-box testing

27The key idea of the algorithm is to ToolTest input IDabca>=b+cb>=a+cc>=a+ba!=bb!=ca==ba==cb==cOutput17ft21134819…13334514523015314716272822C4.5 mining algorithmThe key idea of the algorithm is tocalculate the highest normalized information gain of attributes and then build a decision node that splits on the attributesToolWeka 3:

35Related WorkLo et al. (Lo, Cheng, Han, Khoo, & Sun, 2009), Milea et al. (Milea, Khoo, Lo, & Pop, 2012) mines a set of discriminative features capturing repetitive series of events from program execution traces. These features are then used to train a classier to detect failures.Bowring et al. (Bowring, Rehg, & Harrold, 2004) models program executions as Markov models, and a clustering method for Markov models that aggregates multiple program executions into effective behavior classifiers.(Pacheco & Ernst, 2005) Pacheco and Ernst build an operational model from observations of the software running properly. The operation model includes object invariants and properties. The object invariants are the conditions hold on entry and exit of all public methods.Our approach generates and classifies inputs based on the internal structure of the UUT.Briand (Briand, 2008) has proposed the use of machine learning techniques - including decision trees - for the test oracle problem.The decision tree model he has proposed is manually built from software requirements.