Żeby banki rosły w siłę, a klienci żyli dostatniej

Transkrypt

Żeby banki rosły w siłę, a klienci żyli dostatniej
© NewQuality
Żeby banki rosły w siłę, a klienci żyli dostatniej
Komputery to czarodziejskie urządzenia – robią za nas automatycznie to, co wcześniej
musieliśmy mozolnie wykonywać ręcznie. Co więcej, projektowanie i budowa nowych
„komputerowych robotów” nie wymaga mozolnej pracy zespołów architektów,
stolarzy, murarzy i mechaników. Wszystko daje się szybko i sprawnie wymodelować i
zrealizować w jednym, magicznym tworzywie – oprogramowaniu komputera.
Nikt lepiej niż banki nie docenia możliwości, jakie daje zastąpienie wielkiej sali pełnej
sfrustrowanych, omylnych urzędników cierpliwym i usłużnym komputerem, a
kosztownej sieci bankowych oddziałów – dostępną w trybie 24 * 7 * 52 aplikacją
internetową.
Zarazem jednak nikt lepiej niż banki nie zdaje sobie sprawy, jakie straty może
spowodować jeden na pozór niegroźny błąd w obliczeniach, chwilowe nawet
ograniczenie dostępności banku internetowego czy wreszcie włamanie się hackera do
systemu.
Pisanie o testowaniu i zapewnieniu jakości systemów informatycznych przypomina
często żmudną pracę misyjną: przekonywanie niewiernych, że test naprawdę nie jest
kosztownym luksusem, że się opłaca, ba – jest konieczny! Wobec banków – mam
nadzieję – nie ma takiej potrzeby. Można od razu przejść do tematów
zaawansowanych.
Praca żmudna, mozolna, ale za to, jaka jałowa!
Testowanie polega bardzo często na tym, że sprawdza się ponownie – wielokrotnie,
obsesyjnie – to, co działało wcześniej. Osobę, która przemalowawszy sufit w łazience,
sprawdza, czy nadal funkcjonuje kuchenka w kuchni uznalibyśmy za nieco
zneurotyzowaną. Niestety, własnością „magicznego tworzywa” zwanego
oprogramowaniem jest to, że takie właśnie zależności mogą zaistnieć – liczne
przykłady zna każdy programista, użytkownik czy administrator systemu z własnego
doświadczenia. Dlatego nawet zmiany pozornie niewinne: dodanie jednej nowej
funkcji, inna konfiguracja, nowa platforma sprzętowa, instalacja systemu innym
środowisku – wymagają ponownego przetestowania całości systemu. Ta czynność,
zwana w dialekcie branżowym „funkcjonalnym testowaniem regresyjnym”, jest piętą
achillesową wielu projektów informatycznych.
Sprzymierzeńcem mogą być narzędzia. Tak jak istnieje oprogramowanie
automatyzujące żmudną pracę urzędnika bankowego, tak istnieją też narzędzia
Strona 1 (4)
© NewQuality
automatyzujące żmudną pracę testera. Szczególną popularnością cieszą się od kilku
lat programy typu „nagraj – odegraj” (capture - playback), pozwalające na
automatyczne testowanie poprzez interfejs użytkownika. Takie narzędzia potrafią
m.in. symulować pracę klawiatury i myszki, kontrolować poprawność tego, co
pojawia się na ekranie. Nietrudno wyobrazić sobie, jakim usprawnieniem może być
automatyczne wykonanie szeregu testów na przykład przy wdrożeniu nowej wersji
systemu bankowego lub podczas instalacji aplikacji w wielu oddziałach tego samego
banku1.
Kontrola instalacji wodnej pod ciśnieniem
Oprogramowanie stosowane przez banki zwykle jest wykorzystywane przez wiele
osób jednocześnie. W szczególnym przypadku – banku internetowego – można mieć
do czynienia z dziesiątkami czy wręcz setkami tysięcy jednoczesnych użytkowników
systemu.
Każdy klient banku zna sytuację, kiedy załatwianie sprawy trwało dłużej, niż by się
chciało, bo pracownik banku kilkakrotnie długo oczekiwał na odpowiedź komputera.
Każdy menedżer banku dobrze wie, jakie są koszty sytuacji, gdy niedostateczne osiągi
(czasy odpowiedzi) systemu powodują, że jego pracownicy są w stanie obsłużyć,
dajmy na to, tylko połowę liczby transakcji, jaką mogliby załatwić mając do dyspozycji
szybszy system.
Jakie znaczenie ma dostępność i czasy odpowiedzi dla aplikacji internetowej, nikomu
nie trzeba tłumaczyć. Co grosza, każda efektowna awaria serwera dużego systemu
internetowego zwykle stanowi wydarzenie na tyle medialne, że pisze o nim prasa...
Dlatego tak zwane testy wydajnościowe (testy osiągów, testy przepustowości)
systemów bankowych są szczególnie ważne właśnie dla aplikacji bankowych. Czy
można je wykonywać bez użycia narzędzi? Niełatwo - wyobraźmy sobie scenę, gdy
np. 500 pracowników firmy zostaje w nadgodzinach, kierownik testów zamawia 500
pizz i coca-coli, po czym pada komenda „wszyscy się wlogowują”! Koszt mimo
wszystko spory, precyzja – wątpliwa, kontrola wyników – dyskusyjna, powtarzalność
– zerowa. Nic dziwnego, że narzędzia do testów wydajnościowych2 sprzedają się jak
ciepłe bułeczki.
Według Annual Load Test Market Summary and Analysis 2003 (Newport Group, Inc.)
rynek na tego typu narzędzia wynosił w 2003 roku 750 milionów dolarów, a jego
wzrost w latach 2001 – 2002 –2003 ponad 30% rocznie! Pozazdrościć, a kto wie, czy
1
Przykładem takiego narzędzia jest popularny WinRunner z firmy Mercury Interactive
2
Przykład narzędzia: Load Runner
Strona 2 (4)
© NewQuality
nie uwzględnić tego faktu przy podejmowaniu decyzji o lokacie emerytalnych
oszczędności?
Testy wydajnościowe pozwalają nie tylko stwierdzić, czy system spełnia wymagania,
ale przede wszystkim umożliwiają poprawę osiągów, kiedy spełnione nie są. Znaczne
oszczędności można osiągnąć, jeśli zastosować narzędzia ułatwiające dostrajanie
systemu. Zamiast poprawiać osiągi poprzez kosztowne zakupy sprzętu (takie
rozwiązanie ma wystarcza zresztą tylko na pewien czas), można zwykle uzyskać
nawet wielokrotną poprawę osiągów odpowiednią konfiguracją systemu i serwerów.
Pociągi pod specjalnym nadzorem
Główną cechą Internetu jest zmienność i niepewność. System, nawet starannie
przetestowany dla przewidywanego poziomu obciążenia, może zacząć zdradzać
nieoczekiwane słabości, kiedy obciążenie wzrośnie ponad pewną granicę. Czas
odpowiedzi systemu może nieoczekiwanie zacząć wzrastać wykładniczo po
przekroczeniu pewnego progu obciążenia.
Aby mieć kontrolę obciążenia i osiągów używanego systemu i móc na czas reagować,
gdy przestaje spełniać wymagania dostępności, konieczne jest monitorowanie
systemów. Straty, bezpośrednie i pośrednie, jakie może spowodować choćby
kilkugodzinna awaria systemu bankowego, trudno przecenić. Zapobiec im można,
monitorując najważniejsze parametry systemu i uruchamiając automatyczne alarmy,
gdy pojawiają się zwiastuny kłopotów. Ma to również znaczenie dla zapewnienia
bezpieczeństwa systemu, o czym niżej.
Szukanie dziury w całym
Nie każdy się do tego przyznaje, ale zwykle jakość przelicza się na pieniądze. Znamy
wszyscy firmy, które znakomicie prosperują mimo nie najwyższej jakości i
niezawodności swych produktów. Oznacza to, że w tym segmencie rynku, gdzie
działają, koszty – bezpośrednie i pośrednie – ewentualnych awarii są względnie
niskie.
Inaczej wygląda sytuacja w sektorze finansowym. Tutaj awarie zwykle kosztują tak
dużo, że warto zainwestować w zapobieganie.
Szczególnie istotne jest zagadnienie bezpieczeństwa (security) systemu,
zdefiniowanego jako poziom ryzyka, że osoba niepowołana może się do niego dostać,
lub że użytkownik może dokonywać przy pomocy systemu operacji, do których nie
ma uprawnień. Testowanie bezpieczeństwa to trudna sztuka, polegająca m.in. na
szukaniu nadmiarowej funkcjonalności, czyli tego, co system robi, choć w świetle
wymagań nie musi, a co często jest wykorzystywane jako nielegalne „boczne wejście”
do systemu.
Strona 3 (4)
© NewQuality
Narzędzia nie zrobią za nas testów bezpieczeństwa, ale potrafią je ułatwić. Na
przykład pełne przetestowanie wszelkich kombinacji identyfikatorów i haseł
użytkowników, możliwe przy użyciu narzędzi „nagraj-odegraj”, pozwala zlikwidować
wiele typowych błędów bezpieczeństwa.
Wiele błędów bezpieczeństwa ujawnia się, gdy system jest przeciążony. Je również
łatwiej odkryć, gdy dysponujemy narzędziami pozwalającymi zarówno obciążyć
system, jak i monitorować w tym czasie działanie jego poszczególnych elementów.
Czego użytkownik nie lubi najbardziej?
Nie lubimy (bo przecież każdy z nas jest od czasu do czasu użytkownikiem!), gdy
programy traktują nas źle, arogancko, nie informują o swoim działaniu, gdy są
nadmiernie gadatliwe lub przeciwnie – gdy potrzebną nam informację skrzętnie
ukrywają. Innymi słowami, gdy są nieprzyjazne użytkownikowi, niewygodne w
użytkowaniu.
Tradycyjnie systemy informatyczne lekceważyły użytkowników, a ci z pokorą
przyjmowali niewygodę. Od kilku lat sytuacja zmienia się, zaś systemy internetowe
wręcz ją odwróciły. Niekiedy ocenia się, że dla systemów internetowych użyteczność i
osiągi są ważniejsze, niż funkcjonalność! Łatwość posługiwania się bankiem
internetowym może już wkrótce dla pewnych grup klientów stać się kryterium
wyboru banku.
Użyteczność systemów ma także wpływ na ich bezpieczeństwo. Wyobraźmy sobie np.
system, wymagający tylu różnych haseł, że zmusza prawie użytkowników do
notowania ich na przylepianych do monitora karteczkach...
Jakość jest za darmo
Już w latach 70-ych napisano, że jakość jest za darmo w tym sensie, że zwykle koszty
zapewnienia jakości – w tym testowania – są znacznie niższe niż koszty awarii
spowodowanych brakiem testowania.
Tam gdzie koszty awarii są szczególnie wysokie, nakłady na jakość i testowanie
powinny być odpowiednio wyższe – w przeciwnym razie „oszczędności” w projektach
okażą się pozorne. Systemy informatyczne w bankowości zarządzają naszymi
pieniędzmi, a chyba nikt nie chce, by jego pieniądze były zarządzane i pilnowane
niedbale, wadliwie i nieskutecznie.
Strona 4 (4)