@@ -458,6 +458,20 @@ Fuzzing тестирование - это тестирование случай
1. Добавление в SQL диалект ClickHouse функций для генерации случайных данных (пример - случайные бинарные строки заданной длины, случайные валидные UTF-8 строки) и "порчи" данных (например, поменять значения случайных бит с заданной частотой). Это будет использовано для тестирования SQL-функций ClickHouse.
Можно добавить функции:
`randomString(length)`
`randomFixedString(length)`
- строка заданной длины с равномерно распределёнными случайными байтами;
`randomStringASCII(length)`
`randomStringUTF8(length)`
`fuzzBits(s, inverse_probability)` - изменить каждый бит строки на противоположный с заданной вероятностью;
`fuzzBytes(s, inverse_probability)` - изменить каждый байт строки на равномерно случайный с заданной вероятностью;
У каждой функции опциональный аргумент против склейки одинаковых выражений в запросе.
Также можно сделать функции с детерминированным генератором случайных чисел (аргументом передаётся seed) для воспроизводимости тестовых кейсов.
### 7.24. Fuzzing лексера и парсера запросов; кодеков и форматов.