Best of TestingOctober 2025

  1. 1
    Article
    Avatar of javarevisitedJavarevisited·26w

    Stop Writing Database-Dependent Tests — Mock Your Data Access Layer

    Database-dependent tests are slow, fragile, and blur the boundaries between unit and integration testing. Mocking the data access layer through interfaces and dependency injection enables fast, isolated unit tests that focus on business logic rather than infrastructure. The recommended approach is to use mocks for 90% of tests while reserving database-touching integration tests for the remaining 10%, ensuring high coverage without sacrificing development speed.

  2. 2
    Article
    Avatar of laraveldevLaravel Dev·27w

    Laravel Best Practices Every Developer Should Follow

    Seven essential practices for maintaining clean Laravel codebases: keeping controllers lightweight by moving logic to service classes, using Form Request classes for validation, following naming conventions, preventing N+1 queries with eager loading, storing configuration in environment files, maintaining organized migrations and seeders, and writing basic tests using Laravel's built-in tools.

  3. 3
    Article
    Avatar of bunBun·25w

    Bun v1.3.1

    Bun v1.3.1 fixes 103 issues with significant performance and feature improvements. Key updates include 2× faster builds on macOS for symlink-heavy projects, source maps preserving legal comments, and CommonJS format now inlining import.meta. The test runner adds Vitest's global vi, --pass-with-no-tests and --only-failures flags. Package management improvements include .npmrc email authentication support, faster installs without peer dependencies, and selective hoisting via publicHoistPattern/hoistPattern for isolated installs. Node.js compatibility enhancements include FileHandle.readLines() in fs/promises. Numerous bundler, transpiler, WebSocket, MySQL, and Windows-specific bugs are resolved.

  4. 4
    Article
    Avatar of cypresscypress·27w

    Cypress Studio: No-Code Test Generation Now Built In

    Cypress Studio, a no-code test creation tool, is now available by default in Cypress 15.4.0 without requiring the experimentalStudio flag. The tool allows developers to record user interactions, add assertions through right-clicking, and edit test steps inline to generate end-to-end tests. Upcoming features include AI-powered test suggestions that will automatically generate assertions based on recorded actions. The release also introduces cy.prompt for natural language test generation (behind a feature flag), a command log option to hide HTTP requests, POSIX exit codes support, and various UI improvements to the test editing experience.

  5. 5
    Article
    Avatar of buildkiteBuildkite·28w

    Introducing Test Engine Workflows

    Buildkite Test Engine now includes workflows, a feature that automatically detects flaky tests using configurable monitors (transition count, passed on retry, probabilistic flakiness) and triggers custom actions like labeling, muting, sending notifications to Slack, or creating Linear issues. Teams can apply tag filters to monitor specific branches and create separate workflows for different test types or environments. The feature is available in public preview for Pro and Enterprise customers, with up to three workflows per suite.

  6. 6
    Article
    Avatar of mondaymonday Engineering·26w

    Unmasking a hidden singleton

    A load test on monday.com's AI Reports feature revealed a critical race condition caused by a hidden singleton pattern. When multiple users simultaneously generated reports, a WorkdocsAPIService registered as a singleton shared mutable state across concurrent requests, causing workdoc IDs to override each other and trigger 400 errors. The bug remained undetected in production due to low adoption rates and high pod count, which minimized collision probability. The investigation traced through multiple hypotheses before discovering the singleton registration issue, highlighting the importance of load testing, end-to-end concurrent testing, and preferring stateless class designs in asynchronous environments.

  7. 7
    Article
    Avatar of javarevisitedJavarevisited·24w

    JUnit 5 is dead, long live JUnit 6!

    JUnit 6 was officially released on September 30, 2025, marking a smooth evolution from JUnit 5 rather than a disruptive overhaul. The new version requires Java 17 as baseline, unifies version numbers across Platform, Jupiter, and Vintage modules, and adds full Kotlin 2.1+ support with suspend functions. Key improvements include inherited test ordering for nested classes, explicit nullability annotations via JSPECIFY, cleaner console output with control character handling, enhanced CSV parameterized tests with text blocks and comments, and a new fail-fast execution mode. The JUnit Vintage engine for JUnit 4 tests enters deprecation, signaling the end of legacy support after twenty years.

  8. 8
    Article
    Avatar of hnHacker News·28w

    Why TigerBeetle is the most interesting database in the world

    TigerBeetle is a financial transactions database built from scratch with modern distributed systems principles. It uses debits and credits as first-class primitives instead of SQL, achieving massive performance gains by packing 8,190 transactions into a single query. The database is written in Zig, distributed by default with Viewstamped Replication consensus, and handles storage faults through Protocol-Aware Recovery. TigerBeetle's development leveraged Deterministic Simulation Testing (DST) via their VOPR cluster running on 1,000 CPU cores, enabling them to build a Jepsen-validated system in just 3.5 years. Their engineering methodology, called TigerStyle, emphasizes assertions, static memory allocation, zero dependencies, and thinking deeply about performance during the design phase.

  9. 9
    Article
    Avatar of devtoDEV·25w

    My Top 7 Postman Offline Alternatives Every Developer Should Try

    Explores seven offline API testing tools as alternatives to Postman, addressing concerns about cloud dependency following recent AWS outages. The guide covers Apicat, Insomnia, Hoppscotch, Paw, Thunder Client, HTTPie, and RestClient, highlighting their offline capabilities, local storage options, and Postman compatibility. Each tool offers different approaches—from standalone clients to IDE extensions and command-line interfaces—enabling developers to test APIs without internet connectivity while maintaining control over their data and integrating with local development workflows.

  10. 10
    Article
    Avatar of softwaretestingmagazineSoftware Testing Magazine·26w

    Open Source Test Reporting Tools

    A comprehensive directory of open source test reporting tools for automated testing. Covers generic multi-language solutions like Allure Report, ReportPortal, and TestBeats that integrate with CI/CD pipelines, as well as language-specific tools for Ruby, JavaScript, Python, and other frameworks. Each tool provides features like HTML/PDF report generation, graphical dashboards, timeline tracking, and integration with testing frameworks such as Cucumber, JUnit, Jest, and Playwright.

  11. 11
    Video
    Avatar of techworldwithnanaTechWorld with Nana·24w

    From QA to DevOps - How I Learned DevOps to future-proof my career

    A senior test automation engineer shares his transition into DevOps to future-proof his career. He explains how traditional QA roles are evolving to require infrastructure skills like CI/CD, Docker, and Kubernetes. Through structured learning and hands-on projects, he successfully combined test automation expertise with DevOps knowledge, leading to freelance opportunities at higher rates. The discussion covers practical learning strategies, the importance of understanding tool integration over isolated skills, and why QA professionals need to adapt as AI automates basic testing tasks.

  12. 12
    Article
    Avatar of searlsJustin Searls·26w

    A cruel irony of coding agents is that…

    AI coding agents face a paradox: developers who historically avoided automated testing now instruct AI to follow test-driven development practices. However, since large language models were trained on decades of poorly written tests, the resulting AI-generated tests are equally problematic, perpetuating the cycle of low-quality test code.

  13. 13
    Article
    Avatar of laraveldevLaravel Dev·26w

    Laravel Seeder & Migration Best Practices

    Eight practical guidelines for managing Laravel database migrations and seeders effectively. Covers reversible migrations, avoiding edits to deployed migrations, preventing duplicate seeded data using methods like updateOrCreate, organizing seeders into focused classes, separating development and production seed data with environment checks, leveraging factories for test data, and using migrate:fresh --seed for clean rebuilds. Emphasizes idempotent seeders and maintaining clean database history for stable, reproducible environments.

  14. 14
    Article
    Avatar of cypresscypress·25w

    Now Available to Everyone: Write Cypress Tests in Natural Language with cy.prompt()

    Cypress has launched cy.prompt(), an experimental feature that allows developers to write end-to-end tests using natural language instead of code. The feature translates plain English descriptions of user journeys into executable Cypress commands, runs directly in the browser with full visibility, and includes self-healing capabilities to adapt to UI changes. It requires Cypress v15.4.0, a simple config flag, and a Cypress Cloud account. Tests can be ejected to regular code or kept as prompts for runtime self-healing, making test automation more accessible to non-technical team members while maintaining transparency and reliability.

  15. 15
    Article
    Avatar of collectionsCollections·24w

    Angular 21: A New Era of Testing with Vitest and Testronaut

    Angular 21 replaces Jasmine with Vitest as the default testing framework, chosen for its browser mode compatibility and alignment with the modern JavaScript ecosystem. The update includes stable zoneless mode implementation, deprecating legacy utilities like fakeAsync() in favor of fake timers. Additionally, Angular introduces Testronaut, a Playwright-based component testing runner that enables full browser testing without requiring Vite compilation. These changes modernize Angular's testing capabilities and improve integration with the broader JavaScript development ecosystem.

  16. 16
    Article
    Avatar of tiaThis is Angular·26w

    Ng-News 25/41: Future Testing Framework: Vitest or Jest?

    Angular's testing tooling is evolving, with recent pull requests suggesting a shift from Jest to Vitest as the future test runner. While multiple Vitest migration PRs have been merged, the Angular team clarifies no final decision has been made yet. The current official setup remains Jasmine and Karma, though Karma is deprecated. Meanwhile, Playwright 1.56 introduces AI-assisted testing with three agents (planner, generator, healer) to automate test creation and repair. Community resources include comprehensive guides on Angular SSR and performance optimization tips for Largest Contentful Paint.

  17. 17
    Article
    Avatar of heegh9lv7vd4adf6h7mepDixit Ram·24w

    How do you test your code?

  18. 18
    Article
    Avatar of jetbrainsJetBrains·26w

    The “10x” Commandments of Highly Effective Go

    Ten practical principles for writing effective Go code, covering package design, comprehensive testing, readable code structure, safe defaults, proper error handling, avoiding global state, structured concurrency patterns, environment decoupling, graceful error management, and actionable logging. Emphasizes writing reusable packages over standalone programs, using consistent naming conventions, implementing always-valid types, wrapping errors properly, and keeping concurrency confined. Includes specific recommendations for security (os.Root), memory efficiency, and using standard library features like slog and go:embed.

  19. 19
    Article
    Avatar of overreactedOverreacted·25w

    How to Fix Any Bug — overreacted

    A systematic approach to debugging is presented through a real-world example of fixing a scroll jitter bug in a React Router application. The methodology emphasizes creating reliable reproduction cases, narrowing them down incrementally, and maintaining discipline by only committing changes that preserve the bug. The process involves trading complex repros for simpler ones, ensuring each simplified version still captures the original issue, and systematically removing code until the root cause emerges. The bug turned out to be an outdated React Router version where ScrollRestoration triggered on revalidation instead of route changes.

  20. 20
    Article
    Avatar of justjavaJust Java·24w

    JUnit 6.0.0 — What's New, Why Migrate, and How to Use

    JUnit 6.0.0 was released on September 30, 2025, introducing breaking changes and modernization. The framework now requires Java 17 as the minimum baseline (dropping support for Java 16 and lower) and Kotlin 2.2. Key improvements include unified version numbering across Platform, Jupiter, and Vintage modules, JSpecify nullability annotations for better null safety, and Java Flight Recorder integration in the junit-platform-launcher module. The release removes obsolete APIs while delivering performance enhancements and improved consistency for modern Java development.

  21. 21
    Article
    Avatar of foojayioFoojay.io·26w

    7 habits of Highly Effective Java Coding

    Seven practical habits for Java developers using AI coding assistants effectively. Covers taking ownership of AI-generated code, providing rich context for better outputs, prioritizing maintainability over cleverness, validating dependencies for security risks, writing meaningful tests beyond coverage metrics, and conducting human-focused code reviews. Emphasizes that AI accelerates development but requires developer vigilance to ensure quality, security, and long-term maintainability.

  22. 22
    Article
    Avatar of sdtimesSD Times·26w

    Sabotage won’t save your job in the age of AI—but mastery will

    Nearly one-third of employees actively sabotage their company's AI initiatives, contributing to the 80% failure rate of corporate AI projects. Drawing parallels to the Industrial Revolution, the piece argues that resistance to AI in QA—such as clinging to manual testing methods—is futile. Instead, QA professionals should master AI-powered testing tools that can generate thousands of test scripts autonomously, expanding coverage 10X and finding more bugs. Those who learn to command AI tools will become indispensable, while those who resist will be left behind.

  23. 23
    Article
    Avatar of softwaretestingmagazineSoftware Testing Magazine·24w

    Free Load Testing Tools & Services

    A comprehensive comparison of free load testing tools and services available in 2025. Covers 10 platforms including Blazemeter, Grafana Cloud k6, Loader.io, and others, detailing their limitations on concurrent users, test duration, and features. Each service offers different constraints on virtual users (ranging from 10 to 50), test durations (30 seconds to 20 minutes), and capabilities. Most tools are JMeter-compatible and cloud-based, designed for testing web applications, APIs, and mobile apps under simulated user load from multiple geographic locations.

  24. 24
    Article
    Avatar of simonwillisonSimon Willison·27w

    Vibe engineering

    Introduces 'vibe engineering' as a term for experienced developers who use LLMs and coding agents productively while maintaining accountability for their code. Unlike 'vibe coding' (fast, irresponsible AI-driven development), vibe engineering requires senior-level skills: comprehensive testing, planning, documentation, version control, code review, QA, and research abilities. Coding agents like Claude Code, OpenAI's Codex CLI, and Gemini CLI enable parallel development workflows but demand top-tier engineering practices. AI tools amplify existing expertise rather than replace it, making traditional software engineering disciplines more important than ever.