На главную

Модульное тестирование, рефакторинг и тесты производительности (видео)

10-04-2022

Записал воркшоп про разработку модульных тестов (unit tests). Первая часть была опубликована уже очень давно, а руки до второй всё никак не доходили. Теперь, наконец, дошли.

Код и тесты писал на F#. Понимаю, что язык экзотический и ззотерический, но именно этим он и интересен. В конце концов, тесты нужны при любой парадигме программирования.

C#-программистам тоже многое будет понятно, потому что базовая платформа .NET в C# и F# одна и та же, да и тестовые фреймворки используются одни и те же. Это xUnit для модульных тестов и BenchmarkDotNet для тестов производительности.

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

Краткое содержание воркшопа: тесты нужны в том числе и для того, чтобы вносить правки в код, не опасаясь что-нибудь сломать. Пишем тесты для вычисления чисел Фибоначчи и пишем первую — медленную — реализацию. Поняв, что она медленная, пишем чуть более быструю. Используем тесты, чтобы убедиться, что ничего не сломали.

Чтобы понять, насколько быстрым стал код, пишем тесты производительности. Наконец, пишем третью, самую быструю реализацию, опираясь на упражнение 1.19 из книги Структура и Интерпретация Компьютерных Программ, в народе известной, как SICP.

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

Код, написанный в воркшопе, лежит здесь.