Metody testowania bardzo dużej aplikacji

10

Mam bardzo dużą aplikację PHP. Zwykle pracuje nad nim 2-3 programistów i dochodzimy do punktu, w którym wprowadzamy zmiany i robimy błędy (funkcje kaszlu!). Oprogramowanie nie jest skomplikowane, powiedzmy, po prostu wiele się dzieje (35 ~ kontrolerów, o tych samych modelach itp.).

Nawet uważając, zmiana tego widoku (poprawianie identyfikatora elementu) jest łatwa, aby zniszczyć kwerendę ajax, która ma miejsce pod pewnymi specjalnymi warunkami (wylogowany, stojąc na jednej nodze).

Testy jednostkowe są pierwszymi rzeczami, które przychodzą mi na myśl, ale wypróbowaliśmy je w innej aplikacji i tak łatwo je zapomnieć / lub poświęcić więcej czasu na pisanie testów niż na wykonywanie testów. Mamy środowisko przejściowe, w którym kod jest sprawdzany przed przekazaniem na żywo.

Może potrzebujemy osoby zatrudnionej w niepełnym wymiarze czasu?

Każdy ma jakieś sugestie / przemyślenia.

Wizzard
źródło
„... to robienie testów” miało to być coś więcej niż ?
ajax333221,

Odpowiedzi:

25

Tak, potrzebujesz personelu Q / A. Niektóre z wielu powodów to

  • Dedykowany tester kosztuje pieniądze, ale często mniej pieniędzy niż programista, więc korzyść z nieużywania czasu jest większa niż dodatkowy koszt.
  • Dedykowany tester wie, jak testować różne rzeczy, zwłaszcza te, których automatyzacja nie jest oczywista. Przeprowadzanie zautomatyzowanych testów interakcji z systemem za pośrednictwem przeglądarki jest dość owłosioną, ale ugruntowaną dyscypliną. Jeśli znajdziesz kogoś, kto już wie, jak to zrobić, nie musisz tracić czasu na naukę dobrych narzędzi i konfiguracji.
  • Profesjonalny tester wie, jak znaleźć usterki. O wiele bardziej prawdopodobne jest, że pomyślą tak, jak pomyśli użytkownik aplikacji, i dlatego wykonują te stany w systemie, które faktycznie pojawią się w produkcji, co oznacza, że ​​te błędy, które okażą się bardzo widoczne, będą zwykle znajdować się wcześniej , oszczędzając ci zawstydzenia i kosztów związanych z bardzo pilnymi łatkami.
  • Uogólniając, tester nie myśli jak programista . Trudno jest przekazać, ile to robi, jeśli tego nie doświadczyłeś. Świadomie czy nie, programista nie chce znaleźć wad. Wiedzą, jak działa system i starają się unikać typowych bezsensownych (dla nich) danych wejściowych lub danych, które powodują problemy w prawdziwym życiu. Jeśli coś działa w nieoczekiwany sposób, wiedzą, jak go obejść i zwykle nie postrzegają tego jako wady. Oni nigdymają trudności ze zrozumieniem, co oznaczają odpowiedzi systemu, ponieważ je napisali, mimo że jest to główna przyczyna problemów w prawie wszystkich prawdziwych systemach. W skrócie: programiści zwykle źle radzą sobie z typowymi problemami, jakie mają użytkownicy, ponieważ są wysoko wykwalifikowanymi specjalistami. Testerowi znacznie łatwiej jest przeprowadzić najbardziej odpowiednie testy.

To powiedziawszy, nic nie przebije produktywnej współpracy między deweloperem a testerem w zakresie jakości systemu prowadzenia przez dach. Deweloper często zauważa objawy, że coś jest nie tak, zanim zrobi to tester. Deweloper często może doradzić testerowi, jak znacznie skuteczniej odtworzyć problem i jak napisać odpowiedni raport o problemie, tj. Podać szczegóły niezbędne do rozwiązania problemu. Ale wszystko to wymaga co najmniej jednego testera, z którym możesz współpracować.

Kilian Foth
źródło
3
+1. Jesteśmy zbyt dobrze wyszkoleni, aby wykrywać problemy, które mają zwykli użytkownicy
superM
3

