Coder Social home page Coder Social logo

stamp-project / evocrash Goto Github PK

View Code? Open in Web Editor NEW
5.0 12.0 1.0 567.23 MB

This repository contains the legacy implementation of EvoCrash, a crash reproduction prototype extending EvoSuite 1.0.3 (http://www.evosuite.org). This repository is no longer maintained. The latest version of the full reimplementation of the tool is available at https://github.com/STAMP-project/botsing

License: GNU Lesser General Public License v3.0

Java 99.23% CSS 0.10% JavaScript 0.48% Batchfile 0.01% Shell 0.02% HTML 0.01% Python 0.06% R 0.09%
java search-based stack-trace crash-replication

evocrash's Introduction

EvoCrash

This repository contains the legacy implementation of EvoCrash (http://www.evocrash.org), a crash reproduction prototype extending EvoSuite 1.0.3 (http://www.evosuite.org). This repository is no longer maintained. The latest version of the full reimplementation of the tool is available at https://github.com/STAMP-project/botsing

Funding

EvoCrash is partially funded by research project STAMP (European Commission - H2020) STAMP - European Commission - H2020

evocrash's People

Contributors

xdevroey avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

danzone

evocrash's Issues

[Model seeding] Model generation

Characteristics

  • Issue Type: feature
  • Severity: major

Description

  • Define the Main class for model generation for Java method calls
  • 2-grams implementation in YAMI
  • extended to n-grams (?)

Improve Evocrash user guide documentation: describe Evocrash parameterization in config.properties

Characteristics

  • Issue Type: feature
  • Reproducibility: N/A
  • Severity: feature
  • Tool/Service/Component: Evocrash latest version
  • Execution Environment: All
  • Reporter: Jesús Gorroñogoitia [email protected]

Description

Please, improve DSpot documentation describing the purpose and acceptable values (and range) for the parameters included in config.properties:

criterion=CRASH
sandbox=TRUE
test.random=0
functional.mocking.p=0.8
functional.mocking.percent=0.5
minimize=TRUE
headless.chicken.test=FALSE
population=80
search.budget=600
condition.stopping=
timeout.global=3600
frame.level=3
virtual.fs=TRUE
class.loader.separate=FALSE
calls.replace=FALSE
recursion.max=50
jar.tools.location=
fields.static.reset=FALSE
net.virtual=FALSE
exception.type=java.lang.ClassCastException
#the working directory is Demo/
path.test=src/GGA-tests/java/
path.log=src/resources/logs/XWIKI/XWIKI-13916/XWIKI-13916.log
path.libs=src/resources/targetedSoftware/XWIKI-bins/XWIKI-8.4/

See DSpot and Descartes readme.md for examples of describing parameters (for instance those accepted within the command line or in Maven descriptors).

Steps to reproduce

N/A

Other files and URLs

Relationships

Help on issue template

Preview to follow the link or open file .github/ISSUE_DOC.md

Empty tests generated for an ArrayIndexOutOfBoundsException

Characteristics

  • Issue Type: possible bug/missuse
  • Reproducibility: always
  • Tool/Service/Component: EvoCrash
  • Execution Environment: Linux Ubuntu
  • Reporter: Ricardo José Tejada [email protected]

Description

EvoCrash generates the tests for a simple class that produces an ArrayIndexOutOfBoundsException,
but they are empty and the following Gradle tasks after test generation take an extremely long time.

The terminal shows this output

terminal

Steps to reproduce

Create the following class

class

Put it in a jar, get it's log file, put the jar and the log file in the EvoCrash-Demo project and modify config.properties

files

properties

Finally go to Demo folder and execute ./gradlew run

Other files and URLs

In Files.zip you can find: HelloException.jar, the log file, and the empty test produced by EvoCrash

Files.zip

Help on issue template

Preview to follow the link or open file .github/ISSUE_DOC.md

[Test case seeding] Implement the inspector

Characteristics

  • Issue Type: feature
  • Severity: major

Description

The inspector generates the mapping between the classes and the tests that should be considered for that class by EvoCrash.

  • static analysis inspector by parsing the .class files
  • dynamic analysis inspector using test coverage tool (Done by EvoSuite)
  • add the implemented feature as a new feature of EvoCrash.

Improve Evocrash documentation: explain how to execute Evocrash with different clients: CLI, Gradle

Characteristics

  • Issue Type: feature
  • Reproducibility: N/A
  • Severity: feature
  • Tool/Service/Component: Evocrash, latest version
  • Execution Environment: All
  • Reporter: Jesús Gorroñogoitia [email protected]

Description

This request for documentation enhancement it motivated by two reasons:
1- As Evocrash adopter (user, use case provider) we need to understand how to invoke Evocrash from latest source code or downloaded binaries. This goes beyond the demo description.
2- As developers of Eclipse plugins, we need to understand the different options to configure and launch Evocrash from Eclipse IDE.

Inspecting Evocrash demo, and concretely the build.gradle descriptor, it seems that executing Evocrash requires:
1- Include Evocrash library (evocrash-lib/evocrash-1.0.0.jar) in classpath
2- Include target libraries (e.g. XWiki, ActiveEon, etc) in classpath
3- Include Evocrash launcher source code (src/main/java) and resources (src/resources) in classpath
4- Invoke Evocrash launcher with Java: eu.stamp_project.evocrash.demo.Application

I am omitting the configuration for running generated tests.

Could you please describe in detail in documentation how to run Evocrash in CLI and Gradle from the built Evocrash library, built using Maven as explain in Evocrash documentation?

Steps to reproduce

N/A

Other files and URLs

Relationships

Help on issue template

Preview to follow the link or open file .github/ISSUE_DOC.md

Evocrash demo does not complete Gradle execution after reporting it has finished

Characteristics

  • Issue Type: bug
  • Reproducibility: always
  • Severity: minor
  • Tool/Service/Component: Evocrash latest version
  • Execution Environment: Linux Opensuse Tumbleweed
  • Reporter: Jesús Gorroñogoitia [email protected]

Description

Evocrash execution using Gradlew (Demo example) does not finished (ends execution) after reporting completion, when Evocrash is not able to generate crash replicating tests. It finishes correctly when it succeeds in generating the tests.
In both cases, Evocrash should ends normally, reporting the results.

Steps to reproduce

See #13 for an example of Evocrash execution that does not succeed and does not ends normally.
In this case, last Evocrash output is:

>>>>>>>>>>>>>>>>>>>>>>>>>>>GGA was done in 1001!<<<<<<<<<<<<<<<<<<<<<<<<<<<<<

! Budget exceeded
! Unable to cover goal 0 org.crash.client.crashcoverage.CrashCoverageTestFitness@1fc4ecc8
* Search finished after 1001s, 1001 statements, best individual has fitness 0.0
* Covered 0/1 goals
* Target exception was set to: Exception in thread "main" java.lang.ClassCastException
* EvoCrash: The target call is either public or protected!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The retrived call(s) to inject in the tests are:
>>>>>> callBadIdea
[MASTER] 10:05:48.804 [logback-1] WARN  TimeController - Phase INITIALIZATION lasted too long, 883 seconds more than allowed.
* Target exception was set to: Exception in thread "main" java.lang.ClassCastException
* EvoCrash: The target call is either public or protected!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The retrived call(s) to inject in the tests are:
>>>>>> callBadIdea
* Minimizing test suite
* Going to analyze the coverage criteria
* Coverage analysis for criterion CRASH
* Target exception was set to: Exception in thread "main" java.lang.ClassCastException
* EvoCrash: The target call is either public or protected!
>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> The retrived call(s) to inject in the tests are:
>>>>>> callBadIdea
* Coverage of criterion CRASH: 0%
* Total number of goals: 1
* Number of covered goals: 0
* Generated 0 tests with total length 0
* Resulting test suite's coverage: 0%
* Generating assertions
* Resulting test suite's mutation score: 0%
* Compiling and checking tests
* Permissions denied during test execution: 
  - java.lang.RuntimePermission: 
         writeFileDescriptor: 1
* Writing JUnit test case 'MyObject_ESTest' to src/GGA-tests/java
* Done!

* Computation finished
Exception in thread "main" java.lang.AssertionError: expected:<0.0> but was:<3.0>
        at org.junit.Assert.fail(Assert.java:88)
        at org.junit.Assert.failNotEquals(Assert.java:834)
        at org.junit.Assert.assertEquals(Assert.java:553)
        at org.junit.Assert.assertEquals(Assert.java:683)
        at eu.stamp_project.evocrash.demo.TestCreation.create(TestCreation.java:97)
        at eu.stamp_project.evocrash.demo.Application.main(Application.java:6)
> Building 75% > :run

As you can see, Evocrash execution is blocked on Gradle (75% execution) and it does not finish.

Other files and URLs

Relationships

#13

Help on issue template

Preview to follow the link or open file .github/ISSUE_DOC.md

[Model seeding] Include VIBeS in EvoCrash to read model and select initial population

Characteristics

  • Issue Type: feature
  • Severity: major

Description

  • Include VIBeS in EvoCrash and check for compatibility issues
  • Read the model
  • Select abstract test cases (i.e., sequences of method calls)
  • Transform abstract test cases to EvoCrash internal representation of JUnit test cases for the initial population.
  • Use pure structural random abstract test case selection
  • Use usage driven abstract test case selection
  • Use dissimilarity abstract test case selection (?)
  • Use structural coverage abstract test case selection (?)

Evocrash refactoring

Characteristics

  • Issue Type: feature
  • Severity: major
  • Tool/Service/Component: Evocrash 1.0.3

Description

In order to develop plugins and industrialize Evocrash, a refactoring is needed. Evocrash depends on several Evosuite components that actually are part of Evocrash code base itself. A first step towards Evocrash refactoring is to identify, within Evocrash code base, which Evosuite packages aren't (or won't be) affected by Evocrash changes, remove them, and add them as Maven dependencies within POM file. After that, Evocrash specific packages can be renamed from org.evosuite.* to org.evocrash.*.
In short:

  • identify Evosuite packages (i.e. Evocrash packages which are (and will remain) identical to corresponding Evosuite ones
  • replace these packages, one at a time, with the corresponding Evosuite Maven dependency
  • rename Evocrash specific packages as org.evocrash.*

ENG can help in this activity.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.