The System Design Newsletter

The System Design Newsletter

API testing was “hard” until I learned these 53 techniques

#175: Part 2 - fuzz testing, penetration testing, injection attack testing, and 25 others.

Neo Kim's avatar
Neo Kim
Sep 07, 2026
∙ Paid

Get my system design playbook for FREE on newsletter signup:

  • Share this letter & I’ll send you some rewards for the referrals.


Onwards ‘n downwards:

Following is the second of a premium 2-part1 newsletter series…

Some of these are foundational, and some are quite advanced. ALL of them are super useful to engineers building production-ready systems.

Curious to know how many were new to you:

  1. Fuzz Testing

  2. Penetration Testing

  3. Injection Attack Testing

  4. Encryption/TLS Testing

  5. Policy/Compliance Testing

  6. Reliability Testing

  7. Chaos Testing

  8. Circuit Breaker Testing

  9. Backpressure Testing

  10. Fault Injection Testing

  11. Failover Testing

  12. Recovery Testing

  13. Idempotency Testing

  14. Timeout and Retry Testing

  15. Caching Testing

  16. Data Integrity Testing

  17. Data Consistency Testing

  18. State Transition Testing

  19. UI-Level API Testing

  20. Developer Experience Testing

  21. Documentation Testing

  22. Rate Limiting Testing

  23. Backward Compatibility Testing

  24. Mutation Testing

  25. Mock/Stub Testing

  26. Synthetic Monitoring

  27. Scenario/Workflow Testing

  28. Component Testing

For each, I’ll share:

  • What it is and how it works (in simple words)

  • A real-world analogy

  • Tradeoffs

  • Why it matters

Let’s go!

§

Make your agents realtime (Partner)

Agents are killing your apps with compounding latency across workflows.

Your customers want their agent workflows to be efficient, so you’re losing deals if you don’t make them event-driven. Webhooks solve this issue, but implementing them is harder than it looks.

If you homebrewed your webhooks and are getting pinged at 4 in the morning for failed deliveries, this is for you.

Svix handles everything: retries, idempotency, security, and compliance. Qualified startups get $12,000 in free credits.

Get started for free

(Thanks to Svix for partnering on this newsletter.)

§

26. Fuzz Testing

Fuzz testing sends randomized, malformed, unexpected data to API endpoints to discover crashes, memory leaks, unhandled exceptions, and/or security vulnerabilities.

A human does NOT design the inputs. Instead, they’re generated algorithmically, mutated from valid inputs, pulled from known attack pattern libraries.

Tools such as AFL, Burp Suite & Restler automate this process at scale.

Analogy

A locksmith testing a new lock does not just use the correct key.

They jam random objects into the keyhole, apply unusual force, insert keys from other locks, and try every unexpected interaction to find weaknesses the designer did not anticipate.

Tradeoff

Fuzz testing finds bugs that NO human tester would think to look for.

It excels at discovering edge cases in input parsing, deserialization, & memory management. Yet results are often noisy. Many crashes are duplicates/low-severity.

Triaging fuzz results requires effort & expertise.

Why it matters

Buffer overflows, injection vulnerabilities, and crash bugs2 in production often come from inputs no developer imagined.

Fuzz testing imagines them at machine speed. Run fuzz tests continuously against input-parsing endpoints, and treat every crash as a potential security issue.

27. Penetration Testing

Penetration testing is a simulated real-world attack against the API, performed by a skilled security professional/team.

It involves creative, context-aware exploitation: chaining vulnerabilities, exploiting business logic flaws, and using social engineering vectors that tools cannot detect.

The goal is not a checklist…it’s to find out whether a motivated attacker can break in.

Analogy

A museum hires a professional thief to attempt a heist under controlled conditions.

Not to check the alarm sensors one by one, but to see whether someone clever enough can get past them all together.

The thief thinks like a thief,,, not like an alarm technician.

Tradeoff

Penetration testing provides the most realistic assessment of your API’s security posture.

It finds vulnerabilities automated tools miss by combining technical exploitation with creative thinking. Yet it’s expensive, time-consuming, and only as good as the tester.

Plus results are a snapshot…not continuous coverage.

Why it matters

Automated scans find known vulnerability patterns.

Pen testing finds the unknown ones: a business logic flaw that lets an attacker manipulate pricing, or a chained exploit that bypasses auth entirely.

So schedule pen tests before major launches & at least annually for production APIs.

28. Injection Attack Testing

Injection attack testing verifies if the API is immune to attacks when malicious code gets embedded in input data: SQL injection, NoSQL injection, command injection, LDAP injection, and header injection3.

You craft payloads designed to escape the intended input context & execute as code on the server. If any payload succeeds,,, the API has a critical vulnerability.

Analogy

A customs officer checks a package labeled “books” to make sure it contains books and not something dangerous hidden inside…

Injection testing confirms that data labeled as “user input” stays as data & never becomes executable instructions.

Tradeoff

Injection testing catches the most exploitable class of API vulnerabilities.

A single successful injection can expose an entire database or grant shell access. Yet the test surface is wide. Every input field, header, query parameter & path segment is a potential injection point.

Thoroughness requires systematic coverage.

Why it matters

Injection attacks remain among the most common and damaging API exploits.

They are well understood & well documented, and still happen because most people skip it…

