Как написать модульные тесты для методов, которые сжимают и распаковывают?

1

Мне нужно написать модульные тесты для методов, которые сжимают и распаковывают объект ArraySegment. Внутри этих методов есть много странных методов, которые мне не нужно понимать. (Они также используют некоторые системные методы - я не знаю их реализации).

Проблема заключается в том, как на самом деле проверять такие вещи. Я мог проверить, какой результат для метода сжатия для конкретного ввода - Lorem ipsum dolor sit amet, consectetur adipisicing elit. - и создайте тестовый пример на основе этого эксперимента, но это решение не проверяет какие-либо граничные случаи.

Я мог бы также проверить, делает ли компрессия, а затем декомпрессию на некоторой последовательности, дает мне первую входную последовательность, но это не будет чистым модульным тестом.

Вы когда-нибудь сталкивались с такой проблемой? Есть ли хорошее решение для этого?

Теги:
unit-testing
testing
compression
testcase

1 ответ

5
Лучший ответ

Я периодически пишу тесты. Написание тестов для кода, который обертывает шифрование, работает аналогичным образом.

Вы не можете высмеивать или заглушать код, который вы не полностью понимаете (например, код, результаты которого вы не можете точно предсказать), поэтому не беспокойтесь о том, чтобы писать чистые модульные тесты.

  • Да, проверьте, что сжатие и декомпрессия возвращает данные.
  • Тест, который сжимает вход, дает результат, меньший, чем вход.
  • Если есть какие-либо нюансы алгоритма сжатия, которые важны для вашей программы, например, что он сжимает конкретный вход в определенной степени, вы можете проверить это. Основное значение здесь - это документирование того, что библиотека, которую вы используете, обладает этими свойствами и вам все равно.
  • Испытайте крайние случаи, такие как нулевая длина и очень длинный ввод.
  • Я бы не стал проверять, что сжатие конкретного ввода приводит к определенному результату, потому что это может сломаться, если вы обновили библиотеку сжатия до версии, которая лучше справляется с сжатием. Однако, если вам нужно сохранить сжатые данные и распаковать их позже, проверьте, что сжатая версия не изменяется, поэтому вы не обновляете данные библиотеки и сиротские данные.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню