Jak ogarnąć się w SCRUM?
Filed Under (Testowanie) by onemorebug on 07-02-2011
Tagged Under : agile, mistrz, scrum, spring
Na podstawie wielu artykułów i poradników śmiało można stwierdzić, że spośród robiących obecnie karierę metodyk zwinnych najpolpularniejszą jest SCRUM. I teraz w momencie, kiedy uświadamiamy sobie, że faktycznie wszystkie działania podporządkowane są pewnej powtarzalności i regularności w każdym projekcie – szukamy schematu i przyczyn możliwego braku dobrej oragnizacji własnej pracy. I w takim momencie warto zapoznać się z metodyką SCRUM. Dla osób, które przeniosły się z pracy w metodykach tradycyjnych do pracy w metodyce SCRUM, pierwsze działania mogą wydawać się niczym innym jak chaosem.
Agile zaskakuje takimi aspektami jak: bliska wspólpraca w zespole (programiści, architekci, testerzy, osoby ‘biznesowe’), regularne pojawianie się nowych funkcjonalności, bezpośredni sposób komunikacji, wycofanie specyfikacji wymagań w formie masy kartek, częsta zmiana wymagań, ale z umiarem który określa niezmienny budżet.
Elementy, które są szczególnie kontrowersyjne dla tradycjonalisty to: częsta – bezpośrednia komunikacja i częste nowe funkcjonalności, które chwieją mozolnie opracowaną specyfikacją i właściwie podkreślają jej zbędność.
Patrząc z innej strony można się zastanawiać, biorąc pod uwagę wszystkie wyżej wymieniane aspekty, jak wysoka będzie jakość końcowego produktu a co za tym idzie jakość stworzonego kodu. Mając na uwadzę poźniejszą rozbudowę – chaos nie bedzię tu wskazany. Przecież brakuje obszernej specyfikacji – programista wobec tego zakodzi tylko funkcjonalności po najmniejszej lini oporu. Do tego – regularnie pojawiają się nowe fukcjonalności – i tak programista pochodzący z tradycyjnych metodyk zupełnie traci głowę. Dlatego warto nabywać doświadczenie – NIE TYLKO programistyczne ale i testerskie w projektach w metodydze AGILE.
Zazwyczaj iteracje trwają od tygodnia do czterech a w tym ciągła komunikacja i współpraca. Stąd nie można być zakompleksionym w sobie, ukrytym w formie „szarej myszki” bo coś w łańcuchu zostaje przerwane. Ogniwo komunikacji wydaje się być najbardziej znaczącym. Stąd w agile konieczne są ciągłe spotkania, cykliczne rozmowy, w których każdy ma prawo wypowiedzenia się na temat zrealizownych zadań i planów przyszłej pracy.
Tutaj można skupić się już na samym SCRUM: czyli opisie ram, których należy przestrzegać w procesie prowadzenia projektu. Mamy tu zdyscyplinowanych członków zespołów, gdzie wg założeń, nie powinniśmy mieć wyraźnej roli lidera – narzucania z góry zadań. Tutaj wszyscy są tak samo równi i tak samo niezbędni w całym procesie tworzenia.

