-
Notifications
You must be signed in to change notification settings - Fork 17
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
Initial Botsing experiments with Atos Supersede IF component. No crash replicating tests are generated. #23
Comments
Dear @jesus-gorronogoitia , According to the exception that you got from the botsing, I can see that the problem is in the security manager. What is Java Security Manager? If the generated tests interact with their environment, the execution of them the during the search may lead to unexpected or undesirable side-effects. For instance, they may unexpectedly remove some files from the system. Botsing uses this security manager to avoid these unexpected side effects. However, this limits some interactions for the generated test cases. You can see these limitations in this paper from Evosuite. In this paper, we can see that All |
Hi @pderakhshanfar , |
@jesus-gorronogoitia No, I just wanted to attach the paper too. However, the answer was already mentioned in my previous message. To avoid unexpected events during the execution of the generated tests, we have a security manager which put some limitations on the classes that we can test (here, the class which is pointed from target frame 3). So, these kinds of classes cannot be tested bye Botsing or EvoSuite. For the other target frames, I can see that for some reason Botsing cannot generate the test for replicating the given crash. According to our large-scale evaluation, there are still lots of challenges remains. So, there are still some cases that we can not reproduce. In your case, I cannot say which challenges happened here, because I should do a manual analysis of the source code of the software under the test. |
Hi @pderakhshanfar Thanks for clarifications. |
For this moment, no. However, we are adding new features that will be available soon. With these new features, Botsing will have more rate of crash reproduction. We are working on them to release them as soon as possible. |
Thanks @pderakhshanfar keep me informed of incoming Botsing releases |
Hi @pderakhshanfar Thinking on the Botsing (Evocrash) security manager restrictions, and after browsing the paper you referred to, I wonder if some of these restrictions could not be disable by the user configuration. Otherwise, I am afraid Botsing wouldn't be able to reproduce any of your crash exceptions, since they all involved network proxies that mediates between services in a microservice architecture. With this security restrictions, it seems Botsing cannot work with network communications, and therefore, it won't work with our use case. Is there any way to relax these restrictions? |
Hi @jesus-gorronogoitia Yes you can disable the security manager by passing this command while you are calling the botsing: |
Hi @pderakhshanfar I do not refer to remove all the security manager restrictions but only those that refer to java.net.SocketPermissions. In other words, could be possible to configure the restrictions on the security manager? |
Dear @jesus-gorronogoitia I am afraid there is no easy way to disable only some of the restrictions of |
Hi @pderakhshanfar with security manager disabled by and
Botsing execution ends after budget with no one single test generated:
A possible hand-crafted test case for this exception 14 is shown above. So, I can't make Botsing to generate any crash replicating test despite I disabled the security manager. Please, let me know any means to analyze Botsing execution, so we can understand the reasons of Botsing not generating test-replicating test |
Hi @pderakhshanfar |
Hi @pderakhshanfar , |
@jesus-gorronogoitia Botsing cannot reproduce all of the crashes. It reproduces a crash if it reaches to fitness function For instance, in order to reproduce crashes for XWiki, we collected more than 70 crashes from their JIRA and ran Botsing on their frames for multiple times. Next, we collected the crashes that botsing could reproduce them. We automated this process by ExRunner. |
Hi @gibello, Botsing generates and executes lots of random tests during the search. These generated tests may remove or change some critical files. However, I think, if we run Botsing on a docker container, the generated tests should not have access to the host files. However, I have always run Botsing and EvoSuite with enabled sandbox, and I do not have experience in running these tools on docker with disabled sandbox. |
Hi @pderakhshanfar , @xdevroey |
Hi @jesus-gorronogoitia , Model seeding only drives the search process to use the behavior of classes which are observed in the source code and/or manually written test cases. If the observed behavior does not contain any helpful content (e.g., call sequences close to the behavior, which leads to crash reproduction), it cannot improve crash reproduction. According to our experiment on botsing model seeding, we witnessed that model seeding can be helpful for only some specific crashes. So, I recommend you to try botsing model seeding on multiple reported crashes. Changing the parameters does not help usually. |
Hi @pderakhshanfar |
BTW, Is there any way to check in logs that Botsing has disabled the SecurityManager when the flag -Dsandbox=False is passed? I am asking because it seems EvoSuite is not disabling it. See #92 |
The best probability of seeding is varied according to the case. If the model is small, having high probability may misguide the search process and vice versa. |
Characteristics
Description
We have initially try to run Botsing to analyse and generate crash replicating tests for Atos Supersede IF component.
Initially we use the stack traces we found in our production server. As initial examples we selected the stack traces: exception14.log and exceptiong16.log located here.
We run Botsing using the scripts run_botsing_exception14.sh and run_botsing_exception16.sh located here. We run dspot with the target frame set to 2. Botsing, after 30 min, did not find any test.
So, We decided to create manually a crash replicating tests for both cases.
For exception14 the crash replicating test is:
For exception16 the test is:
When running these tests we realized that the thrown exceptions were not exactly the ones reported in production server. The latter was included within the stack trace of the former within the section "Caused by: ...", So we created new exception14b.log and exception16b.log in the same folder (see above) that contained the header frames in the stack traces triggered when running the tests. And we try Botsing again with similar negative results.
Indeed, in these cases "b", if we run Botsing with target frame = 3, we get the following exception:
Steps to reproduce
See description section
Other files and URLs
See all required artifacts to run the experiment in this folder
Are we using Botsing correctly? Are these examples good candidates for Botsing? What else can we do to get better results.
Please, provide us feedback as soon as you can. Thank you.
Relationships
Help on issue template
Preview to follow the link or open file .github/ISSUE_DOC.md
The text was updated successfully, but these errors were encountered: