Robię kontrolę jakości dużego komercyjnego kodu, ten irytujący scenariusz pojawia się zbyt często. Zazwyczaj oznacza to, że nie ma żadnych żelaznych dochodów na budowę pliku binarnego na wszystkich obsługiwanych przez nas platformach. Więc jeśli programista zbuduje swój własny kod (który musi zrobić, aby debugować i naprawić) i nie wykona tej samej procedury kompilacji do litery, istnieje szansa, że błędy zależne od systemu pojawią się magicznie (lub pojawią się) . Oczywiście te rzeczy zwykle zamykają się z „działa dla mnie” w bazie danych błędów, a jeśli zawiodą przy następnym uruchomieniu problemu, błąd można ponownie otworzyć. Ilekroć podejrzewam, że błąd może zależeć od systemu, próbuję go przetestować na różnych platformach i zgłosić, w jakich warunkach to się dzieje. Często problem uszkodzenia pamięci pojawia się tylko wtedy, gdy uszkodzone dane są wystarczająco duże, aby spowodować awarię. Niektóre platformy (kombinacje HW i OS) mogą upaść bliżej rzeczywistego źródła uszkodzenia, a to może być bardzo cenne dla biednego faceta, który musi go debugować.
Tester musi osiągnąć pewną wartość dodaną, wykraczającą poza zwykłe zgłaszanie awarii w swoim systemie. Spędzam dużo czasu szukając fałszywych alarmów - być może platforma, o której mowa, jest przeciążona lub sieć ma usterkę. I tak, czasami można uzyskać coś, na co naprawdę wpływają losowe zdarzenia czasowe, błędy sprzętowe mogą często przypominać proto przykład: jeśli dwa żądania danych powrócą dokładnie w tym samym okresie zegara, a logika sprzętowa do obsługi potencjalnego konfliktu jest wadliwa, wtedy błąd będzie pojawiał się tylko sporadycznie. Podobnie w przypadku przetwarzania równoległego, chyba że przez staranne zaprojektowanie rozwiązania będziesz niezależny od tego, który procesor okazał się szybszy, możesz dostać błędy, które zdarzają się tylko raz na niebieskim księżycu, a ich statystyczna nieporozumliwość czyni debugowanie koszmarem.
Również nasz kod jest aktualizowany, zwykle wiele razy dziennie, śledząc dokładny numer wersji kodu źródłowego, ponieważ kiedy poszedł na południe, może być bardzo użyteczną informacją do debugowania. Tester nie powinien pozostawać w kontrowersyjnej relacji z debuggerami i programistami, ponieważ jest częścią zespołu, który poprawia jakość produktu.