Mamy wielojęzyczną stronę internetową, na której kilka dni temu wykryto błąd. Wyświetlał dane w innym języku w innym języku, a także wybrano mieszankę danych takich jak język angielski, ale wyświetlał również inne dane w języku na stronie i odwrotnie. Robi to rzadko, ale jest obecny na stronie internetowej. Przejrzenie kodu również nie pomaga, ponieważ nie zawsze tak się dzieje.
Wszelkie sugestie dotyczące znalezienia problemu w odpowiednim czasie? Proszę o strategie tutaj.
web-development
testing
bug
maz3tt
źródło
źródło
Odpowiedzi:
Pierwszym krokiem jest próba scharakteryzowania tego, co może powodować tego rodzaju problem. Ponieważ wiąże się to z wyborem poprawnego języka dla sekcji kodu, zacznij od rozważenia następujących kwestii:
Teraz, gdy scharakteryzujesz możliwości tego, co może pójść nie tak, nadszedł czas, aby upewnić się, że masz dane, których potrzebujesz, aby dowiedzieć się, co poszło nie tak.
Wreszcie, po zawężeniu problemu do miejsca, w którym wiesz, jak go odtworzyć, i co go powoduje, napisz najmniejszy automatyczny test, który możesz wymusić w kodzie. Jeśli zawęziłeś problem do jednej klasy lub pary klas nie współpracujących ze sobą poprawnie, odtwórz go na tym poziomie. Nie powinieneś odradzać 100 wątków, aby to zrobić, po prostu wykonaj najmniejszy test, który może spowodować, że problem wystąpi w 100% przypadków.
Teraz możesz to naprawić i mieć całkowitą pewność, że nie wróci, by cię ugryźć.
źródło
Błąd nie jest nie do naprawienia. Po prostu jeszcze nie wiesz, jak to odtworzyć.
Żaden błąd nie jest przypadkowy, chyba że zgłaszasz wyjątek na podstawie wartości zwracanej przez jakąś instrukcję Random ().
Wiem, że to może wydawać się semantyką, ale psychicznie uspokajające jest mówienie tego sobie.
Bardzo trudno i frustrujące jest dowiedzieć się, jak naprawić błąd, który zdarza się tylko z powodu złożonych warunków wyścigowych lub podobnych.
Jeśli chodzi o to, jak to znaleźć, chciałbym włączyć / dodać trochę logowania do aplikacji w miejscach, które mogłyby dać ci więcej informacji.
Następnie powiedz ludziom, którzy widzą błąd (niezależnie od tego, czy są to Devs, QA, użytkownicy końcowi), aby zgłosili się, jak tylko zobaczą, z czasem, kiedy to się stało, a następnie przejrzą twoje dzienniki. Zapytaj ich o inne informacje, a błąd może się zdarzyć tylko z powodu interakcji kilku różnych systemów lub warunków wyścigu
Mam nadzieję, że będziesz w stanie znaleźć trop.
źródło
Możesz spróbować znaleźć miejsca w kodzie, w których można rozpoznać wystąpienie problemu (na przykład niespójne parametry w metodzie), dodać kontrole do kodu i pozwolić im na dodanie dodatkowych informacji do dziennika debugowania (np. Ślad stosu, obiekty dodane do sesji itp.)
Robiąc to, przy odrobinie szczęścia możesz uchwycić informacje o zdarzeniach i wydedukować drogę do problemu.
źródło
Automatyzacja powinna pomóc, jeśli te same kroki do odtworzenia, które czasami zawodzą, zautomatyzuj to i umieść w pętli. Uruchom 50 000 razy i jest bardzo prawdopodobne, że wystąpi.
źródło
spróbuj znaleźć wzorce określające warunki, które powodują pojawienie się tego problemu. Powinno to skierować Cię do części kodu, które zawiodły (lub zachowują się niekonsekwentnie).
źródło
Można wykryć, gdy problem jest występujących? Jeśli tak, czy możesz rzetelnie zrzucić informacje o stanie systemu w tym momencie?
Jeśli odpowiedź na oba powyższe pytania brzmi „tak”, przygotuj kod, aby zapisać jak najwięcej informacji w momencie wystąpienia błędu, a następnie poczekaj.
Nie zastępuje to tego, co sugerują inni (nadal będziesz musiał przemyśleć, w jaki sposób kod może przejść do stanu, w którym widzisz), ale dopóki nie możesz odtworzyć błędu do woli, dobrze jest nie marnować okazji, w których się pojawia.
źródło