Haruskah saya meminta pengujian unit dari programmer? [Tutup]

26

Saya bekerja di tempat di mana kami membeli banyak proyek TI. Kami saat ini memproduksi standar untuk persyaratan sistem untuk permintaan proyek di masa depan. Dalam proses itu, kami mendiskusikan apakah kami dapat meminta pengujian unit otomatis dari pemasok kami.

Saya sangat percaya bahwa pengujian unit otomatis yang tepat adalah satu-satunya cara untuk mendokumentasikan kualitas dan stabilitas kode. Semua orang tampaknya berpikir bahwa pengujian unit adalah metode opsional yang hanya menyangkut pemasok. Dengan demikian, kami tidak akan menuntut pengujian unit otomatis, pengujian berkelanjutan, laporan cakupan, inspeksi uji unit atau hal semacam itu. Saya menemukan kebijakan ini sangat membuat frustrasi.

Apakah saya benar-benar di luar garis di sini?

Tolong berikan saya argumen untuk setiap pendapat.

Morten
sumber
63
Masalah dengan tes unit "paksa" adalah bahwa mereka hampir pasti akan menjadi token saja. Mereka tidak akan meningkatkan kualitas pekerjaan yang Anda dapatkan, tetapi hanya akan meningkatkan biaya. Kecuali jika pengembang percaya / tahu bahwa pengujian unit membantu mereka menulis kode, memaksa mereka untuk melakukannya kemungkinan besar akan kontra-produktif.
Joachim Sauer
10
Jika Anda mungkin tidak mempertimbangkan apakah mereka sudah menerapkan pengujian atau tidak sebagai bagian dari keputusan Anda untuk memilih pemasok?
Bart
2
Hmm, aku merasakan sakitmu. Jika itu dianggap tidak penting, saya lebih baik berharap pemasok Anda menawarkan dukungan penuh jika itu tidak berfungsi seperti yang diinginkan / diharapkan. Saya pribadi ingin melihat setidaknya beberapa tingkat praktik pengembangan perangkat lunak yang tepat tanpa harus memaksakannya.
Bart
21
Saya sangat percaya, bahwa pengujian unit otomatis yang tepat adalah satu-satunya cara untuk mendokumentasikan kualitas dan stabilitas kode. - kapan saja seseorang menyatakan bahwa hanya ada satu cara untuk melakukan apa pun itu menimbulkan bendera merah. Ada banyak cara lain untuk mencapai ini. Termasuk beberapa yang belum kita pikirkan.
SoylentGray
8
@Chad: Itulah mengapa saya mengajukan pertanyaan ini: untuk menantang bilief perusahaan saya :-)
Morten

Jawaban:

46

Saya sangat percaya, bahwa pengujian unit otomatis yang tepat adalah satu-satunya cara untuk mendokumentasikan kualitas dan stabilitas kode.

Masalahnya adalah Anda tidak akan (atau paling tidak sangat jarang) mendapatkan pengujian unit otomatis yang tepat dengan memaksanya pada orang-orang. Itu cara yang baik untuk mendapatkan tes buruk dan menaikkan biaya proyek.

Secara pribadi, saya akan mencari beberapa permintaan atau SLA yang melibatkan kualitas; terlepas dari bagaimana hal itu dicapai. 10 tahun yang lalu unit test jarang terjadi. Anda tidak ingin memborgol pemasok Anda dalam 10 tahun ketika kami memiliki metode yang lebih baik untuk memastikan kualitas tetapi kebijakan usang Anda mengharuskan mereka menggunakan cara lama.

Telastyn
sumber
6
+1 Saya dapat menulis unit test buruk yang tampaknya menguji segalanya tetapi tidak beroperasi sebagaimana mestinya untuk menguji semuanya. Itu tidak menambah kualitas atau membuktikan apa pun.
SoylentGray
1
@Chad Ya, itu memang benar, tetapi pelanggan juga dapat meminta metrik cakupan kode dan juga kode sumber untuk pengujian, jika pelanggan berpikir mereka dapat membedakan antara tes integrasi raksasa yang meningkatkan cakupan atau pengujian unit yang sebenarnya. Sekalipun pelanggan menuntut hal-hal ini, pengembang masih dapat memainkan sistem, itu hanya akan sedikit lebih menantang.
Chris O
3
@ ChrisO - Persisnya bisa dimainkan membuktikan itu tidak memenuhi persyaratan OP.
SoylentGray
1
@JarrodRoberson - Ya, cakupan kode hanya metrik statistik, tidak berarti tidak menjamin bahwa tes otomatis sebenarnya adalah tes otomatis yang baik . Manajemen, dan beberapa pelanggan, sangat menyukai metrik statistik.
Chris O
1
@ MatthewFlynn: Tes dijalankan dengan data tiruan / struktur tanpa menyebabkan pengecualian. Banyak hal berjalan hebat di jalur bahagia dengan input yang diharapkan.
Telastyn
18

