UCI fuzzing / stress testing

Discussion of chess software programming and technical issues.

Moderator: Ras

benvining
Posts: 22
Joined: Fri May 30, 2025 10:18 pm
Full name: Ben Vining

UCI fuzzing / stress testing

Post by benvining »

I'm aware of tournament manager tools like fastchess/cutechess, but I'm wondering if there are any tools that are designed to stress test an engine's conformance to UCI. Perhaps by doing things like sending commands with arbitrary amounts of whitespace between tokens, sending unknown commands to make sure they're just ignored, etc.
ngocnhungplaza
Posts: 1
Joined: Sun Jun 08, 2025 10:09 am
Full name: Ngoc Nhung

Re: UCI fuzzing / stress testing

Post by ngocnhungplaza »

Good question. I’ve done some informal fuzzing myself using custom scripts that push malformed or unexpected UCI commands — things like extra whitespace, rapid position/go sequences, or even unknown keywords. Some engines handle this gracefully, others don’t. I don’t know of a dedicated UCI fuzzing tool, but writing a basic Python script around a socket interface can get you pretty far if you're looking to test edge cases.
Hello I'm NgocNhung.
benvining
Posts: 22
Joined: Fri May 30, 2025 10:18 pm
Full name: Ben Vining

Re: UCI fuzzing / stress testing

Post by benvining »

I see. Coming from a background in audio plugin development, we have https://github.com/Tracktion/pluginval, so I was hoping there would be a similar tool for chess engines. Perhaps I'll start working on one, maybe others would be interested in contributing.
User avatar
flok
Posts: 558
Joined: Tue Jul 03, 2018 10:19 am
Full name: Folkert van Heusden

Re: UCI fuzzing / stress testing

Post by flok »

benvining wrote: Wed Jun 04, 2025 8:47 pm I'm aware of tournament manager tools like fastchess/cutechess, but I'm wondering if there are any tools that are designed to stress test an engine's conformance to UCI. Perhaps by doing things like sending commands with arbitrary amounts of whitespace between tokens, sending unknown commands to make sure they're just ignored, etc.
https://github.com/Disservin/fastchess does that