Najprawdopodobniej potrzebujesz więcej lub lepszych testów regresji (a nie testów jednostkowych ). Jakiego rodzaju testy powinieneś przeanalizować sam, ale powinny wykryć błędy, o których mówisz. Sugeruję, aby rozpocząć tworzenie planu testów i nadać priorytet tym testom - a kiedy to zrobisz, początkowo nie myśl zbyt dużo o automatyzacji testów.

Następnie zadaj sobie pytanie, czy możesz zautomatyzować niektóre lub większość testów przy rozsądnym wysiłku. Jeśli odpowiedź brzmi „tak”, należy je zaprogramować. Jeśli odpowiedź brzmi „nie” i uważasz, że „osoba w niepełnym wymiarze czasu Q / A” jest tańsza, to powinno być to, czego potrzebujesz. W większości przypadków dobrym pomysłem jest posiadanie zarówno - osoby odpowiedzialnej za testy manualne i wymyślanie nowych testów, jak i wielu zautomatyzowanych testów regresji.

Doktor Brown
źródło
+1 za wzmiankę o testach regresyjnych i wskazanie, że testy jednostkowe nie są jedynym skutecznym rozwiązaniem.
Giorgio,
Cześć, czy mógłbyś rozwinąć nieco więcej na temat testów regresji. Uważam, że mają to zapobiec ponownemu pojawianiu się starych błędów - ale czy przy pomocy metod proponujesz wykonanie tego? Testy jednostkowe? „Lista kontrolna” rzeczy do sprawdzenia? Dzięki :)
Wizzard,
@ Wizzard: termin testy regresji jest tylko ogólnym terminem na dowolny rodzaj testów dla już istniejącej, działającej funkcjonalności (aby zapobiec złamaniu tego podczas zmiany aplikacji). Obejmuje to testy z listy kontrolnej, testy automatyczne za pomocą interfejsu użytkownika (tutaj prawdopodobnie przeglądarki) oraz testy jednostkowe. Moja sugestia polega na tym, że najpierw powinieneś pomyśleć o tym, co przetestować, niezależnie od tego , jak zamierzasz to przetestować (jeśli na przykład powiesz „próbowaliśmy testu jednostkowego”, na przykład jesteś już przy „jak”, a nie „co”) .
Doc Brown
2

Zatrudnij profesjonalną kontrolę jakości

Należy to zrobić, jeśli rozwijasz projekt komercyjny. Przygotowywanie produktu bez solidnej strategii testowania kosztowałoby cię więcej dzięki naprawianiu błędów. Ponadto pozyskanie lub utrzymanie nowych klientów będzie również zależeć od tego, jak dobrze Twoja aplikacja jest testowana.

Mówiąc ogólnie, do bazy kodu należy zastosować testowanie jednostkowe, jednak nie należy odrzucać testów integracji i testów ręcznych.

Jusubow
źródło
1

Testy jednostkowe to naprawdę dobry pomysł, szczególnie jeśli Twój projekt się rozwija. Jeśli pisanie testów jednostkowych stanie się nawykiem, znacznie ułatwi ci to pracę. Na YouTube znajduje się wideo na temat pisania czystego kodu, który jest łatwiejszy w utrzymaniu i przetestowaniu.

Inżynier ds. Kontroli jakości jest również koniecznością. Dobry tester kontroli jakości nie tylko znajdzie błędy w działaniu, ale również sprawdzi, czy aplikacja jest przyjazna dla użytkownika (co jest prawie niemożliwe do przetestowania przez siebie). Oto fajny artykuł wyjaśniający, w jaki sposób zespół kontroli jakości pozwoli Ci zaoszczędzić czas i pieniądze oraz pomóc w dostarczaniu lepszego oprogramowania.

superM
źródło
1

15 kontrolerów i modeli nie jest bardzo dużych. Zajmuje trochę czasu, aby testowanie pisania stało się nawykiem, kopanie się do niego (najpierw w przyjazny sposób) bardzo pomaga.

Istnieją narzędzia, które mogą w pewnym stopniu kontrolować zasięg testu. Narzędzia pokrycia kodu dla PHP

Thorsten Müller
źródło
1
Przepraszamy, 35 kontrolerów i mniej więcej tyle samo modeli. Mmmm wydaje się, że jakaś forma testów jednostkowych będzie pomocna.
Wizzard,