How well do agents use test/verification techniques? A new evaluation of 26 prompt conditions for coding agents implementing Zstd in Rust found that simple instructions to use specific testing techniques or libraries did not improve implementation correctness, with the author predicting TDD would underperform and formal methods would not overperform. The study, which also tested four skills including the ECC Rust test skill with 250k GitHub stars and 38k forks, suggests that default developer practices may be contributing to worsening software quality. We previously noted that, while it's easier than ever to hit a particular quality bar by having coding agents use effective test techniques, software quality seems to be getting worse /ai-coding/ , indicating that whatever defaults developers are using may not work very well. Here, we test if simple instructions to agents to use particular techniques or libraries improve implementation correctness. Here, we re-use the Zstd implementation eval discussed in this comparison of agentic programming language effectiveness /pl-tokens/ and, instead, compare different testing techniques and testing libraries when agents are given a prompt to implement Zstd with different addendums, such as "Use test-driven development", "Use Lean 4", "Use QuickCheck", "Use property-based testing", etc. I also ran some other evals, such as on the IMAP RFC, which are briefly discussed. All implementations were in Rust. The 26 prompt conditions tested were ACL2, Adaptive agents asked to use the best technique , Alloy, "Audit and fuzz risky areas", "Audit first", Creusot, Default no additional instructions , Differential testing, Fuzzing, Hegel, Insta, Kani, Lean 4, "Make no mistakes", Metamorphic testing, Mutation testing, Property-based testing, Proptest, QuickCheck, rstest, Rust built-in test framework, SMT solvers with Z3, cvc5, and Yices, all available , Spin, TDD, TLA+, and Verus. Additional, 4 skills were tested: Hegel with the official Hegel skill https://github.com/hegeldev/hegel-skill/blob/ef36dc6b26a6dc0fdfdab5476b1affff37552ef0/skills/hegel/SKILL.md , the ECC Rust test skill https://github.com/affaan-m/ECC/blob/e04ea0b9cc8248686edf5ac751cadff550e162b8/skills/rust-testing/ ECC is a collection of skills with 250k GitHub stars and 38k forks , the Trail of Bits property test skill https://github.com/trailofbits/skills/blob/d3323cefbcf645678b8dc481de204b02ad3d02dc/plugins/property-based-testing/skills/property-based-testing/SKILL.md , and a test skill I wrote I'm a luddite who uses prompts instead of skills and have no feel for how to write a good skill . Other than my skill, the skills were chosen because those were the top skills codex turned up when asked to find relevant skills. Predictions I pre-registered some guesses on how conditions will do: - TDD will underperform 55% confidence - I actually added TDD specifically because I thought it would underperform - My confidence is low here because I don't know what agents will do when instructed to do TDD; perhaps agents won't do TDD and will do something that doesn't underperform or perhaps I'm wrong about TDD underperformance - Formal methods will not overperform 52% confidence - My thought here is that formal methods are effective and useful more so now than ever , good test methods are also effective and useful and, on simple problems, formal methods shouldn't outperform if used at a similar level of competence - As with the above, but even more so, my confidence is low here because I don't know what agents will do when instructed to do anything, and formal methods have been more hyped than effective test techniques for agentic coding, so it's entirely plausible that labs have trained agents with RL environments with synthetic data which trains them to be very effective with formal methods without having trained agents to be effective with good test techniques which I would expect to be easier to do, but not done because of how relatively untrendy effective test techniques are - Make no mistakes will not outperform no instructions 95% confidence - It's a joke, and one that a lot of people have tried. If it worked, surely people would've noticed? - The ECC test skill with 250k stars and 38k forks will not outperform 65% confidence - It's somewhat big and doesn't have any information I'd expect to be useful. It instructs agents to use TDD; to the extent that it gets agents to use TDD, I'd expect this to make things worse and it's more directive than the TDD condition and perhaps more likely to succeed, although for all I know that makes it less likely to succeed ; the rest of the information doesn't seem useful and has some cost - All of my skill predictions are low confidence because I don't tend to use skills and don't know how to really evaluate them. I'm thinking of this like, "how effective would it be if I passed the text in as a prompt and had this thing floating around in the LLM's context window?" - Hegel's skill will not outperform 65% confidence - It's very big the SKILL.md plus the linked Rust reference are over 20k tokens and reads more like a tutorial than agent instructions - The Trail of Bits test skill will not outperform 55% confidence - It has what looks like it might be useful information, but it's also fairly big Overall results Below, we have a very messy graph which shows the results for the conditions tested codex with GPT-5.6 Sol, with medium and xhigh efforts . When looking at data, I tend to prefer much denser and messier graphs than most people, such as the first graph here /android-updates/ . Because most people find these kinds of graphs unreadably messy, I tend to split information out into a series of graphs, each of which shows less information, when presenting information to others. For reasons discussed elow, I'm not going to do this here and am just going to present this extremely messy graph where we have cost on the x axis and the fraction of runs that passed 100% of the hidden tests on the y axis, average of 80 runs from each condition and effort mousing over items shows bootstrap covariance, 50% uncertainty https://statmodeling.stat.columbia.edu/2016/11/05/why-i-prefer-50-to-95-intervals/ , and there's some attempt at making like things similar colors, e.g., blue-ish for formal methods, green-ish for property-based testing, etc. : One thing we can see is that nothing really wildly outperforms. However, Default no additional instructions does well above average. Looking at xhigh, on average, the fuzzing and PBT-related conditions did a little better than formal methods on average, with the situation being a lot more mixed at medium. The testing-related skills codex recommended we try underperformed, although our quick custom skill did ok a major difference is that our skill is designed to nudge away from their default behavior towards more productive behaviors whereas the other skills seem more like tutorials . TDD didn't do well, as predicted one skill also suggested that agents used TDD, and that skill also fared poorly in the cases where agents attempted to follow the instruction . If we actually look at what agents did, it quickly becomes apparent that, in general, agents don't know how to use these tools or techniques very well. As we noted here /ai-coding/ , and as everybody I've talked to has also noted, agents are really bad at testing and don't seem to understand how to test reasonably "by default". For example, here's a comment by Gary Bernhardt https://x.com/garybernhardt/status/2067002665427775613 : AI agents' approach to testing, more or less: Take the pathological cases dreamed up by someone objecting to mocks 15 years ago, without ever having actually used mocks. Naive dreams of excessive mocking. Make those pathologies the backbone of your testing strategy. It turns out, if you ask agents to use a particular test technique or test library, this approach doesn't change as much as you'd hope. We'll look at what happened in cases in more detail, but at a high level, with test techniques, agents tend to either just write the tests they would normally write, but inside a framework for a different type of test technique, or they'll use a technique superficially but not really do the things that get the value out of the technique. For the most part, when a technique was named, they did what Gary described, but with respect to that technique for example, for formal methods, they mostly proved irrelevant properties . I'm curious why AI labs haven't created RL envs to get agents to learn how to test well since software not working reasonably seems important for coding agent adoption and it also seems like the kind of thing that's amenable to RL. As we previously saw, agents have gotten quite good at bounded runtime optimization problems /perf-opt/ , which makes sense because that's exactly the kind of thing you cheaply create a ton of RL envs to train on. Maybe this is one of those things that's harder than it seems when you try it, but creating RL envs for effective testing and test techniques seems like it's in the same class of problem. Perhaps the limiting factor is just that knowledge of effective test techniques /testing/ isn't very widespread, so no one's thought to try it and people are getting agents to test inefficiently for example, by doing standard unit testing