Testowanie i używanie narzędzi to dwie podstawowe charakterystyki człowieka.
W każdej dziedzinie i w każdym obszarze narzędzia, których używamy zmieniają nie tylko nasze otoczenie, ale również to, jak pracujemy i jak żyjemy.
Narzędzia używane są również w testowaniu, co stanowi wyzwanie dla każdego testera.
Zwiększona presja, szybkie testowanie zmuszają do powszechniejszego użycia narzędzi.
Testowanie oprogramowania jest czynnością wykonywaną przez człowieka-testera. Tak jak programowanie jest wykonywane przez programistę.
Sprawdzenie jest działaniem, jakie narzędzie testowe może wykonać. Tak jak kompilowanie jest wykonywane przez narzędzie programistyczne.
Nikt nie mówi o manualnym i automatycznym programowaniu. Jest programowanie i są działania wykonywane przez narzędzia. To, co robią narzędzia do programowania nie nazywamy już programowaniem.
Można więc stworzyć nowe definicje:
Testowanie - proces oceniania produktu poprzez uczenie się go w drodze eksperymentu, które uwzględnia: odpytywanie, studiowanie, modelowanie, obserwację oraz interferowanie.
Sprawdzanie - proces oceny poprzez zastosowanie algorytmicznych reguł decyzyjnych dla konkretnych obserwacji produktu.
Z powyższych wynikają następujace stwierdzenia:
- Testowanie obejmuje sprawdzanie, gdzie sprawdzanie nie obejmuje testowania.
- Sprawdzanie wykonywane jest przez narzędzie, gdzie testowanie może być jedynie wspierane narzędziami.
- Testowanie jest niekończącą się inwestygacją, gdzie sprawdzanie jest szybkim sprawdzeniem faktu oraz reguł powiązanych z tym faktem.
- Sprawdzanie nie jest tym samym co potwierdzanie.
- Sprawdzanie jest często mylone z testowaniem, a celem autorów jest wyjaśnianie tej różnicy.
- Sprawdzanie można zawsze opisać, gdzie w testowaniu nie zawsze jest to możliwe.
- Asercja jest sprawdzaniem, ale nie każde sprawdzanie jest asercją.
- Sprawdzanie nie jest złą rzeczą, ale jest jedynie taktyką testowania.
Sprawdzanie wykonywane przez człowieka kontra sprawdzania wykonywane przez maszynę
Sprawdzanie wykonywane przez ludzi jest próbą podążania za algorytmicznym procesem, gdzie w sprawdzeniu wykonywanym przez maszyny narzędzia są tym procesem. Jeśli każesz człowiekowi wykonywać zestaw instrukcji, które nie są możliwe do ukończenia, w którymś momencie człowiek zmieni swoje działania albo zrezygnuje. Maszyna tego nie potrafi.
Ludzie mogą wykonywać umowtywowane działania, maszyny mogą prezentować zaprogramowane zachowania.
Zaproponowana wizualizacja dla testowania (testing), sprawdzania wykonywanego przez człowieka (human checking), sprawdzania wykonywanego przez maszynę (machine checking) oraz obszaru wspólnego, w którym człowiek i maszyna współpracują przy sprawdzaniu (human/machine checking).
Wpis Jamesa Bacha znajdziecie tutaj: http://www.satisfice.com/blog/archives/856
Wpis Michaela Boltona znajdziecie tutaj: http://www.developsense.com/blog/2013/03/testing-and-checking-redefined/
Wpisy te zostały skonfrontowane z praktycznymi przykładami przez Iana na stronie: http://exploringuncertainty.com/blog/archives/1026
Zachęcamy do przeczytania oryginałów!