Secara pribadi saya berpikir bahwa dalam kasus Anda, Anda harus berpikir dalam hal tes penerimaan sebagai gantinya:

  • Anda memiliki kotak hitam yang diberikan kepada Anda, dan Anda mengharapkannya berperilaku dengan cara tertentu.
  • Anda tidak akan membayar sampai itu terjadi.
  • Tulis unit test dengan melakukan perilaku yang perlu Anda lihat, dan jika gagal, mereka harus memperbaikinya.

Perhatikan juga bahwa ini masalah kepercayaan. Jika Anda tidak mempercayai pemasok Anda, maka Anda perlu mendapatkan kode sumber, memeriksanya, dan mengompilasinya sendiri. Sesuatu yang kurang dari itu berarti bahwa Anda setidaknya kepercayaan mereka beberapa .

pengguna1249
sumber
Hipotesis "kotak hitam" salah - lihat komentar Morten untuk jawaban Garret Hall.
Doc Brown
Jika saya tahu bahwa pemasok menggunakan unittesting, saya akan lebih mempercayai mereka. Tetapi apakah itu masuk akal bagi saya ?? Argumen saya adalah (telah menghasilkan banyak kode sendiri) bahwa harga untuk memperbaiki bug atau memperluas beberapa fungsi jauh lebih sedikit jika kode Anda dicakup oleh tes yang tepat. Ini menjadikannya bisnis saya, apakah mereka menguji unit atau tidak. Tapi saya tidak sepenuhnya yakin apakah ini asumsi yang tidak adil (?)
Morten
@DocBrown, begitu. Apakah Anda tidak setuju bahwa ini juga berlaku ketika kotak putih?
1
@Morten karena Anda terlibat dalam desain, saya akan menyarankan menggunakan TDD untuk merancang API (termasuk kondisi kesalahan), dan kemudian menyerahkannya ke tim pemrograman untuk membuat tes lulus.
@ ThorbjørnRavnAndersen: intinya adalah bahwa dalam skenario ini (sebut saja "kotak putih") OP tidak hanya ingin "kebenaran fungsional", ia ingin pemasok memberikan kode sumber berkualitas tinggi, dikelilingi dengan unit test untuk memastikan pemasok bekerja dengan baik dengan cara yang khusus. Yang jelas tidak dia inginkan adalah menulis unit test sendiri.
Doc Brown
8

Saya sangat percaya, bahwa pengujian unit otomatis yang tepat adalah satu-satunya cara untuk mendokumentasikan kualitas dan stabilitas kode.

Ini mengejutkan saya betapa umum pemikiran ini. Otomatis, ya. Unit testing (sendiri), no. Ada jauh lebih banyak untuk pengujian perangkat lunak otomatis daripada tes unit saja. Bagaimana dengan integrasi, sistem, fungsional, QA? Untuk beberapa alasan orang cenderung berpikir, "Oke, jadi kami memiliki unit test yang tepat. Selesai dengan pengujian, sebut saja Jumat malam!" . Pengujian unit hanyalah permulaan.

Bagaimanapun, kembali ke topik. Saya setuju dengan orang lain yang mengatakan bahwa memaksakan sesuatu pada siapa pun mungkin akan menghasilkan hasil yang berlawanan dengan yang diinginkan. Anda tidak pernah tahu cara kerja tim, mungkin mereka mendapat departemen pengujian bernilai jutaan dolar dan tidak pernah menulis uji unit tunggal.

Pada pekerjaan pertama saya, saya dulu bekerja di tempat di mana kami memiliki 0 unit test (kami sekelompok junior melemparkan pada hal-hal yang kurang lebih serius). Percaya atau tidak, itu berhasil. Tentu, tidak ada yang curiga mengapa bug ini diperbaiki, atau apa yang diperbaiki, tetapi berhasil. Ada kalanya beberapa bug yang benar-benar acak akan muncul, tetapitongkat bisbol dan risiko apartemen Anda terbakarbeberapa jam tambahan bisa menghasilkan keajaiban. Mungkin pemasok Anda menggunakan teknik serupa ?

