Как модульные тесты помогают при рефакторинге и зачем нужны тесты производительности

  Рет қаралды 143

Московский клуб программистов

Московский клуб программистов

2 жыл бұрын

Записали воркшоп про разработку модульных тестов (unit tests). Первая часть была опубликована уже очень давно, а руки до второй всё никак не доходили. Материал для воркшопа я уже подготовил, его нужно было только прогнать и начитать. И вот, наконец, прогнал и начитал.
Код и тесты писал на F#. Понимаю, что язык экзотический и ззотерический, но именно этим он и интересен. В конце концов, тесты нужны при любой парадигме программирования. Врочем, тем, кто пишет на C#, многое будет понятно, потому что базовая платформа .NET одна и та же, и тестовые фреймворки используются одни и те же.
В воркшопе, в частности, это [xUnit](xunit.net/) для модульных тестов и [BenchmarkDotNet](benchmarkdotnet.org/articles/...) для тестов производительности.
Всё должно быть понятно и тем, кто пишет ну других языках, потому что фреймворки похожи друг на друга.
Краткое содержание воркшопа: тесты нужны в том числе и для того, чтобы вносить правки в код, не опасаясь что-нибудь сломать. Пишем тесты для вычисления чисел Фибоначчи и пишем первую - медленную - реализацию. Поняв, что она медленная, пишем чуть более быструю. Используем тесты, чтобы убедиться, что не сделали ошибок.
Чтобы понять, насколько быстрым стал код, пишем тесты производительности. Наконец, пишем третью, самую быструю реализацию, опираясь на упражнение [1.19](xiucheng.org/2019/01/01/sicp-...) из книги Структура и Интерпретация Компьютерных Программ, в народе известной, как SICP.
Снова используем готовые тесты, чтобы убедиться, что код написал правильно. Кроме того, переписываем реализацию, потому что хотим, чтобы тесты помогали нам писать корректный код.
Код, написанный в воркшопе, лежит [здесь](github.com/progmsk/tests/tree....

Пікірлер
Wait for the last one! 👀
00:28
Josh Horton
Рет қаралды 116 МЛН
БОЛЬШОЙ ПЕТУШОК #shorts
00:21
Паша Осадчий
Рет қаралды 4,1 МЛН
OMG😳 #tiktok #shorts #potapova_blog
00:58
Potapova_blog
Рет қаралды 3,8 МЛН
Универ. 13 лет спустя - ВСЕ СЕРИИ ПОДРЯД
9:07:11
Комедии 2023
Рет қаралды 6 МЛН
Управление памятью и сборщиком мусора в Go
47:26
Московский клуб программистов
Рет қаралды 10 М.
Кто может стать программистом
49:31
Московский клуб программистов
Рет қаралды 191
ЯЗЫК АССЕМБЛЕРА С НУЛЯ | #1 НАЧАЛО
54:43
CI CD наглядные примеры
22:08
Ulbi TV
Рет қаралды 273 М.
КАК УСТРОЕН ИНТЕРНЕТ. НАЧАЛО
41:58
Alek OS
Рет қаралды 486 М.
Статический анализ кода, PVS-Studio
49:56
Московский клуб программистов
Рет қаралды 186
iOS 18 vs Samsung, Xiaomi,Tecno, Android
0:54
AndroHack
Рет қаралды 96 М.
Телефон в воде 🤯
0:28
FATA MORGANA
Рет қаралды 1,2 МЛН
CY Superb Earphone 👌 For Smartphone Handset
0:42
Tech Official
Рет қаралды 826 М.
How To Unlock Your iphone With Your Voice
0:34
요루퐁 yorupong
Рет қаралды 27 МЛН