Jesteśmy zespołem scrum złożonym z 3 programistów, 1 projektanta, mistrza scrum i właściciela produktu. Jednak nie mamy oficjalnego testera w naszym zespole. Problem, który zawsze jest z nami, polega na tym, że testowanie aplikacji, przekazywanie testów i usuwanie błędów zostało zdefiniowane jako jedno z kryteriów uznania PBI (Product Backlog Item) za wykonane.
Problem polega jednak na tym, że bez względu na to, jak bardzo my (3 programistów i 1 projektant) próbujemy przetestować aplikację i zaimplementowane przypadki użycia, nadal niektóre błędy nie są widoczne i rujnują naszą prezentację ( prawo Murphy'ego ) interesariuszom.
Aby temu zaradzić, zalecamy zatrudnienie nowego testera w firmie. Ktoś, kto ma pracę, będzie testować i tylko testować. Oficjalny profesjonalny tester.
Problem polega jednak na tym, że scrum master i interesariusze uważają, że programista (lub projektant) powinien być również testerem.
Czy oni mają rację? Czy my, programiści (także projektanci), powinniśmy też być testerami?
Odpowiedzi:
Ex ante: Wydaje się, że istnieje wiele zamieszania w kwestii tego, co uważa się za testowanie tego, co nie jest. Jasne, każdy programista musi przetestować swój kod podczas jego tworzenia, musi zweryfikować, czy działa. Nie może przekazać go testerowi, zanim uzna, że jest to zrobione i wystarczająco dobre. Ale programiści nie widzą wszystkiego. Mogą nie rozpoznawać błędów. Te błędy można znaleźć dopiero w późniejszym etapie cyklu programowania, gdy przeprowadzane są dokładne testy. Pytanie brzmi, czy programiści powinni przeprowadzić tego rodzaju testy, czy nie, i moim skromnym zdaniem należy na to spojrzeć z punktu widzenia kierownika projektu:
Programiści mogą być testerami, ale nie powinni być testerami . Programiści zwykle mimowolnie / nieświadomie unikają korzystania z aplikacji w sposób, który mógłby ją uszkodzić. To dlatego, że to napisali i przeważnie testują, w jaki sposób należy go używać.
Z drugiej strony dobry tester próbuje torturować aplikację. Jego / jej głównym celem jest złamanie go. Często używają aplikacji w sposób, jakiego nie wyobrażali sobie programiści. Są bliżej użytkowników niż programistów i często mają inne podejście do testowania przepływu pracy.
Używanie programistów jako testerów zwiększa koszty programowania i nie wpływa na jakość produktu tak bardzo, jak posiadanie dedykowanego testera. Nie pozwoliłbym programistom testować swoich prac, kiedy mogę to zrobić lepiej przez testera za tanie. Tylko jeśli pętla sprzężenia zwrotnego między programistami a testerami stanie się zbyt droga, chciałbym, aby programiści sprawdzali kod drugiej strony, ale z mojego doświadczenia wynika, że tak rzadko jest i zależy to w dużej mierze od procesu.
To nie znaczy, że programista powinien być niechlujny i pozostawić wszystko testerowi. Oprogramowanie należy wykonać za pomocą testów jednostkowych, a błędy techniczne należy ograniczyć do minimum przed przekazaniem oprogramowania testerowi. Mimo to czasami naprawiasz tutaj, łamiesz problemy lub inne błędy, których żaden programista nie mógł przewidzieć, to w porządku. Ponadto testy integracyjne powinny być wykonywane głównie przez programistów. Głównym celem testera jest sprawdzenie, czy wymagania są spełnione.
W tak małym zespole (a także w zależności od wielkości aplikacji) widzę też testera w roli hybrydowej, pisząc testy jednostkowe i testy interfejsu użytkownika. Zdecydowanie powinieneś go zatrudnić .
Ale ważniejsze od testera są regularne zamrażanie / odgałęzienia. Nie prezentuj niczego, co nie zostało odpowiednio przetestowane. Gdy dodasz funkcję lub coś zmienisz, wszystko, co ją otacza, musi zostać ponownie zweryfikowane. Otrzymasz złą reputację tylko wtedy, gdy Twoja firma tego nie zrobi. Nie uwalniaj czegoś niestabilnego. Gdy klient chce mieć oprogramowanie w określonym terminie, przestań je programować wystarczająco wcześnie i przetestuj odpowiednio, aby mieć wystarczająco dużo czasu na usunięcie błędów. Często lepiej jest odrzucić prośby o funkcje w ostatniej chwili, niż źle je zaimplementować lub zwolnić bez odpowiedniego testowania.
źródło
Programiści mogą być testerami - kodu innych programistów.
Ale testowanie własnego kodu nie jest dobrym posunięciem - programiści często mają mentalne bloki na temat własnego kodu, dlatego mają trudności z zaprojektowaniem kompleksowych lub odpowiednich testów.
Zawsze znajdą się programiści, którzy myślą, że robią to dobrze, ale zwykle nie robią tego (i na pewno wiem, że mam wiele martwych punktów).
Jeśli NAPRAWDĘ NIE MOŻESZ wynająć testera, poproś programistów, aby przetestowali się nawzajem - to znaczy, jeśli A napisze kod i przeprowadzi testy jednostkowe, to poproś B, aby przejrzał te testy jednostkowe i sprawdził, czy mogą być dodane inne rzeczy . Poproś B, aby spróbował przetestować kod (jako użytkownik) i zgłosić usterki.
To nie jest idealne, ale lepsze niż jeden programista próbujący zrobić wszystko.
Czasami twoi koledzy potrafią być naprawdę dobrzy w łamaniu oprogramowania, ponieważ czerpią z tego przyjemność i nie przejmują się tak bardzo - ponieważ nie jest to ICH kod.
źródło
Czy dziennikarz powinien raczej pisać poprawnie? Chodzi mi o to, że zadaniem korektorów i redaktorów jest znalezienie wszystkich błędów gramatycznych.
Niemniej dziennikarze sami sprawdzają pisownię. Niemniej korektor to osobny i ważny zawód.
To samo dotyczy programistów i testerów, z tym wyjątkiem, że kontrola jakości jest jeszcze ważniejszą częścią rozwoju. Nawet jeśli jesteś dobrym programistą, po prostu nie masz czasu na dokładne przetestowanie wszystkich przypadków testowych, aby uwzględnić wszystkie środowiska, przeglądarki i systemy operacyjne obsługiwane przez Twój produkt.
Jeśli oprócz rozwijania się, ciągłego wykonywania tej pracy, oznacza to po prostu prosty fakt - jest on testerem w niepełnym wymiarze godzin.
źródło
Rozważ wykonanie „kontrolowanego biegu” dla sprintu lub dwóch, osobne śledzenie programisty i testowanie. Pod koniec takiego przebiegu przeanalizuj zebrane dane, aby dowiedzieć się, ile wysiłku poświęcasz na testowanie.
Jeśli dowiesz się, że testowanie wymaga dużo wysiłku, przekaż te dane do zarządzania - będą to przekonujące dowody potwierdzające twoje żądanie (znacznie bardziej przekonujące niż teraz).
W przeciwnym razie (jeśli okaże się, że testowanie zajmuje niewiele czasu), zastanów się nad zainwestowaniem dodatkowego wysiłku, aby to zrobić lepiej (lub naucz się tego robić). Negocjuj dodatkowy wysiłek, który planujesz z kierownictwem - ponieważ mogą oni wolą zatrudnić testera. :)
Muszę przyznać, że zarządzanie twoją firmą wygląda dla mnie raczej kiepsko. Mam na myśli - ok, może być naprawdę trudno dowiedzieć się, ilu testerów byłoby najlepszych dla projektu, dobrze.
Ale posiadanie co najmniej jednego testera to tylko bezpieczny zakład - naprawdę zabawne, że wahają się spróbować, a jednocześnie twierdzą, że są scrum / zwinne .
źródło
Cóż, mieliśmy dwóch programistów, którzy przeprowadzili test krzyżowy po tym, jak pierwszy wprowadził pewne zmiany w ekranie głównym. To wtedy nasz regularny tester był na urlopie macierzyńskim.
Zasadniczo zmienił ekran z listą faktur, za pomocą którego użytkownicy wybierali faktury przed powiększeniem w celu dokonania edycji za pomocą przycisku „Edytuj”. Oryginalna lista została wyrzucona i dodano nowy widok siatki, z filtrowaniem, grupowaniem, sortowaniem i wszystkimi fajnymi funkcjami.
Testy przebiegły świetnie i następnego dnia przesłano zmiany do klienta. Dwa tygodnie później klient dzwoni i mówi: „Naprawdę podoba nam się nowa rzecz, którą włożyłeś, teraz widzimy różnego rodzaju informacje. Ale ... eee ..... gdzie teraz edytujemy faktury? ??
Okazuje się, że programista wyjął pole wyboru (do wyboru) i przycisk edycji, a ponieważ programiści i tak zawsze klikali dwukrotnie, aby wybrać element, żaden z nich nie znalazł z nim nic złego ......
Deweloperzy i użytkownicy żyją w różnych światach, testowanie krzyżowe jest lepsze niż testowanie własnej pracy przez programistę, ale to wciąż nie to samo.
źródło
Jak powiedzieli inni tutaj, programiści mogą testować nawzajem swój kod (testy jednostkowe lub funkcjonalne), i być może twój scrum master i właściciel produktu mogą pomóc w testach integracyjnych, ale w przypadku testów akceptacyjnych użytkownika powinieneś upewnić się, że otrzymujesz wiele informacji zwrotnych z testów przeprowadzonych przez klienta - co oznacza częste wdrożenia , z którymi mogą współpracować w sposób, w jaki robią to prawdziwi użytkownicy i naprawdę otwarty kanał komunikacyjny .
źródło
Powinieneś projektować z myślą o testowaniu, ale jeśli nie masz dedykowanego testera, niektóre rzeczy po prostu prześlizgną się przez pęknięcia, ponieważ w ciągu dnia nie ma wystarczającej liczby godzin na zaprojektowanie, wdrożenie i przetestowanie oprogramowania.
źródło
Testowanie oprogramowania to profesjonalna praca na pełny etat. Potrzebuje dobrego mózgu, talentu i dużego doświadczenia, aby zostać dobrym testerem. Śmiesznie jest założyć, że twórca oprogramowania, bez względu na to, jak sprytny, może zbliżyć się do profesjonalnego testera, gdy testowanie to tylko niewielki element jego codziennej pracy.
Do tego dochodzi problem, że podświadomie twórca oprogramowania nie chce znaleźć błędów.
źródło
Zgadzam się z ich twierdzeniem, że programiści / projektanci powinni przetestować swój kod, z zastrzeżeniem, że projektant / programista, który napisał sekcję kodu, nie będzie jedynym zestawem „oczu” na tym kodzie, zanim zdecyduje się żyć. Chociaż to nie wszystko złapie, pomoże przynajmniej uniknąć ślepoty, która wkrada się podczas testowania i ponownego testowania własnego kodu podczas programowania.
Ze wspomnianego przypadku użycia założę, że używasz również narzędzi do pokrywania kodu? Jeśli nie, może pomóc zobaczyć, który kod może nie zostać przetestowany, i może napotkać nieoczekiwane błędy w określonych warunkach.
Biorąc to pod uwagę, jeśli jest wystarczająco dużo pracy lub Twoja organizacja ma przyzwoity rozmiar, zgodziłbym się, że potrzebna jest profesjonalna osoba do kontroli jakości, pomogłaby bardziej skoncentrować się na rolach wszystkich osób, a także mogła zobaczyć, czy istnieją jakieś wzorce co do tego, co jest pomijany, a co ważniejsze, jak to naprawić.
źródło