```mermaid graph TB subgraph Era1["Era 1: Sequential"] A1[Single Core] end subgraph Era2["Era 2: Concurrent"] A2[Multi Core] B2[Single Machine] end subgraph Era3["Era 3: Distributed"] A3[Multi Core] B3[Multi Machine] C3[Single User] end subgraph Era4["Era 4: Multi-tenant"] A4[Multi Core] B4[Multi Machine] C4[Multi User] D4[Trusted] end subgraph Era5["Era 5: Adversarial"] A5[Multi Core] B5[Multi Machine] C5[Multi User] D5[Untrusted] end Era1 --> Era2 --> Era3 --> Era4 --> Era5 style Era1 fill:#4ade80 style Era2 fill:#facc15 style Era3 fill:#f97316 style Era4 fill:#ec4899 style Era5 fill:#8b5cf6 ``` ```mermaid flowchart TD subgraph S1["Sequential Testing"] T1["Unit Tests<br/>TDD<br/>Coverage"] end B1{{"Thread interleaving<br/>makes tests<br/>non-reproducible"}} subgraph S2["Concurrency Testing"] T2["Race Detectors<br/>Model Checking<br/>Systematic Scheduling"] end B2{{"Network partitions<br/>and partial failures<br/>across machines"}} subgraph S3["Distributed Testing"] T3["Chaos Engineering<br/>Jepsen<br/>Property-Based Testing"] end B3{{"Resource contention<br/>and tenant isolation<br/>requirements"}} subgraph S4["Multi-tenant Testing"] T4["Load Testing<br/>Contract Testing<br/>Canary Deployments"] end B4{{"Economic incentives<br/>to exploit<br/>vulnerabilities"}} subgraph S5["Adversarial Testing"] T5["Formal Verification<br/>Deterministic Simulation<br/>Bug Bounties"] end T1 --> B1 --> T2 --> B2 --> T3 --> B3 --> T4 --> B4 --> T5 style B1 fill:#ff6b6b,color:#fff style B2 fill:#ff6b6b,color:#fff style B3 fill:#ff6b6b,color:#fff style B4 fill:#ff6b6b,color:#fff style S1 fill:#4ade80 style S2 fill:#facc15 style S3 fill:#f97316 style S4 fill:#ec4899 style S5 fill:#8b5cf6 ``` ```mermaid graph TB subgraph Traditional["Traditional Testing Paradigm"] direction TB TT1["Sample behaviors"] TT2["Find bugs in tested scenarios"] TT3["Coverage = confidence"] end subgraph Adversarial["Adversarial Testing Paradigm"] direction TB AT1["Prove properties"] AT2["Guarantee invariants hold"] AT3["Proof = confidence"] end Traditional -->|"Economic attackers<br/>break the model"| Adversarial style Traditional fill:#f97316,color:#fff style Adversarial fill:#8b5cf6,color:#fff ``` ```mermaid timeline title Testing Tools Evolution section Sequential Era 1989 : SUnit (Smalltalk) 1997 : JUnit (Java) 2003 : TDD by Example section Concurrency Era 1997 : Eraser 2007 : CHESS 2009 : ThreadSanitizer v1 2012 : ThreadSanitizer v2 section Distributed Era 2010 : Chaos Monkey 2013 : Jepsen begins 2000 : QuickCheck 2010 : Dapper (tracing) section Multi-tenant Era 2017 : SRE Book 2013 : Pact 2019 : OpenTelemetry section Adversarial Era 2015 : AWS TLA+ paper 2016 : DAO hack 2020 : Echidna 2025 : Certora open-source ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up