binary-rts
BinaryRTS is a research tool for regression test selection of C++ binaries based on dynamic binary instrumentation
Science Score: 52.0%
This score indicates how likely this project is to be science-related based on various indicators:
-
✓CITATION.cff file
Found CITATION.cff file -
✓codemeta.json file
Found codemeta.json file -
✓.zenodo.json file
Found .zenodo.json file -
○DOI references
-
○Academic publication links
-
○Academic email domains
-
✓Institutional organization owner
Organization tum-i4 has institutional domain (www.cs.cit.tum.de) -
○JOSS paper metadata
-
○Scientific vocabulary similarity
Low similarity (12.9%) to scientific vocabulary
Keywords
Repository
BinaryRTS is a research tool for regression test selection of C++ binaries based on dynamic binary instrumentation
Basic Info
Statistics
- Stars: 7
- Watchers: 4
- Forks: 0
- Open Issues: 1
- Releases: 1
Topics
Metadata Files
README.md
BinaryRTS
BinaryRTS is a research tool for regression test selection (RTS) based on dynamic binary instrumentation. A sample project and instructions on how to use BinaryRTS can be found here.
Structure
The project has the following structure:
├── binaryrts <- BinaryRTS sources.
│ ├── client <- Dynamic binary instrumentation client for DynamoRIO.
│ ├── cli <- BinaryRTS CLI for test trace conversion and running the test selection.
│ ├── extractor <- C/C++ function extractor from binaries for Frida agent (Windows-only, experimental).
│ ├── frida <- Dynamic binary instrumentation agent using Frida (experimental).
│ ├── junit <- JUnit test listener that can be used to attach BinaryRTS to Java tests.
│ ├── listener <- C++ test event listener to regularly dump coverage during test execution (e.g., with GoogleTest).
│ └── resolver <- C/C++ symbol resolver based on DynamoRIO's symbol access library.
├── cmake <- Internal cmake configuration files.
├── sample <- Sample GoogleTest project to experiment with BinaryRTS.
└── scripts <- Scripts and utilities to set up BinaryRTS (e.g., patch GoogleTest main routines).
Build
CMake
Except for the BinaryRTS CLI project, all parts of BinaryRTS can be built using cmake.
Run the following commands in the root of the BinaryRTS repository, to build all subprojects:
```shell mkdir build cd build
(1) Generate build system using cmake
Linux/Windows
cmake -DCMAKEBUILDTYPE=Debug ..
[optional] Change generator and target arch on Windows (currently requires MSVC toolchain v142)
cmake -DCMAKEBUILDTYPE=Debug -G "Visual Studio 16 2019" -A x64 .. cmake -DCMAKEBUILDTYPE=Debug -G "Visual Studio 17 2022" -A x64 ..
(2) Build BinaryRTS using generated build system (Win32: MSBuild, Linux: Unix Makefiles)
cmake --build . --config Debug ```
Docker
There is a Dockerfile for dockerized builds, e.g., on platforms other than Linux/Windows such
as macOS.
For building the Docker image and creating a container with a new bash session, run:
```shell
Build BinaryRTS docker image
$ docker build -t binaryrts:1.0 -f Dockerfile.dev .
Create and run container with new bash session and current working directory mounted into container
$ docker run -v $(pwd):/binary-rts -it binaryrts:1.0 bash ```
Then, you can run the cmake commands from above inside the bash session to build BinaryRTS.
Disclaimer
BinaryRTS is still under active development (mainly by Daniel Elsner) and we expect changes and improvements while collecting experience during the operation of BinaryRTS. Since this repository is the public version of an internal repository, updates will be pushed regularly, but not continuously.
Owner
- Name: Chair Software and Systems Engineering
- Login: tum-i4
- Kind: organization
- Email: github.i04.in@tum.de
- Location: Munich, Germany
- Website: https://www.cs.cit.tum.de/en/sse/homepage/
- Twitter: tum_i4
- Repositories: 27
- Profile: https://github.com/tum-i4
Citation (CITATION.cff)
cff-version: 1.2.0
title: >-
BinaryRTS
message: >-
Please cite this software using these metadata.
type: dataset
authors:
- given-names: Daniel
family-names: Elsner
email: daniel.elsner@tum.de
affiliation: Technical University of Munich (TUM)
city: Munich
country: DE
website: https://www.cs.cit.tum.de/sse/elsner/
- given-names: Severin
family-names: Kacianka
email: severin.kacianka@tum.de
affiliation: Technical University of Munich (TUM)
orcid: https://orcid.org/0000-0002-2546-3031
city: Munich
country: DE
website: https://www.cs.cit.tum.de/sse/kacianka/
- given-names: Stephan
family-names: Lipp
email: stephan.lipp@tum.de
affiliation: Technical University of Munich (TUM)
orcid: https://orcid.org/0000-0002-2546-3031
city: Munich
country: DE
website: https://www.cs.cit.tum.de/sse/lipp/
- given-names: Alexander
family-names: Pretschner
email: alexander.pretschner@tum.de
affiliation: Technical University of Munich
orcid: "https://orcid.org/0000-0002-5573-1201"
city: Munich
country: DE
website: https://www.cs.cit.tum.de/en/sse/people/alexander-pretschner/
- given-names: Axel
family-names: Habermann
- given-names: Maria
family-names: Graber
- given-names: Silke
family-names: Reimer
repository-code: "https://github.com/tum-i4/binary-rts"
keywords:
- regression tests
preferred-citation:
keywords:
- regression tests
status: advance-online
title: "BinaryRTS: Cross-language Regression Test Selection for C++ Binaries in CI"
year: 2023
publisher:
name: IEEE
conference:
name: "ICST '23"
city: Dublin
country: IE
date-start: 2023-04-16
date-end: 2023-04-20
website: https://conf.researchr.org/home/icst-2023
collection-type: proceedings
collection-title: "Proceedings of the 16th IEEE International Conference on Software Testing, Verification and Validation (ICST)"
authors:
- given-names: Daniel
family-names: Elsner
email: daniel.elsner@tum.de
affiliation: Technical University of Munich (TUM)
city: Munich
country: DE
website: https://www.cs.cit.tum.de/sse/elsner/
- given-names: Severin
family-names: Kacianka
email: severin.kacianka@tum.de
affiliation: Technical University of Munich (TUM)
orcid: https://orcid.org/0000-0002-2546-3031
city: Munich
country: DE
website: https://www.cs.cit.tum.de/sse/kacianka/
- given-names: Stephan
family-names: Lipp
email: stephan.lipp@tum.de
affiliation: Technical University of Munich (TUM)
orcid: https://orcid.org/0000-0002-2546-3031
city: Munich
country: DE
website: https://www.cs.cit.tum.de/sse/lipp/
- given-names: Alexander
family-names: Pretschner
email: alexander.pretschner@tum.de
affiliation: Technical University of Munich
orcid: "https://orcid.org/0000-0002-5573-1201"
city: Munich
country: DE
website: https://www.cs.cit.tum.de/en/sse/people/alexander-pretschner/
- given-names: Axel
family-names: Habermann
- given-names: Maria
family-names: Graber
- given-names: Silke
family-names: Reimer
type: conference-paper
GitHub Events
Total
Last Year
Dependencies
- abatilo/actions-poetry v2 composite
- actions/checkout v3 composite
- actions/setup-python v4 composite
- actions/checkout v3 composite
- github/codeql-action/analyze v2 composite
- github/codeql-action/autobuild v2 composite
- github/codeql-action/init v2 composite
- junit:junit 4.13 compile
- org.junit.platform:junit-platform-commons 1.7.0 compile
- org.junit.platform:junit-platform-launcher 1.7.0 compile
- org.junit.jupiter:junit-jupiter-engine 5.7.0
- org.junit.vintage:junit-vintage-engine 5.7.0
- 248 dependencies
- @types/frida-gum ^18.1.0 development
- @types/node ^17.0.45 development
- frida-compile ^10.2.5 development
- atomicwrites 1.4.1 develop
- attrs 22.1.0 develop
- iniconfig 1.1.1 develop
- packaging 21.3 develop
- pluggy 1.0.0 develop
- py 1.11.0 develop
- pyparsing 3.0.9 develop
- pytest 7.1.2 develop
- tomli 2.0.1 develop
- click 8.1.2
- colorama 0.4.4
- gitdb 4.0.9
- gitpython 3.1.30
- numpy 1.22.4
- shellingham 1.4.0
- smmap 5.0.0
- typer 0.4.2
- pytest ^7.1.2 develop
- GitPython ^3.1.30
- numpy ^1.22.4
- python ^3.8
- typer ^0.4.1
- colorama 0.4.5
- frida 15.1.28
- frida-tools 10.8.0
- prompt-toolkit 3.0.30
- pygments 2.12.0
- wcwidth 0.2.5
- frida ^15.1.28
- frida-tools ^10.8.0
- python ^3.8