Diabeł tkwi w szczegółach

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.

Publikacja: 30.01.2004 12:10

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 w 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 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 i w bazie danych. Nietrudno wyobrazić sobie, jakim usprawnieniem może być automatyczne wykonanie wielu 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 jest zwykle 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 czas 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 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 dostania się do systemu osoby niepowołanej lub wykonywania przez nieuprawnionego użytkownika pewnych operacji. 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.

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. Również łatwiej je 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łowy, 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ę, systemy internetowe zaś 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. 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.

1 Przykładem takiego narzędzia jest popularny WinRunner firmy Mercury Interactive

2 Przykład narzędzia: Load Runner

IT
Technologie
Huuuge: „skupy akcji nie są priorytetem”. Mamy komentarz analityka
Materiał Partnera
Zasadność ekonomiczna i techniczna inwestycji samorządów w OZE
Technologie
Creotech dzieli biznes. Kwanty wejdą na giełdę
Technologie
Ruszyła karuzela nazwisk kandydatów na nowego prezesa UKE
Technologie
Miliardy na cyberochronę
Technologie
Co daje siłę walorom Orange Polska
Technologie
Podmiot z Francji chce zainwestować w DataWalk. Akcje drożeją