Campus HagenbergInformatik, Kommunikation, Medien

Studienprojekte

Projekte sind ein essenzieller Bestandteil des Curriculums von Mobile Computing. Die Studierenden bekommen die Möglichkeit, das im Zuge ihres Studiums erworbene theoretische Wissen selbst praktisch umzusetzen. Ein sowohl für StudentInnen als auch für Lehrende immer wieder spannendes Unterrichtskonzept, in dem schon erfolgreiche Startups wie z.B. runtastic und Butleroy ihre Anfänge gefunden haben.

Debugging: Isolating failure causes and cause-effect chains

Zeitraum
Oct 2017 - Feb 2018
FH Studierende
Ravdeep Kaur Arora
FH BetreuerIn
Dipl. Ing. Dr. techn. Erik Sonnleitner

Ziel

Isolating failure causes and cause-effect chains:

- Study Techniques for debugging

- Focus on scientific and algorithmic methods

- How to improve debugging process-automation


This is a continuation of a previous project done in Semester 2.


Umsetzung

Practical implementation of debugging techniques covered in Sem2 and Sem3 as per below:

- Delta Debugging (for simple/HTML/XML documents ) - Sem2

- White Box Fuzzing - Sem3

- Statistical Debugging - Sem3


Programming Language: All techniques are likely to be developed using Java.


Delta Debugging (for simple/HTML/XML documents): Requirements

1) It automates the debugging of programs using a hypothesis-trial-result loop.

2) This technique builds unit cases automatically to isolate failure causes.

3) For example, if we want to find out the point at which HTML page makes a web browser fail, we can feed it to the delta debugging algorithm to find out point of failure.

Algorithm/ Steps of Implementation:

1) Idea is to segregate the input to be debugged in smaller units to locate the failure point which will be implemented using list in java.

2) User interactive GUI application will be developed to get the input from user.

3) Application will be designed to find bugs for simple inputs, XML and HTML documents.


White Box Fuzz Test: Requirements

1) Run the code with its input.

2) Collect constraints on inputs with symbolic execution.

3) Generate new constraints.

4) Solve constraints with constraint solver.

5) Synthesize new inputs.

Algorithm/Steps of Implementation:

1) Sending of malformed data with verification that all target code paths are hit.

2) Modify software configuration in case of failures.

3) Traverse fuzzed data to traverse all data validations in the tested code.


Statistical Debugging: Requirements:

1) Statistical Debugging is mostly a research topic and is based on good statistical models which are specific to programs under test.

2) If any application is to be debugged using statistical debugging approach, ample amount of raw data is required and that raw data usually come from end users.

3) Machine learning and statistical clustering are used to try to find patterns in programs that are good predictors of bugs, to identify where more bugs are likely to hide.

Algorithm/Steps of Implementation:

1) Statistical Algorithm is based on mainly segregation of input based on statistical values of probability of bugs occurring on either execution way (left/right) of application.

2) Validation is done on various levels and with different ranges of values which are defined on basis of statistical model for specific application.