Skip to content

Why we don't use one of existing plugins

Alexandra Osipova edited this page Nov 4, 2020 · 2 revisions

Test generation stages:

  1. Test scenario creation (calling methods and creating arguments for them)
  • Genetic algorithms, machine learning, …
  1. Selection of argument values (fuzzing)
  • Black box fuzzing - random
  • White box fuzzing - code based
  • Gray box fuzzing - feedback based

Goal: test and compare different combinations of tools/algorithms from the first and second stages

Task: find an Intellij plugin for convenient work with algorithms of fuzzing and test generation

Selection metrics:

Comparison metrics:

  • Free
  • Open-source (ability to modify source code)
  • Active support (ability to modify source code without long refactoring or bug-fixing)
  • Generation options (ability to choose different fuzzers and scenario generation tools)

Сomparison table:

Comparison

Conclusion:

It turns out that none of the observed plugins fits our goal (they work with concrete tools). Also, it seems more reasonable to implement a plugin from scratch because all we can reuse is running action, the rest of the functionality is different.

Some additional information:

  • access to a large amount of metadata making the generated tests very dynamic
  • ability to decide whether or not to generate tests for all overloads of a method and how to name them
  • no active support
  • no documentation
  • light
  • no active support
  • no documentation
  • needs Maven?
  • Java, Scala or Groovy test code with JUnit 4/5, TestNG, Spock or Specs2 frameworks
  • auto-generate Mockito mocks
  • generate test params and assertion statements
  • generate relevant mocked return statements
  • hard to work with only java part
  • doesn’t merge generated test files if tests already exist
  • not being maintained anymore
  • needs annotations
  • not free
  • not an open-source
  • just used to call EvoSuite from inside IntelliJ IDEA
  • hard to build only plugin sources
  • configurable test naming convention
  • not an open-source