km
sumber
6

Saya sangat meragukan bahwa manajemen Anda akan bersedia membayar untuk pengujian unit yang tepat dalam suatu kontrak. Biaya pengujian unit yang tepat sama seperti kode yang mereka uji, tetapi memberikan sedikit nilai yang dirasakan kepada pengguna akhir sehingga mereka tidak akan dilihat sebagai sama-sama berharga. Tidak ada perusahaan pengembangan kualitas yang mau menghabiskan upaya pengembangan pada tes unit dengan biaya lebih rendah daripada bagian lain, karena mereka tidak melukai pekerjaan, mereka dapat membuat lebih banyak menemukan 2 kontrak yang mengambil jumlah waktu yang sama tanpa persyaratan unit test.

Uji unit yang menuntut kemungkinan akan meningkatkan penawaran harga Anda ke tingkat yang tidak masuk akal, dan kemungkinan akan menjadi konsesi pertama yang dilakukan untuk mendapatkan harga yang lebih rendah.

Ryathal
sumber
sebenarnya pengujian unit yang tepat menghabiskan biaya lebih dari 100% dari kode yang mereka uji, tetapi Anda berada di jalur yang benar dari segi finansial. biaya pengujian unit yang tidak patut bahkan lebih dari yang semestinya!
5

Biaya tidak memiliki unit test tergantung pada seberapa banyak Anda akan memperpanjang / mendukung kode Anda sendiri. Menginspeksi bagian-bagian kode untuk mendapatkan gambaran tentang kualitas juga penting.

Jika Anda hanya membeli proyek sehingga Anda dapat menggunakannya seperti perpustakaan pihak ke-3 dan tidak percaya Anda akan memodifikasinya, maka risiko kode berkualitas lebih rendah lebih kecil, asalkan itu benar-benar berfungsi.

Ini pada akhirnya adalah keputusan bisnis, meskipun Anda harus memastikan siapa pun yang membuat keputusan juga sadar akan penilaian teknis. Jika Anda perlu menjelaskannya kepada manajemen, jelaskan itu seperti membeli mobil bekas. Pada akhirnya tergantung pada pembeli untuk memutuskan apakah itu layak, tetapi membawanya ke mekanik adalah ide yang baik sehingga Anda tahu Anda tidak mendapatkan lemon.

Garrett Hall
sumber
Kami membelinya sebagai proyek. Ini berarti bahwa kami berharap untuk mengambil bagian dalam proses pengembangan, kami akan memiliki kodenya dan kemungkinan besar kami akan memperpanjang kodenya beberapa kali. Paling penting: Ekstensi tidak akan selalu dibuat oleh perusahaan yang memproduksi versi 1.0
Morten
@Morten: maka Anda harus meminta pengujian unit selama perusahaan Anda ingin menggunakan dan memperpanjangnya juga. Untuk meyakinkan kolega Anda, beri tahu mereka bahwa unit test hanyalah contoh cara menggunakan kode yang akan Anda pertahankan, sehingga mereka adalah bagian penting dari dokumentasi. Saya kira mereka tidak menganggap "dokumentasi" juga sebagai "opsional".
Doc Brown
2

Anda membayar, Anda dapat menuntut apa pun yang Anda inginkan, termasuk salinan / laporan dari semua pengujian unit mereka.

Anda bahkan dapat menulis tes, atau setidaknya spesifikasi tes sendiri.

Saya setuju dengan pandangan Anda karena ini merupakan ukuran kualitas kode yang sangat baik. Jika pemasok menolak permintaan ini, itu akan membunyikan bel alarm, mengapa mereka tidak mau melakukannya - mereka memiliki standar kualitas rendah dan mengambil jalan pintas?

