Hacker News Digest

Тег: #property-based-testing

Постов: 2

Hypothesis: Property-Based Testing for Python (hypothesis.readthedocs.io)

Hypothesis 6.145.1 — это библиотека для property-based тестирования в Python. Вместо написания тестов для конкретных входных данных, разработчики описывают диапазон входных значений, а Hypothesis самостоятельно генерирует случайные тесты, включая граничные случаи, которые могли быть упущены. Пример тестирования функции сортировки демонстрирует использование декоратора @given со стратегиями для списков целых чисел или чисел с плавающей точкой, где библиотека генерирует случайные списки для сравнения пользовательской реализации со встроенной функцией sorted().

Документация структурирована для разных уровней пользователей: от краткого руководства для начинающих до подробного API-справочника. В ней представлены разделы с обучающими материалами, практическими руководствами для специфических сценариев и объяснениями для углубленного понимания библиотеки. Библиотека активно развивается с 2013 года и поддерживается сообществом, что делает её надежным инструментом для повышения качества тестирования в Python-проектах.

by lwhsiao • 05 ноября 2025 г. в 03:15 • 200 points

ОригиналHN

#python#property-based-testing#hypothesis#testing

Комментарии (117)

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

Testing is better than data structures and algorithms (nedbatchelder.com)

Новички в программировании часто зацикливаются на изучении структур данных и алгоритмов (DSA), потому что это проверяется на собеседованиях. Однако в реальной работе редко приходится реализовывать сложные алгоритмы вручную — вместо этого стоит понять базовые структуры, их trade-offs и основы Big O, чтобы эффективно организовывать и обрабатывать данные.

Гораздо полезнее сосредоточиться на тестировании: это навык, который постоянно применяется в разработке, улучшает качество кода и выделяет кандидата на фоне других. Тестирование помогает проектировать системы, учит писать проверяемый код и становится отдельной инженерной дисциплиной с богатым инструментарием.

by rsyring • 22 сентября 2025 г. в 16:21 • 151 points

ОригиналHN

#testing#data-structures#algorithms#big-o#property-based-testing#multithreading#performance

Комментарии (143)

  • Участники обсуждают важность знания структур данных и алгоритмов (DSA) для разработчиков, отмечая, что понимание их характеристик (например, сложности операций) часто важнее умения реализовывать их с нуля.
  • Подчеркивается необходимость баланса между теоретическими знаниями (DSA) и практическими навыками тестирования, при этом многие отмечают, что эти навыки не исключают, а дополняют друг друга.
  • В дискуссии звучит критика статьи, указанной в исходном посте, за её провокационный заголовок, который, по мнению участников, упрощает сложную проблему и создает ложную дихотомию между DSA и тестированием.
  • Несколько комментаторов приводят примеры из практики, где незнание базовых принципов DSA (например, сложности алгоритмов) приводило к серьезным проблемам с производительностью в продакшене.
  • Обсуждается роль тестирования: одни видят в нем ключевой навык для обеспечения качества, другие указывают на его ограничения (например, сложность тестирования многопоточных систем) и необходимость сочетать его с другими методами, как property-based тестирование или формальные доказательства.