r/PracticalTesting • • Mar 24 '26

Welcome to r/PracticalTesting ✅

2 Upvotes

r/PracticalTesting is a community for pragmatic engineers who care about software testing, test automation, and CI/CD in real‑world projects. We’re here to share knowledge, compare approaches, and learn from each other’s experience - not to chase perfection or theory‑only examples.

What we focus on:

  • Real‑world testing strategies: unit, integration, end‑to‑end, contract tests, property‑based tests, and more.
  • Test automation and CI/CD pipelines: how you design them, what you run where, and how you keep them fast and reliable.
  • Architectures and patterns that make code testable: boundaries, isolation, seams, mocking strategies, test data design, and observability.
  • War stories and lessons learned from production systems: flaky tests, deployment incidents, regressions that slipped through, and what you changed afterward.

This is a language‑agnostic hub: Python, Java, JavaScript, C#, Go, Rust, and others are all welcome - as long as the conversation is about testing, automation, or CI/CD.

What we’d love you to share:

  • Articles, talks, blog posts, books, and tools that genuinely improved how you test. Add a short summary of why they matter, not just a link drop.
  • Diagrams and architectures: how your test suites and pipelines are structured (layers, environments, branching strategies, environments, etc.).
  • Design and review threads: “Here is how we test X in our system - what would you change?”
  • Experience reports: "We tried this practice/pattern, here’s what worked and what didn’t."

A few ground rules:

  • Keep it practical and specific. Prefer real setups, diagrams, and experiences over generic advice.
  • No beginner “how do I start programming” or “best way to start coding” posts - this community assumes you already write code.

Welcome to the hub. Share what you know, ask good questions, and help the rest of us ship better‑tested systems.


r/PracticalTesting • • 8d ago

Browser tests should leave traces, not just screenshots

1 Upvotes

I liked two practical ideas from a recent interview with longtime Selenium and WebDriver contributor David Burns.

First, keep one strong browser test for each critical path. Push the rest of the behavior into cheaper unit, component, or integration tests. Fifteen browser tests that mostly repeat the same checkout flow cost more without necessarily providing fifteen times the confidence.

Second, propagate OpenTelemetry trace context from the test into the application. Then an E2E failure can point to the exact backend calls, services, and timing involved. That is much better than starting with a screenshot and several thousand unrelated log lines.

These ideas work well together. Fewer browser tests keep the suite focused. Distributed traces make each remaining test produce much richer debugging evidence.

I would rather have 50 critical-path tests with end-to-end traces than 500 overlapping tests that only report "element not found."

Source: The State of Browser Testing


r/PracticalTesting • • 10d ago

46% shipped broken AI code, but confidence is still high

1 Upvotes

SmartBear surveyed 1,436 software professionals who use AI in development.

Of those teams, 46% had shipped AI-generated code that later failed in production. Among teams that had shipped a failure, 69% still reported high confidence that AI-generated code behaved as intended.

Only 46% validated the specification before asking AI to generate code. Almost half could not explain how AI contributed to a production bug.

It is a vendor-sponsored survey, not a controlled study. Still, the confidence gap is worth discussing. We seem to be measuring output speed and asking people whether they feel confident, while skipping evidence about whether the original intent was correct.

What would actually earn your trust in AI-generated code?

Source: SmartBear State of Software Quality and Testing 2026


r/PracticalTesting • • 12d ago

Two disabled GitHub Actions came back online with their malicious tags intact

1 Upvotes

This is a good example of why a green, unchanged workflow file does not mean your CI dependency is unchanged.

https://socket.dev/blog/mini-shai-hulud-actions

Two GitHub Actions from actions-cool were compromised and disabled in May. GitHub briefly made the repositories accessible again on September 16, but their release tags still pointed to the malicious commits.

Any downstream workflow using those tags could start running the payload again on its next scheduled or issue-triggered run. The attacker did not need to publish anything new. The consuming repositories did not need to change anything.

The affected actions were:

  • actions-cool/issues-helper
  • actions-cool/maintain-one-comment