Mistrz SCRUM
W SCRUM mamy dwie role: Mistrza SCRUM – trenera, który ogrania wszystkich członków zespołu i wskazuje poprawność ram jakie definiuje SCRUM. Druga rola to Właściciel produktu – czyli ktoś, kto reprezentuje biznes.
Sprint
Projekt SCRUM składa się z iteracji które nazywane są sprintami. Na starcie jest określona ilość fukcjonalności, które implementują programiście. Na finishu sprintu mamy zaimplementowane funkcjonalności i przetetsrwane. Na koniec prezentacja dla Właściciela Produktu.
W trakcie sprintu
Muszą być organizowane praktycznie codziennie spotkania zespołu, trwające do 15 minut, gdzie każdy omawia prace jakie wykonał wczoraj, czym zajmie się dzisiaj, jakie były/są blokady i problemy. W takim spotkaniu wskazana jest obecność zarówno Mistrza jak i Właściciela produktu.
Mistrz jest ponad wszystkim.
Mistrz SCRUM nie jest to rola znana pod nazwą Kierownika Projektu, Project Managera czy Team Lidera. Mistrz dlatego, że jest mistrzem nie bierze udziały w codziennym życiu zespołu, nie będzie przypisywał zadań, kierunek nadaje Właściciel Produktu. A Mistrz obmyśla jak zespół może uzyskać najwyższą efektowność.
Tester w SCRUM
Tester ma przypadki testowe i testuje. Blisko współpracuje z całym zespołem. Samodzielnie podejmuje decyzje co, gdzie, kiedy i jak przetestować. I właśnie tutaj – w SCRUM testowanie wzrasta do dużo większej rangi niż w innych metodykach. Bo właśnie w SCRUM tester nie jest tylko odbiorcą produktu, który zwraca wynikowe testy. On bierze znaczący udział w powstawaniu konkretnych funkcjonalności. Oby nie było to wypowiedziane na wyrost ale jest tu wyraźne wrażenie, że tester ma znaczący wpływ na prace programisty, wręcz wyręcza go z obmyślania działania, wyglądu pewnych funkcjonalności. Nie chodzi tu o to żeby programista stał się ‘narzędziem’ w rękach testera – broń boże. Przecież wszyscy w zespole są równi. Jest tu też ważna zależność – w żadnym wypadku programista nie może entuzjastycznie ogłosić, że jego funkcjonalność jest zakończona, jeżeli tester jej nie przetestował.
Rywalizacja
W SCRUM poradzono sobie z rywalizacją w prosty sposób – sprowadzono wszystkich do tego samego poziomu. Testerzy są od samego początku planowania projektu (a nie tylko testują końcowy finalny produkt). Tester i programista to role w SCRUM tak samo ważne.
Testy testera w SCRUM
- regresyjne – sprawdzenie jak mają się wcześniej zaimplementowane funkcjonalności. Tutaj ze względu na czasochłonność wskazana jest częściowa automatyzacja.
-eksploatacyjne – tutaj bierze udział cały zespół – i tak otrzymujemy szybką informację zwrotną co do nowych funkcjonalności. - automatyczne – bo ważne jest utrzymanie dotąd zaimplementowanych funkcjonalności.
- integracyjne – weryfikują poprawność integracji nowych modułów z już istniejącymi.
- niefunkcjonalne – testy wydajności, usability, bezpieczeństwa.
Podsumowując z punktu widzenia testera wychodzi na to, że SCRUM jest COOL - i warto próbować się w nim odnaleźć, dynamicznie działać i komunikować się w zespole.

Piwo!
I teraz kiedy zauważasz, że chaos może być mozolnie wypracowaną taktyką – musisz się w niej odnależć – wszystko dla dobra produktu. Reasumując: Testerzy i programiści powinni częściej chodzić na wspólne piwo!
Źródło zdjęcia 1, 2, 3


Mnie zawsze scrum kojarzy się ze słowem „Scrotum” ;P. Ale do rzeczy – artykuł bardzo merytoryczny. Ciekawy jestem co oznacza, że tester „wyręcza programistę w obmyślaniu działania” ?
„wyręcza go z obmyślania działania, wyglądu pewnych funkcjonalności.” – lepiej nie rozdzielać bo traci kontekst. Często widzę, że jakość nie jest brana pod uwagę jako znacząca w tworzonej funkcjonalności, skoro nie ma tu tomowej specyfikacji i objaśnienia w każdym ruchu jak ma się aplikacja zachować to tutaj duże pole manewru ma i programista i tester (we współpracy). Jednak często jest tak że programista robi wg szkieletu ale po najmniejszej lini oporu – oczywiście nie każdy ale taki który kodzi już ileś tam lat i mu rybka czy będzie szałowo. I wtedy tester albo wychodzi na kreatywnego ale upierdliwego – granica IMO cienka. Stąd to obmyślanie działania to raczej podpowiedź, dyskusja w celu ustalenia finalnego wyglądu funkcjonalności, Ale faktem jest iż zarówno tester jak i programista mogą mieć inne podejście