Developers often spend time to determine whether test case failures are real failures or flaky. The flaky tests, also known as non-deterministic tests, switch their outcomes without any modification in the codebase. Flaky tests in a test suite reduce the confidence of developers in the test suite as well as in the quality of a product. The most common approach to detect flaky tests is re-running test cases which is resource consuming and unreliable. Furthermore, re-running only indicates what tests are flaky but does not reveal the root causes of test flakiness.