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

Сonstraint model synthesis #966

Conversation

AbdullinAM
Copy link

Description

Constrained model synthesis prototype. It tries to generate UtAssembleModel that creates an object using it's public API for each argument of the method under test.

Type of Change

New feature (non-breaking change which adds functionality)

How Has This Been Tested?

Automated Testing

Feature was tested on open-source projects: exp4j, guava, fastjson, etc.

Also SynthesisExamplesTest was added.

Manual Scenario

Example class org.utbot.examples.synthesis.SynthesisExamples was added to the utbot-sample module. Running UtBot on the methods from that class with UtSettings.enableSynthesis set to true should show several scenarios of how constrained model synthesis allows to generate test cases that use public API of the objects

Checklist (remove irrelevant options):

This is the author self-check list

  • The change followed the style guidelines of the UTBot project
  • Self-review of the code is passed
  • The change contains enough commentaries, particularly in hard-to-understand areas
  • New documentation is provided or existed one is altered
  • No new warnings
  • New tests have been added
  • All tests pass locally with my changes

Sergey Pospelov and others added 30 commits June 20, 2022 11:56
# Conflicts:
#	utbot-cli/src/main/kotlin/org/utbot/cli/GenerateTestsAbstractCommand.kt
#	utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt
#	utbot-framework-api/src/main/kotlin/org/utbot/framework/plugin/api/Api.kt
#	utbot-framework/src/main/kotlin/org/utbot/engine/Resolver.kt
#	utbot-framework/src/main/kotlin/org/utbot/engine/UtBotSymbolicEngine.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/TestCaseGenerator.kt
#	utbot-junit-contest/src/main/kotlin/org/utbot/contest/Contest.kt
#	utbot-summary/src/main/kotlin/org/utbot/summary/ast/JimpleToASTMap.kt
# Conflicts:
#	utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt
#	utbot-framework-test/src/test/kotlin/org/utbot/framework/assemble/AssembleModelGeneratorTests.kt
#	utbot-framework/src/main/kotlin/org/utbot/engine/UtBotSymbolicEngine.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/TestCaseGenerator.kt
# Conflicts:
#	utbot-framework-api/src/main/kotlin/org/utbot/framework/UtSettings.kt
#	utbot-framework-test/src/test/kotlin/org/utbot/framework/assemble/AssembleModelGeneratorTests.kt
#	utbot-framework/src/main/kotlin/org/utbot/engine/UtBotSymbolicEngine.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/TestCaseGenerator.kt
@AbdullinAM
Copy link
Author

Currently only stateBefore is generated using constrained model synthesis. StateAfter is generated from concrete execution. In the future it is possible to add constrained model synthesis for stateAfter also, but it will at least double UtBot working time.

@sergeypospelov
Copy link
Member

I will take a superficial review this week. You also ought to rebase on master.

# Conflicts:
#	utbot-framework-test/src/test/kotlin/org/utbot/framework/assemble/AssembleModelGeneratorTests.kt
#	utbot-framework/src/main/kotlin/org/utbot/engine/Resolver.kt
#	utbot-framework/src/main/kotlin/org/utbot/engine/Traverser.kt
#	utbot-framework/src/main/kotlin/org/utbot/engine/UtBotSymbolicEngine.kt
#	utbot-framework/src/main/kotlin/org/utbot/external/api/UtModelFactory.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/assemble/AssembleModelGenerator.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/constructor/tree/CgMethodConstructor.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/codegen/model/constructor/tree/CgVariableConstructor.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/concrete/UtExecutionInstrumentation.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/minimization/Minimization.kt
#	utbot-framework/src/main/kotlin/org/utbot/framework/plugin/api/TestCaseGenerator.kt
#	utbot-framework/src/main/kotlin/org/utbot/tests/infrastructure/TestSpecificTestCaseGenerator.kt
@AbdullinAM AbdullinAM closed this Sep 29, 2022
@AbdullinAM AbdullinAM mentioned this pull request Sep 29, 2022
7 tasks
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

Successfully merging this pull request may close these issues.

2 participants