Harici dosyalardan birim testleri için veri yüklemek veya yüklemek için


17

Birim testi yaparken sıklıkla kendimi ne kadar veri beslediğimi tartışırken bulur ve test edilen birimlerden beklerim, gerçek test dosyalarına dahil etmeliyim.

Sürekli mücadele ettiğim takas şudur:

  • Testin büyük bir kısmı (kod hacminde) giriş ve çıkış verilerinden oluşuyorsa, testi gerçekten okumak zor görünüyor, ancak gerçek giriş ve çıkışları kolayca görebiliyorum.
  • Dosyalardan test verilerini yüklersem, olası veri girişindeki bir sürü varyasyonu kolayca test edebilir, test verilerini birden çok test için kolayca tekrar kullanabilirim, ancak girişlerin tam olarak ne olduğunu görmek için başka bir dosyaya bakmak için kaynak kodunu bırakmalıyım .

Bunlardan biri bir anti-desen midir?


Ne tür veriler?
Jon Reid

@JonReid: Çoğunlukla metin.
DudeOnRock

Yanıtlar:


11

Sorunuzu doğrudan cevaplamak için - hayır, doğru kullanıldığında ikisinin de bir anti-desen olduğuna inanmıyorum.

--- daha ayrıntılı cevap ---

Deneyimlerime göre, bunun büyük ölçüde testinizin amacına bağlı olduğunu düşünüyorum. İşte geçmişte kullandığım başparmak kuralı ve karar vermeme yardımcı oldu:

Aslında küçük bir kod birimini mi test ediyorsunuz? (Gerçek bir birim testi)

Eğer evet ise, o zaman testin içinde veri oluşturmanın çok daha kolay olduğunu gördüm çünkü neyin içinden geçtiğini görebiliyorum. Bu durumlarda, genellikle Yasemin benzeri bir kütüphane arayacağım çünkü bunu buldum test verilerinin oluşturulmasını ve korunmasını kolaylaştırır. Bu kişisel bir tercih - işinizi kolaylaştıran her şeyi kullanın.

Hayır ise, muhtemelen sistemin kendisini test edersiniz. Bu gibi durumlarda, genellikle harici bir kaynaktan veri yüklerim, bunun nedenleri:

  1. Bu test, programcılar için kod netliği ile ilgili değildir (bu hala önemli olsa da - birisinin bunu sürdürmesi gerekir), makul şekilde çalıştığından emin olmak için sistemin tüm birimi boyunca yeterli sayıda farklı veri çalıştırmakla ilgilidir.
  2. Genellikle test verilerini yüklemek ve kullanmak için sıhhi tesisat kodunu yazacağım, ancak verilerin kendisi başka biri tarafından oluşturulur (genellikle benim durumumda bir KG personeli). Bu insanlar genellikle programcı değildir, bu yüzden kod düzenlemelerini bekleyemem.

Bu kadar uzun cevap kısa, ne test ettiğine ve nedenine bağlı. Her iki yaklaşım da faydalıdır ve yerlerine sahiptir - durumunuz için en uygun olanı seçin.


9

Burada bir değiş tokuş görmüyorum. Kaynak kod, büyük miktarda veriyi değil, algoritmaları veya en azından iş mantığını tanımlayacaktır. Bir Fourier dönüşümü yazarsanız, sinüs tonunun tek bir zirveye, daha fazla zirveye vb. Karışık bir sesle doğru bir şekilde eşlendiğini doğrulamak istersiniz, ancak bunun sinus.waviçin rutin olarak adlandırılmış bir dosyayı beslemek ve bunu doğrulamak tamamen yeterlidir. çıktı yapısı beklediğiniz şeydir.

Elbette, teknik olarak, sinus.wavgerçekten bir sinüs tonu içeren acil bir güvenceniz yoktur, ancak dediğin gibi, kaynaktaki 100.000 genlik değerini listelemek size bunu da vermez - aslında, daha da kötüsü , çünkü en azından bir ses çalar ile harici bir dosyayı kontrol edebilir, kaynak kodunda gömülü veri değerleri ile herhangi bir şey yapmak mümkün değildir.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.