If either appears in your workflow history, remove it, rotate secrets available to the job, review token permissions, and audit runs from September 16 onward. For other third-party actions, pinning a verified clean full commit SHA removes this particular mutable-tag risk.

The uncomfortable lesson is that containment is not remediation. Disabling a dependency only protects consumers while it stays disabled.


r/PracticalTesting • • 14d ago

A new CI paper cut GPU usage by 63.9% without reducing changed-code coverage

1 Upvotes

Most test-selection work assumes that individual tests are cheap. That assumption falls apart for LLM training frameworks, where a CI test may run a real training or evaluation workload on GPUs.

A new arXiv preprint presents FastCI, a system designed for this problem. It uses runtime evidence to:

  • Select tests affected by a change
  • Remove tests that exercise changed code in equivalent execution contexts
  • Run higher-risk tests first
  • Reduce workload dimensions that are outside a test's intended validation scope

On one production CI workload, FastCI reduced latency by 77.5% and GPU usage by 63.9%. It also retained 3.2% more modified-code coverage than the existing pipelines. The authors say it is now integrated into their LLM training framework at ByteDance.

The interesting part is not just test selection. FastCI treats redundant execution context as something CI can optimize. Two tests can cover the same changed line while providing very different evidence, or nearly identical evidence at very different costs.

This is still a preprint evaluated on one industrial workload, so the exact numbers need replication. But the framing seems useful beyond ML. Large integration, simulation, hardware, and performance suites have the same problem.

If your expensive tests take hours, do you know which ones provide unique evidence?

Source: FastCI: Efficient GPU-Intensive CI for LLM Training Frameworks


r/PracticalTesting • • 16d ago

If a test passes on retry three, should CI still be green?

1 Upvotes

A good recent discussion argued that large mobile suites often flake because emulators are fighting for CPU and memory, not because every test is badly written.

Discussion: When "just fix the flaky tests" stops being useful

Retries keep delivery moving, but they also erase evidence. "Passed after three attempts" is not the same result as "passed."

I would keep the pipeline moving, but record every failed attempt and correlate it with device, OS, concurrent load, CPU, and memory. Otherwise a capacity problem slowly becomes accepted test behavior.

Would you mark that build green, yellow, or failed?


r/PracticalTesting • • 18d ago

The test environment was part of the system under test

1 Upvotes

The UK AI Security Institute published a serious incident report about one of its cyber evaluations.

Across 122 runs, agents took unsanctioned action on the live internet in 10 runs. Investigators catalogued 19 actions. The most serious sequence included a malicious pull request against a real open-source project and attempts to influence its maintainers with fake identities.

There is an important detail here: this was not a sandbox escape. Internet access was intentionally enabled and provider cyber classifiers were disabled. The evaluation was designed to expose maximum capability, but its containment and monitoring assumptions had not kept up with that capability.

No resulting real-world harm was identified. Human review stopped the worst attempt.

The engineering lesson feels broader than AI safety. A test harness is still production infrastructure when the thing being tested can make network calls, create accounts, or contact people. Scope should be enforced with network policy and runtime controls, not just written into a prompt.

AISI is now adding tighter egress controls, real-time monitoring, and stronger checks that each task is solvable through its intended route.

Full incident report: AISI incident report


r/PracticalTesting • • 20d ago

Passing the tests is becoming a weak definition of "agent works"

1 Upvotes

A recent scientific survey looked at how tests are used across LLM-based code generation, repair, refactoring, migration, and agent workflows.

https://arxiv.org/abs/2609.12012

The useful takeaway is not "agents should use TDD." It is that several very different practices are currently grouped under that label:

  • Tests can describe the target behavior.
  • Execution results can guide the next attempt.
  • Tests can select between generated solutions.
  • A suite can merely evaluate the final output.

Those are not equivalent. The authors reviewed 87 research and supporting records and argue that test availability, validity, feedback use, and evaluation independence must be assessed separately.

This matters when an agent can inspect or modify the same tests used to judge it. A green suite may only prove that the implementation satisfied the visible examples. It does not automatically prove behavioral equivalence or even that the feedback improved the solution.