NimChimpsky
sumber
1
Apakah saya ingin kode yang tidak diuji ?? Adakah yang bisa menghasilkan potongan besar SW yang stabil dan andal tanpa pengujian unit ??
Morten
3
@Morten: Anda tidak ingin kode yang belum diuji - tetapi pengujian unit otomatis bukan satu-satunya cara untuk menguji kode. Itu hanya satu blok bangunan untuk meningkatkan kualitas kode antara lain.
Doc Brown
3
@Morten: Unit-testing bukan satu-satunya cara untuk menguji kode. Sebelum 1996, tidak ada yang melakukan pengujian unit formal apa pun, tetapi perangkat lunak masih berfungsi.
gbjbaanb
1
@ gbjbaanb Apakah Anda berpendapat bahwa hanya karena ini baru, itu tidak berguna? : p Saya telah mengerjakan perangkat lunak dengan dan tanpa pengujian unit, dan yang dengan pengujian unit secara signifikan lebih mudah dan lebih cepat untuk ditulis (terutama karena menemukan dan memperbaiki bug lebih mudah).
Pasang kembali Monica
1
itu bukan hitam dan putih, diuji vs tidak teruji. Kurangnya tes otomatis tidak berarti kode tidak diuji, hanya berarti tidak otomatis. Saya telah melihat 100 dari ribuan baris kode tes otomatis, lebih dari 3X sebanyak kode aktual dan proyek ini penuh dengan bug. Saya telah melihat 600 ribu baris kode konkuren kompleks dengan tes unit otomatis NOL yang berjalan dalam produksi selama bertahun-tahun tanpa downtime atau bug.
1

Anda sepenuhnya benar bahwa proyek Anda memerlukan pengujian unit otomatis, pengujian berkelanjutan, laporan cakupan, dan inspeksi pengujian unit.

Namun, hal-hal yang menuntut tidak akan mencapai hasil yang Anda inginkan seperti yang orang lain perinci.

Tantangan Anda adalah menjelaskan dan membujuk orang - keterampilan yang jauh lebih sulit!

Pada awalnya saya akan mulai dengan manajemen, menjelaskan pro dan kontra pengujian dan imbalannya. Harap berhati-hati untuk tidak mengomunikasikan emosi di balik pernyataan seperti 'Saya menulis tes unit PROPER' (huruf besar milik Anda). Anda tidak ingin 'meneriakkan' kata-kata (seperti yang disiratkan SEMUA CAPS) Anda akan membujuk dan meyakinkan orang sehingga mereka sendiri dapat memilih solusi yang tepat.

Pada akhirnya jika Anda tidak dapat memperkenalkan metodologi ini dan membuat mereka memeluk di mana Anda berada, ditambah jika Anda bersemangat tentang mereka seperti yang Anda nyatakan (yang baik!) Saya akan ke perusahaan yang berbeda karena ada banyak yang menghargai nilai hal-hal ini dan akan menyambut Anda di kapal. Pastikan Anda berada di depan tentang mereka dalam wawancara sehingga mereka tahu di mana gairah hidup Anda dan jika Anda akan cocok.

Michael Durrant
sumber
Pertanyaan untuk vendor luar; jawabannya adalah tentang tim internal.
JohnMcG
1

Memaksa pengujian otomatis pada seseorang tidak akan mencapai hasil yang Anda inginkan seperti yang ditunjukkan @ Joachim Sauer dan @Telastyn dalam komentar mereka. Bagi banyak orang pengujian unit otomatis adalah perubahan besar dalam pemikiran mereka. Karena banyak orang menulis kode yang berfungsi, tetapi tidak terlalu bisa diuji. Saya bisa menulis halaman web ASP.NET di mana semua logika, kueri database, aturan bisnis, objek, dll. Ada dalam kode di belakang. Apakah halaman akan berfungsi? Iya nih. Apakah dapat diuji menggunakan pengujian unit otomatis? Benar-benar tidak. Jika pemasok tidak memiliki pengujian unit otomatis maka perlu upaya untuk mempelajari cara menulis pengujian unit dengan benar dan sebagai hasil dari mempelajari hal ini, tulis ulang atau masukkan kembali kode mereka untuk membuatnya lebih mudah diuji. Kemungkinan mereka akan memberikan biaya itu kepada Anda.

Faktanya adalah pemasok memberi Anda produk, baik itu aplikasi .dll atau windows, dan Anda mengharapkannya berfungsi 99% dari waktu. Tentu ada bug di sana-sini, tetapi sebagian besar itu seharusnya bekerja. Itu adalah harapan yang masuk akal, terutama jika pemasok ingin mempertahankan bisnis Anda. Jika kotak hitam maka tidak masalah bagaimana mereka membuatnya bekerja, mereka bisa menggunakan gelombang penguji manusia, atau ruangan yang penuh dengan kera yang secara acak mengenai kunci. Selama itu berhasil. Tetapi mereka perlu memberi Anda semacam dokumentasi lain tentang cara menggunakannya.

