Czym jest testowanie? Jaka jest definicja jakości? I dlaczego praca testera jest tak ważna w każdej firmie tworzącej oprogramowanie? Na te i inne pytania odpowiedzi możemy znaleźć w książce pt. Zawód tester Radosława Smilgina, której fragment (o testowaniu) możecie przeczytać poniżej.

4. Testowanie

4.1. Definicja testowania

Każdy obszar, w którym przyjdzie ci, czytelniku, kiedykolwiek pracować, powinien zostać przez ciebie zdefiniowany. Definicja pomaga odpowiedzieć sobie na pytanie: „Co należy do moich obowiązków?” Światłe głowy starają się ciągle określić, czym jest testowanie, więc twoja praca powinna być prosta. Tak niestety nie (do końca) jest. Jak w wielu innych obszarach, również w testowaniu są sprzeczne interesy, różne szkoły, organizacje i podejścia do problemu. Każda z nich linę definicji próbuje przeciągnąć na swoją stronę, jednocześnie wmawiając nam, że druga strona kompletnie się myli i nie ma (bo nie może mieć) racji. Co gorsza, niektóre organizacje zrzeszające testerów same sobie przeczą w definiowaniu testowania. Inni z kolei definiują testowanie tak szeroko, że trudno je odróżnić od wytwarzania oprogramowania. Przypomina to nieco targ, na którym przekupki próbują przelicytować konkurencję argumentami, że „Moje jest lepsze od innego, bo ma więcej”. Każdy będzie nam wmawiał, że to jego definicja jest najpełniejsza lub jedyna poprawna. W ogólnym chaosie komunikacyjnym tester lub adept testowania musi poznać ofertę wielu organizacji definiujących testowanie, aby wybrać własną drogę.

W tym ogólnym rozgardiaszu ludzie i firmy funkcjonują od lat. W rezultacie niektórzy pracodawcy nie widzą różnicy między testowaniem a definiowaniem procesów, a testerzy w ich firmach są nazywani specjalistami ds. zapewnienia jakości, inżynierami jakości czy też QA-owcami (od ang. quality assurance – czyli zapewnianie jakości).

Testowanie doczekało się pewnego standardu, ale nie doczekało się standaryzacji, co niekoniecznie musi być problemem. Musimy definicję testów wyłuskać z tego, co aktualnie mamy, a także skorzystać z wiedzy pobocznej. Wspomniane zapewnienie jakości, programowanie oraz zarządzanie projektami mają swoje definicje. Testowanie próbuje funkcjonować na styku tych obszarów, możemy więc wykorzystać je do określenia granic testowania.

Każdego z nas prędzej czy później czeka konieczność znalezienia odpowiedzi na pytanie, czym jest dla niego testowanie. Pytań będzie wiele, a odpowiedzi nie będą jednoznaczne.

  • Czy testowanie jest szukaniem defektów?
  • Czy testowanie jest weryfikacją poprawności działania funkcjonalności?
  • Czy testowanie jest używaniem i ocenianiem?
  • Czy testujemy po to, aby pokazać, że coś działa?

„Ostateczna definicja testowania” jest tworem mitycznym i prawdopodobnie nigdy nie uda się jej sformułować. Przyjdzie dzień, w którym powiemy sobie: „Tak, mam TO! Określiłem definicję testowania”. Niestety po upływie pewnego czasu, po nowych doświadczeniach uświadomimy sobie, że jednak „Nie, to nie było TO”. Może w takim razie nie warto się męczyć? Może warto popłynąć z nurtem? Każdy kolejny pracodawca przedstawi własne postrzeganie testowania, definiując zakres obowiązków na naszym stanowisku, a my po prostu zaakceptujemy to, co otrzymamy. Jest to jakieś rozwiązanie, konformistyczne do granic, ale zawsze rozwiązanie.

Część z nas zostanie na wysokim poziomie ogólności i uzna, że „testowanie jest czynnością w cyklu życia oprogramowania” albo „testowanie jest procedurą wykonywania testów” lub inną nic nieznaczącą zbitką słów. Definicje ogólne mają mniejszą szansę, by się zdezaktualizować, bo nie niosą żadnej informacji ani niczego konkretnie nie opisują. Mamy też szansę łatwo znaleźć „wyznawców” naszej definicji. Analizując masowego odbiorcę i informacje przekazywane mu przez media, łatwo możemy określić własne zasady formułowania definicji. Musi to być krótki komunikat, zrozumiały i docierający do największego grona. Im więcej w nim konkretów, tym większe pole do negowania i do zwykłej polemiki.

