DEV Community

Cover image for πŸŒͺ️ We Ship to Production Without Tests. Here's How It Destroyed Us.
Mehmet TURAÇ
Mehmet TURAÇ

Posted on

πŸŒͺ️ We Ship to Production Without Tests. Here's How It Destroyed Us.

"You don't need bad intentions to destroy a project. Just say 'we'll write tests later' and watch it burn."


We built an e-commerce platform in 2 weeks. No tests. 3 customers got overcharged. Here's the full story β€” and why TDD saved our careers.


The Beginning

November 2025. Three developers. One sneaker marketplace called SoleDrop. Limited edition kicks, raffle system, payments β€” the works.

Our boss said:

"We're selling to hypebeasts. Cart, checkout, raffle. Go."

So we went. Full speed. Zero tests.

# Our first commit β€” no tests, pure vibes
def add_to_cart(cart, product, quantity):
    cart.items.append({
        'product': product,
        'quantity': quantity,
        'price': product.price * quantity
    })
    return cart
Enter fullscreen mode Exit fullscreen mode

"It's just a cart function, how hard can it be?"

We tested it once. By hand. It worked. We deployed.

We wrote zero tests.


Week 2: Black Friday πŸŽƒ

We launched a 20% discount code: SOLEBF20.

First 2 hours? Beautiful. Then a customer tweeted:

"@SoleDrop added 2 Nike Dunks to my cart, applied discount, total shows 384β‚Ί instead of 480β‚Ί. Am I getting these for free? πŸ˜‚"

The discount was applied to (products + shipping) Γ— 0.8 instead of (products Γ— 0.8) + shipping.

"Simple fix." We patched it. Deployed.

Then: someone added the same sneaker 5 times. Stock was 3. The system didn't care.

Then: the discount code could be applied twice. 20% + 20% = 40% off.

Every fix spawned a new bug. No tests meant we were coding blind.


Week 3: The Night Everything Broke πŸ’€

Wednesday. 2:47 AM. My phone rings.

"Production is down. 3 customers got overcharged on their credit cards. Fix it NOW."

The cart calculation function was rewritten by another dev that week. He reintroduced the exact bug we fixed in week 2. Nobody noticed.

Because there were no tests.

β”Œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”
β”‚         PROJECT STATUS β€” WEEK 3         β”‚
β”œβ”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€
β”‚  Open bugs              : 23            β”‚
β”‚  Closed bugs            : 31            β”‚
β”‚  Reopened bugs          : 14 (!)        β”‚
β”‚  Test coverage          : 0%            β”‚
β”‚  Team morale            : β–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–ˆβ–‘β–‘β–‘β–‘ 30%β”‚
β”‚  Production incidents   : 7             β”‚
β”‚  Credit card refunds    : 3 customers   β”‚
β””β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”€β”˜
Enter fullscreen mode Exit fullscreen mode

That night, at 3:30 AM, Emre β€” our senior dev, 8 years of experience β€” sat at my desk. Exhausted.

"This happened to me before. 2019. A fintech company. Same mistake. Same 'we'll write tests later.' We killed that project too."

"Why didn't you tell us earlier?"

"I did. You said 'no time.'"


The Lesson

We delivered the project. 2 weeks late. 3 refunds. Team burned out.

That night I learned:

No tests = No trust. No trust = No speed.

Testing isn't a waste of time. Not testing is β€” because you pay it back in bug fixes, production incidents, credit card refunds, and "why did it break" meetings.

Tags: tdd, testing, softwareengineering, failure, debugging

Top comments (0)