Namun, jika mereka memberi Anda kode sumber sehingga Anda dapat memodifikasinya, maka saya akan mengharapkan unit test. Saya tidak akan bekerja dengan perusahaan yang tidak menyediakan tes unit. Bagaimana lagi Anda tahu modifikasi yang Anda lakukan tidak menyiratkan semuanya?

bwalk2895
sumber
1

Pengujian unit merupakan indikasi bagaimana pemasok menangani risiko selama siklus pengembangan. Mereka yang menggunakan tes unit menghargai pengurangan risiko dan kualitas tes tersebut merupakan indikasi seberapa banyak risiko telah dikelola.

Dengan itu, unit test tidak menentukan tingkat risiko apa yang sedang berusaha ditangani oleh proyek. Itu juga tidak memainkan peran apa pun dalam pengurangan risiko yang disebabkan oleh praktik pemrograman yang buruk.

Oleh karena itu, Anda dapat memiliki satu pemasok yang memiliki praktik pengujian yang solid di tempat tetapi terus menulis kode yang sangat berisiko sementara pemasok lain yang tidak melakukan pengujian tetapi menulis kode risiko rendah. Jika dua pemasok menawarkan produk yang sama, maka yang terbaik adalah pergi dengan pemasok berisiko rendah.

Ini hanya dapat diukur dengan mewawancarai, membimbing, dan belajar tentang kepribadian dan keterampilan orang-orang yang terlibat dengan pemasok itu.

Reactgular
sumber
0

Menyetujui orang lain yang menuntut pengujian unit akan mengarah pada pengujian demi pengujian; sesuatu yang sangat berlawanan dengan apa yang Anda inginkan.

Dalam proses pemeriksaan pemasok Anda; tanyakan kepada mereka apa proses pengembangan mereka karena pengujian hanyalah salah satu bagian dari proses itu.

Apakah mereka memiliki proses pembuatan otomatis? Apakah mereka mengikuti beberapa paradigma manajemen? Apakah mereka memiliki penguji yang terlatih dan tim jaminan kualitas independen ? Bagaimana dengan standar dokumentasi?

Ini akan membantu Anda menilai kualitas keseluruhan proses mereka, dan pada gilirannya kualitas apa yang mereka hasilkan.

Burhan Khalid
sumber
0

Tampaknya bagi saya bahwa memasukkan persyaratan ini akan memiliki sedikit manfaat praktis, karena tidak mungkin untuk menegakkannya.

Anda dapat meminta kode untuk tes yang sebenarnya, atau laporan tentang tes apa yang sebenarnya berjalan dan berlalu. Jika itu adalah proyek berpemilik, vendor mungkin tidak ingin memasok itu, karena kemungkinan besar akan sangat menyarankan rincian kode, dan mungkin berani dibuat untuk memberikan rincian implementasi tingkat rendah dan mengatakan bagaimana melakukannya. pekerjaan. Pada titik tertentu, harus ada kepercayaan.

Jika tidak, mereka dapat membuat Anda meledak, tetapi hanya dengan mencentang kotak di sebelah "menjalankan serangkaian pengujian unit" untuk memenuhi persyaratan dengan menulis satu tes yang lulus jika utilitas mereka mengkompilasi dan menjalankan atau setengah-sejenisnya upaya.

Jadi, sementara tes unit otomatis adalah praktik yang patut dipuji, saya tidak berpikir itu praktis untuk bersikeras dari vendor luar.

JohnMcG
sumber
0

Seperti yang banyak orang tunjukkan, memaksa vendor untuk menulis tes unit (atau lebih baik, kombinasi unit otomatis dan tes integrasi) untuk memenuhi kontrak mungkin tidak akan menghasilkan hasil yang berkualitas tinggi. Di sisi lain, saya setuju bahwa pengujian otomatis sejauh ini merupakan metode terbaik yang saat ini digunakan untuk memastikan kualitas kode.

