Trochę o mnie - jestem ręcznym testerem od prawie 2 lat w środowisku Agile, używając SCRUM (1-2 tygodniowe sprinty). Dlatego chcę wprowadzić testy automatyzacji w mojej pracy przy użyciu Selenium WebDriver (z Javą).
Moje pytanie dotyczy tego, kiedy powinienem ręcznie przetestować funkcjonalność i kiedy powinienem przekonwertować je na testy automatyzacji?
Czytałem i stosuję inne podejście, takie jak:
- Po rozpoczęciu nowego sprintu przekonwertuj historie użytkowników na zautomatyzowane skrypty z poprzedniego sprintu LUB;
- Konwertuj historie użytkowników w ramach tego samego sprintu.
Wszelkie porady będą mile widziane. Z góry dziękuję.
Odpowiedzi:
Automatyzacja testów (i wszystkie inne testy) powinna być częścią definicji „zrobione” . Ma to na celu wytworzenie potencjalnie nadającego się do wysyłki produktu. Czy możesz wysłać, jeśli nie został przetestowany?
Testowanie powinno również obejmować podejście zespołowe, więc automatyzacja testów nie jest obowiązkiem testerów. Zacznij myśleć o testowaniu tak szybko, jak to możliwe.
Automatyzacja testów jest tak ważna w Agile, ponieważ:
Jeśli odłożysz testowanie do kolejnej iteracji, zawsze będziesz w tyle. Utrudniając zmianę kierunku produktu, ponieważ trudniej jest zrefaktoryzować i zabezpieczyć zewnętrzne zachowanie produktu. Zautomatyzowane ręczne testowanie jest kluczem do spowolnienia, zautomatyzuj to!
Wielu testerów powie ci, że nie powinieneś zaczynać testowania od końca do końca, dopóki interfejs produktu się nie ustabilizuje. Nie czekaj, zamiast tego dobrze wykorzystaj PageObjects i upewnij się, że twoje testy są możliwe do utrzymania i powierz ich odpowiedzialność za ich tworzenie i naprawę .
źródło
Kluczową rzeczą jest to, że nie oznaczysz historii jako ukończonej, chyba że napisałeś automatyczne testy dla tej historii.
Wydaje mi się, że 1 nie ma, kiedy piszesz testy dla zadania ukończonego w poprzednim sprincie. co jeśli testy się nie powiodą?
źródło
Idealnie byłoby napisać automatyczne testy w tym samym sprincie, w którym napisany jest kod. Kod nie powinien być uważany za „zrobiony”, dopóki nie zostaną napisane testy automatyczne, a do końca sprintu należy doprowadzić kod do stanu „gotowe”.
Powinieneś rozpocząć proces pierwszego dnia sprintu, współpracując z programistą, aby zrozumieć kod i pomóc mu zrozumieć twoje potrzeby jako testera. Na przykład, jeśli tworzysz strony internetowe, możesz pomóc im zrozumieć potrzebę dodawania unikalnych identyfikatorów dla każdego elementu strony, z którym musisz wchodzić w interakcje.
Pamiętaj, że w scrumie Twoim zadaniem nie jest pisanie testów. Twoim zadaniem jest współpraca z zespołem, aby osiągnąć cele sprintu. Oznacza to komunikację i współpracę, które powinny mieć miejsce bardzo wcześnie w sprincie. Możesz rozpocząć pracę nad projektami testów i planami testów na długo zanim kod będzie gotowy do przetestowania.
źródło
Jeśli zamierzasz przeprowadzić test automatycznie, równie dobrze możesz utworzyć testy z góry. Pomoże Ci to określić, jakiego zachowania się spodziewasz, i zachęci Cię do myślenia jak klient, co ostatecznie sprawi, że twoje oprogramowanie będzie bardziej użyteczne. Będziesz korzystać z testu natychmiast po wdrożeniu funkcjonalności.
źródło
Możesz to zrobić, ale zazwyczaj chcesz ukierunkować testy regresji za pomocą testów automatyzacji. Oznaczałoby to, że wykonałbym manual, dopóki nie upewnisz się, że jest wystarczająco solidny, aby być testem regresji. Może to być w trakcie sprintu dla niektórych funkcji i może być w trakcie sprintu dla innych funkcji.
źródło
Jak stwierdzono w innej odpowiedzi , kiedy występuje testowanie, powinno być częścią definicji „zrobione” . Jednak nie zgadzam się z niektórymi z tych odpowiedzi, więc chciałem rozszerzyć się o doświadczenia, które spotkałem.
W naprawdę zwinnym środowisku każdy jest w stanie zrobić wszystko. Nie byłoby nikogo w 100% poświęconego testowaniu, rozwijałbyś także umiejętności pomagające w podstawowej pracy z interfejsem użytkownika, czy coś innego. Jednak rzadko żyjemy w idealnym świecie.
To, co poleciłbym, to podejście hybrydowe. Jeśli chodzi o twoją definicję ukończenia, powiedziałbym, że ręczne testowanie powinno być częścią sprintu, w którym jest zakodowana praca. Wiesz, że działa, a wszelkie błędy można natychmiast zgłosić, ewentualnie naprawić, przed zakończeniem sprintu, abyś mógł zaplanować następny jeden. Koncentrując się na testowaniu ręcznym, zapoznasz się z tym, co powinien zrobić kod. Na początku następnego sprintu, gdy możesz nie mieć tak wiele do zrobienia, możesz skonfigurować automatyczne testy, które mogą być uruchamiane w ramach procesu kompilacji, aby zapobiec błędom regresji.
źródło