Имеет ли смысл лицензировать юнит-тесты?


12

Мне интересно, есть ли какие-либо преимущества / риски (не) наложения лицензии на тестовый код, который в основном состоит из модульных тестов. Как вы думаете?

Я особенно заинтересован в лицензировании под (L) GPL, Apache, MIT и BSD.

РЕДАКТИРОВАТЬ : Предполагается, что не тестовый код уже опубликован под некоторой лицензией, а тестовый код - нет, поэтому вопрос заключается в том, стоит ли его публиковать, и если да, то ставить ли ему ту же лицензию.


Разве тесты не будут считаться фактами / данными, которые не подлежат авторскому праву или лицензированию? Это законно скопировать API , и я предполагаю , что это также допустимо использовать одни и те же тесты , чтобы убедиться в том , что реализация является правильной?
эндолит

Ответы:


10

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

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

Прикрепляя лицензию к своему тестовому коду, вы даете людям право использовать, распространять и / или изменять этот код в соответствии с условиями лицензии.

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


15

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

Таким образом, код для тестирования продукта в равной степени квалифицирует инструмент поддержки и сам по себе является интеллектуальной собственностью. Так что он заслуживает собственной лицензии.


9

Почему вы отделяете код и тестируете?

Я предпочитаю связку кода и тестирование. И этот комплект должен получить ту же лицензию.

Если кто-то хочет получить двойные деньги, вы можете сделать два пакета - каждый с лицензией. Для свободного программного обеспечения я не вижу причин для двух пакетов (если только это не проблема размера).


6

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

  • если кто-то просто использует ваш код, то он будет запускать тесты

  • если кто-то хочет изменить код, ему, вероятно, придется изменить и некоторые тесты


2

IANAL, однако:

  1. Если вы лицензируете свой код под лицензией GPL, то де-факто ваши модульные тесты также являются лицензиями GPL, поскольку без основного кода они довольно бесполезны.
  2. Если вы используете Apache / BSD, используйте положение «ИСПОЛЬЗУЙТЕ НА СВОЙ РИСК». Я бы ударил файл лицензии для всего проекта и позволил бы пользователю выяснить, подходит ли он для кода или тестового кода.
  3. Если вы используете коммерческую лицензию и ограничивает доступ к коду, зачем вам сначала публиковать свои тесты? Если вы хотите быть уверенным, поставьте лицензию «ЧИТАЯ ТЕСТОВЫЙ КОД, ВЫ НАСТОЯЩИМ СОГЛАШАЕТЕСЬ СОБЛЮДАТЬ СВОИ ГЛАЗА», и все готово.

1

GCC компилятор ( в основном GPLv3 лицензионный) имеет довольно обширный набор тестов, который распространяется вместе с исходным кодом. (возможно, некоторые тестовые файлы находятся в свободном доступе, я действительно не знаю их индивидуальный правовой статус).

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


0

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


0

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

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.