Apakah masuk akal untuk menguji unit test?

12

Saya bertanya-tanya apakah ada manfaat / risiko dari (tidak) meletakkan lisensi pada kode uji yang sebagian besar terdiri dari tes unit. Bagaimana menurut anda?

Saya sangat tertarik pada lisensi di bawah (L) GPL, Apache, MIT dan BSD.

EDIT : Asumsinya adalah bahwa kode non-tes sudah diterbitkan di bawah beberapa lisensi, tetapi kode tes tidak, jadi pertanyaannya adalah apakah akan menerbitkannya dan jika demikian apakah akan meletakkan lisensi yang sama di atasnya.

leden
sumber
Bukankah tes akan dianggap sebagai fakta / data, yang pada awalnya tidak tunduk pada hak cipta atau lisensi? Adalah sah untuk menyalin API , dan saya rasa itu juga sah untuk menggunakan tes yang sama untuk memverifikasi bahwa implementasinya benar?
endolith

Jawaban:

10

Saya terkejut bahwa belum ada yang menyebutkan ini, tetapi jika Anda tidak melampirkan lisensi ke kode Anda, apakah itu produk atau kode pengujian, maka orang lain tidak memiliki hak atas kode tersebut .

Kode lisensi adalah tentang memberikan hak kepada orang lain yang biasanya tidak mereka miliki. Kode pengujian Anda secara otomatis dilindungi oleh hak cipta (di sebagian besar negara di seluruh dunia) bahkan jika Anda tidak secara eksplisit melampirkan pemberitahuan hak cipta. Menjadi hak cipta, orang lain tidak dapat menggunakan, mendistribusikan, atau memperoleh dari kode itu.

Dengan melampirkan lisensi ke kode pengujian Anda, Anda memberi orang hak untuk menggunakan, mendistribusikan, dan / atau memodifikasi kode itu sesuai dengan ketentuan lisensi.

Saya akan merekomendasikan Anda mendistribusikan kode pengujian Anda dengan kode produk Anda, di bawah lisensi yang sama. Ini paling sederhana untuk semua orang. Ini juga berarti bahwa jika orang ingin mengirimkan tambalan kepada Anda, maka mereka dapat menjalankan tes unit Anda sebelum mengirim tambalan kepada Anda, yang seharusnya membantu menyingkirkan tambalan yang merusak barang.

Mark Booth
sumber
15

Dalam dunia komersial, sebagian besar perusahaan mengenakan biaya tidak hanya untuk produk inti tetapi juga untuk dukungan. Paling sering dukungan melibatkan segala bentuk bantuan dengan alat atau bantuan pribadi, untuk dapat membuat produk dapat digunakan atau menyelesaikan masalah yang terkait dengan produk.

Dengan token ini, kode untuk menguji produk sama-sama memenuhi syarat sebagai alat pendukung dan merupakan properti intelektual dalam haknya sendiri. Jadi memang layak mendapatkan lisensi itu sendiri.

Dipan Mehta
sumber
9

Mengapa Anda memisahkan kode dan pengujian?

Saya lebih suka seikat kode dan tes. Dan bundel ini harus mendapatkan lisensi yang sama.

Jika seseorang ingin mendapatkan dua kali uang, maka Anda dapat membuat dua paket - masing-masing dengan lisensi. Untuk perangkat lunak gratis, saya tidak melihat alasan untuk dua paket (kecuali itu adalah masalah ukuran).

knut
sumber
6

Kode pengujian memiliki banyak nilai, karena memungkinkan pengguna untuk memeriksa apakah solusi Anda bekerja di lingkungan yang diberikan. Dalam pekerjaan saya (perangkat lunak tertanam) test suite adalah bagian dari kontrak. Anda harus menerbitkannya dengan lisensi yang sama, karena penggunaannya serupa:

  • jika seseorang hanya menggunakan kode Anda, maka ia akan menjalankan tes

  • jika seseorang ingin memodifikasi kode, dia mungkin harus memodifikasi beberapa tes juga

Simon Bergot
sumber
2

Namun, IANAL:

  1. Jika Anda melisensikan kode Anda di bawah GPL, maka de facto unit test Anda juga GPL karena tidak berguna tanpa kode utama
  2. Jika Anda menggunakan Apache / BSD, ketentuan 'GUNAKAN RISIKO ANDA SENDIRI'. Saya akan menampar file lisensi dengan seluruh proyek dan membiarkan pengguna mengetahui apakah itu untuk kode atau kode tes.
  3. Jika Anda menggunakan lisensi komersial dan membatasi akses ke kode, mengapa Anda harus mempublikasikan tes Anda? Jika Anda ingin memastikan, berikan tanda 'DENGAN MEMBACA KODE UJI, ANDA AKAN MENYETUJUI UNTUK MENDAPATKAN lisensi MATA ANDA' dan Anda siap berangkat.
ptyx
sumber
1

The GCC compiler (kebanyakan GPLv3 berlisensi) memiliki test suite yang cukup luas, yang didistribusikan dengan kode sumber. (mungkin beberapa file uji berada dalam domain publik, saya benar-benar tidak tahu status hukum masing-masing).

Mengapa Anda ingin mendistribusikan test suite Anda secara terpisah dari produk Anda?

Basile Starynkevitch
sumber
0

Ini mungkin model bisnis yang mungkin jadi lepaskan sebuah program sebagai perangkat lunak bebas (GPL atau apa pun), tetapi unit appertaining akan diuji di bawah lisensi komersial. Dengan begitu, jika seseorang ingin merilis versi yang lebih baik dari perangkat lunak Anda (misalnya tertanam dalam perangkat), ia mungkin termotivasi untuk membeli lisensi uji unit untuk pengembangan yang lebih cepat dan lebih aman.

pengguna281377
sumber
0

Jika pengujian unit Anda dilakukan dengan baik maka itu adalah cetak biru untuk mereproduksi perangkat lunak Anda. Jika Anda tidak melisensikannya secara setara dengan kode, Anda mengundang seseorang untuk datang dan menerapkan kembali apa pun yang Anda lakukan. Jika Anda baik-baik saja dengan itu maka jangan repot-repot melisensikan mereka.

Tanda
sumber