Hata üretme sorumluluğu


25

Başka bir programcının hazırladığı bir kütüphaneyi kullanarak bir program geliştiriyorum (aynı şirkette çalışıyor). Son zamanlarda kütüphanede, birkaç saat çalıştıktan sonra belirli ağ koşullarında meydana gelen bir sızıntı keşfettim. Bu sızıntının gerçekleşmesi için koşulların açıklamasını içeren bir hata bildirdim. Bu geliştirici, "bu yeterli değil", "böcekleri çoğaltma sorumluluğu değil" diye cevap verdi ve bu hatayı yeniden üretmek için birim testi oluşturmam gerekiyor, aksi halde hiçbir şey yapmaz.

  1. O haklı mı?
  2. Bu durumda ne yapabilirim? Birim testi oluşturmak mümkün değildir, çünkü bazı rasgele ağ zamanlamalarına bağlıdır.

26
Ünite testini yazacaksanız, hatayı düzeltip her şey için itibar kazanabilirsiniz.
JeffO

3
@JeffO, o kütüphaneyi yönetiyor ve bugfix'i kabul etmiyor. Çünkü "bugüne dek bugüne var olan ikna olmadı"
user626528 12


Kütüphane sorumlusu, hataları otomatik olarak yapılan testler olmadan kabul etmeyen politikasını belirleyen bir ekipte olabilir mi? Birim test teriminin aslında ne beklenenin ne zaman otomatik bir test olabilir, özellikle de bir entegrasyon testi için ne zaman yasaklandığını da duydum.
Joshua Drake

Yanıtlar:


30

Doğru mu, muhtemelen şirketinizi tanımadan gerçekten cevaplanamayan bir soru. Ancak, kesinlikle pek yardımcı olmuyor.

Projenizde bir soruna neden oluyorsa, yaptığınız hatayı onunla birlikte ortaya koyardım, o zaman proje yöneticinizle bir engelleyici olarak yükseltirim ve hatayı uygun bir şekilde ortaya çıkardığınızı açıkça belirtirim. kişi ancak derhal düzeltilmezse projenizi etkileyecektir.

Ayrıca gidip geliştiriciyle konuşup neden birim testleri oluşturmanın neden uygun olmadığını açıklardım ama ona makinenizde göstermekten memnuniyet duyarsınız (bunun mümkün olduğunu varsayarak?).


48

Hatayı tekrarlanabilir hale getirmek için yeterli bilgiyi sağlamanız gerektiği konusunda% 100 haklıdır - aksi takdirde sağladığı herhangi bir düzeltmenin gerçekten işe yarayıp yaramadığını bulma şansınız yoktur.

Ancak - IMHO'nun% 100 yanlış olması, bunun birim testi şeklinde olması gerektiği şeklinde yanılıyor. Bir test senaryosunu, hatayı yeniden oluşturabilecek şekilde (en azından makul bir süre içinde yüksek olasılıkla veya el ile test ederek) yeniden tanımlayabiliyorsanız, sorunun var olduğuna dair bir kanıtınız var; Bunu düzeltmek sorumluluğundadır. Tabii ki, hatayı daha hızlı yeniden üreten bir senaryo oluşturabiliyorsanız, bu onun için faydalı olacaktır. İdeal olarak, kişi bunun otomatik bir testini yapar ve bunun sorumluluğunu üstlenecek olan kuruluşunuza bağlıdır.


11
Öyleyse bir kullanıcı "her zaman ve sonra" çökerse, kullanıcı için belirleyici bir kalıp olmadan, geliştirici bunu düzeltmek zorunda kalmaz, çünkü kullanıcı komutta yeniden üretemez? Burada kesinlikle katılmıyorum ...
Heinzi

20
@Heinzi: "Her zaman ve sonra uygulama çöküyor" hata raporunu alırsam, bu konuyu üzerinde çalışmak için çok düşük bir öncelik veririm. Kullanıcının beklediğim asgari şey, "şimdi ve sonra" ne sıklıkta yazdığını, uygulamanın en son çöktüğü zamanki uygulamada tam olarak ne yaptığını ve tam hata mesajını yazmasıdır.
Doktor Brown,

3
@ user626528: IMHO'ya kütüphane sahibinin, hatayı yeniden üretmesini söylediğiniz adımları atmaya çalışması gerekir - açıklamanız herhangi bir hata göstermediğinde 500 farklı senaryoyu denemesi gerekmez.
Doktor Brown,

6
Muhabir çoğaltma adımları sağlamak zorunda olmamalıdır; Çok sık sık, sadece otomatik bir işlem sırasında meydana gelirse, çarpma işleminden bir boşaltma ekleriz. Düzeltmenin doğrulanması için çoğaltma adımlarını bulmak devralanın sorumluluğundadır.
avakar

