• Stars
    star
    4,906
  • Rank 8,554 (Top 0.2 %)
  • Language
    Go
  • License
    Apache License 2.0
  • Created almost 3 years ago
  • Updated 24 days ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

Unit and Integration Test generation for Developers. Generate tests and stubs for your application that actually work!

keploy logo

⚑️ Backend tests faster than unit-tests, from user traffic ⚑️

🌟 The must-have tool for developers in the AI-Gen era 🌟

🎀 Introducing Keploy 🐰

Keploy is a developer-centric backend testing tool. It makes backend tests with built-in-mocks, faster than unit tests, from user traffic, making it easy-to-use, powerful and extensible. πŸ› 

Ready for the magic? Here are Keploy's core features:

  • ♻️ Combined Test Coverage: Merge your Keploy Tests with your fave testing libraries(junit, go-test, py-test, jest) to see a combined test-coverage.

  • πŸ€– EBPF Instrumentation: Keploy uses EBPF like a secret sauce to make integration code-less, language agnostic, and oh-so-lightweight.

  • 🌐 CI/CD Integration: Run tests with mocks anywhere you likeβ€”locally on the CLI, in your CI pipeline, or even across a Kubernetes cluster. It's testing wherever you want it!

  • 🎭 Multi-Purpose Mocks: Use 'em in existing tests, as server tests, or just to impress your friends!

  • πŸ“½οΈ Record-Replay Complex Flows: Keploy can record and replay complex, distributed API flows as mocks and stubs. It's like having a time machine for your testsβ€”saving you tons of time!

Generate Test Case from API call

🐰 Fun fact: Keploy uses itself for testing! Check out our swanky coverage badge: Coverage Status  

🌐 Language Support

From Go's gopher 🐹 to Python's snake 🐍, we support:

Go Java NodeJS Python

🎩 How's the Magic Happen?

Our magical πŸ§™β€β™‚οΈ Keploy proxy captures and replays ALL(CRUD operations, including non-idempotent APIs) your app's network interactions.

Take a journey to How Keploy Works? to discover the tricks behind the curtain!

Generate Test Case from API call

πŸ“˜ Get Schooled!

Become a Keploy pro with our Documentation.

πŸ’– Let's Build Together!

Whether you're a newbie coder or a wizard πŸ§™β€β™€οΈ, your perspective is golden. Take a peek at our:

πŸ“œ Contribution Guidelines

❀️ Code of Conduct

Quick Installation

Using Binary ( Linux / WSL)

Keploy can be utilized on Linux natively and through WSL on Windows.

Download the Keploy Binary.

AMD Architecture

curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_amd64.tar.gz" | tar xz -C /tmp

sudo mkdir -p /usr/local/bin && sudo mv /tmp/keploy /usr/local/bin && keploy

ARM Architecture

curl --silent --location "https://github.com/keploy/keploy/releases/latest/download/keploy_linux_arm64.tar.gz" | tar xz -C /tmp

sudo mkdir -p /usr/local/bin && sudo mv /tmp/keploy /usr/local/bin && keploy

Capturing Testcases

To initiate the recording of API calls, execute this command in your terminal:

sudo -E keploy record -c "CMD_TO_RUN_APP"

For instance, if you're using a simple Golang program, the command would resemble:

sudo -E keploy record -c "go run main.go"

Running Testcases

To run the testcases and generate a test coverage report, use this terminal command:

sudo -E keploy test -c "CMD_TO_RUN_APP" --delay 10

For example, if you're using a Golang framework, the command would be:

sudo -E keploy test -c "go run main.go" --delay 10

Docker Installation

Keploy can be used on Linux & Windows through Docker.

⚠️Note: MacOS users need to install Colima. Windows users need to install WSL.

Creating Alias

To establish a network for your application using Keploy on Docker, follow these steps.

If you're using a docker-compose network, replace keploy-network with your app's docker_compose_network_name below.

docker network create keploy-network

Then, create an alias for Keploy:

alias keploy='sudo docker run --pull always --name keploy-v2 -p 16789:16789 --network keploy-network --privileged --pid=host -it -v "$(pwd)":/files -v /sys/fs/cgroup:/sys/fs/cgroup -v /sys/kernel/debug:/sys/kernel/debug -v /sys/fs/bpf:/sys/fs/bpf -v /var/run/docker.sock:/var/run/docker.sock --rm ghcr.io/keploy/keploy'

