Od dłuższego czasu drąże temat Test Driven Development, powoli w oparciu o nowe narzędzia wdrażam z ciekawymi konsekwencjami metodologie opartą o testy.
Na bazie właśnie realizowanego projektu postanowiłem podzielić się swoimi spostrzeżeniami:
1. Dobra architektura aplikacji umożliwiająca testy jednostkowe to podstawa (dobry podział na model/akcje i BO).
2. Faktyczne pisanie testów zanim powstanie choćby jeden mm kodu - tzn. po stworzeniu dokumentacji funkcjonalnej (specyfikacji wymagań) piszemy pierwsze testy jednostkowe.
3. Zauroczyłem się w metodologii continues integration - praca tylko i wyłącznie w oparciu o system wersjonowania (cvs/svn) do tego pełna automatyzacja budowy aplikacji (ant, ew. phing) + testy - i to w całości codziennie, najlepiej co kilka minut.
4. Oszczędność czasu w późniejszyme etapie - dopóki nie napisze się pierwszej poważnej aplikacji w oparciu o TDD nie sposób zauważyć jej zalety, a są one nie wiarygodne, a szczególnie oszczędność czasu poświęcana na testowanie aplikacji przy wprowadzaniu zmian itp.
Dobra a teraz krótko, jak działamy:
- dla każdej metody piszemy test - im test dokładniejszy i ściślejszy tym lepiej,
- wersjonujemy aplikację,
- automatyzujemy proces instalacji aplikacji (ant, ew. phing),
- codzienne buildy,
- wykorzystujemy narzędzia wspierające proces testowania i automatycznego budowania aplikacji.
Z czego ja korzystam?
- continuum - automatyzacja całego procesu, raporty etc,
- cvs - wersjonowanie,
- PHPUnit 2, selenium - testy,
Dodatkowo ciekawe linki wprowadzające:
TDD
Ciekawe podejście
phpunit w wersji 3 w drodze

Pytania, moje

1. Z jakich narzędzi wy korzystacie wspierających waszą pracę na etapie testów, wdrożenia?
2. Znacie jakieś dobre narzędzie testujące funkcjonalnie GUI, symulujące użytkownika? Tzn, wypełnia sobie formularz, sprawdza poprawnosc zwracanych danych, mierzy czas generowania kolejnego ekranu itd - oczywiście wszystko ja definiuje w postaci testu (dane ktore ma wrzucic do forma, pola w formie itp).
3. Automatyzacja instalacji, w php znalazłem tylko phinga, póki co korzystam z Anta (tak jak w jednym z linków jest wspomniane - dobrze integruje się z pewnymi narzędziami),ale interesuje mnie pełna automatyzacja tego procesu - defacto pełne paczki (coś na kształt plików .war) samoinstalujące się

Chętnie poczytam wasze spostrzeżenia.
Pozdrawiam,
Patrycjusz Szydło