23 maja 2010

Ach te testy

Ostatnimi czasu nie można było nie zauważyć, że szereg banków miał problemy z zapewnieniem ciągłości działania swoich systemów.
właśnie zakończyłem lekturę artykułu na temat awarii w bankach i ze szczególnym uśmiechem przeczytałem jeden fragment:
"Jeżeli wierzyć formułkom rzeczników prasowych, to największym problemem e-banków w Polsce są konserwacje"
Należy wierzyć bo tak po prostu jest. To jest nasza smutna rzeczywistość - firmy tak gonią za rozwojem, że nie mają czasu ładować przysłowiowej taczki. Testy są bolączką większości firmy, jednak błędy popełnione przez banki skutkują w głębokim niezadowoleniu, frustracji i strachu klientów (bo może naprawdę ktoś się tym razem włamał i zabrał mi pieniądze) przekładającym się oczywiście na generowany ruch sieciowy.

Testy są zmorą ale i szansą. Dobrze przeprowadzone wychwycą to na co natrafi najlepszy tester (czyli niczego nie świadomy użytkownik). By dobrze przeprowadzić testy potrzeba:
1. Środowiska testowego (patrz punkt 1. mojej "Listy najpoważniejszych błędów programistów" );
2. Planu testów - przygotowanego przez biznes i IT (a nie odwrotnie);
3. Testerów - którzy wiedzą co mają testować, po co, jak oraz którym zależy na tym by zostało to zrobione dobrze;
4. Formalnego zatwierdzenia i puszczenia testów na produkcję - innymi słowy świadomej decyzji;
5. Właściwego wdrożenia zmian na środowisku produkcyjnym, pamiętając o wcześniejszym roll-back plan (czyli planie odwrócenia zmian gdy coś pójdzie nie tak).

Punkty 2,3,4 i 5 to bezpośrednia odpowiedzialność ludzi, którzy pracują nad projektem. Gdy są właściwie zarządzani (priorytety, atmosfera, kultura organizacyjna i oczywiście pieniądze) nie mają żadnego usprawiedliwienia by nie wykonać tych czynności. Problemem może być tylko punkt 1. - wiadomo "KOSZTY". Skoro nie ma pieniędzy na inwestycje w rozwój środowiska podstawowego to jak prosić o środowiska testowe?

Po pierwsze - zmienić styl myślenia. Środowisko produkcyjne w wielkich organizacjach (jak bankowość) to:
a) środowisko podstawowe
b) środowisko zapasowe
c) środowisko testowe (często niejedno)

I tyle. jeśli organizacja planuje dostarczać usługi na najwyższym (lub przynajmniej dość wysokim poziomie to tak powinna skonfigurować infrastrukturę oraz budżet.

Po drugie - może warto rozważyć alternatywy dla jednorazowych dużych kosztów? Dwa hasła: wirtualizacja oraz SOA. Już w Polsce można wykupić usługę wirtualnych środowisk testowych. Dostawca udostępnia rozwiązania najwyższej światowej klasy, troszczy się o ich ciągłość funkcjonowania, a my stawiamy tyle wirtualnych środowisk testowych ile potrzebujemy.

Ale puki z testami będzie tak jak jest musimy się przyzwyczaić do "nieplanowanych przerw technicznych".
A najbliższy weekend już jutro :-)