Является ли TDD жизнеспособным в совместных проектах с открытым исходным кодом

11

Допустим, я хотел начать проект с открытым исходным кодом, который, как я надеюсь / ожидаю, заставит многих людей присылать исправления и еще много чего. Целесообразно ли применять строгий подход TDD? Могу ли / должен ли я / доверять соавторам писать тесты качества всякий раз, когда они отправляют патч?

Одна вещь, о которой я думал, - это написание тестовых наборов для отдельных отчетов об ошибках и запросов функций и требование, чтобы все запросы на исправления / извлечения проходили тесты успешно, но в этот момент кажется, что было бы лучше просто написать функцию / исправление ошибок себя.

Насколько я могу судить, большинство крупных проектов с открытым исходным кодом, которые используют TDD (или, по крайней мере, пишут тесты), по-видимому, в основном написаны исключительно отдельным лицом или командой, где легко внедрить такие практики, как TDD.

DormoTheNord
источник
Обмен вашими исследованиями помогает всем. Расскажите нам, что вы пробовали и почему это не соответствует вашим потребностям. Это свидетельствует о том, что вы потратили время, чтобы попытаться помочь себе, избавляет нас от повторения очевидных ответов и, прежде всего, помогает получить более конкретный и актуальный ответ. Также см. Как спросить
Гнат
@gnat Я искал StackExchange, и было несколько вопросов, где люди задают примеры проектов с открытым исходным кодом с юнит-тестами, что не совпадает с моим вопросом. По вашему запросу я добавил еще немного информации.
DormoTheNord
1
DormoTheNord Я думаю, что @gnat имел в виду конкретные приведенные примеры.
Haneefmubarak
«было бы лучше, если бы я сам написал функцию / исправление ошибки». С тестами или без? Вы сторонник TDD или просто проверяете, является ли он жизнеспособным в этом контексте?
Джефф
Конечно, вы можете / должны ожидать, что соавторы будут писать тесты качества каждый раз, когда они отправляют патч. Это не только полезно - сегодня это очень распространено в крупных проектах с открытым исходным кодом (я могу привести примеры, если хотите).
Бенджамин Грюнбаум

Ответы:

29

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

Что вы можете применить, так это то, что все исправления должны иметь набор тестовых случаев для исправлений, включенных в патч, и что эти тестовые случаи, а также все существующие тестовые случаи должны пройти. Вы можете применить это, предоставив права на коммит только нескольким доверенным разработчикам, которые, как известно, используют и согласны с политиками проекта, и публично заявив, что submissions / pull-запросы будут включены только в том случае, если они приходят с проходящими тестовыми примерами (с достаточный охват).

Это не гарантирует, что тест написан первым , но гарантирует, что тест написан .

Барт ван Инген Шенау
источник
1
Конечно, владелец хранилища может отказаться от каких-либо изменений, которые не соответствуют стандартам качества проекта? Возможно, качество и количество вкладов пострадают, если вкладчикам это не понравится, но это не значит, что вы не можете обеспечить его соблюдение. Конечно?
Том Ш
2
@ TomW: Как бы вы проверили, что моя заявка создана в соответствии с практикой TDD, а не, например, с тестами, написанными после выполнения?
Барт ван Инген Шенау
Ах, я понимаю, что вы имеете в виду. Я полагаю, что некоторая потеря строгости неизбежна, но вы все равно можете убедиться, что код поставляется с тестами, что тесты достаточно гранулированы и охватывают все, что они должны. Я не очень знаком с git, но можно ли для данного запроса на получение информации проверить последовательность коммитов для этого набора изменений, чтобы убедиться, что разработчик выполнил подходящий процесс для его создания?
Том Ш
Другими словами, вы не можете подтвердить свой внутренний процесс, но вы можете обеспечить вывод, который соответствует определенному стандарту. Требование испытаний, и убедиться, что дизайн логичен, в силах владельца.
Адриан Шнайдер
1

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

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

Однако рецензенты должны быть очень хороши в том, чтобы быстро перевернуть рецензии на дизайн, чтобы не затормозить разработку.

Алекс Фейнман
источник