W tajnej służbie Jakości

W tajnej służbie Jakości
Ktokolwiek widział choć jeden film o Jamesie Bondzie wie bardzo dobrze, że nikt tak skutecznie nie testuje sprzętu jak właśnie agent 007.

Już w momencie odebrania wyposażenia z laboratorium Q, widz może spodziewać się, że zostanie ono z pewnością wypróbowane w warunkach polowych. Zwykle obserwujemy na ekranie skrupulatne testy obciążeniowe (jak długo wzmacniany Aston Martin wytrzyma ostrzał z karabinów? - Skyfall), przenaszalności (czy ta broń strzela także w próżni? - Moonraker) czy ergonomii (jak wygodna jest naprzemienna aktywacja i dezaktywacja długopisu-granatu? - GoldenEye). Ale od Jamesa Bonda możemy uczyć się testerskiego fachu nie tylko przez demonstrację. Warto także wczytać się głębiej w kultowe cytaty, które przynoszą wiele bezcennych, dla każdego inżyniera jakości, wskazówek. Nie wierzycie? Przekonajcie się sami:

A martini. Shaken, not stirred.


- ta legendarna wypowiedź to tylko z pozoru zwykła prośba o drink. W rzeczywiści 007 uczy nas zwracania uwagi na szczegóły i staranność, które są kluczowe w pracy testera. Na pierwszy rzut oka podobne akcje wykonywanie przez użytkownika mogą prowadzić do nieoczekiwanych reakcji ze strony aplikacji. Warto zawsze rozważyć analizę przejść między stanami przy testowaniu złożonych systemów.

There's a saying in England: where there's smoke, there's fire.
("From Russia With Love")


- Bond przywołuje angielskie powiedzenie podpalając łodzie przeciwników, ale my doskonale wiemy, że w istocie pokazuje nam, jak ważne są tzw. smoke testy, czyli szybka weryfikacja kluczowych elementów aplikacji zanim przejdziemy do kosztownych, złożonych testów. Takie podejście pozwala zaoszczędzić czas, zasoby oraz przekazać szybką informację zwrotną do programisty.

Bond: So you want me to be half monk, half hitman.
M: Any thug can kill. I want you to take your ego out of the equation.
("Casino Royale")


- Tym razem to M, szefowa 007, udziela nam cennej lekcji. Każdy może zgłosić pretensjonalny defekt w JIRze, nawet osoba bez doświadczenia w testowaniu. Ale prawdziwy QA patrzy zawsze szerzej: dba o jakość nie tylko aplikacji, ale też własnej komunikacji i relacji w zespole. Potrafi też przeprowadzić analizę ryzyka i ocenić realny priorytet swojego zgłoszenia, nie motywuje go własne ego. Wreszcie, rozumie, że nie ma aplikacji bez błędów, a deficyt czasu jest normą - sukces projektu zawsze oznacza więc balans między jakością a płynnością dostarczania rozwiązań. Nie traci też z oczu obrazu całości misji (tzw. big picture), patrząc przez lunetę karabinu na pojedynczy element aplikacji.

Well, I like to do some things the old-fashioned way.
("Skyfall")


- Co jakiś czas warto odsunąć na moment na bok utarte ścieżki i narzędzia testerskie – rutyna to największe zagrożenie dla QA’a. Nie polegajmy też wyłącznie na automatyzacji - bezwzględna ufność w nią może być zgubna. Zawsze warto chociaż przez chwilę sprawdzić aplikację manualnie, tak, jak będzie korzystał z niej realny użytkownik (learnability, usability, accessibility, itd.). 

Q: Age is no guarantee of efficiency.
Bond: And youth is no guarantee of innovation.
("Skyfall")


- Tym razem twórcy serii przywołują jeden z kluczowych dylematów architektów jakości w projektach, czyli czy lepiej trzymać się starej, ale znanej (o znanych błędach) i w miarę stabilnej wersji aplikacji, powiązanych systemów, API i bibliotek, czy przeciwnie, powinniśmy upgrade’ować wszystkie powiązane elementy najszybciej, jak to możliwe? A co, gdy znajdziemy błąd: lepszy fix-forward czy roll-back? Odpowiedzią jest oczywiście balans i kontekst. MI6, aby działać, potrzebuje i Bonda, i Q.

Bond: [Q hands Bond a watch] What does it do?
Q: It tells the time. Might help with your punctuality issues.
("Spectre")


- Bond przypomina nam także o tym, jak istotny, a tak naprawdę decydujący, jest UX. To ten element decyduje o sukcesie produktu. A użytkownik nie zadowoli się tylko tym, co widzi na pierwszy rzut oka. Zawsze oczekuje więcej i liczy na nowe funkcjonalności w każdej kolejnej wersji aplikacji. To główna motywacja do zmian lub aktualizacji systemu.

Bond daje nam też konkretne praktyczne heurystyki:

I thought Christmas only comes once a year.
("The world is not enough")


- Poza łóżkowym przekomarzaniem z atrakcyjną doktor Christmas Jones, Bond oczywiście sugeruje nam zwracać uwagę na niestandardowe przypadki w testowanej aplikacji, zwłaszcza powiązane z duplikacjami i rekurencją. Co stanie się, gdy otworzymy okno w już wcześniej otwartym oknie? Albo umieścimy nową tabelę w polu tabeli? Czy pamiętamy o próbie powtórzenia identycznej akcji dwa razy z rzędu? Wreszcie, czy aplikacja sama nie duplikuje elementów GUI? I czy pozwala aktywować dwa procesy jednego dnia... np. 25. grudnia?

Madeleine: I see you left this final question blank. What is your occupation?
Bond: Well, that's not the sort of thing that looks good on a form.
Madeleine: And why is that?
Bond: I kill people.
("Spectre")


- Niby każdy tester to zna, ale czy zawsze pamiętajmy, żeby testując formularze, zostawiać niektóre pola niewypełnione?

Trzeba też uczciwie oddać głos przeciwnikom naszego agenta:

Elliot Carver : When I was sixteen, I went to work for a newspaper in Hong Kong. It was a rag, but the editor taught me one important lesson. The key to a great story is not who, or what, or when, but why.
("Tomorrow Never Dies")


- Tym razem dowiadujemy się, że poznając funkcjonalność, którą mamy testować, np. czytając (user story, o którym mówi wprost Elliot), musimy skupić się nie tylko na samym sprawdzeniu kryteriów akceptacji (who, what), ale też zrozumieć, w jakich okolicznościach będzie ona wykorzystywana (when), a przede wszystkim - jaką korzyść ma przynieść użytkownikowi (why). Ostatnie pytanie jest niezbędne - tylko wtedy jesteśmy w stanie sensownie testować aplikację. 

Na zakończenie finalna refleksja:

Blofeld: Why did you come?
Bond: I came here to kill you.
Blofeld: And I thought you came here to die.
Bond: Well, it's all a matter of perspective.
("Spectre")


- Bug czy feature? Problem czy błahostka? Zawsze należy patrzeć na testowaną aplikację i proces produkcji z różnych perspektyw, uwzględniając (niekiedy sprzeczne!) cele interesariuszy, programistów i testerów. Ten artykuł też można czytać dosłownie, analizując najdrobniejsze szczegóły, choć osobiście polecam potraktować go jednak z lekkim przymrużeniem oka. ;) 

Bond: Do you expect me to talk?
Goldfinger: No, Mr. Bond. I expect you to... follow @dr_hawaii on Twitter!

To powinno Cię zainteresować