Heisenbug, czyli ciekawy typ defektu

Heisenbug (lub po spolszczeniu heisenbag) to defekt oprogramowania, który po jednym jego zaobserwowaniu znika lub też modyfikuje swoje objawy.

 

Defekty oprogramowania możemy dzielić na wiele różnych sposobów. Często klasyfikujemy je ze względu na krytyczność oraz ze względu na priorytet (pilność naprawy). Inną możliwością jest definiowanie reprodukowalności defektów. Wśród tych z najniższą reprodukowalnością znajduje się właśnie heisenbug.

Nie da się w łatwy sposób wyizolować warunków występowania heisenbuga, ponieważ wymyka się on standardowym regułom reprodukcji defektów. Przy kolejnej próbie jego odtworzenia w tych samych warunkach przestaje on występować lub daje zupełnie inne rezultaty. Sama nazwa jest nawiązaniem do Wernera Heisenberga, autora zasady nieoznaczoności i jednego z pionierów mechaniki kwantowej. Uznał on, że sam fakt obserwacji pewnych efektów w mechanice kwantowej ma wpływ na stan obserwowanego obiektu. Podobny przykład możemy znaleźć w elektronice i określa się to mianem efektu próbnika, czyli sytuacja, gdy stosowanie narzędzia pomiarowego ma bezpośredni wpływ na zachowania elementu.

Heisenbug w oprogramowaniu może występować przykładowo wtedy, kiedy obserwuje się zachowanie oprogramowania przy pomocy debuggera, który potrafi zmienić sam kod, adresy pamięci zmiennych, czy czas uruchomienia. 

Przy okazji zaproponowano kilka innych pojęć nawiązujących do (nie)typowych defektów jak:

  • bohrbug - solidny i zawsze reporodukowalny defekt
  • mandelbug - defekt tak skomplikowany, że utrudnia swoją naprawę
  • schrödinbug - defekt, który pojawia się w oprogramowaniu, które programista ocenia jako niemożliwe do uruchomienia
  • hindenbug - defekt o katastrofalnych konsekwencjach.

Nazwy te nie są jednak tak rozpowszechnione jak heisenbug.

 

 

Źródła

https://en.wikipedia.org/wiki/Heisenbug

 

 

 

Najbliższe szkolenia

 

4-5.05.17 - Warszawa

Dobry Przypadek Testowy - Laboratorium


15-16.05.17 - Łódź

Automatyzacja testowania


15-17.05.17 - Kraków

ISTQB Poziom Podstawowy (Foundation Level)

 

Partnerzy

Narzędzia testerskie