Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Better mutation logic #10

Open
Zac-HD opened this issue Oct 26, 2022 · 0 comments
Open

Better mutation logic #10

Zac-HD opened this issue Oct 26, 2022 · 0 comments

Comments

@Zac-HD
Copy link
Owner

Zac-HD commented Oct 26, 2022

Better mutation operators

  • structure-aware operators for crossover / replacement / splicing etc
  • track provenance information for MOpt-style adjustment of frequencies
  • validity-aware mutations (Zest/RLCheck), based on structure
  • Nezha-like differential coverage via dynamic contexts?

Improved prioritization

Typically, fuzzers haven't really been guided towards inputs which improve branch coverage, as they have been good at exploiting them once found at random. We can do that, but we can probably also do better.

  • use CFG from coverage to tell if new branches are actually available from a given path. If not, we can hit it less often.
    Note that branch coverage != available bugs; the control flow graph is not identical to the behaviour partition of the program.
  • try using a custom trace function, investigate performance and use of alternative coverage metrics (e.g. length-n path segments, callstack-aware coverage, etc.)
  • fuzz arbitrary scores with hypothesis.target() (see FuzzFactory)
  • exploit VCS metadata, i.e. target recently-changed parts of the SUT and new / recently changed tests (c.f. pypi-testmon)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant