<!-- mobian-agent-page publisher="dailydev" canonical="https://daily.dev/tags/testing/best-of/2026/02" -->

---
title: Best Testing posts — February 2026 | daily.dev
description: The most upvoted Testing posts from February 2026, curated by the daily.dev community.
canonical: https://daily.dev/tags/testing/best-of/2026/02
twitter:card: summary_large_image
twitter:site: @dailydotdev
og:url: https://daily.dev/tags/testing/best-of/2026/02
og:type: website
og:site_name: daily.dev
og:title: Best Testing posts — February 2026 | daily.dev
og:description: The most upvoted Testing posts from February 2026, curated by the daily.dev community.
og:image: https://media.daily.dev/image/upload/s--VAY5ToZt--/f_auto/v1724209435/public/daily.dev%20-%20open%20graph
---

# Best of Testing — February 2026

1. 1  
[](/posts/agentic-engineering-vu5lypi1u "Agentic Engineering")  
Article  
![Avatar of addy](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/858094e1be9f4b0d9bef229d84ab12b7)Addy Osmani · 36w  
Agentic Engineering  
Agentic engineering is a disciplined approach to AI-assisted software development that distinguishes itself from "vibe coding" through human oversight and engineering rigor. While vibe coding means accepting AI output without review (useful for prototypes and MVPs), agentic engineering involves treating AI agents as tools that handle implementation under careful human direction. The workflow requires writing specs before prompting, reviewing every diff, running comprehensive test suites, and maintaining ownership of the codebase. This approach disproportionately benefits senior engineers with strong fundamentals, as it trades typing time for review time and demands architectural thinking over raw code generation. The rise of AI coding raises rather than lowers the bar for software engineering craft.  
382  
12
2. 2  
[](/posts/go-the-right-way-the-zen-of-go-coding-bitfield-consulting-dcgekdeyw "Go the right way: the Zen of Go coding — Bitfield Consulting")  
Article  
![Avatar of bitfieldconsulting](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/47364ed1cd4f42b289127844bad2b204)Bitfield Consulting · 34w  
Go the right way: the Zen of Go coding — Bitfield Consulting  
Ten principles for writing high-quality Go code: structure code as reusable packages, write comprehensive tests, prioritize readability, design safe-by-default APIs, wrap errors properly, avoid mutable global state, use structured concurrency sparingly, decouple from environment specifics, handle errors gracefully, and log only actionable information. Emphasizes making code work first, then refactoring for quality while keeping maintenance in mind.  
130  
3
3. 3  
[](/posts/what-i-learned-from-the-book-software-engineering-at-google-i6xedpxus "What I learned from the book Software Engineering at Google")  
Article  
![Avatar of techworld-with-milan](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/737f436491ef436dba1bbab9052e4a04)Tech World With Milan · 32w  
What I learned from the book Software Engineering at Google  
A detailed breakdown of key lessons from the book 'Software Engineering at Google', covering the distinction between programming and engineering, Hyrum's Law, the Beyoncé Rule, shift-left testing, why mocking frameworks are discouraged in favor of fakes, code review best practices, small frequent releases, dependency management, the GSM productivity framework, and engineering culture. The post also includes honest admissions from the authors about what doesn't work even at Google, and closes with practical takeaways applicable to teams of any size.  
131
4. 4  
[](/posts/i-struggled-to-code-with-ai-until-i-learned-this-workflow-habxlgdyu "I struggled to code with AI until I learned this workflow")  
Article  
![Avatar of systemdesignnews](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/eec821422ebe4672a738b8fbfa2c0dbd)System Design Newsletter · 36w  
I struggled to code with AI until I learned this workflow  
AI coding assistants work best through an iterative workflow rather than one-shot prompts. The key is providing comprehensive context (project background, constraints, relevant code), requesting a plan before implementation, generating code in small steps with defined roles (planner, implementer, tester, explainer), reviewing output with AI-assisted tools, writing tests immediately, and debugging systematically. Common pitfalls include context drift in long conversations, API version mismatches, and over-reliance on AI without understanding the output. The workflow emphasizes treating AI like a new teammate who needs explicit briefing, keeping changes small and reviewable, and maintaining human oversight throughout the process.  
90  
3
5. 5  
[](/posts/claude-code-production-ready-code-in-a-two-week-sprint-zkpphhe3m "Claude Code: Production ready code in a two-week sprint")  
Article  
![Avatar of thoughbot](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/9fe12feb57f944a29ff63a79e350081a)thoughbot · 35w  
Claude Code: Production ready code in a two-week sprint  
Thoughtbot demonstrates how to use Claude Code to build production-quality Rails applications through disciplined practices. The approach emphasizes small, controlled tasks, comprehensive test coverage, frequent commits with human review, and maintaining context through documentation. During a two-week sprint for TellaDraft, they integrated multiple AI services (ElevenLabs, WhisperAI, ChatGPT) while ensuring code quality through constant validation, proper testing patterns, and avoiding the pitfalls of "vibe coding" where AI generates unreviewed code.  
72  
17
6. 6  
[](/posts/bun-v1-3-9-s5ryyjjxd "Bun v1.3.9")  
Article  
![Avatar of bun](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/9d715eb44dae4d74a2cebd8871d91a0d)Bun · 35w  
Bun v1.3.9  
Bun v1.3.9 introduces parallel and sequential script execution with \`--parallel\` and \`--sequential\` flags, supporting workspace filtering and Foreman-style output. Testing improvements include \`Symbol.dispose\` support for automatic mock cleanup. Performance enhancements include SIMD-accelerated RegExp matching, faster string operations (trim, startsWith), optimized Markdown rendering, and ESM bytecode compilation support. HTTP/2 connection upgrades via net.Server now work correctly. Bug fixes address ARM64 crashes, Windows filesystem operations, WebSocket stability, and HTTP proxy keep-alive issues.  
67
7. 7  
[](/posts/the-phoenix-architecture-6hwtu9dko "The Phoenix Architecture")  
Article  
![Avatar of programmingdigest](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/4637f2287b44420aa9a44f432116043d)Programming Digest · 35w  
The Phoenix Architecture  
The "deletion test" is a thought experiment: imagine deleting your entire codebase and regenerating it from scratch. If that's terrifying, it reveals that critical knowledge lives only in the code itself, not in specifications, tests, or contracts. As code generation becomes cheaper through AI, the bottleneck shifts from production to validation. Systems should be built around durable oracles (property-based tests, invariants, contracts) that can mechanically verify correctness without referencing old implementations. When you have strong evaluation mechanisms, code becomes disposable and regeneration becomes safe.  
61  
4
8. 8  
[](/posts/why-we-should-not-mock-collections-with-mockito-v04uqbeyc "Why We Should Not Mock Collections With Mockito")  
Article  
![Avatar of baeldung](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/52cccfb454d946c4b7dfa5e816f9e576)Baeldung · 36w  
Why We Should Not Mock Collections With Mockito  
Mocking Java collections like List, Set, or Map with Mockito is an anti-pattern that leads to brittle tests and unrealistic behavior. Collections are deterministic data structures, not external dependencies requiring isolation. On Java 21+, mocking collections may fail due to stricter JVM instrumentation rules. Instead of mocking, use real collection instances in tests to create clearer, more maintainable tests that focus on observable behavior rather than implementation details. This approach exposes design issues and encourages better separation of concerns.  
54  
2
9. 9  
[](/posts/no-vibe-coding-while-i-m-on-call-what-happens-when-ai-writes-your-production-code-cumsxmpok "“No Vibe Coding While I’m On Call”: What Happens When AI Writes Your Production Code")  
Article  
![Avatar of itrevolution](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/16f07ad083fa4ce38532892a8447dcf9)IT Revolution · 36w  
“No Vibe Coding While I’m On Call”: What Happens When AI Writes Your Production Code  
AI code generation without proper guardrails leads to production incidents. Through a fictional narrative of a company experiencing repeated outages from AI-generated code, the article illustrates four critical failure patterns: AI optimizing code without understanding system context, generating tests that pass but don't validate requirements, documenting features that don't exist, and eroding architectural resilience through incremental changes. The solution involves breaking AI tasks into small verifiable chunks, using AI to critique its own work, verifying documentation against actual code, establishing architectural reviews, and building observability from day one.  
47
10. 10  
[](/posts/nimbus-an-in-browser-api-testing-playground-for-laravel-ddrtptcbh "Nimbus: An In-Browser API Testing Playground for Laravel")  
Article  
![Avatar of ln](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ln)Laravel News · 34w  
Nimbus: An In-Browser API Testing Playground for Laravel  
Nimbus is a Laravel package that provides an in-browser API testing playground for development. It automatically discovers routes and validation rules from FormRequest classes, Spatie Data objects, or OpenAPI specs. Key features include transaction mode for testing destructive operations without data loss, user impersonation for authorization testing, shareable request configurations, automatic test data generation, and dd() output handling. Unlike Swagger or Scribe, it's not for customer-facing documentation but rather a developer tool to speed up API iteration.  
43  
1
11. 11  
[](/posts/tdd-as-induction-ovhakmulh "TDD as induction")  
Article  
![Avatar of ploeh](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/0645fe7a0b9f40ba9ef17f7a7b49e893)ploeh blog · 33w  
TDD as induction  
Mark Seemann draws a metaphor between TDD and mathematical induction to explain why test-driven code tends to work across multiple environments in a non-linear fashion. Starting with an anecdote about locale-dependent test failures discovered when a UK developer joined a Danish team, he explores how tests make implicit assumptions about their execution context. He argues that once a test passes in one environment and then a second, it tends to pass in most subsequent environments — analogous to how mathematical induction works with base cases. The post emphasizes that tests must explicitly state all relevant assumptions, warns against Ambient Context as an anti-pattern, and notes that Haskell's deterministic APIs help avoid such implicit environment dependencies.  
36
12. 12  
[](/posts/agent-observability-powers-agent-evaluation-zmcjiu8ai "Agent Observability Powers Agent Evaluation")  
Article  
![Avatar of langchain](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/0f4f2629e0724a849823f8cd0d913e13)LangChain · 33w  
Agent Observability Powers Agent Evaluation  
Agent observability differs fundamentally from traditional software observability because agents are non-deterministic — you can't predict behavior until runtime. This post explains why debugging agents means debugging reasoning rather than code, introduces three core observability primitives (runs, traces, threads), and shows how these primitives map directly to three levels of agent evaluation: single-step (unit tests for decisions), full-turn (end-to-end trajectory), and multi-turn (context persistence across sessions). Production traces serve triple duty: manual debugging, building offline evaluation datasets from real failures, and powering continuous online evaluation. The key insight is that observability and evaluation are inseparable for agents — traces are the only source of truth for what an agent actually did.  
34  
1
13. 13  
[](/posts/when-testing-costs-money-ckcofc8sb "When Testing Costs Money")  
Article  
![Avatar of devjourney](https://media.daily.dev/image/upload/s--bpgZxoSe--/f_auto/v1745821292/squads/cff7f78d-0862-4258-b8c5-a38fed5f6e1a)Developer's Journey · 34w  
When Testing Costs Money  
A developer shares a real-world experience integrating a third-party API that lacked a testing environment and only provided limited credits. Facing the constraint of minimizing costly API calls during development, the strategy involved thoroughly reading documentation, testing requests with Bruno (an offline API client), building a full mock implementation first, and only switching to the real API after all edge cases were handled. The approach resulted in fewer than 20 real API calls to complete the integration successfully.  
16
14. 14  
[](/posts/laravel-12-51-0-adds-aftersending-callbacks-validator-whenfails-and-mysql-timeout-y0ofekzyb "Laravel 12.51.0 Adds afterSending Callbacks, Validator whenFails, and MySQL Timeout")  
Article  
![Avatar of ln](https://media.daily.dev/image/upload/t_logo,f_auto/v1/logos/ln)Laravel News · 35w  
Laravel 12.51.0 Adds afterSending Callbacks, Validator whenFails, and MySQL Timeout  
Laravel 12.51.0 introduces notification afterSending callbacks for post-send logic, fluent whenFails and whenPasses validator methods for non-HTTP contexts, and a MySQL-specific query timeout method. The release adds closure support in firstOrCreate and createOrFirst for lazy evaluation of expensive operations, a BatchCancelled event for monitoring batch job cancellations, and the ability to use Eloquent builders directly as subqueries in updates. Additional improvements include a withoutHeader response method, enhanced batch testing assertions, cache isolation for parallel tests, and numerous bug fixes across database operations, string helpers, queue middleware, and framework internals.  
12

[See all Testing archives](/tags/testing/best-of)

```json
{"@context":"https://schema.org","@graph":[{"@type":"Organization","@id":"https://daily.dev/#organization","name":"daily.dev","url":"https://daily.dev","logo":{"@type":"ImageObject","url":"https://daily.dev/apple-touch-icon.png","width":180,"height":180},"sameAs":["https://twitter.com/dailydotdev","https://github.com/dailydotdev","https://www.linkedin.com/company/daily-dev-ltd"]},{"@type":"WebSite","@id":"https://daily.dev/#website","url":"https://daily.dev","name":"daily.dev","publisher":{"@id":"https://daily.dev/#organization"},"potentialAction":{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https://daily.dev/search?q={search_term_string}"},"query-input":"required name=search_term_string"}}]}
{"@context":"https://schema.org","@graph":[{"@type":"CollectionPage","@id":"https://daily.dev/tags/testing/best-of/2026/02#page","url":"https://daily.dev/tags/testing/best-of/2026/02","name":"Best Testing Posts — February 2026","description":"The most upvoted Testing posts from February 2026, curated by the daily.dev community.","isPartOf":{"@type":"WebSite","url":"https://daily.dev"}},{"@type":"ItemList","@id":"https://daily.dev/tags/testing/best-of/2026/02#items","numberOfItems":14,"itemListElement":[{"@type":"ListItem","position":1,"url":"https://daily.dev/posts/agentic-engineering-vu5lypi1u","name":"Agentic Engineering"},{"@type":"ListItem","position":2,"url":"https://daily.dev/posts/go-the-right-way-the-zen-of-go-coding-bitfield-consulting-dcgekdeyw","name":"Go the right way: the Zen of Go coding — Bitfield Consulting"},{"@type":"ListItem","position":3,"url":"https://daily.dev/posts/what-i-learned-from-the-book-software-engineering-at-google-i6xedpxus","name":"What I learned from the book Software Engineering at Google"},{"@type":"ListItem","position":4,"url":"https://daily.dev/posts/i-struggled-to-code-with-ai-until-i-learned-this-workflow-habxlgdyu","name":"I struggled to code with AI until I learned this workflow"},{"@type":"ListItem","position":5,"url":"https://daily.dev/posts/claude-code-production-ready-code-in-a-two-week-sprint-zkpphhe3m","name":"Claude Code: Production ready code in a two-week sprint"},{"@type":"ListItem","position":6,"url":"https://daily.dev/posts/bun-v1-3-9-s5ryyjjxd","name":"Bun v1.3.9"},{"@type":"ListItem","position":7,"url":"https://daily.dev/posts/the-phoenix-architecture-6hwtu9dko","name":"The Phoenix Architecture"},{"@type":"ListItem","position":8,"url":"https://daily.dev/posts/why-we-should-not-mock-collections-with-mockito-v04uqbeyc","name":"Why We Should Not Mock Collections With Mockito"},{"@type":"ListItem","position":9,"url":"https://daily.dev/posts/no-vibe-coding-while-i-m-on-call-what-happens-when-ai-writes-your-production-code-cumsxmpok","name":"“No Vibe Coding While I’m On Call”: What Happens When AI Writes Your Production Code"},{"@type":"ListItem","position":10,"url":"https://daily.dev/posts/nimbus-an-in-browser-api-testing-playground-for-laravel-ddrtptcbh","name":"Nimbus: An In-Browser API Testing Playground for Laravel"},{"@type":"ListItem","position":11,"url":"https://daily.dev/posts/tdd-as-induction-ovhakmulh","name":"TDD as induction"},{"@type":"ListItem","position":12,"url":"https://daily.dev/posts/agent-observability-powers-agent-evaluation-zmcjiu8ai","name":"Agent Observability Powers Agent Evaluation"},{"@type":"ListItem","position":13,"url":"https://daily.dev/posts/when-testing-costs-money-ckcofc8sb","name":"When Testing Costs Money"},{"@type":"ListItem","position":14,"url":"https://daily.dev/posts/laravel-12-51-0-adds-aftersending-callbacks-validator-whenfails-and-mysql-timeout-y0ofekzyb","name":"Laravel 12.51.0 Adds afterSending Callbacks, Validator whenFails, and MySQL Timeout"}]},{"@type":"BreadcrumbList","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https://daily.dev"},{"@type":"ListItem","position":2,"name":"Tags","item":"https://daily.dev/tags"},{"@type":"ListItem","position":3,"name":"Testing","item":"https://daily.dev/tags/testing"},{"@type":"ListItem","position":4,"name":"Best of","item":"https://daily.dev/tags/testing/best-of"},{"@type":"ListItem","position":5,"name":"February 2026"}]}]}
```