Saya pikir kode yang ditulis dengan tes unit jauh lebih mudah dipelihara daripada kode yang ditulis pertama dan memiliki tes unit ditambahkan kemudian. Ini memaksa modularitas dan ketergantungan minimal. Tes integrasi juga diperlukan untuk memverifikasi kebenaran kode, tetapi mereka tidak memiliki dampak yang sama pada kualitas kode seperti yang tertulis. Intinya, tes integrasi otomatis dapat ditambahkan setelah fakta, tetapi tes unit memiliki dampak paling besar ketika ditulis dengan kode asli.

Saran saya untuk situasi Anda adalah mencari vendor yang lebih suka menulis kode dengan tes unit, dan memilih mereka dibandingkan vendor yang cenderung tidak menulis kode dengan tes bersatu. Jika manajemen akan membayar untuk itu, masukkan tes otomatis dalam kontrak tetapi HANYA JIKA VENDER DIGUNAKAN UNTUK MENULIS KODE DENGAN UNIT TES.

Tony
sumber
0

Mari kita dapatkan prioritas langsung ...

Dalam peran Anda sebagai pelanggan, perhatian utama Anda bukanlah pengujian unit

Jika Anda menggunakan pemasok yang menghasilkan perangkat lunak untuk Anda, maka Anda benar-benar tidak perlu khawatir jika mereka menggunakan satu metodologi atau lainnya. Taruhan Anda adalah untuk mendapatkan semacam solusi yang akan membantu mencapai tujuan Anda. Satu-satunya hal yang harus Anda perhatikan adalah apakah solusi itu dapat diterima atau tidak. Itu sebabnya kami memiliki pengujian penerimaan karena terletak pada tanggung jawab Anda untuk memastikan bahwa Anda mendapatkan apa yang Anda inginkan. Pada saat penting penerimaan pelanggan, uang akan ditransaksikan dari kantong perusahaan Anda ke dalam kantong pemasok.

Anda dapat meminta pengujian unit sebagai persyaratan yang dapat dikirim tetapi ada beberapa masalah bawaan pada tes tersebut, yang paling parah adalah tidak ada cara pasti sebelumnya untuk menentukan metrik:

  • Berapa jumlah unit test yang dapat diterima?

Haruskah ada 10 tes? Bagaimana dengan 100 tes? Bagaimana dengan 1000 tes? Sebenarnya, pada awalnya cukup sulit untuk menentukan berapa banyak tes yang Anda perlukan. Jumlah sebenarnya benar-benar tidak dapat ditentukan ... seperti masalah penghentian ... tapi kami tidak menyelesaikan masalah itu.

Anda hanya ingin perangkat lunak yang memiliki unit-test sehingga Anda dapat melanjutkan pengembangan. Unit-test tidak memberi tahu apa yang telah Anda rusak, tetapi mereka sangat cocok untuk memberi tahu Anda ketika kode memiliki bug regresi.

  • Apa tingkat cakupan kode yang dapat diterima?

"100%, tentu saja!" kamu akan berpikir. Sayangnya metrik itu menyesatkan; bahkan jika Anda memiliki cakupan kode 100%, apakah Anda benar-benar yakin semuanya berjalan seperti yang diharapkan? Dimungkinkan untuk memiliki cakupan 100% tetapi tidak dilakukan.

Apa yang benar-benar perlu Anda lakukan adalah pengujian eksplorasi, yaitu menemukan seseorang yang benar-benar pandai memecahkan barang-barang dan membiarkan mereka melakukan pengujian. Untuk menemukan bug yang tidak pernah dipikirkan oleh pengembang.

Juga 100% terkadang tidak dapat dicapai dengan tes unit murni jika Anda memiliki beberapa peretasan kinerja yang diperlukan dan menggunakan pola desain yang sulit untuk diuji (cari "singleton" dan "tdd" di mesin pencari favorit Anda dan Anda akan menemukan beberapa contoh).

Anda ingin perangkat lunak yang dikirim berfungsi dan dokumen spesifikasi adalah satu-satunya garansi yang Anda inginkan .

Anda akan membutuhkan tingkat pengujian yang lebih tinggi

Dokumen spesifikasi Anda harus diverifikasi entah bagaimana. Setiap poin harus dilalui dengan pemasok Anda yang memiliki tujuan dan kriteria penerimaan yang jelas. Organisasi QA yang berfungsi dengan baik (atau penguji yang luar biasa jika Anda memiliki anggaran dan cakupan terbatas) akan memberikan kasus uji untuk memeriksa kriteria penerimaan ini. Anda juga membutuhkan seseorang untuk memverifikasi kriteria penerimaan tersebut.

