Tworzę program przy użyciu biblioteki stworzonej przez innego programistę (pracuje w tej samej firmie). Niedawno odkryłem wyciek w bibliotece, który zdarza się w pewnych warunkach sieciowych po kilku godzinach działania. Złożyłem błąd z opisem warunków, aby ten wyciek miał miejsce. Ten programista odpowiedział, że „to nie wystarczy”, „nie jest odpowiedzialny za odtwarzanie błędów” i muszę utworzyć test jednostkowy, aby odtworzyć ten błąd, w przeciwnym razie nic nie zrobi.
- Czy on ma rację?
- Co mogę zrobić w tej sytuacji? Utworzenie testu jednostkowego jest niemożliwe, ponieważ zależy od niektórych losowych ustawień sieci.
teamwork
collaboration
użytkownik626528
źródło
źródło
Odpowiedzi:
Czy ma rację, to prawdopodobnie pytanie, na które tak naprawdę nie można odpowiedzieć bez znajomości twojej firmy. Jednak z pewnością nie jest zbyt pomocny.
Zgłaszam z nim błąd (co już zrobiłeś), jeśli powoduje on problem z twoim projektem, podniosę go jako blokera z twoim kierownikiem projektu i jasno stwierdzę, że zgłosiłeś błąd z odpowiednim osoba, ale wpłynie to na twój projekt, jeśli nie zostanie natychmiast naprawiony.
Chciałbym również porozmawiać z deweloperem i wyjaśnić, dlaczego tworzenie testów jednostkowych jest niewykonalne, ale chętnie pokażesz mu to na swoim komputerze (zakładając, że jest to wykonalne?).
źródło
Ma 100% racji, że musisz podać wystarczającą ilość informacji, aby błąd był odtwarzalny - w przeciwnym razie nie ma szansy dowiedzieć się, czy jakakolwiek poprawka, którą poda, naprawdę zadziała.
Ale - jest w 100% w błędzie IMHO, że musi to być test jednostkowy. Jeśli potrafisz opisać scenariusz testowy w taki sposób, aby mógł odtworzyć awarię (przynajmniej z dużym prawdopodobieństwem w rozsądnym czasie lub przez testowanie ręczne), masz dowód, że problem istnieje - co powinno ustalić twojego kolegę odpowiedzialny za to naprawić. Oczywiście, jeśli jesteś w stanie stworzyć scenariusz, który szybciej odtwarza błąd, byłoby to dla niego pomocne. Najlepiej byłoby wykonać z tego zautomatyzowany test, i to zależy od organizacji, która jest za to odpowiedzialna.
źródło
Obie strony powinny włożyć trochę wysiłku.
Deweloper biblioteki powinien włożyć dodatkowy wysiłek nawet bez testów jednostkowych, ponieważ niektórych problemów nie można odtworzyć za pomocą testów jednostkowych. Czasami jest to sprzęt, a czasem konkretna sekwencja poprawnych działań z reszty programu, co powoduje, że biblioteka generuje złe wyniki.
Powinieneś włożyć dodatkowy wysiłek, ponieważ po tym wszystkim nie będę błędem w bibliotece, ale wynikiem niepoprawnych działań reszty programu (np. Uszkodzona sterta może powodować, że każda biblioteka zachowuje się dziwnie). Dlatego sensowne jest ograniczenie w możliwie największym stopniu kodu niebibliotecznego związanego z odtwarzaniem błędów. I prawdopodobnie zrobisz to szybciej i czystiej niż osoba nieznająca kodu Twojej aplikacji.
źródło
Jeśli autor biblioteki nie jest w stanie odtworzyć błędu na podstawie twojego raportu, nie można oczekiwać, że poświęci mu dużo czasu, a co dopiero naprawić.
Ale masz również ograniczoną ilość czasu spędzonego na pracy nad produktem, który jest dla Ciebie interesujący. Niestety może to oznaczać, że błąd nadal występuje i nie ma pracy nad jego rozwiązaniem.
Na szczęście nie musi to być katastrofą - podczas gdy w idealnym świecie całe oprogramowanie byłoby wolne od błędów, tak nie jest, dlatego musimy ustalać priorytety w oparciu o problemy, jakie powoduje USA.
Oznacza to, że rzeczywiście Twoim obowiązkiem jest opracowanie odtwarzalnego przypadku testowego, JEŚLI CHCESZ TO USUNĄĆ. Możesz nie dbać o to, czy zostanie to naprawione, aw takim przypadku zrobiłeś wszystko, co można i należy od ciebie oczekiwać. Możesz chcieć to naprawić, ale nie na tyle, aby poświęcić czas, aby w tej chwili było odtwarzalne. To jest całkowicie do przyjęcia.
Zgłaszanie błędu najlepiej jak potrafisz w czasie, gdy musisz sobie z nim poradzić, jest po prostu dobrym obywatelstwem, nie musisz wykraczać poza to, chyba że jest to konieczne dla twojego programu. I może nie chcesz tego robić nawet wtedy, może istnieć inna biblioteka, z której możesz skorzystać, lub może być możliwe stworzenie własnej biblioteki w rozsądnym czasie. Zasadniczo to Ty decydujesz, jaki i jaki wysiłek jest dla Ciebie wart.
źródło
Byłbym skłonny pozwolić, by śpiące psy na razie kłamały - podniosłeś problem i jest on przypisany do niego. Przypuszczalnie istnieją procesy umożliwiające śledzenie zaległych błędów i ich ściganie?
Jeśli chcesz aktywnie kontynuować ten proces, radzę porozmawiać ze swoim przełożonym, aby sprawdzić, czy dostępne są jakieś narzędzia testowe, które mogą w wiarygodny sposób odtworzyć problem.
Od strony dewelopera - byłoby bardzo obojętne, gdyby nic nie zrobili, biorąc pod uwagę, że dostarczyłeś wymagane informacje. Może się jednak zdarzyć, że mają ogromne obciążenie pracą, więc nie mogą poświęcić czasu potrzebnego na śledzenie problemu.
źródło
Znalazłeś błąd, zgłosiłeś go, a on jest tym palantem.
Gdybyście byli bliskimi przyjaciółmi, zrobiłby coś, by pomóc, ale wolałby po prostu odepchnąć problem.
Możesz zrobić więcej, zgłaszając więcej szczegółów i próbując wesprzeć swoje twierdzenia, że przecieka pamięć. Mimo to masz własne obowiązki i musisz zakończyć swoją pracę.
Zaloguj jak najwięcej informacji do narzędzia do śledzenia błędów i przejdź dalej.
Jeśli zobaczysz tę osobę ponownie w przyszłości. Bądź przyjacielski, spróbuj porozmawiać o wspólnych zainteresowaniach i zrozum, że dobre relacje to znacznie bardziej skuteczny sposób na naprawienie rzeczy, niż każda ilość faktów, które możesz podać na poparcie roszczenia.
źródło
Często w podobnych sytuacjach natknąłem się na założenie, że wszystkie błędy powinny zostać naprawione i chociaż jest to godne podziwu, zdecydowanie jest to świetny cel, aby mieć (powiedzmy sobie, że nigdy nie zamierzaliśmy pisać błędów!), Jest to ostatecznie nierealne każdy projekt o przyzwoitej wielkości, aby naprawić błąd tylko dlatego, że jest to błąd (jeśli można go znaleźć!) Dlatego mamy metody zarządzania projektami i kodowania, wzorce i praktyki itp.
Tak więc, jedną rzeczą, którą powiedziałbym w obronie właściciela biblioteki (i tak było w przypadku, gdy pracowałem nad niektórymi dużymi projektami) jest to, że czas deweloperski kosztuje pieniądze i jest skończonym zasobem, więc decyzja o sposobie obsługi raportu , kto bada, jakie testy są produkowane / potrzebne i ostatecznie, jeśli (a jeśli tak, to kiedy) wprowadzono poprawkę, opiera się wyłącznie na wpływie firmy. Jaki jest wpływ na ponowne uruchamianie długotrwałego procesu, jeśli się nie powiedzie i czy można go łatwo zautomatyzować (a może nie powinieneś już być defensywnym środkiem programowania?), Czy to tylko czas, czy może jest coś więcej ?
Spójrz również na to z ich punktu widzenia, raport o błędzie od jednego użytkownika o nieprzewidywalnym problemie w odrobinie kodu, który zdarza się bardzo rzadko, tylko w połączeniu z ich kodem, być może tylko na jednym komputerze i tylko w zestawie nietypowego czasu warunki po prostu nie będą miały uzasadnienia dla dużej części czasu deweloperów na znalezienie i naprawienie - jeśli to w ogóle możliwe. Ale jeśli jest to wystarczająco mocne uzasadnienie biznesowe, aby ten użytkownik chciał / musiał poświęcić czas na dokładniejsze zbadanie sprawy i dostarczyć wiarygodnego przypadku testowego / aplikacji lub radykalnie bardziej szczegółowego opisu problemu niż ich początkowy, to może to być zupełnie inna gra .
Być może jest to kwestia komunikacji, której właściciel biblioteki nie rozważał w ten sposób, a jeśli masz mocne uzasadnienie biznesowe (na przykład, że Twój kod jest kosztowny dla firmy, ma wymagania prawne dotyczące zgodności, dziurę w zabezpieczeniach lub ma trochę inny znaczący efekt domina), nadszedł czas, aby uruchomić zarządzanie i pozwolić im walczyć.
źródło
Wspomniałeś, że „Złożyłem błąd z opisem warunków spowodowania tego wycieku”.
Jeśli masz pewność, że opis naprawdę wystarczy do odtworzenia błędu, znasz już dokładne warunki. Otóż, jeśli nie możesz napisać testu jednostkowego po znajomości warunków, oznacza to wyraźnie, że nie możesz wyśmiewać niektórych zaangażowanych komponentów lub niektórych części kodu jest zbyt mocno połączonych, aby umożliwić stworzenie praktycznego testu jednostkowego.
Należy poprosić właściciela biblioteki o zmianę kodu, aby umożliwić utworzenie testu jednostkowego. Będziesz musiał jasno wyjaśnić, co jest w bibliotece, co powstrzymuje cię przed utworzeniem testu jednostkowego. Będzie musiał zmienić kod, w przeciwnym razie przyzna, że test jednostkowy nie jest możliwy przy obecnym kodzie. W obie strony wygrywasz.
Jeśli to nie zadziała, dostępne są następujące opcje:
źródło