So test every input vector with known injection patterns. Use parameterized queries and input sanitization as defenses, then verify those defenses hold4.

29. Encryption/TLS Testing

Encryption & TLS testing verifies if data in transit is protected.

You confirm the API enforces HTTPS, rejects HTTP connections, uses strong TLS versions, and avoids weak cipher suites5. You also verify that certificates are valid, not expired, and correctly chained.

Tools such as testssl.sh, sslyze & nmap automate these checks.

Analogy

A courier service guarantees tamper-proof delivery.

Encryption testing verifies every envelope is sealed, the seals cannot be broken without detection, and no courier is secretly delivering in transparent bags.

Tradeoff

TLS testing catches misconfigurations that leave data exposed in transit.

A single misconfigured endpoint serving HTTP can leak credentials/session tokens. Although tests are straightforward, they’re easy to forget.

Plus, TLS configurations degrade over time as certificates expire & protocols get deprecated.

Why it matters

Unencrypted API traffic is readable by anyone on the network path.

This includes credentials, tokens, PII & business data. Therefore:

  • Enforce TLS 1.2+ on every endpoint.

  • Automate certificate expiry monitoring.

  • Run TLS configuration scans on every deployment.

§

If something resonated with you today, share this letter. Because one idea, one action, can change everything.

Share

§

30. Policy/Compliance Testing

Policy & compliance testing verifies if the API adheres to regulatory requirements and organizational security policies.

This includes GDPR data handling rules, HIPAA protections for health data, PCI-DSS requirements for payment data, and SOC 26 controls for service organizations.

You test personal data is encrypted, audit logs get generated, data retention policies are enforced & consent mechanisms work correctly.

Analogy

A restaurant does not just cook good food.

It must also pass health inspections: proper food storage temperatures, handwashing stations, pest control records. The food could taste great, but if it fails the inspection, it shuts the doors.

Compliance testing is like a health inspection for your API.

Tradeoff

Compliance testing protects the organization from regulatory fines, legal liability & loss of certifications.

It is non-negotiable for APIs handling sensitive data. Yet the tradeoff is rigidity… Compliance requirements change slowly & are often more prescriptive than practical.

Tests must be updated whenever regulations change.

Why it matters

  • GDPR violation could cost up to 4% of global annual revenue.

  • HIPAA breach triggers mandatory reporting & potential criminal charges.

i.e., compliance is not optional.

So map every regulatory requirement to a specific test. Automate compliance checks and run them on every release.

31. Reliability Testing

Reliability testing measures how consistently an API performs its intended function over time & under varying conditions.

You are not testing a single response.

Instead, you’re testing whether the API delivers the right response reliably across thousands of requests, network disruptions & partial system failures.

This includes uptime measurement, error rate tracking, and mean time between failures (MTBF7).

Analogy

A light switch that works 99 times out of 100 is not reliable…

You need to know the exact failure rate, the failure pattern, and how quickly the light recovers after a failure.

Reliability testing is counting every flicker.

Tradeoff

Reliability testing gives you hard numbers on system dependability.

These numbers drive SLAs, SLOs8, and architecture decisions. But it requires sustained observation over time, not a single test run.

True reliability data comes from weeks of monitoring, not minutes of testing.

Why it matters

Users tolerate slow APIs.

Yet they do not tolerate unreliable ones. An API that works perfectly 95% of the time & fails randomly 5% of the time will drive users away faster than a consistently slow one.

So define SLOs for error rate & availability… Then measure continuously & alert on degradation.

32. Chaos Testing

Chaos testing deliberately introduces failures into the system to verify if the API handles them gracefully.

You kill server instances, inject network latency, corrupt DNS responses, and fill disks, all while monitoring whether the API continues serving requests/degrades predictably.

Netflix’s Chaos Monkey is the most well-known tool in this space:

It randomly terminates production instances during business hours.

Analogy

A fire drill does not wait for a real fire:

You pull the alarm during a normal workday & observe whether people follow the evacuation plan/panic.

Chaos testing is the fire drill for your API infrastructure.

Tradeoff

Chaos testing reveals resilience gaps that no other testing approach can find.

It builds confidence that the system survives real-world failures, not just theoretical ones. Yet the risk is real. Poorly scoped chaos experiments can cause actual outages.

So start small, in staging, with a clear blast radius.

Why it matters

In distributed systems, failure is not a possibility…it is a certainty.

The question is not whether a service will go down, but whether the system handles it when it does…

Start with simple experiments: kill one instance, add 200ms latency to one dependency. Expand the scope as confidence grows.

§

Reminder: this is a teaser of the subscriber-only newsletter, exclusive to my golden members.

When you upgrade, you’ll get:

  • High-level architecture of real-world systems.

  • Deep dive into how popular real-world systems work.

  • How real-world systems handle scale, reliability, and performance.

Unlock Full Access

(If this newsletter has helped you become a better software engineer, consider subscribing to support my work.)

§

33. Circuit Breaker Testing

Keep reading with a 7-day free trial

Subscribe to The System Design Newsletter to keep reading this post and get 7 days of free access to the full post archives.

Already a paid subscriber? Sign in
© 2026 Neo Kim · Publisher Privacy
Substack · Privacy ∙ Terms ∙ Collection notice
Start your SubstackGet the app
Substack is the home for great culture