
Cześć tym razem chciałbym opowiedzieć o kolejnym zagadnieniu, które z testowaniem ma wiele wspólnego, chociaż nie bezpośrednio. Tematem na teraz jest Definition of Ready oraz Definition of Done.
Definicje te dotyczą Scruma, a konkretnie zadań w ramach niego wykonywanych. Scrum jest jedną z najbardziej popularnych metodyk wytwarzania oprogramowania. W skład Scrum wchodzą Sprinty, iteracje zwykle dwutygodniowe, w ramach których zespół stara się dostarczyć zadania do klienta. Wszystkie zadania do wykonania przechowywane są w backlog, jeśli używasz Jira, wówczas to pojęcie jest Ci znane. Zadania dodane do backlog mogą być bardzo dokładnie opisane albo mogą być pomysłem niesprecyzowanym jeszcze. W miarę upływu czasu niesprecyzowane zadania są doprecyzowywane. I tu pojawia się Definition of Ready, ponieważ zadania gotowe do wykonania mogą zostać przeniesione do Sprintu i zrealizowane.
Przygotowałem dla Was nagranie mp3 tego wpisu, jeśli zatem wolisz słuchać niż czytać zachęcam do pobrania pliku :).
Czym jest Definition of Ready?
Tłumacząc na polski język, jest to definicja gotowości. W kontekście wytwarzania oprogramowania jest to dosyć istotny temat, bo tak naprawdę czym jest ta gotowość? Jest to po prostu gotowość zadania do rozpoczęcia pracy nad nim.
Pojawia się zatem pytanie, co musi być spełnione, by zadanie było gotowe do realizacji. Głównym warunkiem oczywiście jest rozumienie zadania – MA BYĆ ONO JASNE. Czyli czytam i wiem, co ma być zrobione. Kolejnym warunkiem jest to, że zadanie ma być możliwe do zrealizowania w ramach jednego Sprintu. Zwykle to, co dodane jest do Sprintu, ma być zakończone w ramach niego, nie przenosimy zadań, a już na pewno nie rozwlekamy na 3 sprinty. Wreszcie definition of Ready mówi, że musi być określone jak sprawdzić, czy zadanie jest wykonane poprawnie.
Zadania spełniające warunek Definition of Ready dodawane są na początku Sprintu przez Product Ownera do puli. Dzięki spełnieniu powyższych kryteriów developer wie, jak funkcjonalności mają działać, a tester wie, jak je przetestować i co jest warunkiem zamknięcia zadania. I teraz przechodzimy do Definition of Done.
Czym jest Definition of Done?
Tak jak wyżej tłumacząc na język polski, moglibyśmy powiedzieć, że jest to definicja ukończenia. Tutaj niestety nie jest to aż tak oczywiste, ponieważ samo Definition of Done to tak naprawdę zbiór warunków, które musimy spełnić, żeby uznać zadanie, którego się podjęliśmy za wykonane. Warunki ukończenia zadania ustalane są z Product Ownerem.
Ok to teraz może na małym przykładzie, żeby wszystko było jasne.
Wyobraź sobie, że jesteś malarzem pokoi. W ramach Scruma masz dodawane do backlog kolejne pomieszczenia do pomalowania.
Definition of Ready dla twoich zadań byłoby znanie odpowiedzi na pytania:
Zadanie : Pomaluj pokój.
- Który?
- Na jaki kolor?
- Czym?
- Ile warstw farby?
Jeśli znasz odpowiedzi na nie, znaczy to, że możesz zacząć malować.
Pomalowałeś pokój w zadanym czasie, chcesz otrzymać zapłatę. Klient bierze zatem listę Definition of Done i sprawdza:
- Pomalowanie pokoju na wskazany kolor wymaganą ilość razy.
- Sprawdzenie, czy nie ma zacieków.
- Sprawdzenie, czy nie ma prześwitów.
- Posprzątanie po sobie miejsca pracy.
- Wywietrzenie pomieszczenia.
- Oddanie pomalowanego pokoju klientowi.
Jeśli warunki są spełnione, dostajesz pieniądze za wykonane zadanie, możesz przejść do kolejnego Sprintu i malować kolejne pomieszczenie lub pomieszczenia w ramach niego.
Przykładowe Definition of Done z punktu widzenia wytwarzania oprogramowania
- Stworzona dokumentacja biznesowa oraz techniczna.
- Stworzenie scenariuszy testowych oraz przypadków testowych.
- Zaimplementowanie zmian zgodnie ze Specyfikacją.
- Przetestowanie aplikacji.
- Stworzenie raportu z testów.
Tak jak widać mamy tutaj listę, z której musimy „skreślać” elementy po to, aby móc zamknąć finalnie zadanie i uznać je za ukończone.