Środowisko testowe w mp.pl
Omawiany projekt jest realizowany od 2006 roku w ramach współpracy z Wydawnictwem, wszystkie omawiane rozwiązania są na bieżąco usprawniane.
Projekt ma na celu usprawnienie procesu projektowania i rozwoju aplikacji (strony WWW, wortale internetowe i aplikacje intranetowe) tworzonych na potrzeby Medycyny Praktycznej. Tworzone aplikacje pisane były od wielu lat z wykorzystaniem języka PHP. W miarę upływu czasu i zmiany potrzeb użytkowników były one rozwijane, dodawane były nowe funkcje, czasem w wyniku tego pojawiały się trudno dostrzegalne błędy. Zdarzały się problemy z kompatybilnością z nowymi wersjami oprogramowania na serwerach, występowały też utrudnienia przy pracy grupowej nad kodem aplikacji (brak systemu kontroli wersji).
Aby usprawnić pracę i zminimalizować problemy wynikające z, czasem wieloletniego, utrzymywania aplikacji, zastosowano następujące rozwiązania:
- wdrożenie systemu kontroli wersji (Subversion) dla nowych projektów
- dokumentacja i przyjęcie standardów kodowania (Coding Standards) dla aplikacji
- instalacja wiki w celu usprawnienia komunikacji oraz ułatwienia tworzenia i redagowania dokumentacji do projektów
- zastosowanie w nowych projektach frameworków Zend Framework i CodeIgniter
- refactoring frameworka CodeIgniter (głównie przystosowanie do współpracy z systemem testowania aplikacji PHPUnit)
- przygotowanie testów jednostkowych dla aplikacji z wykorzystaniem PHPUnit i Selenium
- wdrożenie systemu ciągłej integracji CruiseControl / phpUnderControl
Dzięki wprowadzeniu powyższych rozwiązań każda zmiana w kodzie aplikacji automatycznie powoduje m.in. uruchomienie wszystkich przygotowanych testów, w tym testów interfejsu użytkownika (np. czy można "wyklikać" złożenie zamówienia w sklepie) oraz uaktualnienie dokumentacji do projektu. W razie niepowodzenia testów lub innego błędu (tzw. build failure) programiści są informowani automatycznie e-mailem. To tylko jeden z wielu praktycznych przykładów pokazujących, do jakiego stopnia można usprawnić proces tworzenia aplikacji po to, żeby tworzone projekty powstawały szybiej, taniej i były bardziej niezawodne.