Вопросы к Поиску с Алисой
Для тестирования новых функций перед их внедрением в Rust используются модульные (юнит-тесты) и интеграционные тесты. doc.rust-lang.ru labex.io
Юнит-тесты проверяют каждый модуль кода в изоляции от остальной части кода. labex.io Их цель — быстро определить, где код работает и не работает как ожидается. labex.io Юнит-тесты размещают в папке src в каждом файле с кодом, который они тестируют. labex.io
Интеграционные тесты находятся полностью вне библиотеки и используют код так же, как и любой другой внешний код. labex.io Они могут вызывать только те функции, которые являются частью публичного API библиотеки. doc.rust-lang.ru labex.io Их цель — проверить, правильно ли взаимодействуют многие части библиотеки. labex.io
Кроме того, для тестирования в Rust используются такие методы, как snapshot-тестирование и fuzz-тестирование. zerotomastery.io
Snapshot-тестирование (также известное как базовое тестирование) использует вывод, сохранённый с предыдущего запуска теста, и проверяет его против текущего вывода тестируемой функции. zerotomastery.io Если текущий вывод не совпадает с предыдущим, то тест проваливается. zerotomastery.io
Fuzz-тестирование (или fuzzing) — метод тестирования, который выполняет функцию с помощью псевдослучайных входных данных на основе генетических алгоритмов. zerotomastery.io Его цель — вызвать сбой программы с различными входными данными, которые разработчики и тестировщики могли не учесть при написании тестов. zerotomastery.io