Исследовательская группа

Методы машинного обучения в области программной инженерии

«Запахи в тестах» в Python: определение, нахождение, анализ

May 17

Одной из важных областей исследования в программной инженерии в последние пару десятилетий являются так называемые «запахи кода» (code smells), то есть определенные архитектурные и программные решения, которые, не являясь сами по себе ошибкой, тем не менее могут усложнить восприятие кода или привести к ошибке в дальнейшем. Учёные уже собрали большие списки таких запахов, разработали инструменты для их нахождения и проанализировали их частоту в реальном коде.

Отдельным подвидом запахов кода являются «запахи в тестах» (test smells). По сути дела, это тоже запахи кода, но специфичные для тестирования и тестировочного кода. Их выделение в отдельный класс и термин связано с тем, что тестировочный код во многом весьма специфичен и содержит элементы, не распространенные в обычном коде, и, соответственно, инженерные решения и потенциальные опасности в нём другие. В литературе активно изучены запахи в тестах для различных традиционных языков программирования вроде Java и Scala. Вместе с тем, интересно также рассмотреть такие запахи для Python, учитывая его всё возрастающую популярность.

На данном семинаре мы рассмотрим работу, проведенную в нашей лаборатории совместно с Калифорнийским университетом в Ирвайне, в которой было сделано ровно это. Мы обсудим все три основные части данной работы: (1) определение запахов, которые можно реализовать в Python, а также поиск запахов, специфических для Python, (2) создание и валидацию инструмента, способного находить эти запахи в коде, и (3) эмпирический анализ популярности и распространенности запахов в открытых репозиториях. Результаты исследования оказываются очень любопытными, так как некоторые запахи встречаются в подавляющем большинстве (90%) проектов.

Докладчик: Ярослав Голубев.

Язык доклада: русский.

Дата и время: 17 мая, 18:00.

https://us02web.zoom.us/j/509624984?pwd=dFhRUlowSWprSVAva0JFQ2NUVzZTdz09

Meeting ID: 509 624 984

Passcode: 016883