Recording Testcases and Data Mocks

Here are few points to consider before recording!

  • If you're running via docker compose, ensure to include the <CONTAINER_NAME> under your application service in the docker-compose.yaml file like this.
  • Change the network name (--network flag) from keploy-network to your custom network if you changed it above.
  • Docker_CMD_to_run_user_container refers to the Docker command for launching the application.

Utilize the keploy alias we created to capture testcases. Execute the following command within your application's root directory.

keploy record -c "Docker_CMD_to_run_user_container --network keploy-network" --containerName "<containerName>"

Perform API calls using tools like Hoppscotch, Postman, or cURL commands.

Keploy will capture the API calls you've conducted, generating test suites comprising testcases (KTests) and data mocks (KMocks) in YAML format.

Running Testcases

Now, use the keployV2 Alias we created to execute the testcases. Follow these steps in the root directory of your application.

When using docker-compose to start the application, it's important to ensure that the --containerName parameter matches the container name in your docker-compose.yaml file.

keploy test -c "Docker_CMD_to_run_user_container --network keploy-network" --containerName "<containerName>" --delay 20

VoilΓ ! πŸ§‘πŸ»β€πŸ’» We have the tests with data mocks running! πŸ°πŸŽ‰

You'll be able to see the test-cases that ran with the results report on the console as well locally in the testReport directory.

πŸ€” Questions?

Reach out to us. We're here to help!

Slack LinkedIn YouTube Twitter

🌟 Features

πŸš€ Export, maintain, and show off tests and mocks!

Generate Test Case from API call

Generate Test Case from API call

πŸ•΅οΈ Detect noise with surgeon-like precision!

Filters noisy fields in API responses like (timestamps, random values) to ensure high quality tests.

πŸ“Š Say 'Hello' to higher coverage!

Keploy ensures that redundant testcases are not generated.

🐲 The Challenges We Face!

  • Unit Testing: While Keploy is designed to run alongside unit testing frameworks (Go test, JUnit..) and can add to the overall code coverage, it still generates E2E tests.
  • Production Lands: Keploy is currently focused on generating tests for developers. These tests can be captured from any environment, but we have not tested it on high volume production environments. This would need robust deduplication to avoid too many redundant tests being captured. We do have ideas on building a robust deduplication system #27

✨ Resources!

πŸ€” FAQs

πŸ•΅οΈβ€οΈ Why Keploy

βš™οΈ Installation Guide

πŸ“– Contribution Guide

🌟 Hall of Contributors

More Repositories

1

go-sdk

Official Keploy Go SDK πŸ”΅
Go
45
star
2

docs

Documentation website for Keploy
JavaScript
41
star
3

ui

UI for Keploy platform that does API testing by dependency mocking without writing any test cases.
TypeScript
33
star
4

java-sdk

Official Keploy Java SDK πŸ”΄
Java
27
star
5

samples-go

Keploy Go SDK samples
Go
25
star
6

gsoc

GSoC Projects List
25
star
7

typescript-sdk

Official Keploy Node SDK 🟑
TypeScript
19
star
8

samples-java

Keploy Java samples
HTML
14
star
9

browser-extension

Browser extension to record and replay API calls made from web apps
JavaScript
12
star
10

student-program

CSS
11
star
11

python-sdk

Python
10
star
12

website-archive

Landing page
JavaScript
8
star
13

vscode-extension

Streamline testing with the power of Keploy, directly in your favorite IDE.
TypeScript
8
star
14

.github

Config files for Keploy org page
7
star
15

devrel-program

CSS
7
star
16

react-diff-viewer

HTML
6
star
17

example-url-shortener

Sample application to understand keploy integration
Go
6
star
18

samples-typescript

Keploy Typescript/Javascript SDK samples
JavaScript
5
star
19

pilot

Test Assert pilot for keploy testing framework
Go
5
star
20

testGPT

A GitHub Action to run keploy testcases and generate test-report.
Shell
5
star
21

writers-program

CSS
3
star
22

template

3
star
23

pgproto3

Go
3
star
24

jsondiff

Go
3
star
25

samples-rust

Rust
2
star
26

samples-csharp

Sample application made using C# and integrated with keploy
C#
2
star
27

JetBrains-extension

Keploy JetBrain Plugin
Scala
2
star
28

test-app-url-shortner

A sample url shortener app to test Keploy integration capabilities
Go
1
star
29

test-data

1
star