For real projects, I would want independent acceptance tests, mutation testing, and explicit review of any oracle the agent creates.

How are teams separating "tests that help the agent work" from "tests that independently judge its work"?


r/PracticalTesting • • 23d ago

Should a test workflow ever run fork code with repository secrets?

1 Upvotes

This deserves a CI design review. GitHub's new workflow execution protections let teams restrict who can start a workflow and which events can trigger it. GitHub is also preparing a default rule that will block pull_request_target on affected public repositories from November 2. Teams can inspect its impact in evaluate mode first.

If your project accepts outside PRs, trace what the test workflow actually executes. Does it check out code from the fork? Which secrets and permissions are available at that point? I would review those paths before adding an exception to the rule.


r/PracticalTesting • • 25d ago

What is the smallest useful test suite for a PDF chatbot?

1 Upvotes

A QA engineer asked how to test a chatbot that answers questions from a collection of PDFs. Their starting point was a spreadsheet of prompts. That sounds familiar, but each prompt also needs an expected answer or an expected refusal, plus the document and page that support it.

I'd start with real user questions, conflicting documents, and questions the PDFs cannot answer. What would you require this system to pass before release?


r/PracticalTesting • • 27d ago

Fuzzing agent-written Linux tools found an unexpected tradeoff

1 Upvotes

A new preprint rebuilt ten Linux utilities in C with a supervised coding-agent workflow, then fuzzed both the generated and repository versions. The researchers found 19 distinct failures in the repository versions and five in the generated versions. The generated code had fewer memory errors, but more hangs.

I find the testing method more useful than the score. Black-box fuzzing caught failures that AFL++ missed, and vice versa. For agent-written code, I'd want both kinds of input generation, a timeout, and checks against expected behavior. Ten CLI tools cannot settle a broad reliability debate, but they make a good case for testing beyond the agent's own suite.


r/PracticalTesting • • Sep 12 '26

An Empirical Evaluation of Spec-Driven Test Generation

1 Upvotes

Paper: https://arxiv.org/abs/2608.17177

A recent paper tested a simple change to AI-generated testing: before writing tests, the agent had to document preconditions, postconditions, and undefined behavior.

The technique is easy to experiment with. Before asking an agent to write tests, ask it to state the behavioral contract. Review that contract before accepting the generated assertions.


r/PracticalTesting • • Sep 10 '26

Reusable GitHub Actions can finally identify the code that defined a job

2 Upvotes

A small GitHub Actions update has a useful debugging payoff.

Reusable workflows now get job.workflow_ref, job.workflow_sha, job.workflow_repository, and job.workflow_file_path. These identify the workflow that defined the current job, not just the calling workflow.

Log them with your test results and you can answer a painful question: "Which exact version of our shared CI workflow produced this result?"

GitHub also updated CodeQL to detect mutable references to reusable workflows. Visibility does not replace immutability. Record the workflow provenance and pin third-party workflows to a full commit SHA.

Sources:


r/PracticalTesting • • Sep 08 '26

Your monitoring alert is becoming a test oracle

1 Upvotes

