Property-based тестирование: как находить баги, которые вы не придумали

Классический unit-тест — это «вход X → ожидаю Y». Вы придумали кейс, зафиксировали ожидание, поехали. Проблема в том, что баги обычно живут не в кейсах, которые вы придумали, а ровно в тех, до которых не дотянулась фантазия: пустая строка, эмодзи, дубликаты, отрицательный ноль, перевод строки внутри значения, целочисленное переполнение. Property-based testing (PBT) переворачивает подход: вы описываете свойство — утверждение, которое должно быть истинно для любого корректного входа, — а фреймворк сам генерирует сотни случайных входов и пытается это свойство опровергнуть. Нашёл контрпример — ужимает его до минимального («shrinking») и показывает вам.

https://habr.com/ru/articles/1050850/

#propertybased_testing #Hypothesis #тестирование #QA #автотесты #Python #shrinking #fastcheck

Property-based тестирование: как находить баги, которые вы не придумали

Тесты на примерах проверяют те случаи, до которых вы додумались. Property-based тесты проверяют тысячи случаев, до которых вы НЕ додумались, — и при падении сами ужимают вход до минимального...

Хабр

Аудит алгоритмов: как реализация Boyer-Moore с 190K звёзд на GitHub оказалась brute-force

Проверил реализацию Boyer-Moore в TheAlgorithms/Python (190K+ звёзд). Оказалось, что сдвиг bad character записывается в переменную for-цикла, что в Python не имеет эффекта. Алгоритм выдаёт правильные результаты, но работает как brute-force O(nm) вместо O(n/m). Плюс ещё две находки: бесконечный цикл в типичных реализациях full BM и ошибка в оригинальной статье 1977 года, которую исправили только в 1980-м.

https://habr.com/ru/articles/1050180/

#алгоритмы #BoyerMoore #Python #тестирование #баги #open_source #propertybased_testing #строковый_поиск

Аудит алгоритмов: как реализация Boyer-Moore с 190K звёзд на GitHub оказалась brute-force

В 2015 году группа исследователей ( Flouri et al. ) решила проверить реализации классического алгоритма Готоха (1982) для выравнивания биологических последовательностей. Из 10 проверенных реализаций...

Хабр

Аудит алгоритмов: как реализация Boyer-Moore с 190K звёзд на GitHub оказалась brute-force

Проверил реализацию Boyer-Moore в TheAlgorithms/Python (190K+ звёзд). Оказалось, что сдвиг bad character записывается в переменную for-цикла, что в Python не имеет эффекта. Алгоритм выдаёт правильные результаты, но работает как brute-force O(nm) вместо O(n/m). Плюс ещё две находки: бесконечный цикл в типичных реализациях full BM и ошибка в оригинальной статье 1977 года, которую исправили только в 1980-м.

https://habr.com/ru/articles/1050180/

#алгоритмы #BoyerMoore #Python #тестирование #баги #open_source #propertybased_testing #строковый_поиск

Аудит алгоритмов: как реализация Boyer-Moore с 190K звёзд на GitHub оказалась brute-force

В 2015 году группа исследователей ( Flouri et al. ) решила проверить реализации классического алгоритма Готоха (1982) для выравнивания биологических последовательностей. Из 10 проверенных реализаций...

Хабр

Property-based testing на практике: как находить баги, о которых вы не подумали

Тридцать зелёных юнит‑тестов ещё не означают, что код готов к продакшену. Баги часто прячутся в данных, которые никто не догадался проверить вручную: пустых строках, дубликатах, редком Unicode и неожиданных последовательностях операций. Разбираемся, как Hypothesis генерирует такие случаи, проверяет свойства вместо отдельных примеров и сводит падение к минимальному контрпримеру.

https://habr.com/ru/companies/otus/articles/1044964/

#propertybased_testing #Hypothesis #автоматизация_тестирования #генерация_тестовых_данных #Python #инварианты #контрпримеры #statefulтестирование #стратегии_Hypothesis #поиск_багов

Property-based testing на практике: как находить баги, о которых вы не подумали

Вы написали тридцать юнит-тестов, подобрали входы руками, всё зелёное, релиз уезжает. Через неделю прод падает на пустой строке, на отрицательном нуле, на числе чуть больше int32, на юникоде с...

Хабр

[Перевод] Claude против краевых случаев: как LLM-агент нашёл баги в NumPy и других Python-библиотеках

Исследователи Anthropic собрали LLM-агента, который читает код Python-библиотек, сам формулирует свойства, пишет property-based тесты на Hypothesis и ищет контрпримеры. В результате он нашёл баги в NumPy, aws-lambda-powertools, tokenizers и других проектах — часть патчей уже приняли мейнтейнеры. Разбираемся, как работает такой агент, почему property-based тестирование хорошо подходит для LLM и где у подхода пока границы.

https://habr.com/ru/companies/otus/articles/1045852/

#propertybased_testing #тестирование_на_основе_свойств #Claude #LLMагенты #hypothesis #автоматизация_тестирования #поиск_багов #pythonбиблиотеки #NumPy

Claude против краевых случаев: как LLM-агент нашёл баги в NumPy и других Python-библиотеках

Мы разработали агента, который умеет эффективно находить баги в крупных программных проектах. Для этого агент выводит общие свойства кода, которые должны выполняться, а затем применяет тестирование на...

Хабр