2
(Bu, muhabirin yardımcı olmaya çalışmaması ve eğer onlar biliyorsa, adımlar atması gerektiği anlamına gelmez. Sporadik çarpışmalar için, muhabirin bileşen sahibinin muhtemelen daha hızlı bir şekilde çözeceği bir şeyi araştırmak için zaman yakma zorunluluğu yoktur. )
avakar

9

Her iki taraf da biraz çaba sarf etmeli.

Kütüphane geliştiricisi, birim testleri olmadan da ek çaba harcamalıdır, çünkü bazı konular birim testleri ile çoğaltılamaz. Bazen donanımdır, bazen programın geri kalanından kaynaklanan ve kütüphane kötü sonuçlar veren bazı doğru eylemler dizisidir .

Bunlara ek olarak biraz çaba sarf etmelisiniz, çünkü bütün bunlardan sonra kütüphanemde bir hata olmam, fakat programın geri kalanından kaynaklanan yanlış eylemlerin sonucu (ör. Bozuk yığın herhangi bir kütüphaneyi garip davranabilir). Böylelikle, böcek çoğaltmaya dahil olan kütüphane dışı kodları mümkün olduğunca azaltmak mantıklıdır. Ve muhtemelen uygulamanızın koduna aşina olmayan bir kişiden daha hızlı ve daha temiz bir şekilde yapacaksınız.


5

Kütüphanenin yazarı, raporunuza dayanarak hatayı çoğaltamıyorsa, ondan üzerinde çok fazla zaman harcamasını beklemek makul değildir, düzeltmek için bırakın.

Ancak, ilginizi çeken bir ürün üzerinde çalışmak için sınırlı bir zaman harcıyorsunuz. Ne yazık ki, bu hatanın devam edeceği ve çözülmesi için hiçbir çalışma yapılmadığı anlamına gelebilir.

Neyse ki bu mutlaka bir felaket değildir - ideal bir dünyada, tüm yazılımlar hatasız olacaktır, durum böyle değildir ve bu yüzden ABD'nin neden olduğu sorunlara dayanarak öncelik vermeliyiz.

Bu, SİZİN SABİTMEYEN İSTEĞİNİZ, yeniden üretilebilir bir test durumu geliştirmenin sizin sorumluluğunuzda olduğu anlamına gelir. Düzeltilip düzeltilmemesi umrunda olmayabilir ve bu durumda, sizden beklenebilecek ve beklenebilecek her şeyi yaptınız. Sabit olmasını isteyebilirsiniz, ancak şu anda tekrarlanabilir hale getirmek için zaman ayırmaya yetmeyebilirsiniz. Bu tamamen kabul edilebilir.

Başa çıkmanız gereken zamanlardaki kabiliyetinizden en iyisini bir hatayı rapor etmek sadece iyi bir vatandaşlıktır, programınız için gerekli olmadıkça bunun ötesine geçmenize gerek yoktur. Ve o zaman bile yapmak istemeyebilirsiniz, kullanabileceğiniz başka bir kütüphane olabilir veya kendi zamanınızı makul bir sürede almak mümkün olabilir. Temel olarak, sizin için ne tür bir çabaya değeceğine karar vermek size bağlıdır.


1
Cevabınız benim için çok garip görünüyor. Hatalarımı kendi başıma düzeltirim ve birinin benim yerine kirli işler yapmasını beklemeyin. Kod yazarının kodunu düzeltmek için elinden gelenin en iyisini yapmasının birincil sorumluluğu olduğunu söyleyebilirim.
user626528

1
Şimdi düzeltilmesini isteyen SİZDEN, onu düzeltmek için daha önemli bir şeyin olmadığı 10 veya 12 yıl yerine, şimdi HIS zamanının tamir etmeye değer olduğuna ikna etmek sizin sorumluluğunuzdadır. theregister.co.uk/2013/01/21/kde_bug_quashed . Yeniden üretilemeyen bir hata, X anlamlılığı ve aynı derecede tekrarlanabilir bir hata verildiğinde, her zaman yeniden üretilebilir hata üzerinde çalışacağım.
jmoreno

çok fazla ego O ucube kütüphanede çalışmak için para alıyor .
user626528

