/testing-distributed-systems

Curated list of resources on testing distributed systems

Primary LanguageHTMLCreative Commons Zero v1.0 UniversalCC0-1.0

List of resources on testing distributed systems curated by Andrey Satarin (@asatarin).

Contents

Overview of testing approaches

RICON 2014: Ines Sombra, Fastly — Testing in a Distributed World

https://youtu.be/KSdNYi55kjg

Great overview of techniques for testing distributed systems. Additional materials for this talk could be found in this Github repo

Technologies for Testing Distributed Systems by Colin Skott

Colin Skott shares his viewpoint from academia on testing distributed systems.

Research Papers

Richard Cook

Jepsen

Some notable Jepsen analyses:

Jepsen is used by CockroachDB, VoltDB, Cassandra, ScyllaDB and others.

Formal Methods

See also section on Amazon Web Services.

Lineage-driven Fault Injection

Netflix adopted lineage-driven fault injection techniques for testing microservices.

Chaos Engineering

Netflix pioneered chaos engineering discipline.

Fuzzing

Game Days

Performance and Benchmarking

See also benchmarking tools.

Misc

Specific approaches in different distributed systems

Amazon Web Services

Netflix

On automated failure injection:

Random/manual failure injection testing:

See also Chaos Engineering.

Twitter

Datastax (Cassandra)

ScyllaDB

They published series of blog posts on testing ScyllaDB:

VoltDB

Series of post on testing at VoltDB:

Additional resources:

MemSQL

CockroachLabs (CockroachDB)

PingCap (TiDB)

MongoDB

Cloudera

FoundationDB

Sendence

There is one talk from Sean T. Allen on testing stream processing system at Sendence

Google

Microsoft

Dropbox

Atomix Copycat

Onyx

LinkedIn

Druid.io

Salesforce

SQLite

InfluxDB

Shopify

Confluent (Kafka)

Elastic (Elastic Search)

Tools

Network Simulation

QuickCheck

Benchmarking

Linkbench

YCSB