How eBay’s Notification Platform Used Fault Injection In New Ways
tl;dr: To achieve this, the faults are injected by simulation in the application level by the code instrumentation. As far as we know, we are the very first in the industry to practice this idea officially and widely to experiment on the mission-critical system with different kinds of deliberately designed faults.
featured in #381
What If Writing Tests Was A Joyful Experience?
tl;dr: "At Jane Street we use a pattern / library called “expect tests” that makes test-writing feel like a REPL session, or like exploratory programming in a Jupyter notebook - with feedback cycles so fast and joyful that it feels almost tactile. Having used them for some time now this is the only way I’d ever want to write tests."
featured in #380
How To Boost Code Coverage With Functional Testing
tl;dr: From the DoorDash team, "We introduce a functional testing approach that doesn't need any manual setup and can be run like unit tests locally or in a CI pipeline. This approach: (1) Helps catch & reproduce more bugs during local development and greatly reduces debugging time. (2) Accelerates refactoring by testing API contracts without getting involved in implementation details. (3) Provides greater code coverage than traditional tests.
featured in #379
Developers Are Already Responsible For Code Quality. Don't Add Blackbox E2E Tests To Their Backlog Too.
tl;dr: Should developers manage end-to-end tests? No. In this post we explain why effective teams offload blackbox end-to-end tests to dedicated experts.
featured in #379
Simplifying Developer Testing Through SLATE
tl;dr: "Testing a service in isolation (i.e. unit, integration, component tests) is important as it gives faster feedback to developers. But to validate whether the requirements for a service are met with the current state of dependencies and get confidence, developers rely on E2E testing. This article describes how we enabled E2E tests for developers with improved dev experience."
featured in #373
I Have Complicated Feelings About TDD
tl;dr: "The difference is that I treat it as a useful technique, one of many, while the very strongest advocates consider it transformational... I practice “weak TDD”, which just means “writing tests before code, in short feedback cycles”. Hillel explains why he holds complicated feelings for TDD.
featured in #344
Supercharging A/B Testing At Uber
tl;dr: "While the statistical underpinnings of A/B testing are a century old, building a correct and reliable A/B testing platform and culture at a large scale is still a massive challenge... Uber went through a similar journey and this blog post describes why and how we rebuilt the A/B testing platform we had at Uber."
featured in #337
Unit And Integration Tests
tl;dr: "In this post I argue that integration-vs-unit is a confused, and harmful, distinction. I provide a more useful two-dimensional mental model instead. The model is descriptive (it allows to think more clearly about any test), but I also include my personal prescriptions."
featured in #332
Start Test Names With “Should”
tl;dr: Reasons include: (1) It removes redundancy, because the function name should already be in the call stack. (2) It is falsifiable i.e. a person reviewing the test can decide to which degree the name agrees with the actual test. (3) Encourages testing one property of the function per test.
featured in #323
How I Accidentally Deleted 7TB Of Videos Before Going To Production
tl;dr: "The bad news is that this was on Friday, and we needed to have the videos back up at most for Tuesday morning. We had to upload ~8TB of data with a 30MB/s connection. Not ideal, and I had to think about something fast."
featured in #314