Wpis z mikrobloga

Korzysta ktoś z testów behawioralnych ? Projekty wykonuję dla siebie i przeważnie sam. Często są to szybkie prototypy z wieloma powtarzającymi się modułami - logowanie, dodawanie wpisów do bazy i ich pobieranie, płatności paypal itd.

Czy czas zainwestowany w naukę pisania tych testów się zwraca? Kiedyś próbowałem w ruby on rails i napisanie testów zajmowało dużo czasu, ale myślę, że te powtarzające się można by kopiować do nowego projektu. Znacie jakieś bazy z gotowymi testami do php/ror?

Testy w PHP:
http://docs.behat.org/en/v2.5/

#programowanie #php
  • 5
  • Odpowiedz
@brt: Moja doświadczenia są takie, że jeżeli klient nie bierze udziału w tworzeniu tych testów (nie pisze ich ani w ogóle nie chce na nie patrzeć, tylko daje specyfikację na kartce rozmiaru A10) to nie opłaca się bawić w mnożenie różnych przypadków w takim tekstowym opisie. Zazwyczaj sprawdzam czy podstrona się otwiera i zawiera kluczowe elementy, jeżeli jest formularz to sprawdzam czy reaguje na poprawne dane, ewentualnie czy jakakolwiek walidacja
  • Odpowiedz
@brt: Ja próbowałem, nawet przez chwilę korzystaliśmy z tego w firmie ale nie przetrwało próby czasu (wygrało czyste TDD).

Co do BDD to jego ideą jest opisywanie tego jak oprogramowanie ma się zachowywać z punktu widzenia klienta i jego potrzeb, przy pomocy języka biznesowego. Na pewno pomaga to przy systemach ze złożoną logiką biznesową. Jeżeli testy są aktualne (czytaj nadążają za zmianami w kodzie) to takie scenariusze z testów doskonale pomagają w zrozumieniu wymagań funkcjonalnych aplikacji i tego co dany fragment kodu robi.

Osobiście preferuję używanie języka domenowego w kodzie aplikacji niż pisanie takich specyfikacji, gdyż utrzymywanie scenariuszy BDD to dodatkowy koszt dla programisty i duże ryzyko, że z czasem scenariusze przestaną nadążać za kodem. Ale każdy ma swoje
  • Odpowiedz
@stacktrace:
@markaron: właśnie dlatego mam obawy przed zaimplemetowaniem tych testów. Boje się, że nie będzie czasu na poprawki w samych testach. Z drugiej strony nie mam czasu, ani ochoty na kolejne testowanie panelu uzytkwonika, czy systemu logowania w nowym projekcje. Chciałbym, zaimplementować, przetestować i już. Jeżeli nie mam testerów i mało użytkowników (to są startupy) to skąd mogę widzieć, czy coś się po drodze nie popsuło?
  • Odpowiedz
@brt: A nie lepiej zbudowac sobie reużywalne komponenty?
Nie wiem jak w PHP ale w Javie, C#, C++, JS czy Pythonie możesz sobie tworzyć komponenty (czy to formie jarów, dll-ek czy modułów) i tylko dołączać je do nowych projektów. Wtedy taki komponent (biblioteka) raz przetestowana będzie działać jak należy w każdej sytuacji.

Z twojego posta wynika że wielokrotnie implementujesz następujące obszary: logowanie, CRUD do bazy i płatności PayPal. Napisz sobie
  • Odpowiedz
@brt: Nie bardzo wiem jak Ci pomóc, bo chcesz mieć przetestowaną aplikację, ale nie chce Ci się pisać testować albo nie masz na to czasu i nie masz kasy na testerów.
  • Odpowiedz