All Projects → CARV-ICS-FORTH → frisbee

CARV-ICS-FORTH / frisbee

Licence: Apache-2.0 license
A Kubernetes Framework for Cloud-Native Application Testing

Programming Languages

go
31211 projects - #10 most used programming language
javascript
184084 projects - #8 most used programming language
python
139335 projects - #7 most used programming language
Makefile
30231 projects
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to frisbee

XLT
XLT is an comprehensive load and performance test tool developed and maintained by Xceptance.
Stars: ✭ 39 (+0%)
Mutual labels:  test-automation, performance-testing
AutoMeter-API
AutoMeter-API是一款针对分布式服务,微服务API功能和性能一体的自动化测试平台,一站式解决应用,服务,API,环境管理,用例,条件,测试场景,计划,测试报告,功能/性能测试兼容支持的一体化工作平台
Stars: ✭ 105 (+169.23%)
Mutual labels:  test-automation, performance-testing
rfswarm
Robot Framework Swarm
Stars: ✭ 68 (+74.36%)
Mutual labels:  test-automation, performance-testing
Openrunner
Computest Openrunner: Benchmark and functional testing for frontend-heavy web applications
Stars: ✭ 16 (-58.97%)
Mutual labels:  test-automation, performance-testing
Metersphere
MeterSphere 是一站式开源持续测试平台,覆盖测试管理、接口测试、性能测试等。搞测试,就选 MeterSphere!
Stars: ✭ 6,331 (+16133.33%)
Mutual labels:  test-automation, performance-testing
Awesome K6
A curated list of resources on automated load- and performance testing using k6 🗻
Stars: ✭ 78 (+100%)
Mutual labels:  test-automation, performance-testing
Awesome Test Automation
A curated list of awesome test automation frameworks, tools, libraries, and software for different programming languages. Sponsored by http://sdclabs.com
Stars: ✭ 4,712 (+11982.05%)
Mutual labels:  test-automation, performance-testing
Element
💦Load test your app using real web browsers
Stars: ✭ 204 (+423.08%)
Mutual labels:  test-automation, performance-testing
r2dbc-proxy
R2DBC Proxying Framework
Stars: ✭ 108 (+176.92%)
Mutual labels:  observability
laravel-test-watcher
Laravel Test Watcher
Stars: ✭ 20 (-48.72%)
Mutual labels:  test-automation
jest-retry
Jest retry pattern for flaky E2E tests
Stars: ✭ 36 (-7.69%)
Mutual labels:  test-automation
ilogtail
Fast and Lightweight Observability Data Collector
Stars: ✭ 1,035 (+2553.85%)
Mutual labels:  observability
stanza
Fast and lightweight log transport and processing.
Stars: ✭ 142 (+264.1%)
Mutual labels:  observability
picire
Parallel Delta Debugging Framework
Stars: ✭ 41 (+5.13%)
Mutual labels:  test-automation
victoriametrics-ru-links
Список постов и видеозаписей об VictoriaMetrics на русском языке
Stars: ✭ 1 (-97.44%)
Mutual labels:  observability
flybirds
基于自然语言的,跨端跨框架 BDD UI 自动化测试方案,BDD testing, Python style, Present by Trip Flight
Stars: ✭ 701 (+1697.44%)
Mutual labels:  test-automation
bokor
Bokor is a simple, Record and Playback Mock Server written in Node.js, utilized for Service Virtualization.
Stars: ✭ 24 (-38.46%)
Mutual labels:  test-automation
jmeter-to-k6
Converts JMeter .jmx files to k6 JS code
Stars: ✭ 57 (+46.15%)
Mutual labels:  performance-testing
Transfer-Learning-for-Fault-Diagnosis
This repository is for the transfer learning or domain adaptive with fault diagnosis.
Stars: ✭ 123 (+215.38%)
Mutual labels:  fault-diagnosis
ltc
Online web application-dashboard for report analyzing,running and online monitoring of load tests started with JMeter
Stars: ✭ 185 (+374.36%)
Mutual labels:  performance-testing

Frisbee - A Test Automation Framework For Kubernetes

Website | Blog | Docs | Contact

What is Frisbee ?

Frisbee is the first Kubernetes framework designed to support declarative end-to-end testing of containerized applications.

✔️ Setup application and dependency stack – easily!

✔️ Test against actual, close to production software - no mocks!

✔️ Replay complex workloads written in an intuitive language!

✔️ Combine Chaos Engineering with large-scale performance testing!

✔️ Assert actual program behavior and side effects.

To learn more about Frisbee, check the QuickStart tutorial or visit our Website.

Use-Cases and Testing Patterns