1
@ user626528: Bu ego ile ilgili değil, önceliklerle ilgili - bir böceğin önceliğini düşürememek. İki EOI (Hemen İşletmeciyi Yürüt) hataları göz önüne alındığında, biri çoğaltılabilir, biri değil, önce çoğaltılacak olan üzerinde çalışacağım ve diğer geliştiricilere de aynısını yapmasını söyleyeceğim. Kütüphane bu kadar kullanılmazsa, başka bir projede tamamen çalışabilirim - içindeki böcekler o kadar önemli olmasa bile. Bu kütüphane üzerinde çalışmak için sadece / ödenmesi ve ödenmesi gereken bir özellik isteği veya bunun dışında herhangi bir hata bulunmuyorsa, o zaman evet, sadece yapması gerekir.
jmoreno

2

Uyuyan köpeklerin şimdilik yalan söylemesine meyilliyim - bu konuyu gündeme getirdin ve bu ona verildi. Muhtemelen göze çarpan böcekleri takip etmek ve bunları takip etmek için süreçler var?

Bunu daha ileri düzeyde ilerletmek istiyorsanız, sorunu güvenilir bir şekilde yeniden oluşturabilecek herhangi bir test aracı olup olmadığını görmek için yöneticinizle konuşmanızı öneririm.

Geliştiricinin tarafında - gerekli bilgiyi sağladığınızı verilen hiçbir şey yapmamaları ciddi şekilde eylemsiz olacaktır. Ancak çok büyük bir iş yüküne sahip olmaları mümkün olabilir, bu yüzden sorunu çözmek için gereken zamanı ayıramazsınız.


2

Bir böcek buldunuz, rapor ettiniz ve o bir pislik oluyor.

Siz ikiniz yakın arkadaş olsaydınız yardım etmek için bir şeyler yapardı, ama sadece konuyu geri çekmeyi tercih etti.

Daha fazla ayrıntı bildirerek ve hafızada kaçak olduğuna dair iddialarınızı desteklemeye çalışarak daha fazlasını yapabilirsiniz. Yine de, kendi sorumlulukların var ve kendi işini bitirmen gerekiyor.

Hata izleyicisine mümkün olduğunca fazla bilgi girin ve devam edin.

Gelecekte bu kişiyi tekrar görürseniz. Arkadaş canlısı olun, ortak çıkarlar hakkında konuşmaya çalışın ve iyi ilişkilerin işleri düzeltmenin çok daha etkili bir etkisi olduğunu, ardından bir talebi desteklemek için sağlayabileceğiniz her türlü gerçeği anlayın.


Kütüphane geliştiricisine biraz sempati duyuyorum. Belki de bakış açıları, uygulama geliştiricisinin kütüphaneyi kullanmaya çalıştığı ve koduyla kilitlenmesine neden olmuş olmasıdır. Vahşi doğada veya başka bir geliştirici tarafından rapor edilmediğinden, onlara göre düşük öncelikli (veya sahte) bir hatadır.
Robbie Dee,

@RobbieDee evet doğru, bu benim en iyi cevaplarımdan biri değildi. Ben sadece aynı şirkette çalıştıklarını düşünerek ikisinin birlikte çalışamamasının garip olduğunu düşündüm. Yani, işletme sahibi bir çalışanın destek almak için buraya gelmesi gerektiğini duyduysa. Bunun hakkında ne düşüneceğini merak ediyorum. Benim yerimde bir şeyin olmasını istememiştim.
Reactgular

0

Sıklıkla, benzer durumlarda karşılaştığım şey, tüm hataların düzeltilmesi gerektiği ve takdire şayan olsa da kesinlikle mükemmel bir amaçtır (bununla asla böcek yazmak için yola çıkmamıza izin verelim!). bir hatayı sadece bir hatadır olduğu için düzeltmek için uygun boyutta herhangi bir proje (eğer bulabilirseniz!) Bu yüzden proje yönetimi ve kodlama metodolojileri, kalıpları ve uygulamaları vs.

Bu nedenle, kütüphane sahibinin savunmasında (ve bazı büyük projeler üzerinde çalıştığım zaman olduğu gibi) söyleyeceğim tek şey, zamanın paraya mal olduğu ve sınırlı bir kaynak olduğu ve bu yüzden bir raporun nasıl işlendiğine dair karar , kim araştırır, hangi testlerin üretildiğini / ihtiyaç duyulduğunu ve nihayetinde (ve eğer öyleyse) bir düzeltmenin yapılmasını sağlarsa, tamamen iş etkisine dayanır. Uzun süredir devam eden sürecinizi bir süre sonra tekrar başlatmanın başarısız olması ve bunun yerine kolayca otomasyona geçebilmenizin etkisi nedir (ve belki de zaten bir savunma programlama ölçütü olarak olmamalısınız?) Tam zamanı mı yoksa daha fazlası mı? ?