Ada beberapa cara untuk memverifikasi tujuan Anda, dan jika seseorang memberi tahu saya bahwa Anda tidak dapat menetapkan sasaran kualitas, kinerja, dan efisiensi yang waras, saya akan memahaminya dengan buku-buku besar dan berat tentang eksplorasi, kinerja, dan pengujian kegunaan masing-masing. Mungkin mudah untuk berlebihan dengan tujuan, tetapi pengetahuan dan komunikasi akan membantu Anda menetapkan tujuan yang realistis.

Saya bukan pengacara tetapi sebagian besar kontrak proyek (yang pada dasarnya adalah ibu dari semua spesifikasi untuk proyek) yang saya baca biasanya memiliki kriteria rasio cacat yang menetapkan berapa banyak bug yang dianggap dapat diterima. Bug biasanya ditentukan melalui tingkat keparahan, bug yang berhenti muncul yang ditemukan oleh QA memiliki toleransi yang rendah sedangkan cacat minor memiliki toleransi yang tinggi. Dalam proyek nyata sulit untuk menuntut bahwa perangkat lunak harus memiliki 0 cacat. Tenggat waktu biasanya menghentikan praktik itu. Pada situasi inilah Anda harus mulai menawar ruang lingkup.

Sebagian besar perangkat lunak yang disediakan yang saya lihat biasanya tidak disertai dengan tes unit. Anda dapat berargumen bahwa pemasok harus cukup profesional untuk memberikan ini, namun alasan utama Anda ingin pengujian unit dikirimkan kepada Anda adalah untuk memastikan bahwa Anda tidak mendapatkan bug regresi dan juga memungkinkan refactoring. Dalam kehidupan nyata dengan proyek-proyek dengan tenggat waktu yang ketat, baik pemasok dan pelanggan akan menurunkan ruang lingkup dan tes unit biasanya akan keluar jendela dan dihapus dari daftar hasil yang diperlukan.

Agak menyedihkan bahwa perangkat lunak open source profil tinggi datang diberikan dengan unit-test tetapi pengembang perangkat lunak profesional tidak bisa, kan?

Jadi kapan saya, sebagai pelanggan, peduli dengan pengujian unit?

Saya berpendapat bahwa satu - satunya waktu Anda benar - benar peduli tentang pengujian unit adalah jika perangkat lunak yang dapat dikirim adalah komponen mandiri yang tidak dieksekusi sebagai program yang berdiri sendiri, di mana pengujian paling kasar yang dapat Anda lakukan adalah uji unit . Perpustakaan kelas akan menjadi salah satu jenis produk yang dapat dikirimkan bersama dengan tes unit.

Spoike
sumber
-1

Bagaimana Anda tahu vendor tidak menulis unit test.

Mungkin manajemen dan vendor mengadakan pertemuan dan vendor berkata, kode harganya $ X dan unit test berharga $ Y. Manajemen mencubit sen mengatakan kami hanya ingin kode.

Vendor memutuskan untuk menulis unit test (karena kualitas) dan tidak membagikannya dengan Anda (karena keunggulan kompetitif).

Sekarang Anda perlu melakukan beberapa penyesuaian besar pada perangkat lunak. Karena Anda memiliki kode, Anda dapat melakukannya sendiri atau menyewanya secara kompetitif (tidak harus ke vendor asli). Tetapi karena Anda tidak membeli unit test, vendor asli akan dapat melakukan pekerjaan berkualitas yang sebanding dengan harga yang lebih murah untuk setiap pesaing.

emory
sumber
-1

Ada banyak proyek yang sangat berhasil walaupun kenyataannya mereka tidak menggunakan tes unit. Lihat saja kernel linux, ini adalah proyek raksasa dengan kompleksitas yang jauh melebihi apa yang Anda temukan dalam proyek normal mana pun, dan masih berfungsi. Jadi, jika hasilnya adalah perangkat lunak yang baik, Anda seharusnya tidak peduli bagaimana mereka mencapainya.

Konstantin Weitz
sumber
-1

Tidak, Anda tidak perlu menuntut unit uji yang lengkap dan otomatis. Yang lebih penting adalah mereka memberi Anda dokumen strategi pengujian yang tepat. Kami melakukannya dengan baik dengan cara ini.

stackoverclan
sumber