Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/gabriel-darbord/phaultloc
Coverage-Based Fault Localization for Pharo
https://github.com/gabriel-darbord/phaultloc
fault-localization pharo
Last synced: 7 days ago
JSON representation
Coverage-Based Fault Localization for Pharo
- Host: GitHub
- URL: https://github.com/gabriel-darbord/phaultloc
- Owner: Gabriel-Darbord
- License: mit
- Created: 2024-05-03T12:47:10.000Z (6 months ago)
- Default Branch: main
- Last Pushed: 2024-05-16T23:10:01.000Z (6 months ago)
- Last Synced: 2024-10-10T13:11:28.759Z (28 days ago)
- Topics: fault-localization, pharo
- Language: Smalltalk
- Homepage:
- Size: 14.6 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# PhaultLoc
Coverage-Based Fault Localization for Pharo.
Given methods and tests, PhaultLoc determines for each method statement whether it was executed by each test, and whether the test passed or failed.
Each method statement is thus associated with each test in one of four categories:
- Executing Passed Tests
- Executing Failed Tests
- Non-Executing Passed Tests
- Non-Executing Failed TestsThis categorization helps identify which statements are potentially faulty based on their execution patterns and test results.
This enables the calculation of statement coverage metrics such as [Ochiai](https://doi.org/10.1109/TAIC.PART.2007.13) and [Tarantula](https://doi.org/10.1145/581396.581397), which assign a *suspiciousness* score to a statement.
The more suspicious a statement is, the more likely it is to be the cause of a failed test.```st
coverage := PLStatementCoverage
statementCoverageOfMethods: MyClass methods
withTests: MyClassTest suite tests.
ochiai := PLStatementCoverage sortByTarantulaScore: coverage.
tarantula := PLStatementCoverage sortByOchiaiScore: coverage.
```> [!NOTE]
> The tests are expected to be given as a list of `TestCase` instances.> [!WARNING]
> All tests are executed as many times as there are methods.
> This is due to the current implementation of statement coverage, which only informs whether a statement has been executed or not.## Installing
```st
Metacello new
githubUser: 'Gabriel-Darbord' project: 'PhaultLoc' commitish: 'main' path: 'src';
baseline: 'PhaultLoc';
load
```