SE Radio 632: Goran Petrovic on Mutation Testing at Google

Topics covered
Popular Clips
Questions from this episode
- Asked by 6 people
Episode Highlights
Developer Resistance
Developer resistance to mutation testing at Google initially stemmed from the overwhelming number of mutants generated, which could be daunting for engineers. recalls his early experiences with the tool, where the sheer volume of mutants made it impractical to review them all, leading to fatigue and disinterest 1. He emphasizes the importance of presenting information carefully to avoid overwhelming developers, as they might disable the tool if it becomes too cumbersome 2.
If they don't like your tool in two days, they will just disable it for them and then you lost a user.
---
To address these concerns, Google implemented strategies to filter and reduce the number of mutants, ensuring that developers could efficiently manage their workload.
Scalability Solutions
Scalability was a significant challenge for mutation testing at Google, given the vast number of tests and code changes. explains that aggressive suppression heuristics were employed to filter out unnecessary mutants, focusing only on lines of code that had changed in a pull request 2. This approach reduced the number of mutants by over 90%, making the process feasible even with Google's extensive infrastructure 3.
If you filter out most of the mutants, we call it aggressive suppression heuristics.
---
By leveraging caching and efficient compilation strategies, Google managed to maintain scalability without compromising the effectiveness of mutation testing.
Tool Optimization
Optimizing mutation testing tools involved identifying and eliminating unproductive mutants that did not contribute to meaningful test improvements. describes the process of encoding heuristics to filter out such mutants, which initially comprised a large portion of the output 4. This refinement increased the percentage of useful mutants to around 90%, significantly enhancing the tool's utility for developers 5.
We have to prune this somehow. And the first step was just to figure out what these unproductive mutants were.
---
With these optimizations, mutation testing became a more valuable resource, encouraging developers to write better tests and improve code quality.
Related Episodes


SE Radio 572: Gregory Kapfhammer on Flaky Tests
Answers 383 questions

Episode 474: Paul Butcher on Fuzz Testing
Answers 383 questions
SE Radio 633: Itamar Friedman on Automated Testing with Generative AI
Answers 383 questions

SE-Radio Episode 283: Alexander Tarlinder on Developer Testing
Answers 383 questions

SE-Radio Episode 360: Pete Koomen on A/B Testing
Answers 383 questions

SE-Radio Episode 256: Jay Fields on Working Effectively with Unit Tests
Answers 383 questions

SE Radio 577: Casey Muratori on Clean Code, Horrible Performance?
Answers 383 questions

SE Radio 603: Rishi Singh on Using GenAI for Test Code Generation
Answers 383 questions

SE-Radio-Episode-280-Gerald-Weinberg-on-Bugs-Errors-and-Software-Quality
Answers 383 questions

SE Radio 562: Bastian Gruber on Rust Web Development
Answers 383 questions

SE-Radio Episode 276: Björn Rabenstein on Site Reliability Engineering
Answers 383 questions

SE-Radio Episode 251: Martin Klose on Code Retreats
Answers 383 questions

SE Radio 647: Praveen Gujar on Gen AI for Digital Ad Tech Platforms
Answers 383 questions

SE Radio 649: Lukas Gentele on Kubernetes vClusters
Answers 383 questions

SE-Radio Episode 330: Natalie Silvanovich on Attack Surface Reduction
Answers 383 questions













