You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
a set of web/enterprise applications for scientific research in Software Engineering.
9
9
10
10
We collected several different systems running on the JVM, in different programming languages such as Java and Kotlin.
11
11
In this documentation, we will refer to these projects as System Under Test (SUT).
12
12
Currently, the SUTs are either _REST_, _GraphQL_ or _RPC_ APIs.
13
13
14
14
For each SUT, we implemented _driver_ classes, which can programmatically _start_, _stop_ and _reset_ the state of SUT (e.g., data in SQL databases).
15
-
As well as enable setting up different properties in a _uniform_ way, like choosing TCP port numbers for the HTTP servers.
16
-
If a SUT uses any external services (e.g., a SQL database), these will be automatically started via Docker in these driver classes.
15
+
As well as enable setting up different properties in a _uniform_ way, like choosing TCP port numbers for the HTTP servers.
16
+
If a SUT uses any external services (e.g., a SQL database), these will be automatically started via Docker in these driver classes.
17
17
18
18
19
19
This collection of SUTs was originally assembled for easing experimentation with the fuzzer called [EvoMaster](http://evomaster.org).
20
-
However, finding this type of application is not trivial among open-source projects.
21
-
Furthermore, it is not simple to sort out all the technical details on how to set these applications up and start them in a simple, uniform approach.
22
-
Therefore, this repository provides the important contribution of providing all these necessary scripts for researchers that need this kind of case study.
20
+
However, finding this type of application is not trivial among open-source projects.
21
+
Furthermore, it is not simple to sort out all the technical details on how to set these applications up and start them in a simple, uniform approach.
22
+
Therefore, this repository provides the important contribution of providing all these necessary scripts for researchers that need this kind of case study.
23
23
24
-
**NOTE**: version 1.6.1 was last one in which we still updated drivers for JavaScript and C\#. Those SUTs are not built anymore by default, and latest versions of *EvoMaster* might not work on those old drivers. Updating drivers for different programming languages (and re-implement white-box heuristics) is a massive amount of work, which unfortunately has little to no value for the scientific community (based on our experience). Those SUTs are still here in EMB to enable *black-box* experiments (and to be able to replicate old experiments), but unfortunately not for *white-box* testing with latest versions of *EvoMaster*.
24
+
**NOTE**: version 1.6.1 was last one in which we still updated drivers for JavaScript and C\#. Those SUTs are not built anymore by default, and latest versions of *EvoMaster* might not work on those old drivers. Updating drivers for different programming languages (and re-implement white-box heuristics) is a massive amount of work, which unfortunately has little to no value for the scientific community (based on our experience). Those SUTs are still here in EMB to enable *black-box* experiments (and to be able to replicate old experiments), but unfortunately not for *white-box* testing with latest versions of *EvoMaster*.
25
25
26
26
27
27
@@ -32,8 +32,8 @@ A video providing some high level overview of EMB can be found [here](https://yo
32
32
33
33
34
34
## License
35
-
All the code that is new for this repository (e.g., the driver classes) is released under Apache 2.0 license.
36
-
However, this repository contains as well sources from different open-source
35
+
All the code that is new for this repository (e.g., the driver classes) is released under Apache 2.0 license.
36
+
However, this repository contains as well sources from different open-source
37
37
projects, each one with its own license, as clarified in more details beneath.
38
38
39
39
## Example
@@ -44,11 +44,11 @@ To see an example of using these drivers with EvoMaster to generate test cases,
44
44
45
45
If you are using EMB in an academic work, you can cite the following:
46
46
47
-
> A. Arcuri, M. Zhang, A. Golmohammadi, A. Belhadi, J. P. Galeotti, B. Marculescu, S. Seran.
48
-
**EMB: A Curated Corpus of Web/Enterprise Applications And Library Support for Software Testing Research**.
47
+
> A. Arcuri, M. Zhang, A. Golmohammadi, A. Belhadi, J. P. Galeotti, B. Marculescu, S. Seran.
48
+
**EMB: A Curated Corpus of Web/Enterprise Applications And Library Support for Software Testing Research**.
49
49
In *IEEE International Conference on Software Testing, Validation and Verification (ICST)*, 2023.
50
50
51
-
51
+
52
52
## Current Case Studies
53
53
54
54
The projects were selected based on searches using keywords on GitHub APIs, using convenience sampling.
@@ -62,10 +62,10 @@ The reason is that we want to keep an easy to use, constant set of case studies
62
62
63
63
The SUTs called _NCS_ (Numerical Case Study) and _SCS_ (String Case study) are artificial, developed by us.
64
64
They are based on numerical and string-based functions previously used in the literature of unit test generation.
65
-
We just re-implemented in different languages, and put them behind a web service.
65
+
We just re-implemented in different languages, and put them behind a web service.
66
66
67
67
For the RESTful APIs, each API has an endpoint where the OpenAPI/Swagger schemas can be downloaded from.
68
-
For simplicity, all schemas are also available as JSON/YML files under the folder [openapi-swagger](./openapi-swagger).
68
+
For simplicity, all schemas are also available as JSON/YML files under the folder [openapi-swagger](./openapi-swagger).
69
69
70
70
More details (e.g., #LOCs and used databases) on these APIs can be found [in this table](statistics/table_emb.md).
71
71
@@ -85,7 +85,7 @@ More details (e.g., #LOCs and used databases) on these APIs can be found [in thi
85
85
86
86
* Market (MIT), [jdk_11_maven/cs/rest-gui/market](jdk_11_maven/cs/rest-gui/market), from [https://github.com/aleksey-lukyanets/market](https://github.com/aleksey-lukyanets/market)
87
87
88
-
* Features-Service (Apache), [jdk_8_maven/cs/rest/original/features-service](jdk_8_maven/cs/rest/original/features-service), from [https://github.com/JavierMF/features-service](https://github.com/JavierMF/features-service)
88
+
* Features-Service (Apache), [jdk_8_maven/cs/rest/original/features-service](jdk_8_maven/cs/rest/original/features-service), from [https://github.com/JavierMF/features-service](https://github.com/JavierMF/features-service)
89
89
90
90
* Scout-API (MIT), [jdk_8_maven/cs/rest/original/scout-api](jdk_8_maven/cs/rest/original/scout-api), from [https://github.com/mikaelsvensson/scout-api](https://github.com/mikaelsvensson/scout-api)
91
91
@@ -95,11 +95,11 @@ More details (e.g., #LOCs and used databases) on these APIs can be found [in thi
95
95
96
96
* OCVN (MIT), [jdk_8_maven/cs/rest-gui/ocvn](jdk_8_maven/cs/rest-gui/ocvn), from [https://github.com/devgateway/ocvn](https://github.com/devgateway/ocvn)
97
97
98
-
* News (LGPL), [jdk_8_maven/cs/rest/artificial/news](jdk_8_maven/cs/rest/artificial/news), from [https://github.com/arcuri82/testing_security_development_enterprise_systems](https://github.com/arcuri82/testing_security_development_enterprise_systems)
98
+
* News (LGPL), [jdk_8_maven/cs/rest/artificial/news](jdk_8_maven/cs/rest/artificial/news), from [https://github.com/arcuri82/testing_security_development_enterprise_systems](https://github.com/arcuri82/testing_security_development_enterprise_systems)
99
99
100
100
* Restcountries (MPL), [jdk_8_maven/cs/rest/original/restcountries](jdk_8_maven/cs/rest/original/restcountries), from [https://github.com/apilayer/restcountries](https://github.com/apilayer/restcountries)
101
101
102
-
* Languagetool (LGPL), [jdk_8_maven/cs/rest/original/languagetool](jdk_8_maven/cs/rest/original/languagetool), from [https://github.com/languagetool-org/languagetool](https://github.com/languagetool-org/languagetool)
102
+
* Languagetool (LGPL), [jdk_8_maven/cs/rest/original/languagetool](jdk_8_maven/cs/rest/original/languagetool), from [https://github.com/languagetool-org/languagetool](https://github.com/languagetool-org/languagetool)
103
103
104
104
* CWA-Verification-Server (Apache), [jdk_11_maven/cs/rest/cwa-verification-server](jdk_11_maven/cs/rest/cwa-verification-server), from [https://github.com/corona-warn-app/cwa-verification-server](https://github.com/corona-warn-app/cwa-verification-server)
105
105
@@ -197,15 +197,15 @@ Also, you will need to setup environment variables like `JAVA_HOME_8`, `JAVA_HOM
197
197
The script will issue error messages if any prerequisite is missing.
198
198
Once the script is completed, all the SUTs will be available under the `dist` folder, and a `dist.zip` will be created as well (if `scripts/dist.py` is run with `True` as input).
199
199
200
-
Regarding Maven, most-third party dependencies are automatically downloaded from Maven Central.
200
+
Regarding Maven, most-third party dependencies are automatically downloaded from Maven Central.
201
201
However, some dependencies are from GitHub, which unfortunately require authentication to be able to download such dependencies.
202
202
Unfortunately, they have [no intention](https://github.com/orgs/community/discussions/26634) to fix this huge usability issue :(
203
203
In your home folder, you need to create a configuration file for Maven, in particular `.m2/settings.xml`, with the following configurations:
0 commit comments