„Testowanie jest ważną częścią każdego procesu wytwórczego”. Lepiej nie mówić „najważniejsze”, bo łatwo zantagonizować środowisko. Ta definicja nie jest realnie definicją, ale skoro my powiemy, że nią jest, to niech nasi oponenci męczą się, by ją negować.

„Testowanie jest jakością” to bzdura dla wszystkich, którzy coś o testowaniu wiedzą, ale dla nieświadomych brzmi jak hasło wyborcze. Nie ma niczego znaczyć, ma być łatwe do zapamiętania.

„Testowanie jest sprawdzeniem” – i niech mi ktoś powie, że nie jest. Dla wielu osób powyższa analiza jest problemem wyssanym z palca. A co mnie obchodzi jakaś tam definicja? Dla tych osób definicja staje się wirtualna i brzmi: „Testowanie”. Oni znają odpowiedź na każde pytanie np.:

  • Czym się zajmujesz na co dzień? „Testowaniem”.
  • Co to znaczy? „Testuję”.
  • A co testujesz? „To, co wymaga testowania”.
  • A jak to robisz? ... i tak dalej.

Powinniśmy zaakceptować również takie podejście. Na drodze do definicji znajdziemy wielu doradców. Nie warto przytaczać każdej definicji, jaka kiedykolwiek się pojawiła, warto za to pracować nad tą jedną, która cię urzekła. Dla mnie jest to zdanie wypowiedziane przez Jamesa Bacha:

Testing is an infinite process of comparing the invisible to the ambiguous in order to avoid the unthinkable happening to the anonymous.

Czyli w wolnym tłumaczeniu:

Testowanie jest niekończącym się procesem polegającym na porównywaniu tego, co niewidzialne, do tego, co wieloznaczne, a wykonuje się je po to, aby coś, co jest niemożliwe do przewidzenia, nie dotknęło tych, których nie znamy z imienia.

Po pierwszym czytaniu tego zdania, wydaje się, że mamy do czynienia ze zwykłym bełkotem. Po głębszej analizie okazuje się ono niezmiernie ciekawym opisem wypaczonej logiki, jaka towarzyszy testowaniu.

  • Pokazuje ona, w jakim środowisku przychodzi nam pracować i jak trudne jest nasze zadanie.
  • Wiemy, że nigdy nie skończymy naszej pracy, ale ją zaczynamy i kontynuujemy.
  • Kiedy dochodzimy do końca, wiemy jeszcze mniej niż na początku.
  • Mimo wielu testów większości zdarzeń w testowanym urządzeniu i tak nigdy nie wykonamy.
  • Dokumentacja, która ma informować, jak działa system, w większości ma defekty i zamiast rozwiązywać problemy, wprowadza jeszcze więcej zamieszania.
  • Mimo że reprezentujemy „użytkownika końcowego”, niczego o nim nie wiemy (albo wiemy niewiele) i nie jesteśmy w stanie w pełni go zrozumieć. 
  • Im dłużej testujemy oprogramowanie, tym więcej defektów powinniśmy znajdować, a tak naprawdę więcej ich akceptujemy i omijamy. 
  • Chodzimy na kursy, które mają nas nauczyć dobrych praktyki, a kiedy się ich nauczymy, nikt nie pozwala nam ich wdrożyć.
  • Mamy głębokie przeświadczenie, że robimy rzeczy ważne, ale na końcu okazuje się, że nasza praca idzie na marne, bo ktoś nad nami akceptuje niską jakość oprogramowania.

Może w interpretacji tej definicji posunąłem się za daleko, ale wykorzystuję każdą okazję, by wylać żale powiązane ze złym traktowaniem testowania. Na czym one polegają i czemu służą, opiszę w kolejnych rozdziałach.

To zależy...

Testowanie oprogramowania jest obszarem opisywanym na wiele sposobów, ale jest jedna uniwersalna odpowiedź, która pomaga wyjść z dowolnej opresji, jeśli opresją jest trudne pytanie o testy. Ta odpowiedź brzmi: „To zależy...”. Przykłady:

Kiedy skończysz testować? To zależy od tego, ile defektów będę znajdować. Jaką strategię obierasz? To zależy od kontekstu i analizy otoczenia projektu. Czy znajdziesz wszystkie defekty? To zależy od tego, jaki dostanę budżet.