Ayrıca, kendi bakış açısına göre, bir kodun tahmin edilemeyen bir sorunun bir kullanıcı tarafından, nadiren gerçekleşen, yalnızca kendi kodlarıyla bağlantılı olarak, muhtemelen sadece bir makinede ve sadece bir dizi olağandışı zamanlama altında gerçekleşen bir hata raporuna bakın. Koşullar sadece bulmak ve düzeltmek için dev bir zaman diliminin güçlü bir gerekçesine sahip olmayacak - eğer mümkünse. Ancak, bu kullanıcının daha ayrıntılı bir şekilde araştırma yapmak için zaman ayırması ve güvenilir bir test durumu / uygulaması ya da başlangıçta olduğundan çok daha ayrıntılı bir sorun açıklaması yapması istenmesi / ihtiyaç duyması için yeterince güçlü bir iş vakasıysa, o zaman tamamen başka bir suç adı olabilir. .

Bu, belki de kütüphane sahibinin böyle bir şeyi yapmayı düşünmediği bir iletişim meselesidir ve eğer güçlü bir iş vakanız varsa (örneğin, kodunuz iş için pahalı, yasal bir uyumluluk şartı, güvenlik deliği veya diğer büyük etki yaratma etkisi) o zaman yönetime başlama ve mücadele etmelerine izin verme zamanı.


1
Birinin cevabını (pratik olasılık olan) kötü ve aşağı oy kullandığını düşündüğünü duyuyorum. Aynısı cevabımda da oldu.
saat

-3

'Bu sızıntının gerçekleşmesi için koşulların açıklamasını içeren bir hata bildirdim' demiştiniz.

Açıklamanın hatayı çoğaltmak için gerçekten yeterli olduğundan eminseniz, o zaman zaten kesin koşulları bilirsiniz. Şimdi, koşulları bildikten sonra birim testi yazamıyorsanız, bu açıkça söz konusu parçaların bazılarını alamazsınız veya kodun bazı kısımları pratik birim testi oluşturmak için fazla sıkıca bağlanmış demektir.

Birim testi oluşturmanıza izin vermek için kütüphane sahibinden yeniden kod kodu istemeniz gerekir. Birim testi oluşturmak için sizi durduran, kütüphanede ne olduğunu net bir şekilde açıklamanız gerekecektir. Başka bir şekilde yeniden kodlama kodu girmesi gerekir, aksi halde birim testinin mevcut kodla mümkün olmadığını kabul eder. Her iki yönde de kazandın.

Bu işe yaramazsa, aşağıdaki seçeneklere sahipsiniz:

  • Hatayı daha fazla kanıtla çoğaltabilirsiniz.
  • Daha yüksek bir otorite kullanmayı deneyin ve kanıtlarınızı değerlendirmesini isteyin.
  • Prototip uygulamada kütüphaneyi sahte ortamı olan ve sadece hatayı yeniden oluşturmak için kodlanacak şekilde kullanmayı deneyin. Bu şekilde, en azından hatanın var olduğunu ispat edebileceksiniz.

3
Kütüphane sorumlusu için birim testi oluşturmak OP'lerin sorumluluğu değildir.
Andy,

6
Diğer geliştirici birinden gelen hata raporlarını görmezden geliyorsa, büyük bir yeniden yapılandırma talebine olumlu cevap verme şansını neredeyse sıfır şansı vardır. Ayrıca, tüm sorun türleri birim testleriyle kolayca yeniden üretilemez: programmers.stackexchange.com/questions/196105/…
Dan Neely

1
@NeNeely: O görmezden gelmiyor, muhabirin daha fazla bir şey yapması gerektiğini - muhabir için yapmasının mümkün olmadığını iddia ediyor. Ve muhabir geri dönüş yapmak zorunda! Ben de buna dahil olabileceği için otoriteyi de dahil etmeyi önerdim.
isntn

1
@Andy Bazı pozisyonlarda, otomatik test olmadan hataların kabul edilmemesi şirket politikasıdır.
Joshua Drake

5
Oylamanın doğru kullanımı konusunda kafanız karışmış gibi görünüyor ve bu konuda temkinli olmanız da davanıza yardımcı olmuyor. Aşağı oylar, “Bunun kötü bir cevap olduğunu düşünüyorum” demenin kabul edilen yolu. Saldırgan dil, (yalnızca) aşağı oylama yoluyla değil, cevabın geri kalanının yararlı olup olmadığına bağlı olarak ya düzenleyerek ya da işaretlenerek ele alınmalıdır. Bağlam dışı bir cevap, ne kadar korkunç olduğuna bağlı olarak iki şekilde de yapılabilir.
Dan Neely,
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.