Best of TestingSeptember 2025

  1. 1
    Article
    Avatar of francofernandoThe Polymathic Engineer·30w

    Before refactoring

    Refactoring code requires careful preparation and the right mindset to avoid common pitfalls. Key considerations include understanding the existing codebase thoroughly, resisting the urge to rewrite everything from scratch, making incremental changes, preserving existing tests, checking your motivations for refactoring, evaluating technology changes carefully, and accepting that refactoring projects can sometimes fail. The difference between successful and failed refactoring often comes down to proper planning and approach rather than technical skill alone.

  2. 2
    Article
    Avatar of medium_jsMedium·28w

    7 AI Coding Techniques That Could Save You 10+ Hours This Week

    Seven practical AI techniques for developers to automate repetitive coding tasks including component generation, API scaffolding, debugging assistance, code refactoring, UI creation, test generation, and deployment automation. Each technique includes structured prompts, real examples, and estimated time savings ranging from 45 minutes to several hours per task.

  3. 3
    Article
    Avatar of dhhDavid Heinemeier Hansson·30w

    Apple has no one left who can say no

    Apple's leadership crisis is evident in failed projects like the $10 billion Project Titan car initiative and the buggy CarPlay Ultra release. The company lacks decisive leadership to maintain quality standards, with products shipping despite significant performance issues like 12fps lag and system crashes. This reflects a broader organizational problem where quarterly earnings take precedence over product excellence, contrasting with founder-led companies that typically maintain higher quality standards.

  4. 4
    Article
    Avatar of dhhDavid Heinemeier Hansson·32w

    Engineering excellence starts on edge

    Engineering teams achieve excellence by running unreleased edge versions of frameworks and libraries in production, becoming co-creators rather than just consumers. Companies like Shopify, GitHub, and 37signals have been running Rails 8.1 beta in production for nearly a year, catching bugs through automated testing and diligent development practices. This approach transforms teams from passive users to active contributors, significantly elevating their engineering competence and culture.

  5. 5
    Article
    Avatar of bunBun·28w

    Bun v1.2.23

    Bun v1.2.23 introduces major improvements including pnpm-lock.yaml migration for seamless switching from pnpm, Redis Pub/Sub support, concurrent test execution with configurable parallelism, platform-specific dependency filtering, system CA certificates support, Windows code signing for compiled executables, JSX configuration improvements, SQL array helpers, randomized test ordering, and numerous Node.js compatibility fixes across http, dns, worker_threads, crypto, and other modules.

  6. 6
    Article
    Avatar of planetgolangPlanet Golang·30w

    Test state, not interactions

    State-based testing validates system behavior by checking outcomes rather than implementation details. Mock-based interaction testing creates brittle tests that break on harmless refactors while missing real bugs. Handwritten fakes that implement domain rules provide better test maintainability and reliability than generated mocks. LLMs often produce poor interaction-checking tests that add maintenance overhead without meaningful validation.

  7. 7
    Video
    Avatar of bytegradByteGrad·30w

    This API Client Is Amazing! (HTTP Interceptor, API Mocking, Redirect, Modify Response)

    Requestly is an API development tool that helps developers intercept, mock, and modify HTTP requests during frontend development. It allows testing with non-existent API endpoints, simulating different response states, modifying headers, adding delays, and redirecting requests. The tool works as both a Chrome extension and desktop application, enabling developers to experiment with UI components before backend APIs are ready, test error states, and debug network issues without modifying actual code.

  8. 8
    Article
    Avatar of freecodecampfreeCodeCamp·29w

    How to Implement Dependency Injection in Go - Explained with Code Examples

    Dependency injection (DI) in Go involves passing dependencies into components rather than creating them internally, making code more testable and maintainable. The guide covers manual DI as the idiomatic Go approach, explains when complexity grows with nested dependencies, and explores DI libraries like Google Wire (compile-time), Uber Dig (runtime), and Uber Fx (with lifecycle management). Manual DI works well for most projects, while frameworks help manage complexity in larger applications. Best practices include keeping dependencies explicit, starting simple, and using interfaces for testability.

  9. 9
    Article
    Avatar of searlsJustin Searls·30w

    A simple calculation

    A developer shares their simple method for testing network connections to remote LLMs by asking basic math questions like '1+1'. The post includes a humorous example of an LLM's chain-of-thought reasoning for this trivial calculation, showing how even simple queries can trigger verbose internal processing.

  10. 10
    Article
    Avatar of depeszdepesz·29w

    Waiting for PostgreSQL 19 – Add date and timestamp variants of random(min, max). – select * from depesz;

    PostgreSQL 19 introduces new random() function variants for generating random dates and timestamps within specified ranges. The update adds three new functions: random(min date, max date), random(min timestamp, max timestamp), and random(min timestamptz, max timestamptz). These functions simplify test data generation by eliminating the need for manual calculations with intervals and mathematical operations.

  11. 11
    Article
    Avatar of alvaroduranThe PayEng Playbook·30w

    How To Review Code That Deals With Money

    A systematic 4-step approach to reviewing code in financial systems: start with test files to understand context, verify alignment with issue requirements, mentally solve the problem yourself, then compare the actual implementation against your approach. This method helps catch errors early, provides deeper understanding, and is especially critical for payment systems where mistakes can be costly.

  12. 12
    Article
    Avatar of phProduct Hunt·31w

    Google Labs: Google's AI and product experiments

    Google Labs serves as an experimental platform for testing early-stage AI products and features, including search enhancements, Workspace integrations, and generative tools. The latest launch, Stax, addresses LLM evaluation challenges by providing custom autoraters and comprehensive testing tools that work with major model providers, moving beyond subjective 'vibe testing' to objective quality measurement.

  13. 13
    Article
    Avatar of freecodecampfreeCodeCamp·32w

    What is New in Go 1.25? Explained with Examples

    Go 1.25 focuses on practical improvements rather than flashy syntax changes. Key updates include removing core types from the spec while maintaining backward compatibility, fixing nil pointer panic handling that was broken in Go 1.21, enabling DWARF v5 debug info by default for smaller binaries and faster linking, stabilizing the testing/synctest package for deterministic concurrency testing, and introducing an experimental encoding/json/v2 engine with significant performance improvements. Additional enhancements include smarter tooling with go vet catching more mistakes, runtime improvements for better container awareness, a new Flight Recorder API for debugging, and various platform updates including macOS 12 as the minimum supported version.

  14. 14
    Article
    Avatar of freecodecampfreeCodeCamp·31w

    How to Use Postman Scripts to Simplify Your API Authentication Process

    Learn how to automate JWT authentication in Postman using scripts to eliminate repetitive token copying and pasting. The guide covers writing JavaScript code in Postman's post-response scripts to automatically capture authentication tokens from API responses, store them in collection variables, and reuse them across multiple requests without manual intervention.