Aşağıdaki sistemle çalışıyorum:
Network Data Feed -> Third Party Nio Library -> My Objects via adapter pattern
Geçenlerde, kullandığım kütüphanenin sürümünü güncellediğimde, başka şeylerin yanı sıra, zaman damgasının (üçüncü taraf kütüphanesinin döndüğü long
) dönemin ardından milisaniyeden devir sonrası nanosaniye olarak değiştirilmesine neden olan bir sorun yaşadık .
Sorun:
Üçüncü şahıs kütüphanesinin nesnelerine adanmış testler yazarsam, üçüncü şahıs kütüphanesinin objeleri hakkında bir hata yaptıysam testim yanlış olur. Örneğin, zaman damgalarının hassasiyetini değiştirdiğini fark etmedim, bu da ünite testinde değişiklik yapılması gerekmesine neden oldu, çünkü sahte bilgisayarım yanlış veriyi geri verdi. Bu, kütüphanede bir hata değil , belgelerde bir şeyleri özlediğim için oldu.
Sorun şu ki, bu veri yapılarında yer alan verilerden emin olamıyorum çünkü gerçek veri akışı olmadan gerçek veri üretemiyorum. Bu nesneler büyük ve karmaşıktır ve içerisinde birçok farklı veri parçası vardır. Üçüncü şahıs kütüphanesinin dokümantasyonu yetersiz.
Soru:
Bu davranışı test etmek için testleri nasıl ayarlayabilirim? Bu sorunu bir birim testinde çözebileceğimden emin değilim, çünkü testin kendisi kolayca yanlış olabilir. Ek olarak, entegre sistem büyük ve karmaşıktır ve bir şeyi kaçırmak kolaydır. Örneğin, yukarıdaki durumda, birkaç yerde zaman damgası işlemeyi doğru ayarlamıştım, ancak bir tanesini özledim. Sistem, entegrasyon testimde çoğunlukla doğru şeyleri yapıyor gibiydi, ancak bunu üretime dağıttığımda (daha fazla veriye sahip) sorun ortaya çıktı.
Şu anda entegrasyon testlerim için bir işlemim yok. Sınama esastır: ünite testlerini iyi tutmaya çalışın, işler bozulduğunda daha fazla test ekleyin, sonra test sunucuma konuşlandırın ve işlerin mantıklı göründüğünden emin olun, daha sonra üretime dağıtın. Bu zaman damgası sorunu, alaylar yanlış oluşturulduğundan ünite sınamalarını geçti, daha sonra herhangi bir ani ve belirgin soruna neden olmadığından entegrasyon testini geçti. QA departmanım yok.
Timestamp
(adlandırılmış yöntemleri (istedikleri temsilini içeren) sınıf ve sağlamak .seconds()
, .milliseconds()
, .microseconds()
, .nanoseconds()
) ve ders adlandırılmış kurucular. O zaman sorun olmazdı.