https://github.com/Drill4J/drill4j
Tool to identify testing gaps and reduce time spent on regression testing. Java/JVM, .NET, JavaScript in WEB
https://github.com/Drill4J/drill4j
drill drill4j jvmti kotlin kotlin-multiplatform profiler profiler-framework
Last synced: about 2 months ago
JSON representation
Tool to identify testing gaps and reduce time spent on regression testing. Java/JVM, .NET, JavaScript in WEB
- Host: GitHub
- URL: https://github.com/Drill4J/drill4j
- Owner: Drill4J
- License: apache-2.0
- Created: 2018-12-07T14:12:35.000Z (over 6 years ago)
- Default Branch: develop
- Last Pushed: 2023-09-14T11:42:25.000Z (over 1 year ago)
- Last Synced: 2024-04-04T11:34:55.514Z (about 1 year ago)
- Topics: drill, drill4j, jvmti, kotlin, kotlin-multiplatform, profiler, profiler-framework
- Homepage: https://drill4j.github.io
- Size: 11.8 MB
- Stars: 97
- Watchers: 11
- Forks: 7
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- Contributing: CONTRIBUTING.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
- awesome-java - Drill4J
README
# Drill4J
[](LICENSE)
[](https://drill4j.github.io/)
[](https://t.me/drill4j)


Drill4J is an open-source tool[\*](#license) to identify testing gaps and reduce time spent on regression testing.
Drill4J provides a straight path to incorporating **Test Gap Analysis** and **Test Impact Analysis** into SDLC.
- It integrates with all parts of system under test, including backend and frontend services;
- It tracks all types of tests, including automated and manual;
- It detects changes in application code;
- It tracks code execution.Based on that Drill4J:
- shows code not touched by any tests. Both in percentage and down to exact place in code.
- detects risks - modified or new code which needs to be tested;
- recommends minimal and sufficient set of tests;
- tracks if tests really covered aforementioned risks;
- provides comprehensive metrics which can be easily integrated to automated release pipeline with straightforward Quality Gate API.All the above allows to speed up testing and development cycle, eliminate guesswork and back tests results with hard data.
## Know more
1. Try Drill4J in action with our [demo project](https://github.com/Drill4J/realworld-java-and-js-coverage) - the examplary "RealWorld" application integration featuring:
- Coverage, Risks and Test Recommendations metrics for Java backend and web frontend (at the same time)
- E2E automated UI tests integration (Selenium)
- Manual tests integration (requires [Browser Extension](https://github.com/Drill4J/browser-extension/releases) installation)2. See our [conference talk](https://www.youtube.com/watch?v=U6vOJnzbReM)
3. Checkout our website [drill4j.github.io](drill4j.github.io)
## Main Components Overview
- Core
* [Admin Backend](https://github.com/Drill4J/admin) - central data aggregation point. Accepts data from _Agents_ to compute _Metrics_ (Coverage, Risks, Test Recommendations)
* Admin UI Panel - web UI to view and manage data provided by _Admin Backend_- Agents (for specific platforms)
* [Java Agent](https://github.com/Drill4J/java-agent) - collects data from _Application Under Test_. Supports Java and other JVM languages.
* [.NET agent](https://github.com/Drill4J/dotnet) - set of components to enable integration with .NET applications (see the [installation docs](https://drill4j.github.io/docs/drill4net/drill4net-apps))
* JavaScript Agent - set of components ([Agent](https://github.com/Drill4J/js-agent), [Parser](https://github.com/Drill4J/js-parser), [Chrome DevTools proxy](https://github.com/Drill4J/devtools-proxy)) to collect data from JavaScript executed in web browsers. Supports only Google Chrome and Chromium-based browsers at the moment. Works with Chrome launched locally, remotely and in containerized environments (i.e. via [Selenoid](https://aerokube.com/selenoid/latest/)).- Tests (for specific frameworks/tools)
* [Java Auto Test Agent](https://github.com/Drill4J/autotest-agent) - extracts metadata from Java/JVM-based tests. Supports plethora of popular test frameworks (JUnit, JMeter, TestNG) and tools (Selenium, [Selenoid](https://aerokube.com/selenoid/latest/))
* [Browser Extension](https://github.com/Drill4J/browser-extension) - allows to collect metrics for _Manual tests_
* Drill4J is somewhat test-platform-agnostic - while we have tools and example integrations for other platforms (e.g. [Postman](https://github.com/Drill4J/pwad), [Cypress](https://github.com/Drill4J/cypress-example-integration)), it can be integrated (with some efforts) in almost any testing solution/setup## How it works (briefly, very simplified version)
__! This explanation !__ employs Selenium-based tests and HTTP-transport for the example purpose only. Drill4J is not limited to just Java/ just automated tests / just HTTP. It supports metric collection for almost any type of testing setup.
Imagine a basic picture of your average Selenium tests (simplified for the explanation purposes)

And now, this is how it looks with Drill4J installed and configured.

You can see 3 key integration points:
1. The target application. The [__Drill4J Java Agent__](https://github.com/Drill4J/java-agent) is added to the target app to enable metrics collection.
2. The [__Drill4J Autotesting Agent__](https://github.com/Drill4J/js-auto-test-agent) - __it relays tests metadata__ to Drill4J Backend Service, __integrates__ with various testing frameworks and __configures__ Selenium to add headers to the HTTP requests
3. The [__Drill4J Backend__](https://github.com/Drill4J/admin) processes data and provides results via API.
The manual setup does not look much different: instead of Autotesting Agent, there is a [__Drill4J Browser Extension__](https://github.com/Drill4J/browser-extension/releases), that one have to use, to capture the testing metrics.

## Community / Support
[Telegram chat](https://t.me/drill4j)
[Youtube channel](https://www.youtube.com/watch?v=N_WJYrt5qNc&feature=emb_title)## License
*License: Drill4J is open-source and licensed under
Apache 2.0
.