In declarative testing, a test scenario focuses on what to accomplish rather than on the imperative details of how to manipulate the state of an application under test and verify the final application state against an expected state.

This approach not make tests more readable, maintainable, and reproducible, but it also help devops in identifying testing patterns.

Here, you can see some testing patterns we have identified across different application domains.

👉 Databases

👉 Federated Learning

👉 Filesystems

👉 HPC

👉 Networking

Getting Started

Before starting, Make sure that kubectl and Helm are installed on your system.

For quick testing, you can use microk8s. In that case, make sure you have added the addons and created aliases to the commands.

sudo microk8s config > ~/.kube/config
sudo microk8s enable dns ingress helm3
sudo snap alias microk8s.kubectl kubectl
sudo snap alias microk8s.helm3 helm

Install Frisbee CLI and Frisbee Platform

Then, run the install.sh, that will deploy the Frisbee Terminal as an extension to kubectl.

curl -sSLf https://frisbee.dev/install.sh | sudo bash

Through Frisbee Terminal we can easily install the Frisbee Platform.

kubectl frisbee install production

Once installed, you can follow the controller's output using:

kubectl logs -l control-plane=frisbee-operator -n frisbee --follow

Finally, download the Frisbee repo from GitHub.

git clone [email protected]:CARV-ICS-FORTH/frisbee.git

This step is not really needed for the installation. We use it to get local access in examples and charts directories.

  • examples: contains a list of test-cases.
  • charts: contains Helm charts that provide templates used in the test-cases.

Submit a Testing Job.

Let's start by running the hello-world.

kubectl frisbee submit test demo- ./examples/1.hello-world.yml

The name can be explicit (e.g, my-demo), or autogenerated given a prefix followed by a - (e.g, demo-).

In any case, submit returns the test id (| awk /test:/'{print $4}) so that it can be used to downstream commands.

Inspect Submitted Jobs.

To get a list of submitted tests, use:

kubectl frisbee get tests

Note that every test-case runs on a dedicated namespace (named after the test). To further dive into execution details use:

kubectl frisbee inspect tests demo-482

Live Progress Monitoring

Let's try something more complex to demonstrate the integration of Frisbee with Prometheus/Grafana.

kubectl frisbee submit test demo- examples/15.performance-monitoring.yml charts/system charts/networking/iperf2

Notice that we modified the command to include dependencies required for the execution of the scenario.

  • charts/systems: provides the templates for the telemetry stack.
  • charts/networking/iperf: provides the templates for iperf benchmark.

All that it takes now is to open the URLs of section Visualization Dashboards in your browser. You can it either manually or via the one-liner:

firefox $(kubectl frisbee inspect tests demo-710 | grep grafana- | awk '{print $3'})

In contrast to the vanilla Grafana which plots only the performance metrics, Frisbee provides Contextualized Visualizations that contain information for:

  • Joining nodes (blue vertical lines)
  • Exiting nodes (orange vertical lines)
  • Fault-Injection (red ranges)

Information like that helps in root-cause analysis, as it makes it easy to correlate an observed behavior back to a testing event.

For example, in the next figure, it fairly easy to understand that INSERT_ERROR messages (yellow line) are triggered by a fault-injection event.

Features

👉 Workflow templating to store commonly used workflows in the cluster.

👉 DAG based declaration of testing workflows.

👉 Step level input & outputs (template parameterization).

👉 Conditional Execution (Time-Driven, Status-Driven, Performance-Driven).

👉 Live Progress monitoring via Prometheus/Grafana.

👉 Assertions and alerting of SLA violations.

👉 Placement Policies (affinity/tolerations/node selectors).

👉 Archiving Test results after executing for later access.

👉 On-Demand reliable container attached storage.

👉 Garbage collection of completed resources.

👉 Chaos-Engineering and Fault-Injection via Chaos-Mesh.

👉 On-Demand reliable container attached storage.

👉 CLI applications to test management and test inspection.

To learn how to use these features, check the Walkthrough.

Citation

If you publish work that uses Frisbee, please cite Frisbee as follows:

@article{nikolaidis2021frisbee,
title={Frisbee: automated testing of Cloud-native applications in Kubernetes},
author={Nikolaidis, Fotis and Chazapis, Antony and Marazakis, Manolis and Bilas, Angelos},
journal={arXiv preprint arXiv:2109.10727},
year={2021}
}

Contributing to Frisbee

We welcome contributions. Please see CONTRIBUTING.md to get started!

Acknowledgements

This project has received funding from the European Union's Horizon 2020 research and innovation programme under grant agreement No. 894204 (Ether, H2020-MSCA-IF-2019).

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].