Ogólnie w testowaniu wszystko zależy od wielu czynników, które musimy wziąć pod uwagę i na końcu wskazać odpowiedź. Czy będzie ostateczna? To zależy... Również definicja testowania zależy od pewnych okoliczności okołoprojektowych, oczekiwań klientów, wiedzy testerów i wielu innych czynników.

Oto kilka propozycji definicji testowania przesłanych przez czytelników portalu testerzy.pl w odpowiedzi na pytanie: „Czym jest dla mnie testowanie?”.

[...] sztuka psucia wszystkiego i szukania dziury w całym, nawet jeśli gdzie indziej to coś działa. (Mariola)

[...] próba wyciśnięcia jakości z bitwy między developerami a testerami. Im krwawsza walka, tym wyższa jakość! Na szczęście w tej bitwie nie ma przegranych. (Marek)

[...] to ratowanie świata przed zawaleniem: Ratujemy producentów oprogramowania przed niemiłymi konsekwencjami oddania do użytku oprogramowania zawierającego nieznane błędy. Ratujemy klientów, którym ma być dostarczone oprogramowanie, przed niemiłym zawodem związanym z możliwością otrzymania oprogramowania niespełniającego ich wymagania. Tym samym sprawiamy, że otaczający nas świat jest piękniejszy (lepszej jakości). (Maciej)

Testowanie to proces mający na celu stworzenie używalnego i funkcjonalnego produktu z owoców pracy programistów. (Piotr)

I na koniec podejście, z którym testerom trudno się pogodzić i na które nie możemy (jako testerzy) pozwolić. To myślenie ludzi, których Alfred Pennyworth z filmu „Mroczny rycerz” określa krótko: Niektórzy chcą tylko patrzeć, jak świat płonie. To ci, którzy mówią, że testowanie oprogramowania jest niepotrzebne, a ich definicja testów zawiera takie sformułowania jak „marnotrawstwo”, „bezwartościowy wysiłek” czy „brak wartości dodanej”. Im uwagi w tej książce poświęcę możliwie jak najmniej.

A co z definicją jakości? Oto kilka definicji znalezionych w różnych źródłach:

Jakość

1. «wartość czegoś»

2. filoz. «istotne cechy przedmiotu wyróżniające go spośród innych» – Słownik języka polskiego

Jakość produktu/usługi to miara braku wad w tym produkcie, a wadą jest każda negatywna cecha produktu – negatywna z punktu widzenia klienta – której klient ma się prawo nie spodziewać – autor nieznany

Pewien stopień doskonałości – Platon Jakość (jak piękno) jest sądem wartościującym, wyrażonym przez użytkownika. Jeśli nie ma takiego użytkownika – nie ma takiego sądu – Platon

Zgodność ze specyfikacją, czyli zero braków – Wikipedia

Jakość to stopień, w jakim zbiór inherentnych właściwości spełnia wymagania – Norma PN-EN 9000:2001

Przewidywany stopień jednorodności i niezawodności przy możliwie niskich kosztach i dopasowaniu do wymagań wyniku – William E. Deming

Jakość to zgodność z wymaganiami – Philip B. Crosby

Jakość to doskonałość, której nie da się osiągnąć, lecz do której trzeba uporczywie zdążać – Lao Tsu

Warto zwrócić również uwagę na trzy definicje ludzi nam współczesnych, którzy zajmują się zapewnieniem jakości i testowaniem:

Jakość jest wartością dla kogoś – Jerry Weinberg

Jakość jest wartością dla kogoś ważnego – James Bach

Jakość jest wartością dla kogoś w pewnym czasie – Michael Bolton

Zadanie

A jaka jest twoja definicja testowania? Może powielać istniejące definicje, może być połączeniem wielu z nich, ale zachęcam cię do określenia, co rozumiesz i chcesz rozumieć przez testowanie. Zapamiętaj tę definicję, a jeśli pamięć masz krótką, to stwórz z niej tapetę na pulpit albo napisz na kartce i przyklej nad biurkiem. Im dłużej będziesz testować, tym bardziej zmieniać się będzie twoja definicja. Pamiętaj o wszystkich od początku do końca.

-

Powyższy fragment pochodzi z książki pt. "Zawód tester". Autorem książki jest Radosław Smilgin.

Zawód tester 

Radosław Smilgin 

Wydawnictwo Naukowe PWN, 2015

Liczba stron: 300

Komentarze (0)