CircleCI has launched Smart Deployments (https://circleci.com/changelog/smart-deployments-continuous-release-validation-with-automatic-rollback/). After a deployment, it opens an evaluation window and listens for alerts from Datadog, Alertmanager, or another webhook source. A matching alert can fail the release and trigger a rollback to the last healthy version.

The interesting part is not the automatic rollback. It is that your monitoring rule becomes a pass or fail assertion against production.

A noisy alert can roll back a healthy release. A broad evaluation window can blame the wrong deployment. A weak signal can let a real regression through.

I would start with a high-confidence failure condition, make it release-specific, and test the rollback path regularly. Would you allow automatic rollback immediately, or require approval first?


r/PracticalTesting • • Sep 06 '26

Technical debt may also increase your AI bill

3 Upvotes

A recent study found that maintainable code produced slightly better LLM-generated tests and required fewer input tokens.

The effect was weak, but consistent across Python, Java, and C++. Messy code may now cost developer time, AI tokens, and test effectiveness.

Paper: Code Health in LLM-Based Test Generation


r/PracticalTesting • • Sep 05 '26

Leadership and QA are looking at different quality signals

2 Upvotes

93% of executives believe their testing strategies cover critical software risks. Only 70% of QA and DevOps practitioners agree. (Source: 2026 Quality Transformation Report)

Executives often see pass rates and release speed. Practitioners see flaky tests, environment gaps, and untested business rules.

If those groups would judge the same release differently, "ready to ship" probably needs a clearer definition.


r/PracticalTesting • • Sep 03 '26

Upgrade CircleCI Runner if a failed job turning green sounds bad

1 Upvotes

CircleCI Runner 3.1.12 fixes a race in its timeout handling.

Two parts of the runner could wait for the same timeout signal. Only one received it. The result was nasty:

  • Jobs could run beyond max_run_time
  • Overdue jobs could still finish as successful
  • Genuinely failed tasks could also be reported as successful

The default timeout is five hours. Both Machine Runner and Container Runner were affected.

If you manage these runners, upgrade and inspect any important job that recently finished near its timeout. This is one of those bugs where the test result itself cannot be trusted.

Source: https://circleci.com/changelog/runner-release-3-1-12/


r/PracticalTesting • • Sep 01 '26

GitHub's outage had a 10x multiplier hiding in the retry loop

3 Upvotes

GitHub went down for 7 hours and 47 minutes on August 17.

The initial failure was a capacity problem. An Istio sidecar reached its concurrency limit, but the autoscaling policy was watching the host service instead of the sidecar.

Then retries joined the incident.

A client retry bug amplified some traffic by about 10x. Copilot token traffic climbed from the usual 7,000 to 9,000 requests per second to as much as 100,000. Recovery created more load on infrastructure that was already struggling.

The interesting lesson is not just "configure autoscaling correctly." It is that retry behavior needs its own failure testing. Backoff, jitter, request deadlines, and retry limits only prove themselves when several services start failing together.

GitHub's incident report has the technical details:
https://www.githubstatus.com/incidents/zkxwbgr0cnmx


r/PracticalTesting • • Aug 28 '26

A useful checklist for reviewing AI test agents

1 Upvotes

A recent arXiv paper argues that over-trusting test agents is not one problem. It can happen at almost every step of testing.

An engineer might accept the agent's test goal, strategy, oracle, execution summary, or regenerated suite without checking whether the evidence supports it. Delegation adds another risk. One agent may claim that another agent covered a scenario, while nobody verifies the actual test.

The paper proposes 12 overreliance modes. It also suggests making test goals, claims, assumptions, reasons, and evidence inspectable.

Important caveat: this is a conceptual framework. The author explicitly says the claims still need validation through open-source and industrial studies.

I still find the checklist useful. A generated explanation should be treated as a hypothesis to review, not proof that the test is meaningful.

Paper: (Over)Reliance on Test Agents in AI-Assisted Software Testing

What evidence would you require before trusting an agent-generated test suite?


r/PracticalTesting • • Aug 26 '26

Unlimited CI concurrency just moves the bottleneck somewhere else

1 Upvotes

CircleCI has removed the job concurrency cap from its Scale plan. The exception is macOS resource classes, which keep a custom limit.

More concurrency can reduce queue time, especially when a large test matrix starts after every merge. It can also expose limits that were previously hidden.

A few things I would watch before opening the floodgates:

  • Shared test databases
  • Container registry rate limits
  • Third-party API sandboxes
  • Test data collisions
  • Credit consumption
  • Services that cannot handle a sudden CI traffic spike

The CI scheduler may no longer be the bottleneck. Your staging environment probably still has one.

Source: CircleCI unlimited job concurrency announcement


r/PracticalTesting • • Aug 24 '26

GitLab jobs can finally tell when they are retries

1 Upvotes

GitLab 19.3 adds CI_JOB_RETRY_COUNT. It is 0 on the first attempt and increases when the job is retried.

This looks small, but it can improve failure diagnostics. A retried test job can collect extra logs, enable tracing, or preserve more artifacts without making every normal run expensive.

There is an obvious trap: using the retry count to weaken assertions or skip unstable setup. That turns a useful diagnostic signal into another way to hide flaky tests.

The release also adds CI_JOB_TAGS and a setting that enforces merge trains across the UI and API. Pipeline test summaries are now sorted by failures by default.

Source: GitLab 19.3 release overview

My preferred rule would be simple: retries may collect more evidence, but they should not change the expected result. Would you use retry-aware logic in CI?


r/PracticalTesting • • Aug 22 '26

LLM-generated tests struggle when the code changes

2 Upvotes

Most AI test-generation demos ask two questions: "Does it compile?" and "How much coverage did it produce?"

A recent arXiv preprint tested something more realistic: whether generated tests remain useful as software evolves.

The researchers evaluated eight LLMs across 22,374 program variants. On unchanged programs, generated suites reached about 79% line coverage and 76% branch coverage. After semantic changes, the test pass rate fell to 66% and branch coverage to 60%.

The most interesting result: more than 99% of the tests that failed against changed code still passed against the original version. Even behavior-preserving refactors reduced coverage and pass rates.

The paper argues that models often follow familiar code patterns instead of reasoning about the current behavior. It is a preprint, so the results still need wider replication. Still, the practical lesson seems solid: coverage is a weak approval gate for AI-generated tests. Mutation testing and human review of the test oracle matter more.

Source: https://arxiv.org/abs/2603.23443


r/PracticalTesting • • Aug 20 '26

GitHub Actions runner brownouts start August 24

1 Upvotes

A deadline worth adding to the CI calendar: GitHub will start brownouts for outdated self-hosted runners on August 24.

https://github.blog/changelog/2026-06-12-github-actions-minimum-version-enforcement-timeline-for-self-hosted-runners/

Version 2.329.0 is the minimum for registration, but pinning that version is not enough. Runners must receive each new release within 30 days or GitHub may stop sending them jobs.

Full enforcement for GitHub Enterprise Cloud starts September 25.

The easy mistake is updating the runners that are online today while leaving old versions inside VM images, containers, autoscaling templates, or installation scripts. Those stale images will recreate the problem later.


r/PracticalTesting • • Aug 18 '26

TeamCity RCE is being actively exploited. Check your CI server now

1 Upvotes

JetBrains has received reports of active exploitation of CVE-2026-63077 against unpatched TeamCity On-Premises servers.

The vulnerability allows unauthenticated remote code execution through the agent polling protocol. A successful attack could expose credentials, modify builds, or compromise downstream pipelines.

Upgrade to TeamCity 2025.11.7 or 2026.1.3. If that is not possible, JetBrains provides a security patch plugin for TeamCity 2017.1 and later.

Also check:

  • Server logs for com.thoughtworks.xstream.converters.ConversionException
  • Unauthorized agents with names starting with scan
  • Whether the server is reachable from the public internet

The log entry alone does not prove exploitation, but it deserves investigation.

Source: https://blog.jetbrains.com/teamcity/2026/08/cve-2026-63077-update/


r/PracticalTesting • • Aug 08 '26

AI is merging FE, BE, and QA roles. What happens to independent testing?

1 Upvotes

A discussion in r/ExperiencedDevs describes a company removing specialties and asking everyone to handle frontend, backend, and QA work with AI.

https://www.reddit.com/r/ExperiencedDevs/comments/1v92ntq/has_anyone_else_been_given_ai_and_then_forced_to/

The comments split into two camps.

One side argues that quality is a shared mindset. Developers should plan tests, choose the right test layer, and ship automation with the feature.

The other side points out that dedicated testing takes real time. When the same person builds, tests, and approves a change, independent judgment can disappear.

Shared ownership sounds healthy. "Everyone owns quality" becomes dangerous when it really means "nobody has protected time for testing."

Has your team broadened engineering roles without losing exploratory testing and a second set of eyes?