SlideShare a Scribd company logo
1 of 50
Download to read offline
TESTER.PL
Rynek rośnie! To widać. I nie chodzi tu o wzrost eksportu, czy PKB, ale o rynek
związany z testowaniem.
Od początku tego roku mamy „wysyp” konferencji i warsztatów związanych z
testowaniem. Nie bez przyczyny – jest na to popyt!
W lutym Stowarzyszenie wspólnie z IIR zorganizowało drugie z kolei warsztaty
„Certyfikowany Test Manager”. Software – Konferencje w tym roku zrealizowało
i zamierza zrealizować jeszcze kilka kursów związanych z testowaniem. W maju
mieliśmy zakończoną dużym sukcesem II Konferencję SJSI, za kilka dni odbędzie się
w Warszawie duża impreza –II Krajowa Konferencja Jakości Systemów
Informatycznych. W sierpniu odbędzie się w Krakowie Software Quality Assurance
Management – impreza, która w zeszłym roku przyciągnęła nie tylko znane „testerskie”
postacie z Polski, ale także kilka osobistości z zagranicy.
Wszystko wskazuje na to, że na przełomie września i października będziemy
mieli gotową „polską” wersję egzaminu International Software Testing Qualification
Board. Aktualnie trwają prace nad słownikiem oraz tłumaczeniem pytań.
To wszystko się dzieje, bo jest na to zapotrzebowanie, bo firmy zauważają
korzyści z inwestowania w jakość, w tym - w testy.
Podobne nastroje zauważyć można u przedstawicieli firm sprzedających
narzędzia, a także wśród konsultantów zajmujących się optymalizacją testów. Według
różnych szacunków roczny wzrost sprzedaży narzędzi sięgnąć może nawet 14%.
Polski rynek usług testowych szacuje się na 33-49 mln USD rocznie. To nie jest
mało, a kryje się tutaj jeszcze spory potencjał. Niektóre z zagranicznych firm przenoszą
swoje działy testowania właśnie do Polski – tak się dzieje np. w Krakowie. Poważne i
uznane polskie firmy same zaczynają inwestować w tworzenie kompleksowych
kompetencji związanych z testowaniem. Pod koniec ubiegłego roku tak postąpił Polsoft,
wyodrębniając w swojej strukturze profesjonalne Centrum Testowania.
Co to oznacza w konsekwencji dla nas testerów? Z pewnością powinniśmy
patrzeć w przyszłość z dużym optymizmem. Tester z dużym doświadczeniem, a
zwłaszcza inżynier testowy, czy analityk testowy nie powinni w najbliższej przyszłości
narzekać na brak zajęcia. Jedno jednak nie ulega wątpliwości – aby być konkurencyjnym
na rynku należy być dobrym w tym co się robi. I pewnie stąd popyt na konferencje i
szkolenia.

Z pozdrowieniami
Wojciech Jaszcz
Prezes SJSI

Strona 1 z 50
TESTER.PL

Od redaktora
Z pewnym drobnym poślizgiem – koniec czerwca - oddajemy Wam, drodzy
Czytelnicy, kolejny, czwarty numer kwartalnika TESTER.PL.
W tym numerze trzy pozycje:
1. Piotr Kałuski o dokumentowaniu wyników testów,
2. Joanna Nowakowska i Lucjan Stapp o zaletach stosowania metodologii Test
Driven Development i używanych narzędziach,
3. Mark Curphey o tworzeniu bezpiecznego oprogramowania.
Numer otwiera sprawozdanie Wojciecha Jaszcza z II Konferencji Stowarzyszenia
Jakości Systemów Informatycznych, która odbyła się w Serocku, w dniach 19-20 maja
2005. Jako uczestnik zarówno tej jak i I Konferencji SJSI, pozwolę sobie stwierdzić, że
była to impreza ze wszech miar udana, i – o ile jest to możliwe – chyba nawet lepsza niż
poprzednia.
Chciałbym także zwrócić uwagę na informację o konferencji (z warsztatami)
Certyfikowany Test Manager, które nasze Stowarzyszenie przeprowadza wspólnie z IIR.
Szkolenie odbędzie się w Warszawie, w pierwszej połowie września.
Równocześnie po raz kolejny chciałbym gorąco zachęcić wszystkich Czytelników
tego periodyku do aktywnej współpracy. Cały czas czekamy na Państwa uwagi, artykuły,
felietony – wszystko, co Was interesuje, co chcielibyście przeczytać, czego się
dowiedzieć. Jeżeli tylko będziemy mogli, postaramy się zrealizować Państwa postulaty.
Lato – okres mniej wzmożonej pracy zawodowej – to świetny moment do napisania do
nas o tym, co Was interesuje i czego chcielibyście dowiedzieć się od nas.

Strona 2 z 50
TESTER.PL

II Konferencja
Stowarzyszenia Jakości Systemów Informatycznych
W dniach 19 – 20 maja 2005 już po raz drugi odbyła się konferencja
Stowarzyszenia Jakości Systemów Informatycznych. W tym roku mieliśmy przyjemność
podejmować Państwa w Instytucie Rozwoju Biznesu w Serocku.
Dwudniowa impreza zgromadziła około 70 uczestników z różnych branż gospodarki.
Gościliśmy m.in. przedstawicieli sektora Telco, IT, bankowości i ubezpieczeń, sektora
publicznego, naukowców. Spotkanie otworzył krótkim powitaniem Wojciech Jaszcz,
prezes Stowarzyszenia.

Zasadnicza część konferencji rozpoczęła się bardzo interesującym panelem
„Jakość usług w organizacji”, który zainicjował i poprowadził p. Borys Stokalski, Prezes
Infovide. W gronie panelistów znaleźli się Grzegorz Kulisz (ComputerLand S.A.), Piotr
Wasikowski (Sollers Consulting Sp. z o.o.) i Bogdan Bereza-Jarociński ( bbjTest).
Wywiązała się burzliwa dyskusja o „jakości usług”, która w konsekwencji przeszła w
dysputy o SLA w organizacji. Dużym zainteresowaniem cieszyły się prezentacje
Bogdana Berezy – Jarocińskiego „Twórcze myślenie w testowaniu oprogramowania –
mit czy konieczność? Przegląd zagadnień”, oraz „Przegląd modeli oceny dojrzałości
procesu testowania”. Podobnie jak wspomniana wyżej prezentacja, kilka prelekcji
poświęcone było zagadnieniom z pogranicza zarządzania testami i zarządzania
projektami. Były to prezentacje „Szacowanie testów metodą TPA” (Wojciech Jaszcz,
Michał Mazur z ComputerLand S.A.) oraz „Organizacja i zarządzanie zespołem
testerów” (Paweł Brodziński, Comarch S.A.).
Lucjan Stapp i Joanna Nowakowska przedstawili w swoim wystąpieniu ciekawe
podejście do związania testów i developmentu w modelu TDD – Test Driven
Development. W naszych realiach to bardzo nowatorski pomysł i warto dłużej się nad
nim zastanowić. Kolejne, niezwykle ciekawe wykłady dotyczyły miar oprogramowania
(prelegent: dr Andrzej Kobyliński, Szkoła Główna Handlowa) oraz procesu testowania w

Strona 3 z 50
TESTER.PL
kontekście CMMI oraz wytycznych SEI (Maciej Bodych, Piotr Ślęzak, Premium
Technology sp. z o.o.).
Sporo miejsca zajęła również część „narzędziowa”, w której uzasadnionym
zainteresowaniem cieszyły się prezentacje firmy Mercury głównego sponsora naszej
konferencji. Były to w szczególności: „Quality Center with Business Process
Testing”(prelegent: Lubomir Stojek), oraz „Tuning and LoadTesting on J2EE
environment” (prelegent: Darek Malinowski). O opensourcowym narzędziu JMeter i
testach regresywnych z jego wykorzystaniem opowiedział Łukasz Żebrowski z Rodan
Systems S.A.
Nie zabrakło też wieczornego spotkania przy grillu. Ciekawe dyskusje przy piwie,
a czasami przy czymś mocniejszym, trwały prawie do godzin porannych

.
Wszystkim uczestnikom, prelegentom, a w szczególności sponsorom, bez których
zorganizowanie tej konferencji byłoby niemożliwe, chcielibyśmy bardzo podziękować.
Liczymy na Waszą obecność i wsparcie kolejnych inicjatyw Stowarzyszenia Jakości
Systemów Informatycznych! Do zobaczenia na następnej edycji Konferencji!!!
W imieniu organizatorów
Wojciech Jaszcz
Prezes Zarządu

Strona 4 z 50
TESTER.PL
Sponsorzy:

- Sponsor Główny

- Sponsor

- Partner medialny

Strona 5 z 50
TESTER.PL
Prelegenci:
Bereza-Jarociński Bogdan, bbjTest
Bodych Maciej, Premium Technology Sp. z o.o.
Brodziński Paweł, Comarch S.A.
Jaszcz Wojciech, ComputerLand S.A.
Kobyliński Andrzej, Szkoła Główna Handlowa
Kulisz Grzegorz, ComputerLand S.A.
Malinowski Dariusz, Merkury
Mazur Michał, ComputerLand S.A.
Nowakowska Joanna, Rodan Systems S.A.
Stapp Lucjan, Politechnika Warszawska
Stojek Lubomir, Mercury
Stokalski Borys, Infovide S.A.
Ślęzak Piotr, Premium Technology Sp. z o.o.
Wąsikowski Piotr, Sollers Consulting Sp. z o.o.
Żebrowski Łukasz, Rodan Systems S.A.
Podziękowania
Chciałbym
serdecznie
podziękować
wszystkim
osobom
zaangażowanym
w przygotowanie konferencji, a zwłaszcza:
Joannie Nowakowskiej, Wojciechowi Jaszczowi, Lucjanowi Stappowi, Liliannie
Wierzchoń, Janowi Sabakowi i Piotrowi Wąsikowskiemu, bez których zaangażowania,
poświęcenia swojego czasu, profesjonalnego podejścia, i niezwykłej umiejętności
radzenia sobie w sytuacjach kryzysowych, ta konferencja nie doszłaby do skutku.
Beacie Pogorzelskiej i Joannie Wiśniewskiej, oraz wszystkim życzliwym tu
niewymienionym za pomoc w organizacji konferencji.
Centrum Szkoleniowemu za pomoc w skutecznym rozwiązaniu problemów.

Strona 6 z 50
TESTER.PL

Kontakt:

Regina Koenig, (22) 528 66 37
Mercury
rkoenig@mercury.com
Beata Pogorzelska, (22) 810 10 50
ITBC Communication
Beata_Pogorzelska@itbc.pl

MERCURY DLA PLATFORMY MICROSOFT VISUAL STUDIO 2005
Mercury optymalizuje współpracę między zespołami programistów i kontrolerów jakości.

Warszawa, 15 czerwca 2005 r. - Firma Mercury Interactive Corporation
(NASDAQ: MERQ) poinformowała, że oferowane przez nią rozwiązania będą
obsługiwać platformę Microsoft Visual Studio 2005 Team System. Celem jest
zapewnienie jak najwyższej jakości aplikacji przez cały cykl ich istnienia - od
projektowania i prac programistycznych, po ich dostarczenie i zarządzanie.
Microsoft Visual Studio 2005 to elastyczna platforma, obejmująca narzędzia do
zarządzania całym cyklem życia aplikacji, ułatwiająca współpracę między
zespołami programistów w celu uproszczenia procesu dostarczania aplikacji w
architekturze usługowej SOA (Service Oriented Architecture).
Zintegrowane produkty do testowania aplikacji firmy Mercury oraz platformy
Microsoft Visual Studio 2005 umożliwiają klientom:
pełne wykorzystanie zasobów testowych - obejmujących testy modułowe, funkcjonalne i
obciążeniowe - w środowiskach programowania i kontroli jakości, dzięki integracji z
pakietami oprogramowania Mercury Quality Center™ i Mercury Performance Center™;

Strona 7 z 50
TESTER.PL
współpracę w zakresie diagnozowania i korygowania błędów w aplikacjach, wąskich
gardeł w zakresie wydajności oraz problemów ze skalowalnością przez cały cykl
istnienia aplikacji za pomocą narzędzia Mercury Diagnostics™;
dostarczenie pełnego obrazu procesu testowania aplikacji za pomocą narzędzia
Mercury Application Delivery Dashboard™.
„Współpraca z firmą Microsoft wypełnia lukę, dzielącą procesy tworzenia aplikacji i kontroli
jakości w taki sposób, aby zagwarantować klientom wysoką jakość aplikacji niestandardowych i
aplikacji w architekturze SOA, tworzonych w oparciu o platformę .NET Framework” – powiedział
Rajesh Radhakrishnan, wiceprezes działu produktów do dostarczania aplikacji w firmie Mercury.
„Mercury umożliwia klientom optymalizację jakości aplikacji na każdym etapie – od prac
programistycznych po eksploatację.”
Obecnie klienci, korzystający z rozwiązań Mercury Quality Center i Mercury Performance
Center mogą testować jakość i wydajność aplikacji oraz usług WWW tworzonych w oparciu
o platformę Microsoft .NET Framework. Ponadto, oferowany w ramach pakietu Mercury
Performance Center, program Mercury LoadRunner® pozwala symulować rzeczywiste
obciążenie aplikacji i usług WWW w celu dostosowania ich do potrzeb przedsiębiorstwa jeszcze
przed wdrożeniem. Użytkownicy mają do dyspozycji moduły dodatkowe, które umożliwiają
sprawdzanie

często

zmieniających

się

wymagań

funkcjonalnych

aplikacji

przed

ich

uruchomieniem. Klienci korporacyjni, tworzący aplikacje w oparciu o platformę firmy Microsoft,
korzystają także z oprogramowania Mercury Diagnostics, które pozwala zarządzać ich
dostępnością i wydajnością przez 24 godziny na dobę, 7 dni w tygodniu. Dzięki takiemu
rozwiązaniu problemy są wykrywane i lokalizowane, a ich przyczyny definiowane zanim będą
miały wpływ na jakość pracy klientów. Proces trwa przez cały cykl istnienia aplikacji.

Zgodnie z opublikowanym przez firmę Gartner raportem „2005 Magic
Quadrant for Application Quality Ecosystem”, Mercury jest liderem rynku kontroli
jakości aplikacji. Badania przeprowadzone przez IDC wskazują, że firma
kontroluje ponad 55 procent rynku, czyli dwukrotnie więcej niż najbliższy z
konkurentów. Szczegółowe informacje na temat produktów i usług firmy Mercury
w

zakresie

dostarczania

aplikacji

można

uzyskać

pod

adresem

http://www.mercury.com/us/business-technology-optimization/applicationdelivery/

Strona 8 z 50
TESTER.PL
INFORMACJE O FIRMIE MERCURY
Mercury Interactive Corporation (NASDAQ: MERQ), lider w zakresie optymalizacji technologii
biznesowych (BTO), pomaga klientom w optymalizacji wartości technologii informatycznych.
Założona w 1989 roku firma jest jednym z najszybciej rozwijających się producentów
oprogramowania dla przedsiębiorstw. Mercury oferuje oprogramowanie i usługi ułatwiające
zarządzanie priorytetami, pracownikami i pracą działów informatycznych; dostarcza aplikacje i
zarządza nimi oraz integruje i realizuje strategie informatyczne. Klienci na całym świecie
korzystają z produktów firmy Mercury w celu podwyższenia jakości i wydajności aplikacji oraz
zarządzania kosztami, ryzykiem i zgodnością systemów informatycznych. Więcej informacji o
firmie można znaleźć na stronie internetowej: www.mercury.com/pl

Strona 9 z 50
TESTER.PL

Dokumentowanie wyników testów
Piotr Kałuski
CGI
Piotr Kałuski jest absolwentem Wydziału Elektroniki i Technik
Informacyjnych Politechniki Warszawskiej, kierunek informatyka.
Od 1995 uczestniczył w wielu projektach informatycznych jako
programista, analityk, projektant i kierownik zespołu. Obecnie jest
pracownikiem firmy CGI i jako konsultant jest członkiem zespołu
System Test w firmie Polkomtel. Dziedzina jego zainteresowań to
sposoby usprawnienia procesu testowania i wykorzystanie narzędzi
Open Source w procesie wytwarzania i testowania
oprogramowania. Szczegóły można znaleźć pod adresem
www.piotrkaluski.com.

Strona 10 z 50
TESTER.PL

Dokumentowanie wyników testów
Piotr Kałuski
CGI

Streszczenie
W poniższym artykule będę się chciał podzielić swoimi doświadczeniami
dotyczącymi tworzenia dokumentacji wyników testów i korzystania z niej. Przedstawię
różne konteksty, w jakich ta dokumentacja jest użyta i co jest od niej wymagane w
zależności od kontekstu.
Uwaga: Należy tu wyraźnie odróżnić pojęcia „dokumentacja testów” od
„dokumentacji wyników testów”. Dokumentacja wyników testów opisuje rezultaty
testów, jest zapisem zachowania się aplikacji w trakcie testów. Dokumentacja testów
zawiera w sobie dokumentację wyników testów oraz inne dokumenty używane i
tworzone w trakcie testów, z planem testów na czele.

Po co tworzymy dokumentację wyników testów i kiedy z niej
korzystamy
Dokumentowanie wyników testów ma dwa podstawowe cele (uporządkowane
według ważności)
1. Odnotowanie faktu, że dany test został wykonany i że przeszedł lub nie
2. Zapisanie jak zachowywała się dana wersja oprogramowania
W zależności od kontekstu, w jakim pracuje dany wytwórca oprogramowania,
waga punktu 2 może się różnić. Za to w każdym wypadku punkt 1 jest najważniejszym
celem dokumentowania wyników testów. Musimy wiedzieć, co zostało przetestowane i z
jakim skutkiem. Jeżeli nie przechowujemy nawet tej podstawowej informacji oznacza to,
że nie mamy żadnej kontroli nad procesem testowania.
Warto sobie uświadomić, kiedy najczęściej korzystamy ze stworzonej wcześniej
dokumentacji wyników testów. Otóż robimy to wtedy, gdy:
1. W systemie został wykryty błąd (w testach bądź po wdrożeniu)
2. Chcemy dowiedzieć się jak działały poprzednie wersje systemu.
W sytuacji z punktu pierwszego, dokumentacja wyników testów staje się
materiałem dowodowym w śledztwie „dlaczego błąd nie został wykryty w trakcie
testów?”
W sytuacji z punktu drugiego, dokumentacja pełni rolę bazy wiedzy. Sięgamy do
niej, aby porównać działanie wersji oprogramowania bądź też dowiedzieć się jak system
działa.

Strona 11 z 50
TESTER.PL
Przeanalizuję obydwa zastosowania i postaram się zwrócić uwagę, jakie cechy
powinna posiadać dokumentacja wyników testów, aby w obydwu przypadkach była jak
najbardziej pomocna.

Wykryto błąd na produkcji
Załóżmy, że mamy do czynienia z systemem bankowym, załóżmy też, dla
uproszczenia, że w banku faza testów jest jednoetapowa. Nowe pakiety idą od
programistów do testerów a od testerów na produkcję.
Jak wiadomo w systemach bankowych nie ma żartów i błędy na produkcji mogą
bank kosztować wiele nerwów i pieniędzy. Przeanalizujmy, co się dzieje, jeżeli na
produkcji pojawia się poważny błąd.
Rozpoczyna się analiza skutków błędu oraz przyczyn, dla których błąd nie został
wykryty w trakcie testów. Zadaje się, więc, działowi testów kolejne pytania:
1. Czy dana funkcjonalności została w ogóle przetestowana?
Najgorsza odpowiedź, jakiej może udzielić tester na takie pytanie brzmi “nie
wiem”. Jeżeli odpowiedź brzmi “Nie” to oczywiście następnym pytaniem jest:
2. Dlaczego nie przetestowano danej funkcjonalności/scenariusza biznesowego?
Jest wiele sytuacji, w których świadoma rezygnacja z testowania danej
funkcjonalności jest uzasadniona. Może się na przykład okazać, że przeprowadzenie
danego scenariusza testowego nie jest możliwe w środowisku testowym, ze względu na
różnicę między środowiskiem testowym a produkcyjnym. Pojawienie się groźnego błędu
na produkcji może skłonić kierownictwo do zainwestowania w stworzenie testerom
warunków lepiej odwzorowujących te produkcyjne.
Jeżeli odpowiedź na pytanie 1 brzmi “Tak i w trakcie testów wystąpił ten sam
błąd i został on zaraportowany z numerem xxxx” to śledztwo przenosi się do działu
programistów i konfiguracji.
Jeżeli odpowiedź na pytanie 1 brzmi “Tak i wszystko działało jak należy”
zaczyna się analiza czy rzeczywiście w trakcie testów działało jak należy. Szuka się więc
odpowiedzi na pytanie:
3. Czy tester prawidłowo zinterpretował wyniki testów?
Jeżeli dokumentacja zawiera tylko informację “test przeszedł/nie przeszedł” to
niewiele pomoże przy szukaniu odpowiedzi na ostatnie pytanie. W takiej sytuacji będzie
trzeba uwierzyć testerowi na słowo bądź spróbować ponownie przeprowadzić test w
środowisku testowym (o ile takie jeszcze istnieje dla danej wersji oprogramowania).
Dlatego też na tym etapie, jest pomocne, jeżeli dokumentacja zawiera bardziej
szczegółowe informacje o przebiegu testów. Można je przejrzeć ponownie i sprawdzić
czy system rzeczywiście działał w środowisku testowym, czy też tester przegapił błąd.
Oczywiście im dokładniejsze informacje tym analiza jest łatwiejsza i bardziej owocna.
Strona 12 z 50
TESTER.PL
Wyniki tej analizy pozwalają się zastanowić jak można ulepszyć proces wytwarzania
oprogramowania, aby zmniejszyć szansę wystąpienia sytuacji, w których system działa w
środowisku testowym a nie działa na produkcji. Albo jak pomóc testerom, aby nie
przegapiali błędów w trakcie testów.

Podsumowanie
Przy analizie błędów występujących na produkcji, dokumentacja wyników testów
jest materiałem dowodowym. Najważniejszą informacją jest czy funkcjonalność była
testowana czy nie. Im więcej informacji dodatkowych, tym większa szansa wyciągnięcia
rzeczowych wniosków na przyszłość.

Korzystanie z dokumentacji wyników testów w trakcie testów
Zapisywanie informacji o tym, co zostało przetestowane a co nie, nie tylko
pomaga testerowi wybronić się w sytuacji, kiedy błąd został wykryty na produkcji.
Pozwala mu też samemu kontrolować postęp prac. Jeżeli każda kolejna wersja
oprogramowania wymaga od jednej osoby wykonania 100 scenariuszy testowych, to
zapisywanie wyników staje się koniecznością.
Po drugie, dokumentacja wyników testów jest cennym źródłem informacji o tym
jak zachowuje się/powinien się zachowywać testowany system. Jeżeli mamy do
czynienia z komercyjnym produktem renomowanej firmy (np. serwerem bazy danych,
edytorem tekstu), to jest do niego dołączona dokumentacja, gdzie wszystko jest w miarę
przystępnym językiem wytłumaczone i zilustrowane przykładami.
Tester bardzo często ma do czynienia z oprogramowaniem tworzonym na
potrzeby firmy, dla której pracuje. Często jedyną tworzoną dokumentacją jest
specyfikacja wymagań oraz projekt i specyfikacja techniczna (detailed design).
Jakkolwiek często są to dokumenty rzetelne i wyczerpujące, nie są one łatwą lekturą dla
początkujących. Po drugie, po kilku latach trwania projektu, poszczególne dokumenty
skupiają się na wąskim aspekcie nowych zmian funkcjonalnych, zakładając, że ogólne
zasady działania systemu są znane. Czytelne, dobrze udokumentowane testy mogą być
niezastąpionym źródłem informacji o tym jak system naprawdę działa.

Dokumentowanie w praktyce
Jak już wyżej napisałem, najważniejszą informacją, jaką powinniśmy zawrzeć w
dokumentacji wyników testów jest informacja o tym, jakie testy wykonaliśmy i jakie
były ich rezultaty. W najprostszej wersji będzie to lista scenariuszy z informacją
przeszedł/nie przeszedł. Może to na przykład wyglądać tak:
1. Aktywacja klienta – Sukces
2. Dezaktywacja klienta – Sukces
3. Reaktywacja – Błąd

Strona 13 z 50
TESTER.PL

Jeżeli testujemy scenariusze z wieloma parametrami, ułatwieniem może być
zebranie wyników w tabeli.
Bardziej szczegółowe dokumentowanie rezultatów testów może mieć różne
formy, w zależności od tego jak bardzo chcemy być szczegółowi. Zacznijmy od końca.
Poniżej przedstawiam przykład dokumentacji, jaka mogłaby być stworzona przez
prymusa kursu “Testowania Oprogramowania”

Test Case 3.24
Aktywuj klienta z segmentu klientów indywidualnych
Opis:
Należy przetestować zachowanie się aplikacji w trakcie aktywacji nowego klienta
indywidualnego. Operacja ta polega na wybraniu odpowiedniej pozycji z menu, następnie
wypełnienia szeregu pól tekstowych i zatwierdzeniu danych przez naciśnięcie przycisku
“OK”.
Po wybraniu odpowiedniej pozycji z menu:

Pojawia się okienko dialogowe do wprowadzania danych:

Strona 14 z 50
TESTER.PL

Należy wprowadzić następujące dane:
• Imię i nazwisko
• Adres zamieszkania
• Telefon kontaktowy
• NIP
• PESEL
• Nazwisko panieńskie matki
• Imię matki
• Imię ojca
Do pól zostają wprowadzone następujące wartości:
Pole
Imię
Nazwisko
Ulica
Miasto
NIP
PESEL

Wartość
Jan
Kowalski
Jeziorna 5
01-230 Warszawa
111-222-33-44
01030478954
Strona 15 z 50
TESTER.PL
Nazwisko panieńskie matki
Imię matki
Imię ojca
Telefon

Nowak
Anna
Tomasz
22 44 55 667

Następnie kliknięty zostaje przycisk “OK”. Pojawia się komunikat, że konto zostało
utworzone:

Strona 16 z 50
TESTER.PL

Zatwierdzenie danych powoduje utworzenie następujących wierszy w bazie danych:
W tabeli CUSTOMERS powstaje wiersz z ID wygenerowanym przez serwer jako
unikalny identyfikator wiersza. Pole ACCOUNT_NUMBER ma wartość wyświetloną w
powyższym okienku dialogowym:
Select CUSTOMER_ID, ACCOUNT_NUMBER, FIRST_NAME, LAST_NAME,
CREATION_DATE from CUSTOMERS where ACCOUNT_NUMBER =
23454985
CUSTOMER_ID ACCOUNT_ FIRST_NAME
NUMBER
326473246
23454985
Jan

LAST_NAM
E
Kowalski

CREATION_
DATE
02-04-2005

W tabeli SERVICES pojawiają się nowe wiersze dla domyślnych serwisów tworzonych
w trakcie aktywacji. Dla kont indywidualnych takie serwisy to:
• Telefoniczny dostęp do konta – Klient może przeprowadzać operacje na koncie
dzwoniąc na odpowiedni numer telefonu
• Internetowy dostęp do konta – Klient może przeprowadzać operacje na koncie
korzystając z przeglądarki internetowej
• Karta Visa – Klient otrzymuje kartę kredytową
• SMSy z informacją o zmianie salda – klient dostaje SMSa przy każdej zmianie
salda jego konta.
Select CUSTOMER_ID, SERVICE_NUMBER, SERVICE_TYPE,
ACTIVATION_DATE from SERVICES where CUSTOMER_ID = 326473246
CUSTOMER_ID
326473246

SERVICE_NUMB
ER
1

SERVICE_TYPE
TEL_ACC

Strona 17 z 50

ACTIVATION_D
ATE
02-04-2005
TESTER.PL
326473246
326473246
326473246

2
3
4

INT_ACC
VISA
SMS_NOTIF

02-04-2005
02-04-2005
02-04-2005

W tabeli PRICING_SCHEME_ASGN tworzone są cenniki usług dla klienta:
Select CUSTOMER_ID, SERVICE_NUMBER, PRICING_SCHEME_ID from
PRICING_SCHEME_ASGN where CUSTOMER_ID = 326473246
CUSTOMER_ID
326473246
326473246
326473246
326473246

SERVICE_NUMBER
1
2
3
4

PRICING_SCHEME_ID
IND_TEL_ACC
IND_INT_ACC
GEN_VISA
GEN_SMS

W tabeli BILLING_EVENTS pojawiają się 2 wiersze – 1 wiersz opłaty aktywacyjnej a
drugi jako opłata za pierwszy miesiąc. Tabela BILLING_EVENTS zawiera informacje o
zdarzeniach, za które klient powinien zapłacić, a które nie są bezpośrednio związane z
serwisami.
Select CUSTOMER_ID, EVENT_TYPE, EVENT_DATE, AMOUNT from
BILLING_EVENTS where CUSTOMER_ID = 326473246
CUSTOMER_ID
326473246
326473246

EVENT_TYPE
ACTIV
MON_FEE

EVENT_DATE
02-04-2005
02-04-2005

AMOUNT
20.00
15.00

W tabeli ADDITIONAL_ADDRESSES nie jest tworzony żaden nowy wiersz, ponieważ
nie został utworzony żaden adres dodatkowy.
System zachowuje się zgodnie z oczekiwaniami. To oznacza, że test przeszedł
pomyślnie.
SUKCES.
Piękne, prawda? Jest to przykład idealnie nadający się do książki na temat
testowania. Gdybym spotkał się kiedyś z projektem, w którym cała dokumentacja testów
tak by właśnie wyglądała to moje odczucia byłyby następujące:
1. Byłbym pełen szczerego podziwu, że ktoś tak się przyłożył
2. Potem pomyślałbym sobie “Ludzie pracujący przy tym projekcie chyba nie mają
co robić z czasem albo mają jakieś super narzędzie”

Strona 18 z 50
TESTER.PL
Takie ładne, potoczystym językiem spisane wyniki świetnie i szybko się czyta,
ale mało który projekt (a może żaden) ma czas i budżet, aby tego typu dokumenty
wykonywać dla wszystkich testów. Głównym zadaniem testerów jest testować. Przy za
wysoko postawionej poprzeczce większość czasu będą oni spędzali na tworzeniu
dokumentacji wyników. W efekcie, pakiety idące na produkcje - zamiast w 70% - będą
przetestowane w 20% (ale za to jak udokumentowane!). Jedyna sytuacja, w której taka
szczegółowość byłaby uzasadniona to taka, kiedy testujemy po raz pierwszy nową
funkcjonalność. Jeżeli jednak testujemy coś po raz n-ty (a scenariusz aktywacji do takich
należy), powinniśmy pomijać rzeczy oczywiste, które prawie zawsze są takie same.
Bardziej realny przykład wygląda tak:

Test Case 3.24
Aktywuj klienta z segmentu klientów indywidualnych

Strona 19 z 50
TESTER.PL

Stan bazy danych:
Select CUSTOMER_ID, ACCOUNT_NUMBER, FIRST_NAME, LAST_NAME,
CREATION_DATE from CUSTOMERS where ACCOUNT_NUMBER =
23454985
CUSTOMER_ID ACCOUNT_NUMBER
CREATION_DATE
326473246
23454985
Jan

FIRST_NAME LAST_NAME
Kowalski

02-04-2005

Select CUSTOMER_ID, SERVICE_NUMBER, SERVICE_TYPE,
ACTIVATION_DATE from SERVICES where CUSTOMER_ID = 326473246
CUSTOMER_ID
326473246
326473246
326473246
326473246

SERVICE_NUMBER SERVICE_TYPE
ACTIVATION_DATE
1
TEL_ACC
2
INT_ACC
3
VISA
4
SMS_NOTIF

02-04-2005
02-04-2005
02-04-2005
02-04-2005

Select CUSTOMER_ID, SERVICE_NUMBER, PRICING_SCHEME_ID from
PRICING_SCHEME_ASGN where CUSTOMER_ID = 326473246
CUSTOMER_ID
326473246
326473246
326473246
326473246

SERVICE_NUMBER
1
2
3
4

Strona 20 z 50

PRICING_SCHEME_ID
IND_TEL_ACC
IND_INT_ACC
GEN_VISA
GEN_SMS
TESTER.PL
Select CUSTOMER_ID, EVENT_TYPE, EVENT_DATE, AMOUNT from
BILLING_EVENTS where CUSTOMER_ID = 326473246
CUSTOMER_ID
326473246
326473246

EVENT_TYPE
ACTIV
MON_FEE

EVENT_DATE
02-04-2005
02-04-2005

AMOUNT
20.00
15.00

SUKCES.
Zwróćmy uwagę, na czym polegały skróty. Po pierwsze, usunąłem sekcję na
temat wyboru pozycji z menu. Aktywacja jest funkcjonalnością tak podstawową, że
każdy wie, gdzie ją znaleźć. I zawsze to będzie w tym samym miejscu, więc nie warto o
tym pisać w dokumentacji każdego scenariusza (chyba, że struktura menu się zmieniła).
Po drugie usunąłem większość wyjaśnień. Nadają one dokumentowi
potoczystość, ale pisanie ich zajmuje zbyt dużo czasu. Poza tym, są one tak naprawdę
powieleniem informacji, która powinna się znajdować w scenariuszu testu (specyfikacji
zadania testowego). Czytelnikiem tego dokumentu najczęściej będzie ktoś, kto ma
przynajmniej ogólne pojęcie o systemie, więc domyśli się tego, co nie jest napisane
wprost. A jeżeli się nie domyśli, to sprawdzi sobie oczekiwane rezultaty w odpowiednim
scenariuszu z planu testów. (Muszę jednak uczciwie zauważyć, że to co napisałem
powyżej, też nie zawsze wytrzymuje konfrontacji z rzeczywistością. Niejednokrotnie
oczekiwania co do wyników testów, nie są zbyt szczegółowo określone przed
wykonaniem testu. Szczególnie dla scenariuszy, które powodują złożone zmiany w
systemie, oczekiwania są sformułowane pobieżnie i krystalizują i uszczegóławiają się
dopiero w trakcie wykonywania testu.)
Coś takiego można zrobić szybko. Jedyna wada to selektywność informacji. A co
będzie, jeżeli informacje zawarte w dokumencie okażą się nie wystarczające w trakcie
jakiejś analizy w przyszłości?
Można temu zaradzić. Spójrzmy na trzecią wersję:

Test Case 3.24
Aktywuj klienta z segmentu klientów indywidualnych

Strona 21 z 50
TESTER.PL

Stan bazy danych:
Select * from CUSTOMERS where ACCOUNT_NUMBER = 23454985

Strona 22 z 50
TESTER.PL
CUSTOMER_ID
ACCOUNT_NUMBER
LAST_NAME FIRST_NAME
NIP TAX REGION
EMPLOYER LAST_KNOWN_SALARY
PHONE
ADDRESS_STREET ADDRESS_CITY
PREFFERED_TIME_TO_CONTACT
PROFESSION
CREDIT_CARD_NUMBER FATHERS_NAME MOTHERS_NAME
MOTHERS_MAIDEN_NAME
MAIDEN_NAME
DATE_OF_BIRTH
CUSTOMER_SEGMENT VIP BAD_DEBTS IN_COLLECTION
LAST_NOTE DATE_OF_CREATION
NUMBER_OF_SERVICES
DISCOUNT_PLAN STATUS
EDUCATION RESPONSIBLE_PERSON
ELIGIBLE_FOR_PROMOTIONS REASON_OF_DEACTIVATION
DEACTIVATION_DATE COMMENTS
326473246 23454985
Kowalski
Jan
111-222-33-44VAT22
Warsaw
Kaluski&Kaluski
10000 22 44 55 667 Jeziorna 5
01-230
Warszawa
Afternoon
Programmer 2562-2389-2376-2321Tomasz
Anna
Nowak
14/07/1984 INDIVIDUAL N
N
N
02/04/2005 4
HJ-KDISC
AC
MSC Jan Tkaczuk Y
Moved to our company from competitors
Select * from SERVICES where CUSTOMER_ID = 326473246
CUSTOMER_ID

326473246
326473246
326473246
326473246

SERVICE_NUMBER SERVICE_TYPE
ACTIVATION_DATE
STATUS
COMMENTS
ADDRESS_STREET ADDRESS_CITY
DEACTIVATION_REASON
DEACTIVATION_DATE
ON_HOLD
LAST_COMPLAINT LEVEL_OF_SATISFACTION
DISCOUNT
1
TEL_ACC
02/04/2005 AC
Added on initial activation
N
7
30
2
INT_ACC
02/04/2005 AC
Added on initial activation
N
7
0
3
VISA
02/04/2005 AC
Added on initial activation
N
7
30
4
SMS_NOTIF
02/04/2005 AC
Added on initial activation
N
7
0

Select * from PRICING_SCHEME_ASGN where CUSTOMER_ID =
326473246
CUSTOMER_ID

SERVICE_NUMBER
EFFECTIVE_DATE

Strona 23 z 50

PRICING_SCHEME_ID
DISCOUNTING_MODE
TESTER.PL

326473246
326473246
326473246
326473246

CHARGE_MODE
1
02/04/2005
2
02/04/2005
3
VISA
4
STD

IND_TEL_ACC
STD IND
IND_INT_ACC
STD IND
GEN_VISA 02/04/2005
VISA
GEN_SMS 02/04/2005
IND

Select * from BILLING_EVENTS where CUSTOMER_ID = 326473246
CUSTOMER_ID
326473246
326473246

EVENT_TYPE
AMOUNT
VAT_RATE
ACTIV
TBB
OTC
MON_FEE
TBB
RCM

SERVICE_NUMBER EVENT_DATE
STATUS
TAX_RATE
GL_CAT
RATING_MODE
02/04/2005 20
0
22
INDGL
0

02/04/2005 15
7
INDGL

SUKCES.
Tu danych jest więcej, zamieszczone są wartości wszystkich kolumn. Wygląd jest
mało czytelny, ale tak to wygląda w trakcie szybkich copy-paste z narzędzi typu OraTool
czy Rapid Sql. Poza tym sam fakt wielości danych powoduje, że dokument jest
nieczytelny.
Jednak, pomimo, iż dokumentu nie czyta się jednym tchem, ma on komplet
danych potrzebnych do analizy. W dokumencie są one nieczytelne, ale można je
skopiować do arkusza kalkulacyjnego i tam odpowiednio przetworzyć i zbadać.
Możemy też wspomóc proces dokumentowania takimi narzędziami jak LReport
(http://lreport.sourceforge.net), o którym pisałem w poprzednim numerze TESTERa.
Ale czasami i na to nie ma czasu. I tu już nie ma reguły. Musimy się kierować
zdrowym rozsądkiem oraz doświadczeniem i decydować, co jest najważniejsze.
Ostatecznie możemy zredukować dokumentację do zrzutu ekranu pokazującego, że
rezultaty są zgodne oczekiwaniami.
Osobnym tematem jest, co powinno być zapisem zachowania się aplikacji –
zawartość tablic, logi etc. Moim zdaniem odpowiedź brzmi “zależy od konkretnego
przypadku”. Jeżeli aplikacja operuje na obiektach bazodanowych, które w sposób dość
bezpośredni odzwierciedlają obiekty biznesowe, wtedy zawartość tablic jest pomocna.
Jeżeli aplikacja używa dość abstrakcyjnych pojęć na poziomie bazy danych, ale za to ma
bardzo bogaty i dopracowany mechanizm logowania, to może się okazać, że lepiej jest w
dokumencie zamieszczać logi. Albo i to, i to.
Strona 24 z 50
TESTER.PL

Podsumowanie
Najważniejszą informacją, jaką musimy zawrzeć w dokumentacji wyników
testów jest informacja o tym, jakie testy wykonaliśmy i jakie były ich rezultaty.
Przy dokumentowaniu bardziej szczegółowym powinniśmy się kierować
zdrowym rozsądkiem. Zawsze musimy pamiętać, nawet biorąc pod uwagę wszystkie
zalety starannej dokumentacji, że głównym zadaniem testera jest testować.
Warto zastanowić się nad użyciem narzędzi do wspomagania procesu
dokumentowania, szczególnie dla obszarów, które są testowane często i operują na tych
samych zestawach tabel.

Strona 25 z 50
TESTER.PL

Strona 26 z 50
TESTER.PL

Test Driven Development
kolejna miękka metodologia tworzenia modułów
czy
sposób na zwiększenie zainteresowania programistów
testami modułowymi

Joanna Nowakowska,
Pion Zarządzania Jakością
Rodan Systems S.A.

Lucjan Stapp,
Wydział MiNI,
Politechnika Warszawska

Joanna Nowakowska jest konsultantem ds. Zapewnienia Jakości w firmie Rodan
Systems S.A.. Jest absolwentką Szkoły Głównej Handlowej w Warszawie na kierunku
Metody Ilościowe i Systemy Informacyjne oraz ścieżce studiów
Zarządzanie Jakością. Od 2002 roku pracuje w Zespole Zapewnienia
Jakości w firmie Rodan Systems S.A., gdzie jest odpowiedzialna za
dokumentację systemu zarządzania jakością, organizację prac
zespołu testowego, przeprowadzanie szkoleń dla pracowników oraz
klientów firmy oraz modułowe, systemowe i akceptacyjne testy
aplikacji. W marcu 2005 uzyskała tytuły ISTQB Certified Tester,
Advanced Level, Functional Tester, ISTQB Certified Tester,
Advanced Level, Technical Tester oraz ISTQB Certified Tester,
Advanced Level, Test Manager nadawane przez International Software Testing
Qualifications Board (ISTQB) i International Software Quality Institute (iSQI), tym
samym stając się pierwszą osobą w Polsce posiadającą tytuł ISTQB Certified Tester, Full
Advanced Level. Współzałożyciel Stowarzyszenia Jakości Systemu Informatycznych,
członek Review Board w German Testing Board.
Lucjan Stapp jest wieloletnim pracownikiem naukowym
Politechniki Warszawskiej. Doktor nauk matematycznych, (bo
gdy robił doktorat nie było jeszcze doktoratów z informatyki).
Wielokrotnie pracował też jako kierownik zespołów
projektowych i zespołów zapewnienie jakości w dużych i małych
projektach.
Zwolennik lekkich metodyk, także w testowaniu.
Członek założyciel SJSI, przewodniczący Komisji Rewizyjnej
SJSI.

Strona 27 z 50
TESTER.PL

Test Driven Development
kolejna miękka metodologia tworzenia modułów
czy
sposób na zwiększenie zainteresowania programistów
testami modułowymi

Joanna Nowakowska,
Pion Zarządzania Jakością
Rodan Systems S.A.

Lucjan Stapp,
Wydział MiNI,
Politechnika Warszawska

Wstęp
Kiedy spojrzymy na klasyczny model procesu testowania – model V (rys.1), to
zauważamy, że pierwszym etapem testów dynamicznych są testy modułowe (ang.
unit/component tests).

specyfikacja
wymagań

Testy
akceptacyjne

specyfikacja
systemu

Testy
systemowe

specyfikacja
funkcjonalna

Testy
Integracyjne ”małe”

implementacja

Testy modułowe

Rysunek 1. Model V

Głównym celem przeprowadzenia testów modułowych jest dynamiczna,
niskopoziomowa weryfikacja testowanego systemu (dalej: System Under Tests, SUT), we
wczesnej fazie realizacji projektu. Po wyodrębnieniu składowych elementów SUT, takich

Strona 28 z 50
TESTER.PL
jak: moduły, klasy i ich metody można – i trzeba - dokonać weryfikacji sposobu działania
tych elementów niezależnie (w odosobnieniu) od reszty aplikacji.
Co dają nam testy modułowe:
•

umożliwiają jednoznaczne określenie miejsca wystąpienia błędu, a także
wskazanie nieefektywnych linijek kodu programu na poziomie
poszczególnych modułów,
• uniemożliwiają „przykrycie” błędów w jednym komponencie przez działanie
innego komponentu,
• umożliwiają uzyskanie istotnych informacji o jakości testów i pokryciu
testowym najniższym kosztem ze wszystkich typów testów, dzięki
bezpośredniemu działaniu na kodzie systemu.
Z przeprowadzonych badań wiadomo, że około 80 % wszystkich błędów
popełnianych przy bezpośrednim1 tworzeniu oprogramowania to błędy w kodzie
poszczególnych modułów. Tym samym ich wykrycie i usunięcie powinno zdecydowanie
wpłynąć na jakość tworzonego systemu. Z drugiej strony usunięcie błędów znalezionych
na poziomie testów modułowych kosztuje relatywnie mało – usunięcie tego samego
błędu znalezionego podczas testów modułowych może kosztować od kilku do kilkuset
razy mniej, niż znalezienie i usunięcie go już po przekazaniu oprogramowania do użytku
przez klienta [2].
Bardzo często okazuje się, że w organizacji pojawia się konflikt pomiędzy
zespołem wytwórczym a zespołem testowym o to, kto powinien odpowiadać za
przygotowanie i przeprowadzenie testów modułowych. Z jednej strony istnieją
argumenty za tym, by testy modułowe wykonywał programista, ponieważ:
•
•
•

najlepiej zna kod danego elementu systemu,
posiada „białą” znajomość SUT,
zmiany w kodzie mogą pociągnąć za sobą efekty uboczne, łatwe do
zauważenia przez twórcę kodu, dużo trudniej przez osobę zewnętrzną (a więc
nie znającą kodu).
Z drugiej strony programiści nie chcą testować swojego kodu, gdyż uważają, że:
• nie mają czasu na testy,
• testy są nudne i bezcelowe,
• programiści „nie robią” błędów,
• SUT i tak będzie testowany przez zespół testowy,
Co więcej programistom często brak kompetencji w zakresie testowania.
W niniejszym artykule chcemy przedstawić metodologię, która ułatwia
rozwiązanie konfliktu między zespołem wytwórczym a testowym, a następnie
zaprezentować przykładowy zestaw narzędzi umożliwiających wykonanie testów
modułowych tą metodą.
1

Najwięcej błędów powstaje zawsze z niejasności specyfikacji, autorom chodzi tu o błędy popełniane
bezpośrednio w tworzeniu SUT.

Strona 29 z 50
TESTER.PL

Test Driven Development
Test Driven Development (TDD) to podejście, którego nazwa pochodzi od tytułu
książki Kent Beck’a Test Driven Development by Example [1] z 2002 roku. Przedstawia
ona zmodyfikowaną ideę pochodzącą od eXtreme Programming (XP), zwaną w XP testfirst programming lub test-first development, a polega na idei:
NAJPIERW NAPISZ TESTY, A NASTĘPNIE TWÓRZ KOD!
Osiąga się w ten sposób dwa cele:
•
•

wymusza się przemyślenie problemu przed stworzeniem kodu (bardziej na
poziomie specyfikacji niż walidacji),
zwiększa się poprawność tworzonego kodu.

Schemat działania przy stosowaniu metody TDD można opisać w 4 prostych
krokach [2]:
Krok pierwszy:
1. Przemyśl problem
2. Przemyśl jak to testować
3. Napisz prosty test z dobrym interfejsem
Krok drugi:
1. Napisz tylko tyle kodu, by uruchomić test
2. Obserwuj, dlaczego test nie „przeszedł” – stąd pobierz wiedzę, co naprawdę
masz zaprogramować
Krok trzeci:
1. Napisz tylko tyle kodu, by test „przeszedł”
2. Uruchom ponownie test, sprawdź czy napisany moduł „przechodzi” test (a także
wszystkie poprzednio napisane testy)
Krok czwarty:
1. Usuń wszelkie powtórzenia, zwiększ czytelność kodu
2. Ponownie wykonaj testy
3. Jak wszystko OK, to zapisz wykonywany moduł

Strona 30 z 50
TESTER.PL

Rysunek 2. Schemat działania w TDD

To nie jest – niestety - takie proste jak wygląda na pierwszy rzut oka i wymaga
większej uwagi przy pracy, żeby dobrze przygotować testy. Tym niemniej nie jest to
bardzo uciążliwe, a przy pewnej praktyce robi się to sprawnie i dość szybko. Co więcej,
istnieje wiele shareware’owych narzędzi wspomagających tworzenie oprogramowania
metodą TDD.
Najbardziej znanym z nich jest JUnit2 - narzędzie z grupy XUnit3 przeznaczone
do testów modułowych (oraz jego rozszerzenie – JUnitPerf4 – przeznaczone do
modułowych testów wydajnościowych). Testy modułowe napisane z wykorzystaniem
biblioteki JUnit mogą zostać uzupełnione o statyczną analizę kodu (na zgodność kodu ze
standardami programowania) – tutaj wykonaną za pomocą narzędzia Hammurapi5, oraz
testy pokrycia, których przeprowadzenie umożliwi nam m.in. Emma 6. Wszystkie

2

http://www.junit.org
XUnit – rodzina narzędzi przeznaczonych do testów modułowych (w zależności od języka
programowania: Java – JUnit, Visual Basic – VBUnit (http://www.vbunit.org), C++ - CPPUnit
(http://cppunit.sourceforge.net), C# - NUnit (http://nunit.nunit.org).
4
http://www.clarkware.com/software/JUnitPerf.html
5
http://www.hammurapi.org
6
http://emma.sourceforge.net
3

Strona 31 z 50
TESTER.PL
wymienione tutaj narzędzia zostały opisane dokładniej w ostatnim paragrafie, gdzie
przedstawiono pełniejszy opis środowiska narzędziowego.
Chcąc określić, jakie są koszty i narzuty wynikające z zastosowania takich
narzędzi, w ramach zajęć stworzono 2 porównywalne grupy studentów tworzące tą samą
prostą aplikację (około 6 godzin pracy 3-osobowego zespołu):
• grupa testowa - metodologią TDD,
• grupa kontrolna - tradycyjnie, bez projektowania testów jednostkowych.
Oba zespoły pracowały w tym samym środowisku:
•

Eclipse SDK 3.0.2
• wbudowany JUnit
• wbudowany Hammurapi
• Emma
Na rysunku 3 przedstawiono czasy, jakie zespoły zużyły na wykonanie zadania.
Jak widać, w okresie początkowym zespół pracujący zgodnie z metodyką TDD
potrzebował zdecydowanie więcej (o ponad 1/3) czasu – głównie na nauczenie się
poprawnego posługiwania się wykorzystywanymi narzędziami (JUnit’em i
Hammurapi’m – Emma służyła głownie do osiągnięcia ustalonego z góry poziomu
pokrycia testami). Po nabraniu wprawy (zadanie 4 i 5) ta różnica czasu nie była już tak
znacząca, zespół pracujący w metodyce TDD potrzebował około 7 % czasu więcej.

Czas wykonania zadania
8

7

6

5

4

3

2

1

0
zadanie 1

zadanie 2

zadanie 3
grupa TDD

zadanie 4

zadanie 5

grupa kontrolna

Rysunek 3 Czas wykonania zadania

A jak metodologia TDD wpływa na ilość popełnionych błędów, więc także na
jakość produktu? Możemy to zobaczyć na rys. 4.

Strona 32 z 50
TESTER.PL
W okresie początkowym lepsze wyniki uzyskała grupa kontrolna; wynika to –
naszym zdaniem – z dodatkowego stresu, jakiemu poddana została grupa pracująca w
metodyce TDD. Widać jednak, że już od 3 zadania proporcje zmieniają się zdecydowanie
na rzecz pracujących zgodnie z TDD, uzyskali oni o 50% lepsze rezultaty.
Ilość popełnionych błędów
14

12

10

8

6

4

2

0
zadanie 1

zadanie 2

zadanie 3
grupa TDD

zadanie 4

zadanie 5

grupa kontrolna

Rysunek 4. Ilość błędów popełnionych w kodzie

Kolejny rysunek przedstawia jak poprawiła się jakość tworzonego kodu – jak
wynika z rys. 5 zdecydowanie bardziej zgodny ze standardami kod wyprodukował zespół
pracujący zgodnie z metodyką TDD.
Jakość kodu (wg Hammurapi)
18
16
14
12
10
8
6
4
2
0
zadanie 1

zadanie 2

zadanie 3
grupa TDD

zadanie 4

grupa kontrolna

Rysunek 5 Jakość kodu (wg Hammurapi)

Strona 33 z 50

zadanie 5
TESTER.PL

Podsumowując to proste doświadczenie, możemy stwierdzić, że stosowanie
metodyki TDD przy tworzeniu modułów to:
•

nieduży koszt dodatkowy – po nauczeniu się metodyki zwiększenie czasu na
wykonanie kodu jest nieduże (mniej niż 10 %),
• nastąpiło istotne zwiększenie poprawności kodu (50 % mniej błędów w
TDD).
Tworzony metodyką TDD kod jest podatny na refactoring, dzięki analizie
wyników z Hammurapi’ego następuje też odkrywanie wzorców poprawnego
programowania.
Pomimo wielu zalet metodyki TDD dostrzegamy również jej wady, tu
chcielibyśmy zwrócić uwagę na podstawowe:
•

przy stosowaniu metodyki TDD obowiązuje zasada wszystko albo nic – jeżeli
przerwiemy przed końcem (bo np. skończył się czas) – nie otrzymamy
gotowego modułu;
• nie zastępuje testów jednostkowych w 100% i gdy w kontrakcie jest wymóg
przeprowadzenia testów jednostkowych musimy je przeprowadzić;
• jest to miękka metodyka, co powoduje, że wiele organizacji odrzuci ją jako
nie nadającą się do stosowania.
O ile ostatni zarzut jest co najmniej dyskusyjny, to dwa pierwsze mogą
spowodować jej zdecydowane ograniczenie. Wydaje się nam jednak, że zyski (ponad 50
% poprawy jakości modułów przy mniej niż 10 % nakładzie czasu)) jest argumentem
zdecydowanie przemawiającym za jej stosowaniem.

Opis wykorzystanego środowiska narzędziowego
(dla aplikacji napisanych w języku Java)
Poniżej chcielibyśmy zaprezentować zintegrowane środowisko testowe dla
aplikacji napisanych w Java, działające w oparciu o narzędzie Eclipse i wbudowaną
bibliotekę Ant wspierającą uruchamianie testów. Wymienione tutaj narzędzia są
darmowe, także dla użytku komercyjnego. Konfiguracja wszystkich narzędzi znajduje się
w pliku build.xml, co umożliwia nam uruchomienie pełnych testów (z wykorzystaniem
wszystkich opisanych tutaj narzędzi) za pomocą jednego przycisku!

Biblioteka JUnit
JUnit to narzędzie z grupy XUnit przeznaczone do testów modułowych
oprogramowania tworzonego w Javie..
Podstawowymi elementami biblioteki są:

Strona 34 z 50
TESTER.PL
•

•
•
•

abstrakcyjna klasa TestCase, z wykorzystaniem której tworzony jest
przypadek testowy (klasa zawiera metody setUp() i tearDown() – co
umożliwia ładowanie danych wejściowych potrzebnych do wykonania
przypadku oraz czyszczenie po wykonaniu testu);
klasa Assert, zawierająca zestaw asercji porównujących wyniki oczekiwane z
rzeczywistymi;
klasy TestRunner (junit.textui.TestRunner i junit.swingui.TestRunner)
umożliwiające wykonanie przypadku testowego;
klasa TestSuite, umożliwiająca grupowanie większej ilości przypadków
testowych.

Standardowo wyniki wykonania testu wyrzucane są na konsoli, jednak
uruchamiając testy jako zadanie w Ant możemy wygenerować raport z wykonania
przypadków testowych w formacie XML/HTML. Przykładowy raport zaprezentowany
został na rysunku 6.

Rysunek 6. Raport z narzędzia JUnit

Z założenia narzędzie JUnit nie wspiera testów wydajnościowych. Chcąc
wykonać takie testy powinniśmy zaopatrzyć się w narzędzie JUnitPerf – bibliotekę
umożliwiającą uruchamianie testów JUnit z parametrami wydajnościowymi.

Hammurapi
Hammurapi to narzędzie do kontroli zgodności kodu ze standardami
programowania.
W skład aplikacji wchodzą między innymi:
•

Hammurapi – narzędzie do automatycznego przeglądu kodu Java. Ładuje
cały kod do repozytorium i generuje szczegółowy raport. Przeznaczony
głównie dla architektów.
Strona 35 z 50
TESTER.PL
•

Quickrapi – szybka wersja Hammurapi. Przeglądu dokonuje w pamięci.
Generuje uproszczone raporty. Przeznaczony głównie dla deweloperów
• Archiver
Hammurapi zawiera listę 120 inspektorów - reguł sprawdzających poprawność
języka. Można samemu dodawać nowe reguły, można też je dezaktywować, a także
grupować w zestawy (i pojedyncze zestawy używać np. odnośnie konkretnych typów
testów czy technologii). Pełna lista inspektorów (wraz z opisem i kodami) dostępna jest
pod adresem: http://www.hammurapi.org/content/inspectors.html
Na chwilę obecną Output Listener Hammurabiego umożliwia generowanie
raportów w formacie XML/HTML, umieszczonym tam nieprawidłowościom nadaje
priorytety, przekazując równocześnie informację o miarach (np. NCSS, class complexity
itd.).
Przykładowe okno raportu przedstawiono na rys. 7.

Rysunek 7. Przykładowe okno raportu z aplikacji Hammurapi

Emma
Przy tworzeniu testów modułowych bardzo istotną informacją może się okazać ta
o pokryciu testowym – takich informacji dostarczy nam kolejne narzędzie – Emma.
Emma to narzędzie napisane w Javie, niezależne od zewnętrznych bibliotek, które
może działać samodzielnie (z linii poleceń), bądź jako zadanie w Ant. Emma mierzy
pokrycie testami klas, metod, bloków (ang. basic blocks – nie mylić z pokryciem
instrukcji – statements) oraz linii kodu, w oparciu o pliki o rozszerzeniu *.class lub *.jar
(inaczej niż najbardziej popularny, komercyjny program Clover mierzący pokrycie w
Strona 36 z 50
TESTER.PL
oparciu o pliki *.java). Narzędzie udostępnia 2 sposoby instrumentalizacji: tryb on-the-fly
dla małych aplikacji oraz tryb offline przeznaczony dla bardziej złożonych systemów
(J2EE, klient-serwer, itd.). Generowane w formacie XML/HTML/TXT statystyki
agregowane są na kilku poziomach (np. pakietów, klas itd.), a pokryte linie kodu
zaznaczone kolorami. Dodatkowo Emma umożliwia filtrowanie danych trafiających do
raportu (np. pokrycie tylko konkretnych pakietów).
Należy zdawać sobie sprawę, że raporty z Emmy nie są w 100 % zgodne z
typową zalecaną techniką programistyczną (głównie chodzi o obsługę wyjątków), tym
niemniej jest to naprawdę bardzo użyteczne narzędzie. Przykład raportu z aplikacji
Emma przedstawiono na rys. 8

Rysunek 8. Raport z aplikacji Emma

Bibliografia
[1].
[2].
[3].
[4].

Beck, K, Test Driven Development by example, Addison-Wesley, 2002
Gilb T., Graham D., Software Inspection, Addison-Wesley 1993,
Newkirk, James W,. Vorontsov, Alexei A, Test Driven Development in
Microsoft .NET, Microsoft Professional, 2005
Hunt, Andy, Thomas, Dave, Pragmatic Unit Testing in C# with NUnit,
Pragmatic Programmers, 2005

Strona 37 z 50
TESTER.PL

Certyfikowany Test Manager
7- 9 września 2005 r., hotel Bristol, Warszawa

Program seminarium
Dzień pierwszy
Wprowadzenie
Ogólne zasady budowy systemu informatycznego

Przykładowe metodyki stosowane przy realizacji projektów informatycznych
Klasyczna metodyka "kaskadowa"
Metoda "spirali"
Lekkie metodyki na przykładzie XP
Zasady i praktyka budżetowania projektów informatycznych - Jak powstaje budżet projektu
Zarządzanie wymaganiami
Współpraca niezbędnym czynnikiem sukcesu
Zarządzanie ryzykiem
Testowanie w różnych metodykach wytwarzania oprogramowania

Związek testów z etapami realizacji projektu: modele V i W
Test Driven Development
Zakres, przygotowanie oraz metody prowadzenia podstawowych poziomów testów

Testy modułów
Testy integracyjne "małe"
Testy systemowe
Testy integracyjne "duże"
Testy akceptacyjne
Testy pielęgnacyjne
Zakres, przygotowanie oraz metody testów właściwości

Testy wydajnościowe
Testy architektury i koncepcji
Testy użyteczności
Testy bezpieczeństwa
Inne
Testy regresji i ich rola w procesie testowania
Przeglądy
Przegląd wybranych norm związanych z jakością i testowaniem

Strona 38 z 50
TESTER.PL

Dzień drugi
Zarządzanie procesem testowym

Planowanie prac
Szacowanie pracochłonności
Struktura dokumentacji testowej
Przeprowadzenie testów
Rejestrowanie wyników testów
Kontrola postępu prac
Zarządzanie zgłoszeniami problemów i zmian

•
•
•

Zarządzanie wersjami oprogramowania i danych
Definicja testware ("testaliów")
Zarządzanie wersjami
Metody opisu i przechowywania przypadków i scenariuszy testowych

Dzień trzeci
Zarządzanie procesem testowym - cd

Zarządzanie środowiskami o Struktura środowiska testowego o Testy w projekcie rozproszonym
Testowanie a zmiany wymagań
Jakość procesu testowego
Kryteria oceny jakości systemu informatycznego
Narzędzia
Egzamin
Kierowanie zespołem testów

Budowanie zespołu
Role w zespole
Cechy dobrego testera
Zadania szefa zespołu
Przywództwo
Zarządzanie konfliktem
Sztuka kompromisu
Podsumowanie
Wręczenie certyfikatów

Strona 39 z 50
TESTER.PL

Testowanie bezpieczeństwa oprogramowania:
Wróćmy do podstaw
Mark Curphey
Tłumaczenie: Tomasz Zemelka
Mark Curphey jest dyrektorem w Software Security Consulting at Foundstone (firma
jest własnością McAfee (www.foundstone.com/s3i)). Uzyskał stopień magistra ze
specjalnością Ochrona Informacji na Royal Holloway, University of London, gdzie
specjalizował się w zaawansowanej kryptografii
Adres mailowy: mark@curphey.com.

Strona 40 z 50
TESTER.PL

Testowanie bezpieczeństwa oprogramowania:
Wróćmy do podstaw
Mark Curphey
Tłumaczenie: Tomasz Zemelka7
Wersja angielska tego artykułu ukazała się w Software Magazine w listopadzie
2004 pt. „Software Security Testing: Let's Get Back to Basics“ i można ją znaleźć na
internetowej stronie magazynu: www.Softwaremag.com.

Lepsza droga testowania bezpieczeństwa oprogramowania
sieciowego oparta na zmodyfikowanym procesie powstawania
programów
„Oprogramowanie to paliwo wykorzystywane przez nowoczesny biznes, paliwo,
dzięki któremu rządy rządzą, a społeczeństwo staje się lepiej połączone. Programy
komputerowe pomogły stworzyć, udostępnić i ukazać informację we wcześniej nieznanej
formie. W skali globalnej zapierające dech w piersi tempo rozwoju oprogramowania
pomaga udźwignąć światową ekonomię. W życiu codziennym urządzenia bazujące na
oprogramowaniu pomagają leczyć choroby, są w stanie dać głos niemym, sprawić, że
upośledzeni ruchowo mają możliwość odzyskania sprawności. Mając na uwadze
wszystkie te względy można powiedzieć, że oprogramowanie jest nieodzownym
elementem naszego nowoczesnego świata”.
Rośnie zaawansowanie technologii, ale wygląda na to, że zabezpieczenia
oprogramowania nie dotrzymują kroku postępowi. Mimo nowych technicznych
standardów,
takich
jak
WS-Security2
czy
nowoczesnych
zamienników, jak choćby AES dla
starzejącego
się
już
algorytmu
kryptograficznego
DES,
problem
bezpieczeństwa staje się coraz większy
zamiast maleć. Na domiar złego, zgodnie
z badaniami prowadzonymi przez
National Institute of Standards (NIST),
brak bezpieczeństwa spowodowany jest
w 92% brakiem bezpieczeństwa aplikacji,
a nie sieci. (Rys.1)
Dlaczego tak wielu ludzi niewłaściwie odbiera kwestię bezpieczeństwa
oprogramowania i co należy zrobić zanim sprawy się pogorszą? Jak w każdej dobrej
7

Redakcja niniejszym dziękuje Tomaszowi Zemelce nie tylko za przetłumaczenie artykułu, ale także za
uzyskanie zgody autora i wydawcy na niniejszą publikację.

Strona 41 z 50
TESTER.PL
analizie, najpierw należy poszukać ‘korzenia’ (źródła) problemu, zanim zaproponujemy
nowe lepsze rozwiązania. W szczególności przedstawimy lepszą drogę testowania
bezpieczeństwa oprogramowania sieciowego zaproponowanego przez OWASP – The
Open Web Application Security Project (www.owasp.org)
Przez ostatnią dekadę, wprost z wczesnego środowiska hackerskiego, wyłonił się
ogromny przemysł zabezpieczeń oprogramowania. Wczesne, dominujące społeczeństwo
akademickie, mające dostęp do pochodnych Unixa i chcące poszerzyć granice nowej
technologii, tworzyło rozszerzenia i ‘hackowało’ kod źródłowy na własne potrzeby.
Powstająca sieć komputerowa bazująca na systemach telefonicznych była miejscem
sprawdzania tej nowej technologii w praktyce, robiący to entuzjaści zaczęli dzielić się
‘sztuczkami’, które ich zdaniem były po prostu ‘cool’. Te garażowe spotkania
i podziemna kultura spowodowała, że hakerzy zaczęli używać poradników typu ‘Captain
Crunch’ i ‘Condor’ oraz wytworzyła się subkultura wykorzystująca następstwa tego
dzielenia wiedzy. Dominujący trend przemysłu zajmującego się bezpieczeństwem
podążał za masową technologią przyjmując ścieżkę od sieci internetowych poprzez
główny nurt powstawania komercyjnych systemów operacyjnych stosując wiele sztuczek
właśnie z tamtego okresu.
Podczas gdy umiejętności administratora zarządzającego systemem relatywnie
dobrze wykorzystane są w bezpieczeństwie sieci i systemu operacyjnego, gdzie
funkcjonalność jest zdefiniowana z góry albo przynajmniej została ograniczona,
ewoluując do rozwiązywania nowych generacji problemów bezpieczeństwa,
potrzebujemy nowego podejścia i innego zestawu umiejętności.
Generalnie musimy zaakceptować fakt, iż jeśli istnieje problem bezpieczeństwa
oprogramowania, to rozwiązanie leży w stworzeniu programu zabezpieczającego.
Wiedza potrzebna do budowania takiego oprogramowania znacznie różni się od wiedzy
na temat bezpiecznego konfigurowania firewalla. Zabezpieczenie musi zostać
wbudowane w program tak, by nie mogło być później konfigurowane. Ułatwieniem może
być myślenie o rozwoju bezpieczeństwa oprogramowania jak o kombinacji ludzi,
procesów i technologii. Jeżeli są to czynniki ‘tworzące’ oprogramowanie, logiczne jest,
że czynniki te również muszą zostać przetestowane.
Dzisiaj, większość ludzi testuje tylko technologię albo samo oprogramowanie.
W rzeczywistości większość nie testuje oprogramowania dopóki nie zostało stworzone i
nie znajduje się w fazie życia tzn. kod nie został stworzony i zaimplementowany w
działającej aplikacji sieciowej. W zamian stosują techniki testów penetracyjnych po tym
jak aplikacja została umieszczona w internecie. Generalnie jest to bardzo nieefektywna i
kosztowna praktyka. Grady Booch, autor oprogramowania modelującego i współtwórca
Unified Modeling Language (UML), opisał to podejście jako leczenie objawów, a nie
przyczyny. Znakomicie opisuje to bezpieczeństwo oprogramowania. Przemysł
zabezpieczeń musi się przystosować i nauczyć srogiej lekcji jaką dostał od społeczeństwa
w minionej dekadzie. Tak jak inżynierowie oprogramowania muszą nauczyć się, że
tworzenie oprogramowania to nie to samo co budowanie wieżowców, tak przemysł
zabezpieczeń musi się przystosować, jeśli chce przetrwać.
Efektywne testowanie programu powinno składać się z następujących
składników:

Strona 42 z 50
TESTER.PL
Ludzi – aby zagwarantować wystarczające wykształcenie, świadomość i umiejętności
Proces – aby mieć pewność, że zespół posiada właściwą politykę i każdy wie jak się w
niej odnaleźć, wie również jakie są najefektywniejsze techniki i procesy
Technologia – by upewnić się, że proces został efektywnie zaimplementowany i
przekłada się na właściwe bezpieczeństwo w procesie tworzenia języków i struktur.
Chyba, że wykorzystywane jest podejście całościowe, gdyż testowanie wyłącznie
technicznej implementacji aplikacji nie odsłania sterujących czy operacyjnych braków w
zabezpieczeniach, które mogły się pojawić. Ludzie muszą testować w poszukiwaniu
przyczyny, a nie symptomów, a kiedy znajdą przyczynę, muszą przepisać lek zarówno
krótko jak i długoterminowy, by sobie z tym poradzić. Poprzez testowanie ludzkie i tym
bardziej procesowe jesteśmy w stanie zlokalizować zagadnienie, które pojawi się później
w fazie testów technologicznych i w ten sposób wyplenić błędy wcześniej oraz
zidentyfikować główną przyczynę ich powstania.
Ludzie zwykle testują tylko część technicznych problemów, które mogą wystąpić
w systemie. Wynikiem tego jest niekompletna i nieodpowiednia ocena wyrażająca
bezpieczeństwo.
Denis Verdon, Szef Korporacji Information Security Group At Fidelity National
Financial, zaprezentował znakomitą analogię dla tego niezrozumienia na konferencji
OWASP AppSec w Nowym Jorku:
„Gdyby samochody testowano tak jak aplikacje…testy bezpieczeństwa
przyjmowałyby tylko zderzenia frontalne. Samochody nie byłyby testowane na wypadek
bocznych zderzeń albo na wypadek zachowania stabilności w trakcie nagłych manewrów
w sytuacjach wyjątkowych, nietestowana byłaby również skuteczność hamulców czy
zabezpieczenia antywłamaniowe.”
Wiele organizacji zaczęło stosować skanery aplikacji sieciowych. Te skanery,
zachowujące się jak czarne skrzynki, usiłują ‘pełznąć’ po sieci w poszukiwaniu luk w
zabezpieczeniach jak automatyczny haker. Mogłyby mieć zastosowanie w testowaniu
oprogramowania, ale nie wierzymy, by automatyczna czarna skrzynka była albo
kiedykolwiek mogła być efektywna. Skaner sieciowy powinien być ostatnim etapem w
procesie testowania, nie pierwszym. Nie zmniejszamy jednak jego roli, raczej staramy się
pokazać, że należy zrozumieć jakie ma ograniczenia i że struktura testów powinna być
właściwie zaplanowana.

Przykład
Recenzowaliśmy stronę sieciową, gdzie projektanci stworzyli tylne drzwi dla
celów administracyjnych. Kiedy klikało się link albo wysyłało formularz ze strony, był
on przesyłany w postaci parametrów (przykładem zastosowania takiej funkcji może być
serwis www.weather.com, gdzie, podając jako parametr kod miejsca zamieszkania,
otrzymuje się prognozę pogody dla swojego regionu) W tej aplikacji developerzy tak
skonstruowali przesyłanie parametrów, że pozornie dowolny ciąg parametrów długości
40 znaków powodował automatyczne zalogowanie na stronie jako administrator. Jedyna
możliwość, aby skaner sieciowy wykrył tego rodzaju błąd, to moment kiedy skaner

Strona 43 z 50
TESTER.PL
użyłby dokładnego kodu z biliona możliwości, co jest niewykonalne. W tym przypadku
zajęłoby to setki lat.
Natomiast, nawet dla laika patrzącego w kod źródłowy, błąd ten był oczywisty.
If input from browser = „the special 40 characters” then log user in as administrator
Wystarczyłoby by jeden złośliwy użytkownik wysłał link do setek albo tysięcy
ludzi z publicznej listy mailingowej, aby wszyscy mieli całkowitą kontrolę nad stroną i
kontami klientów biznesowych.
Testowanie pokazało, że obecny zbiór skanerów do aplikacji sieciowych
wykrywa mniej niż 20% błędów w powszechnie używanych stronach internetowych. To
pozostawia 80% różnych dziur w kodzie programu, które mogą znaleźć i wykorzystać
potencjalni hakerzy.
Gary McGraw, autor „Building Secure Software”, ujął to w ten sposób:
„Jeżeli test penetracyjny nie powiedzie się, to masz świadomość tego, że problem
istnieje, jeżeli test penetracyjny zakończy się powodzeniem, to nie masz pojęcia czy błąd
istnieje”
OWASP przyciągnął wielu specjalistów zorientowanych prorozwojowo oraz
uzyskał wsparcie wielkich firm zajmujących się zabezpieczeniami w IT, takich jak
Fidelity. Powoli kształtuje dominujący trend postrzegania jak kierować bezpieczeństwem
oprogramowania.
Verdon z Fidelity National powiedział:
„Środowisko ludzi zajmujących się zabezpieczeniami w dalszym ciągu nie daje
rady wymaganiom jakie stawiają przed nimi ci, którzy zajmują się aplikacjami i
developmentem. Szczerze mówiąc wielu z nich nadal nie wie jakie pytania zadać. Z
pewnością architekci znają struktury J2EE i .Net’s security, ale nikt do tej pory nie dał
im wskazówek jak z nimi pracować. Członkowie OWASP uświadomili to sobie i zaczęli
zapełniać tę lukę. Pomagają tworzyć powszechny język, który potrzebny jest do
właściwego modelowania problemów zabezpieczeń i ich rozwiązywania.”

OWASP Testing Project
OWASP Testing Project jest to projekt składający się z dwóch części mający na
celu utorować drogę do stworzenia spójnego zbioru dokumentacji oraz oprogramowania
wspomagającego. Pierwsza część projektu ma za zadanie przedstawienie zorientowanej
zadaniowo struktury bezpieczeństwa, aby pomóc organizacjom przy tworzeniu ich
własnych procesów. Druga wspomaga strukturę szczegółowymi opisami technicznymi
tego, w jaki sposób zaimplementować procesy wysokiego poziomu, włączając
egzaminowanie kodu specyficznych problemów. Tak jak wszystkie projekty OWASP,
dokumentacje i oprogramowanie jest darmowe i dostępne dla wszystkich.
Na testową strukturę zorientowaną zadaniowo powinny składać się działania
umiejscowione w następujących etapach procesu tworzenia:

Strona 44 z 50
TESTER.PL
• Zanim rozpocznie się proces tworzenia
• W trakcie fazy definiowania i projektów
• W trakcie procesu tworzenia
• Podczas etapu wdrażania
Zanim zacznie się proces tworzenia, zgodnie ze strukturą powinno się
przetestować czy powstał odpowiedni proces cyklu życia programu i czy zawiera
niezbędne zabezpieczenia. Zaleca się przetestowanie czy zespół tworzący
oprogramowanie jest zaopatrzony we właściwe standardy i zna właściwy sposób
postępowania oraz czy twórcy stworzyli metryczne i wzorcowe kryteria. Ta koncepcja
nie powinna być niczym nowym dla zespołów, które stosują najlepsze techniki, takie jak
Rational Unified Software stworzony przez Rational Software (od 2003 przejęty przez
IBM).
Następnie, aby mieć pewność, że bezpieczeństwo jest integralną częścią
powstawania oprogramowania w jego cyklu życia, koniecznie należy sprawdzić czy
właściwa polityka, standardy i dokumentacja są na miejscu. Dokumentacja jest bardzo
ważna, ponieważ daje twórcom wytyczne i wprowadza politykę, według której mogą
pracować: ludzie tylko wtedy robią właściwe rzeczy, kiedy wiedzą jakie rzeczy są
właściwe. Jeśli aplikacja ma powstać w Javie, niezbędny staje się standard zabezpieczeń
dla Javy. Jeżeli aplikacja ma korzystać z kryptografii, dostępny musi być standard
kryptograficzny. Poprzez dokumentowanie powszechnych i najczęściej spotykanych
problemów zmniejszy się liczba decyzji, które należy podjąć w trakcie procesu
tworzenia, a ryzyko związane z bezpieczeństwem implementacji zostanie zmniejszone.

Testing Requirements is Essential
Testowanie zaczyna się na poważnie podczas fazy definiowania i projektowania.
Wymogi bezpieczeństwa określają jak aplikacja pracuje z punktu widzenia zabezpieczeń.
Niezbędne jest przetestowanie wymogów bezpieczeństwa. W tym przypadku w pierwszej
kolejności należy przetestować to, czy odpowiednie wymogi istnieją i czy nie zawierają
luk. Np. jeżeli bezpieczeństwo wymaga, aby użytkownik, który chce dostać się do
zasobów uprzednio zalogował się na stronie, należy sprawdzić czy to oznacza, że musi
być zarejestrowany w systemie i posiadać przypisaną rolę?
W trakcie szukania luk w wymaganiach rozważmy takie mechanizmy
bezpieczeństwa jak:
• User Management
• Authentication
• Authorization
• Session Management
• Transport Security
• Data Protection
• Data Validation
Aplikacje powinny mieć udokumentowany projekt i architekturę. Przez
udokumentowanie mamy na myśli modele, dokumenty tekstowe i inne podobne
Strona 45 z 50
TESTER.PL
elementy. Elementy te koniecznie muszą zostać przetestowane, należy zwrócić uwagę
czy wymuszają właściwy poziom bezpieczeństwa, zgodny z wymaganiami.
Identyfikacja wad zabezpieczeń w fazie projektu nie tylko jest najmniej
kosztownym etapem do lokalizacji błędów, ale również najefektywniejszym do
wprowadzania zmian. Na przykład jeżeli stwierdzimy, że projekt przewiduje wezwanie
do autoryzacji w kilku miejscach, może należałoby rozważyć komponent będący
centralną autoryzacją. Jeżeli aplikacja przewiduje kontrolę danych w kilku miejscach,
może powinno się stworzyć centralną strukturę walidacyjną (co byłoby wydajniejsze i
tańsze). Projektowe wzorce bezpieczeństwa stają się coraz popularniejsze i użyteczne na
tym etapie. Jeśli jakiś słaby punkt zostaje odkryty, powinien od razu trafić do architekta
systemu, by ten zastosował alternatywne rozwiązanie.
Bardzo użyteczne dla bezpieczeństwa są modele UML opisujące sposób pracy
aplikacji. W niektórych przypadkach mogą istnieć gotowe modele. Używając tych modeli
należy wraz z projektantami systemu określić dokładne działanie aplikacji. Jeżeli zostaną
odkryte jakieś słabe punkty, należy je przekazać do architektów systemu w celu
zastosowania alternatywnych rozwiązań. Istnieje specjalny dialekt UML dla modeli
bezpieczeństwa tzw. SecureUML.
‘Uzbrojeni’ w projekt i opinie architektów oraz model UML dokładnie opisujący
działanie systemu możemy rozpocząć wykonywanie prób modelu-zagrożeń. Model
zagrożeń stał się bardzo popularną techniką polegającą na szukaniu ‘dziur’, które mógłby
wykorzystać przeciwnik i sprawdzaniu czy zostały wprowadzone odpowiednie środki
zapobiegawcze. Tworzy się realistyczne scenariusze ‘ataku’. Analizując projekt i
architekturę pod kątem tych scenariuszy sprawdza się czy aplikacja jest odpowiednio
zabezpieczona. Jeżeli wystąpią jakieś zagrożenia, należy ponownie wrócić do
projektantów i architektów, aby ci odpowiednio zmodyfikowali projekt.
Teoretycznie, wdrażanie jest implementowaniem projektu. Jednakże w
rzeczywistości wiele decyzji dotyczących projektu podejmowanych jest właśnie na etapie
tworzenia kodu. Są to zwykle pomniejsze zmiany, które dotyczą zbyt szczegółowych
zagadnień by być opisanymi na etapie projektu czy analizy wymagań lub nie objęte
żadnymi standardami. Jeżeli projekt i architektura były niewystarczające, wówczas
developer będzie zmuszony do podejmowania wielu takich decyzji. Jeżeli
niewystarczająca była polityka lub standardy, konstruktor będzie miał jeszcze więcej
decyzji do podjęcia.
Zespół do spraw bezpieczeństwa powinien ‘przejść’ kod wraz z developerem, a w
niektórych przypadkach również z architektami systemu. Takie ‘przejście’ kodu jest
dokładnym przejrzeniem kodu, gdzie developerzy czy architekci mogą wyjaśnić logikę i
przebieg działania programu. Zespołowi daje to możliwość ogólnego zrozumienia kodu,
a developerom pozwala na wyjaśnienie, dlaczego pewne rzeczy zostały napisane w ten
sposób, a nie inny. Celem nie jest sprawdzenie kodu tylko zrozumienie, na wysokim
poziomie, w jaki sposób funkcjonuje aplikacja.
Znając kod i wiedząc jak zostały rozwiązane niektóre istotne zagadnienia, tester
może przetestować kod w poszukiwaniu luk w zabezpieczeniach.

Strona 46 z 50
TESTER.PL
Jeżeli zostaną sprawdzone wymagania, przeanalizowany projekt, powstaną
modele zagrożeniowe i zostaną przeprowadzone testy kodu, można by założyć, że
wszystkie usterki zostały wykryte. Jednakże ostatnim krokiem jest test wdrożonej
aplikacji mający na celu sprawdzenie czy nic nie zostało pominięte. Test penetracyjny
powinien sprawdzać sposób w jaki cała infrastruktura została wdrożona i zabezpieczona.
Podczas gdy aplikacja wydaje się być właściwie zabezpieczona, może okazać się, że jakiś
niewielki błąd dający się wykorzystać do złamania zabezpieczeń tkwi w konfiguracji
zarządzania w procesie instalacji. To właśnie jest miejsce, gdzie najbardziej efektywne
stają się czarnoskrzynkowe skanery szukające dziur w konfiguracji zarządzania.
Pamiętajmy, że koszty naprawy znalezionego na tym etapie błędu w zabezpieczeniach są
ogromne i mogą wymagać wielkich zmian w projekcie.
Dobry program testujący angażuje zespół
odpowiedzialny za zabezpieczenia złożony
przeważnie z tych samych osób, które
tworzyły oprogramowanie. Dobre zespoły
kładą większy nacisk na testowanie
definicji i fazy projektowej cyklu życia
oprogramowania niż na testowanie
wdrażania. W sprzedaży pojawiają się tzw.
„złote środki” do testowania, ale takie
programy po prostu nie istnieją. Rys.2
Zespoły testujące powinny spodziewać się
tego, że ponad połowę czasu zajmuje
testowanie projektów i procesów. Pozostały
czas powinien być przeznaczony na
sprawdzenie tego, jak te projekty i polityka
tworzenie została wykorzystana w kodzie.
Rys.3

Podsumowanie
Tworzenie bezpiecznego oprogramowania oznacza tworzenie lepszego
oprogramowania. Testowanie bezpieczeństwa oznacza testowanie całego cyklu życia
oprogramowania, które kolejno testuje ludzi, procesy i technologie.

Strona 47 z 50
TESTER.PL

Kontakt:

Regina Koenig, (22) 528 66 37
Mercury
rkoenig@mercury.com
Beata Pogorzelska, (22) 810 10 50
ITBC Communication
Beata_Pogorzelska@itbc.pl

MERCURY MANAGED SERVICES DLA PLATFORMY SAP NETWEAVER™

Warszawa, 7 czerwca 2005 r. - Mercury Interactive Corporation (NASDAQ:
MERQ), lider w zakresie optymalizacji technologii biznesowych (BTO),
poinformował o udostępnieniu rozwiązań Mercury Managed Services dla SAP
NetWeaver,

umożliwiających

krytycznych

aplikacji,

bez

zarządzanie

wydajnością

konieczności

inwestowania

i

dostępnością
w

dodatkową

infrastrukturę.
Rozwiązanie Mercury Managed Services zapewnia wysoką jakość obsługi
użytkowników,

nawet

w ramach

dużych

wdrożeń

obejmujących

tysiące

stanowisk. Oferowane usługi pozwalają korzystającym z oprogramowania SAP
na:
•

całościową weryfikację wydajności i skalowalności zautomatyzowanych
procesów gospodarczych;

•

identyfikowanie, diagnozowanie i rozwiązywanie problemów w zakresie
wydajności, wynikających między innymi z dostosowywania rozwiązań do
niestandardowych potrzeb, integracji z systemami innych firm oraz zmian
w infrastrukturze;

Strona 48 z 50
TESTER.PL
•

prewencyjne zarządzanie poziomem usług.
Dzięki zastosowaniu pakietu Mercury Performance Center możliwie jest

wykonywanie testów obciążeniowych, dostrajanie wydajności, planowanie mocy
obliczeniowej

oraz

diagnostykę

wdrożeń

SAP

NetWeaver

przed

ich

uruchomieniem. Ponadto użytkownicy mogą skorzystać z rozwiązania Mercury
Business Availability Center, które umożliwia zarządzanie poziomem usług i
konfiguracją, odwzorowywanie powiązań między aplikacjami, diagnostykę
aplikacji oraz zarządzanie dostępnością systemów. W ramach programu Mercury
Managed Services klienci korzystający z produktów firmy SAP współpracują ze
specjalistami firmy Mercury w zakresie zarządzania rozwiązaniem SAP
NetWeaver przez cały okres jego eksploatacji. Rozwiązanie jest już dostępne na
rynku.
USŁUGI MERCURY MANAGED SERVICES
Program Mercury Managed Services polega na udostępnianiu rozwiązań
przez Internet, w modelu hostingu. Firma Mercury wyznacza zespół specjalistów,
który udziela użytkownikom pomocy w zdalnym zarządzaniu wydajnością i
dostępnością krytycznych aplikacji do zarządzania przedsiębiorstwem (ERP) i
obsługą klienta (CRM) oraz innych aplikacji niestandardowych. W większości
przypadków rozwiązanie Mercury Managed Services umożliwia efektywne
wprowadzanie w życie rozwiązań informatycznych w ciągu kilku tygodni, a nawet
kilku dni. Z Mercury Managed Services korzysta obecnie ponad 500 klientów ze
Stanów Zjednoczonych, Europy i Dalekiego Wschodu.
MERCURY I SAP
Mercury i SAP współpracują od połowy lat dziewięćdziesiątych. Jako partner
SAP w dziedzinie oprogramowania, firma Mercury opracowała szereg rozwiązań
przeznaczonych do optymalizacji jakości, wydajności i skalowania rozwiązań
firmy SAP. Produkty Mercury, takie jak Mercury WinRunner®, Mercury QuickTest
Professional™ i Mercury LoadRunner®, uzyskały certyfikaty w zakresie integracji
z oprogramowaniem SAP. Dzięki tym certyfikatom użytkownicy mają
zagwarantowane niezawodne współdziałanie interfejsów pomiędzy produktami

Strona 49 z 50
TESTER.PL
obu firm. W lutym 2005 r. zostało zawarte długoterminowe porozumienie, dzięki
któremu w ramach usługi SAP Go Live Check Service przeznaczonej dla
użytkowników platformy SAP NetWeaver™ oferowane jest rozwiązanie Mercury
LoadRunner.

Strona 50 z 50

More Related Content

Viewers also liked

Democracia y competencias ciudadanas
Democracia y competencias ciudadanasDemocracia y competencias ciudadanas
Democracia y competencias ciudadanasJhose Quelmer
 
4 diagnóstico, posicionamiento, creación de valor
4   diagnóstico, posicionamiento, creación de valor4   diagnóstico, posicionamiento, creación de valor
4 diagnóstico, posicionamiento, creación de valorRafael Alcón Díaz [LION]
 
Catálogo Guincho inrodaflex 1.2
Catálogo Guincho inrodaflex 1.2Catálogo Guincho inrodaflex 1.2
Catálogo Guincho inrodaflex 1.2André Sá
 
Dundee Precious Metals - Denver Gold Forum
Dundee Precious Metals - Denver Gold ForumDundee Precious Metals - Denver Gold Forum
Dundee Precious Metals - Denver Gold ForumCompany Spotlight
 
Qué es un manipulador de alimentos y por qué debe formarse
Qué es un manipulador de alimentos y por qué debe formarseQué es un manipulador de alimentos y por qué debe formarse
Qué es un manipulador de alimentos y por qué debe formarseAdalil Seguridad Alimentaria
 
3 men in a boat - IX
3 men in a boat  - IX3 men in a boat  - IX
3 men in a boat - IXruchisengar
 
Diseño y fabricación de un reductor de velocidad
Diseño y fabricación de un reductor de velocidadDiseño y fabricación de un reductor de velocidad
Diseño y fabricación de un reductor de velocidadizantux
 
Using Canary Honeypots for Network Security Monitoring
Using Canary Honeypots for Network Security MonitoringUsing Canary Honeypots for Network Security Monitoring
Using Canary Honeypots for Network Security Monitoringchrissanders88
 
LINDEMANN H O T E L S® - Sonderpreisvereinbarungen
LINDEMANN H O T E L S® - Sonderpreisvereinbarungen LINDEMANN H O T E L S® - Sonderpreisvereinbarungen
LINDEMANN H O T E L S® - Sonderpreisvereinbarungen lindemannhotels
 
Proyecto de grado artesanías 2012 09-28
Proyecto de grado artesanías 2012 09-28Proyecto de grado artesanías 2012 09-28
Proyecto de grado artesanías 2012 09-28huelgosangelica
 
Club Store Packaging and Design Strategy
Club Store Packaging and Design StrategyClub Store Packaging and Design Strategy
Club Store Packaging and Design StrategyWorks Design Group
 
HP Polska dla Biznesu wiosna 2014
HP Polska dla Biznesu wiosna 2014HP Polska dla Biznesu wiosna 2014
HP Polska dla Biznesu wiosna 2014HPPolskadlaBiznesu
 

Viewers also liked (20)

Tester.pl - Numer 10
Tester.pl - Numer 10Tester.pl - Numer 10
Tester.pl - Numer 10
 
Escultores de hoy - Carole A. Feuerman
 Escultores de hoy - Carole A. Feuerman Escultores de hoy - Carole A. Feuerman
Escultores de hoy - Carole A. Feuerman
 
Democracia y competencias ciudadanas
Democracia y competencias ciudadanasDemocracia y competencias ciudadanas
Democracia y competencias ciudadanas
 
4 diagnóstico, posicionamiento, creación de valor
4   diagnóstico, posicionamiento, creación de valor4   diagnóstico, posicionamiento, creación de valor
4 diagnóstico, posicionamiento, creación de valor
 
Examen segundo quimestre
Examen segundo quimestreExamen segundo quimestre
Examen segundo quimestre
 
Catálogo Guincho inrodaflex 1.2
Catálogo Guincho inrodaflex 1.2Catálogo Guincho inrodaflex 1.2
Catálogo Guincho inrodaflex 1.2
 
Dundee Precious Metals - Denver Gold Forum
Dundee Precious Metals - Denver Gold ForumDundee Precious Metals - Denver Gold Forum
Dundee Precious Metals - Denver Gold Forum
 
Qué es un manipulador de alimentos y por qué debe formarse
Qué es un manipulador de alimentos y por qué debe formarseQué es un manipulador de alimentos y por qué debe formarse
Qué es un manipulador de alimentos y por qué debe formarse
 
3 men in a boat - IX
3 men in a boat  - IX3 men in a boat  - IX
3 men in a boat - IX
 
Diseño y fabricación de un reductor de velocidad
Diseño y fabricación de un reductor de velocidadDiseño y fabricación de un reductor de velocidad
Diseño y fabricación de un reductor de velocidad
 
Energía térmica
Energía  térmica Energía  térmica
Energía térmica
 
Using Canary Honeypots for Network Security Monitoring
Using Canary Honeypots for Network Security MonitoringUsing Canary Honeypots for Network Security Monitoring
Using Canary Honeypots for Network Security Monitoring
 
LINDEMANN H O T E L S® - Sonderpreisvereinbarungen
LINDEMANN H O T E L S® - Sonderpreisvereinbarungen LINDEMANN H O T E L S® - Sonderpreisvereinbarungen
LINDEMANN H O T E L S® - Sonderpreisvereinbarungen
 
Proyecto de grado artesanías 2012 09-28
Proyecto de grado artesanías 2012 09-28Proyecto de grado artesanías 2012 09-28
Proyecto de grado artesanías 2012 09-28
 
Club Store Packaging and Design Strategy
Club Store Packaging and Design StrategyClub Store Packaging and Design Strategy
Club Store Packaging and Design Strategy
 
Planning booklet
Planning bookletPlanning booklet
Planning booklet
 
HP Polska dla Biznesu wiosna 2014
HP Polska dla Biznesu wiosna 2014HP Polska dla Biznesu wiosna 2014
HP Polska dla Biznesu wiosna 2014
 
Sztuka pisania-perswazyjnych-tekstow
Sztuka pisania-perswazyjnych-tekstowSztuka pisania-perswazyjnych-tekstow
Sztuka pisania-perswazyjnych-tekstow
 
Scalone dokumenty (12)
Scalone dokumenty (12)Scalone dokumenty (12)
Scalone dokumenty (12)
 
Magnezi b6 Calivita
Magnezi b6 CalivitaMagnezi b6 Calivita
Magnezi b6 Calivita
 

Similar to Tester.pl - Numer 4

Strefa PMI, nr 44, marzec 2024
Strefa PMI, nr 44, marzec 2024Strefa PMI, nr 44, marzec 2024
Strefa PMI, nr 44, marzec 2024Strefa PMI
 
Raport User Experience i Product Design w Polsce 2018
Raport User Experience i Product Design w Polsce 2018Raport User Experience i Product Design w Polsce 2018
Raport User Experience i Product Design w Polsce 2018Tomasz Skórski
 
Strefa PMI nr 18, wrzesień 2017
Strefa PMI nr 18, wrzesień 2017Strefa PMI nr 18, wrzesień 2017
Strefa PMI nr 18, wrzesień 2017Strefa PMI
 
Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości?
Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości? Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości?
Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości? Barbara Kowalewska
 
testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015
testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015
testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015Radoslaw Smilgin
 
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLAWysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLATobias Koprowski
 
COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...
COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...
COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...Adam Mizerski
 
DSC. PROPABLY THE BEST CATI RESEARCH IN POLAND
DSC. PROPABLY THE BEST CATI RESEARCH IN POLANDDSC. PROPABLY THE BEST CATI RESEARCH IN POLAND
DSC. PROPABLY THE BEST CATI RESEARCH IN POLANDDSC Research Group
 
Strefa PMI, nr 40, marzec 2023
Strefa PMI, nr 40, marzec 2023Strefa PMI, nr 40, marzec 2023
Strefa PMI, nr 40, marzec 2023Strefa PMI
 
Wrocławski sektor IT 2019
Wrocławski sektor IT 2019Wrocławski sektor IT 2019
Wrocławski sektor IT 2019Wroclaw
 
Raport araw 10-10-2019_wroclawski_sektro_it_web
Raport araw 10-10-2019_wroclawski_sektro_it_webRaport araw 10-10-2019_wroclawski_sektro_it_web
Raport araw 10-10-2019_wroclawski_sektro_it_webWroclaw
 
Jakość i wiarygodność OSS
Jakość i wiarygodność OSSJakość i wiarygodność OSS
Jakość i wiarygodność OSSbartekel
 
Strefa PMI nr 15, grudzień 2016
Strefa PMI nr 15, grudzień 2016Strefa PMI nr 15, grudzień 2016
Strefa PMI nr 15, grudzień 2016Strefa PMI
 
Certyfikacja_a_kariera_w_IT_SelfCaseStudy
Certyfikacja_a_kariera_w_IT_SelfCaseStudyCertyfikacja_a_kariera_w_IT_SelfCaseStudy
Certyfikacja_a_kariera_w_IT_SelfCaseStudyTobias Koprowski
 
Strefa PMI nr 20, marzec 2018
Strefa PMI nr 20, marzec 2018Strefa PMI nr 20, marzec 2018
Strefa PMI nr 20, marzec 2018Strefa PMI
 
Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...
Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...
Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...Mikolaj Leszczuk
 
Strefa PMI, nr 39, listopad 2022
Strefa PMI, nr 39, listopad 2022Strefa PMI, nr 39, listopad 2022
Strefa PMI, nr 39, listopad 2022Strefa PMI
 
Strefa PMI nr 19, listopad 2017
Strefa PMI nr 19, listopad 2017Strefa PMI nr 19, listopad 2017
Strefa PMI nr 19, listopad 2017Strefa PMI
 
Strefa PMI nr 17, czerwiec 2017
Strefa PMI nr 17, czerwiec 2017Strefa PMI nr 17, czerwiec 2017
Strefa PMI nr 17, czerwiec 2017Strefa PMI
 

Similar to Tester.pl - Numer 4 (20)

Strefa PMI, nr 44, marzec 2024
Strefa PMI, nr 44, marzec 2024Strefa PMI, nr 44, marzec 2024
Strefa PMI, nr 44, marzec 2024
 
Raport User Experience i Product Design w Polsce 2018
Raport User Experience i Product Design w Polsce 2018Raport User Experience i Product Design w Polsce 2018
Raport User Experience i Product Design w Polsce 2018
 
Strefa PMI nr 18, wrzesień 2017
Strefa PMI nr 18, wrzesień 2017Strefa PMI nr 18, wrzesień 2017
Strefa PMI nr 18, wrzesień 2017
 
Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości?
Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości? Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości?
Raport IT-Leaders: Co motywuje Specjalistów IT w covid-owej rzeczywistości?
 
testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015
testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015
testerzy.pl katalog szkoleń praktycznych dla testerów oprogramowania 2015
 
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLAWysoka Dostępność Windows Server 2008 w kontekscie umów SLA
Wysoka Dostępność Windows Server 2008 w kontekscie umów SLA
 
COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...
COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...
COBIT - jako narzędzie wspomagające pracę nie tylko audytora, ale również rze...
 
DSC. PROPABLY THE BEST CATI RESEARCH IN POLAND
DSC. PROPABLY THE BEST CATI RESEARCH IN POLANDDSC. PROPABLY THE BEST CATI RESEARCH IN POLAND
DSC. PROPABLY THE BEST CATI RESEARCH IN POLAND
 
Strefa PMI, nr 40, marzec 2023
Strefa PMI, nr 40, marzec 2023Strefa PMI, nr 40, marzec 2023
Strefa PMI, nr 40, marzec 2023
 
Wrocławski sektor IT 2019
Wrocławski sektor IT 2019Wrocławski sektor IT 2019
Wrocławski sektor IT 2019
 
Raport araw 10-10-2019_wroclawski_sektro_it_web
Raport araw 10-10-2019_wroclawski_sektro_it_webRaport araw 10-10-2019_wroclawski_sektro_it_web
Raport araw 10-10-2019_wroclawski_sektro_it_web
 
Jakość i wiarygodność OSS
Jakość i wiarygodność OSSJakość i wiarygodność OSS
Jakość i wiarygodność OSS
 
Strefa PMI nr 15, grudzień 2016
Strefa PMI nr 15, grudzień 2016Strefa PMI nr 15, grudzień 2016
Strefa PMI nr 15, grudzień 2016
 
Certyfikacja_a_kariera_w_IT_SelfCaseStudy
Certyfikacja_a_kariera_w_IT_SelfCaseStudyCertyfikacja_a_kariera_w_IT_SelfCaseStudy
Certyfikacja_a_kariera_w_IT_SelfCaseStudy
 
Strefa PMI nr 20, marzec 2018
Strefa PMI nr 20, marzec 2018Strefa PMI nr 20, marzec 2018
Strefa PMI nr 20, marzec 2018
 
Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...
Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...
Badanie i implementacja aspektu QoE (ang. Quality of Experience) w aplikacjac...
 
Strefa PMI, nr 39, listopad 2022
Strefa PMI, nr 39, listopad 2022Strefa PMI, nr 39, listopad 2022
Strefa PMI, nr 39, listopad 2022
 
Jak bardzo techniczny musi być tester?
Jak bardzo techniczny musi być tester?Jak bardzo techniczny musi być tester?
Jak bardzo techniczny musi być tester?
 
Strefa PMI nr 19, listopad 2017
Strefa PMI nr 19, listopad 2017Strefa PMI nr 19, listopad 2017
Strefa PMI nr 19, listopad 2017
 
Strefa PMI nr 17, czerwiec 2017
Strefa PMI nr 17, czerwiec 2017Strefa PMI nr 17, czerwiec 2017
Strefa PMI nr 17, czerwiec 2017
 

More from Stowarzyszenie Jakości Systemów Informatycznych (SJSI)

More from Stowarzyszenie Jakości Systemów Informatycznych (SJSI) (20)

Star Trek: BDD Enterprise
Star Trek: BDD EnterpriseStar Trek: BDD Enterprise
Star Trek: BDD Enterprise
 
Model based testing as a BA tool
Model based testing as a BA toolModel based testing as a BA tool
Model based testing as a BA tool
 
Communication - Language of Leader
Communication - Language of LeaderCommunication - Language of Leader
Communication - Language of Leader
 
Miękkie umiejętności w pracy analityka biznesu
Miękkie umiejętności w pracy analityka biznesuMiękkie umiejętności w pracy analityka biznesu
Miękkie umiejętności w pracy analityka biznesu
 
Błędy w analizie z praktyki (nowe wydanie  )
Błędy w analizie z praktyki (nowe wydanie  )Błędy w analizie z praktyki (nowe wydanie  )
Błędy w analizie z praktyki (nowe wydanie  )
 
7 Skills for highly effective teams - workshop
7 Skills for highly effective teams - workshop7 Skills for highly effective teams - workshop
7 Skills for highly effective teams - workshop
 
Dancing with the devil - how to cooperate with a problematic customer
Dancing with the devil - how to cooperate with a problematic customerDancing with the devil - how to cooperate with a problematic customer
Dancing with the devil - how to cooperate with a problematic customer
 
Cosmic truths about software requirements
Cosmic truths about software requirementsCosmic truths about software requirements
Cosmic truths about software requirements
 
Zagraj w zaangażowanie
Zagraj w zaangażowanieZagraj w zaangażowanie
Zagraj w zaangażowanie
 
Analiza prawdziwie biznesowa - skąd biorą się projekty
Analiza prawdziwie biznesowa - skąd biorą się projektyAnaliza prawdziwie biznesowa - skąd biorą się projekty
Analiza prawdziwie biznesowa - skąd biorą się projekty
 
Internet of Things loves data - analysis of Industry 4.0
Internet of Things loves data - analysis of Industry 4.0Internet of Things loves data - analysis of Industry 4.0
Internet of Things loves data - analysis of Industry 4.0
 
Start with Accessibility: Why, How and What
Start with Accessibility: Why, How and WhatStart with Accessibility: Why, How and What
Start with Accessibility: Why, How and What
 
Agile business analyst
Agile business analystAgile business analyst
Agile business analyst
 
Analityk i architekt w czasach automatyzacji i robotyzacji biznesu
Analityk i architekt w czasach automatyzacji i robotyzacji biznesuAnalityk i architekt w czasach automatyzacji i robotyzacji biznesu
Analityk i architekt w czasach automatyzacji i robotyzacji biznesu
 
Jak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BA
Jak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BAJak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BA
Jak sprzedać swój pomysł w 5 minut, czyli pitch deck dla BA
 
7 Skills for highly effective teams
7 Skills for highly effective teams7 Skills for highly effective teams
7 Skills for highly effective teams
 
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
[TestWarez 2017] Skomplikowane testowanie, skomplikowane terminy. Testowanie ...
 
[TestWarez 2017] Przychodzi tester na rozmowę...
[TestWarez 2017] Przychodzi tester na rozmowę...[TestWarez 2017] Przychodzi tester na rozmowę...
[TestWarez 2017] Przychodzi tester na rozmowę...
 
[TestWarez 2017] A proper gun makes testing fun
[TestWarez 2017] A proper gun makes testing fun[TestWarez 2017] A proper gun makes testing fun
[TestWarez 2017] A proper gun makes testing fun
 
[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych[TestWarez 2017] Zen testów wydajnościowych
[TestWarez 2017] Zen testów wydajnościowych
 

Tester.pl - Numer 4

  • 1. TESTER.PL Rynek rośnie! To widać. I nie chodzi tu o wzrost eksportu, czy PKB, ale o rynek związany z testowaniem. Od początku tego roku mamy „wysyp” konferencji i warsztatów związanych z testowaniem. Nie bez przyczyny – jest na to popyt! W lutym Stowarzyszenie wspólnie z IIR zorganizowało drugie z kolei warsztaty „Certyfikowany Test Manager”. Software – Konferencje w tym roku zrealizowało i zamierza zrealizować jeszcze kilka kursów związanych z testowaniem. W maju mieliśmy zakończoną dużym sukcesem II Konferencję SJSI, za kilka dni odbędzie się w Warszawie duża impreza –II Krajowa Konferencja Jakości Systemów Informatycznych. W sierpniu odbędzie się w Krakowie Software Quality Assurance Management – impreza, która w zeszłym roku przyciągnęła nie tylko znane „testerskie” postacie z Polski, ale także kilka osobistości z zagranicy. Wszystko wskazuje na to, że na przełomie września i października będziemy mieli gotową „polską” wersję egzaminu International Software Testing Qualification Board. Aktualnie trwają prace nad słownikiem oraz tłumaczeniem pytań. To wszystko się dzieje, bo jest na to zapotrzebowanie, bo firmy zauważają korzyści z inwestowania w jakość, w tym - w testy. Podobne nastroje zauważyć można u przedstawicieli firm sprzedających narzędzia, a także wśród konsultantów zajmujących się optymalizacją testów. Według różnych szacunków roczny wzrost sprzedaży narzędzi sięgnąć może nawet 14%. Polski rynek usług testowych szacuje się na 33-49 mln USD rocznie. To nie jest mało, a kryje się tutaj jeszcze spory potencjał. Niektóre z zagranicznych firm przenoszą swoje działy testowania właśnie do Polski – tak się dzieje np. w Krakowie. Poważne i uznane polskie firmy same zaczynają inwestować w tworzenie kompleksowych kompetencji związanych z testowaniem. Pod koniec ubiegłego roku tak postąpił Polsoft, wyodrębniając w swojej strukturze profesjonalne Centrum Testowania. Co to oznacza w konsekwencji dla nas testerów? Z pewnością powinniśmy patrzeć w przyszłość z dużym optymizmem. Tester z dużym doświadczeniem, a zwłaszcza inżynier testowy, czy analityk testowy nie powinni w najbliższej przyszłości narzekać na brak zajęcia. Jedno jednak nie ulega wątpliwości – aby być konkurencyjnym na rynku należy być dobrym w tym co się robi. I pewnie stąd popyt na konferencje i szkolenia. Z pozdrowieniami Wojciech Jaszcz Prezes SJSI Strona 1 z 50
  • 2. TESTER.PL Od redaktora Z pewnym drobnym poślizgiem – koniec czerwca - oddajemy Wam, drodzy Czytelnicy, kolejny, czwarty numer kwartalnika TESTER.PL. W tym numerze trzy pozycje: 1. Piotr Kałuski o dokumentowaniu wyników testów, 2. Joanna Nowakowska i Lucjan Stapp o zaletach stosowania metodologii Test Driven Development i używanych narzędziach, 3. Mark Curphey o tworzeniu bezpiecznego oprogramowania. Numer otwiera sprawozdanie Wojciecha Jaszcza z II Konferencji Stowarzyszenia Jakości Systemów Informatycznych, która odbyła się w Serocku, w dniach 19-20 maja 2005. Jako uczestnik zarówno tej jak i I Konferencji SJSI, pozwolę sobie stwierdzić, że była to impreza ze wszech miar udana, i – o ile jest to możliwe – chyba nawet lepsza niż poprzednia. Chciałbym także zwrócić uwagę na informację o konferencji (z warsztatami) Certyfikowany Test Manager, które nasze Stowarzyszenie przeprowadza wspólnie z IIR. Szkolenie odbędzie się w Warszawie, w pierwszej połowie września. Równocześnie po raz kolejny chciałbym gorąco zachęcić wszystkich Czytelników tego periodyku do aktywnej współpracy. Cały czas czekamy na Państwa uwagi, artykuły, felietony – wszystko, co Was interesuje, co chcielibyście przeczytać, czego się dowiedzieć. Jeżeli tylko będziemy mogli, postaramy się zrealizować Państwa postulaty. Lato – okres mniej wzmożonej pracy zawodowej – to świetny moment do napisania do nas o tym, co Was interesuje i czego chcielibyście dowiedzieć się od nas. Strona 2 z 50
  • 3. TESTER.PL II Konferencja Stowarzyszenia Jakości Systemów Informatycznych W dniach 19 – 20 maja 2005 już po raz drugi odbyła się konferencja Stowarzyszenia Jakości Systemów Informatycznych. W tym roku mieliśmy przyjemność podejmować Państwa w Instytucie Rozwoju Biznesu w Serocku. Dwudniowa impreza zgromadziła około 70 uczestników z różnych branż gospodarki. Gościliśmy m.in. przedstawicieli sektora Telco, IT, bankowości i ubezpieczeń, sektora publicznego, naukowców. Spotkanie otworzył krótkim powitaniem Wojciech Jaszcz, prezes Stowarzyszenia. Zasadnicza część konferencji rozpoczęła się bardzo interesującym panelem „Jakość usług w organizacji”, który zainicjował i poprowadził p. Borys Stokalski, Prezes Infovide. W gronie panelistów znaleźli się Grzegorz Kulisz (ComputerLand S.A.), Piotr Wasikowski (Sollers Consulting Sp. z o.o.) i Bogdan Bereza-Jarociński ( bbjTest). Wywiązała się burzliwa dyskusja o „jakości usług”, która w konsekwencji przeszła w dysputy o SLA w organizacji. Dużym zainteresowaniem cieszyły się prezentacje Bogdana Berezy – Jarocińskiego „Twórcze myślenie w testowaniu oprogramowania – mit czy konieczność? Przegląd zagadnień”, oraz „Przegląd modeli oceny dojrzałości procesu testowania”. Podobnie jak wspomniana wyżej prezentacja, kilka prelekcji poświęcone było zagadnieniom z pogranicza zarządzania testami i zarządzania projektami. Były to prezentacje „Szacowanie testów metodą TPA” (Wojciech Jaszcz, Michał Mazur z ComputerLand S.A.) oraz „Organizacja i zarządzanie zespołem testerów” (Paweł Brodziński, Comarch S.A.). Lucjan Stapp i Joanna Nowakowska przedstawili w swoim wystąpieniu ciekawe podejście do związania testów i developmentu w modelu TDD – Test Driven Development. W naszych realiach to bardzo nowatorski pomysł i warto dłużej się nad nim zastanowić. Kolejne, niezwykle ciekawe wykłady dotyczyły miar oprogramowania (prelegent: dr Andrzej Kobyliński, Szkoła Główna Handlowa) oraz procesu testowania w Strona 3 z 50
  • 4. TESTER.PL kontekście CMMI oraz wytycznych SEI (Maciej Bodych, Piotr Ślęzak, Premium Technology sp. z o.o.). Sporo miejsca zajęła również część „narzędziowa”, w której uzasadnionym zainteresowaniem cieszyły się prezentacje firmy Mercury głównego sponsora naszej konferencji. Były to w szczególności: „Quality Center with Business Process Testing”(prelegent: Lubomir Stojek), oraz „Tuning and LoadTesting on J2EE environment” (prelegent: Darek Malinowski). O opensourcowym narzędziu JMeter i testach regresywnych z jego wykorzystaniem opowiedział Łukasz Żebrowski z Rodan Systems S.A. Nie zabrakło też wieczornego spotkania przy grillu. Ciekawe dyskusje przy piwie, a czasami przy czymś mocniejszym, trwały prawie do godzin porannych . Wszystkim uczestnikom, prelegentom, a w szczególności sponsorom, bez których zorganizowanie tej konferencji byłoby niemożliwe, chcielibyśmy bardzo podziękować. Liczymy na Waszą obecność i wsparcie kolejnych inicjatyw Stowarzyszenia Jakości Systemów Informatycznych! Do zobaczenia na następnej edycji Konferencji!!! W imieniu organizatorów Wojciech Jaszcz Prezes Zarządu Strona 4 z 50
  • 5. TESTER.PL Sponsorzy: - Sponsor Główny - Sponsor - Partner medialny Strona 5 z 50
  • 6. TESTER.PL Prelegenci: Bereza-Jarociński Bogdan, bbjTest Bodych Maciej, Premium Technology Sp. z o.o. Brodziński Paweł, Comarch S.A. Jaszcz Wojciech, ComputerLand S.A. Kobyliński Andrzej, Szkoła Główna Handlowa Kulisz Grzegorz, ComputerLand S.A. Malinowski Dariusz, Merkury Mazur Michał, ComputerLand S.A. Nowakowska Joanna, Rodan Systems S.A. Stapp Lucjan, Politechnika Warszawska Stojek Lubomir, Mercury Stokalski Borys, Infovide S.A. Ślęzak Piotr, Premium Technology Sp. z o.o. Wąsikowski Piotr, Sollers Consulting Sp. z o.o. Żebrowski Łukasz, Rodan Systems S.A. Podziękowania Chciałbym serdecznie podziękować wszystkim osobom zaangażowanym w przygotowanie konferencji, a zwłaszcza: Joannie Nowakowskiej, Wojciechowi Jaszczowi, Lucjanowi Stappowi, Liliannie Wierzchoń, Janowi Sabakowi i Piotrowi Wąsikowskiemu, bez których zaangażowania, poświęcenia swojego czasu, profesjonalnego podejścia, i niezwykłej umiejętności radzenia sobie w sytuacjach kryzysowych, ta konferencja nie doszłaby do skutku. Beacie Pogorzelskiej i Joannie Wiśniewskiej, oraz wszystkim życzliwym tu niewymienionym za pomoc w organizacji konferencji. Centrum Szkoleniowemu za pomoc w skutecznym rozwiązaniu problemów. Strona 6 z 50
  • 7. TESTER.PL Kontakt: Regina Koenig, (22) 528 66 37 Mercury rkoenig@mercury.com Beata Pogorzelska, (22) 810 10 50 ITBC Communication Beata_Pogorzelska@itbc.pl MERCURY DLA PLATFORMY MICROSOFT VISUAL STUDIO 2005 Mercury optymalizuje współpracę między zespołami programistów i kontrolerów jakości. Warszawa, 15 czerwca 2005 r. - Firma Mercury Interactive Corporation (NASDAQ: MERQ) poinformowała, że oferowane przez nią rozwiązania będą obsługiwać platformę Microsoft Visual Studio 2005 Team System. Celem jest zapewnienie jak najwyższej jakości aplikacji przez cały cykl ich istnienia - od projektowania i prac programistycznych, po ich dostarczenie i zarządzanie. Microsoft Visual Studio 2005 to elastyczna platforma, obejmująca narzędzia do zarządzania całym cyklem życia aplikacji, ułatwiająca współpracę między zespołami programistów w celu uproszczenia procesu dostarczania aplikacji w architekturze usługowej SOA (Service Oriented Architecture). Zintegrowane produkty do testowania aplikacji firmy Mercury oraz platformy Microsoft Visual Studio 2005 umożliwiają klientom: pełne wykorzystanie zasobów testowych - obejmujących testy modułowe, funkcjonalne i obciążeniowe - w środowiskach programowania i kontroli jakości, dzięki integracji z pakietami oprogramowania Mercury Quality Center™ i Mercury Performance Center™; Strona 7 z 50
  • 8. TESTER.PL współpracę w zakresie diagnozowania i korygowania błędów w aplikacjach, wąskich gardeł w zakresie wydajności oraz problemów ze skalowalnością przez cały cykl istnienia aplikacji za pomocą narzędzia Mercury Diagnostics™; dostarczenie pełnego obrazu procesu testowania aplikacji za pomocą narzędzia Mercury Application Delivery Dashboard™. „Współpraca z firmą Microsoft wypełnia lukę, dzielącą procesy tworzenia aplikacji i kontroli jakości w taki sposób, aby zagwarantować klientom wysoką jakość aplikacji niestandardowych i aplikacji w architekturze SOA, tworzonych w oparciu o platformę .NET Framework” – powiedział Rajesh Radhakrishnan, wiceprezes działu produktów do dostarczania aplikacji w firmie Mercury. „Mercury umożliwia klientom optymalizację jakości aplikacji na każdym etapie – od prac programistycznych po eksploatację.” Obecnie klienci, korzystający z rozwiązań Mercury Quality Center i Mercury Performance Center mogą testować jakość i wydajność aplikacji oraz usług WWW tworzonych w oparciu o platformę Microsoft .NET Framework. Ponadto, oferowany w ramach pakietu Mercury Performance Center, program Mercury LoadRunner® pozwala symulować rzeczywiste obciążenie aplikacji i usług WWW w celu dostosowania ich do potrzeb przedsiębiorstwa jeszcze przed wdrożeniem. Użytkownicy mają do dyspozycji moduły dodatkowe, które umożliwiają sprawdzanie często zmieniających się wymagań funkcjonalnych aplikacji przed ich uruchomieniem. Klienci korporacyjni, tworzący aplikacje w oparciu o platformę firmy Microsoft, korzystają także z oprogramowania Mercury Diagnostics, które pozwala zarządzać ich dostępnością i wydajnością przez 24 godziny na dobę, 7 dni w tygodniu. Dzięki takiemu rozwiązaniu problemy są wykrywane i lokalizowane, a ich przyczyny definiowane zanim będą miały wpływ na jakość pracy klientów. Proces trwa przez cały cykl istnienia aplikacji. Zgodnie z opublikowanym przez firmę Gartner raportem „2005 Magic Quadrant for Application Quality Ecosystem”, Mercury jest liderem rynku kontroli jakości aplikacji. Badania przeprowadzone przez IDC wskazują, że firma kontroluje ponad 55 procent rynku, czyli dwukrotnie więcej niż najbliższy z konkurentów. Szczegółowe informacje na temat produktów i usług firmy Mercury w zakresie dostarczania aplikacji można uzyskać pod adresem http://www.mercury.com/us/business-technology-optimization/applicationdelivery/ Strona 8 z 50
  • 9. TESTER.PL INFORMACJE O FIRMIE MERCURY Mercury Interactive Corporation (NASDAQ: MERQ), lider w zakresie optymalizacji technologii biznesowych (BTO), pomaga klientom w optymalizacji wartości technologii informatycznych. Założona w 1989 roku firma jest jednym z najszybciej rozwijających się producentów oprogramowania dla przedsiębiorstw. Mercury oferuje oprogramowanie i usługi ułatwiające zarządzanie priorytetami, pracownikami i pracą działów informatycznych; dostarcza aplikacje i zarządza nimi oraz integruje i realizuje strategie informatyczne. Klienci na całym świecie korzystają z produktów firmy Mercury w celu podwyższenia jakości i wydajności aplikacji oraz zarządzania kosztami, ryzykiem i zgodnością systemów informatycznych. Więcej informacji o firmie można znaleźć na stronie internetowej: www.mercury.com/pl Strona 9 z 50
  • 10. TESTER.PL Dokumentowanie wyników testów Piotr Kałuski CGI Piotr Kałuski jest absolwentem Wydziału Elektroniki i Technik Informacyjnych Politechniki Warszawskiej, kierunek informatyka. Od 1995 uczestniczył w wielu projektach informatycznych jako programista, analityk, projektant i kierownik zespołu. Obecnie jest pracownikiem firmy CGI i jako konsultant jest członkiem zespołu System Test w firmie Polkomtel. Dziedzina jego zainteresowań to sposoby usprawnienia procesu testowania i wykorzystanie narzędzi Open Source w procesie wytwarzania i testowania oprogramowania. Szczegóły można znaleźć pod adresem www.piotrkaluski.com. Strona 10 z 50
  • 11. TESTER.PL Dokumentowanie wyników testów Piotr Kałuski CGI Streszczenie W poniższym artykule będę się chciał podzielić swoimi doświadczeniami dotyczącymi tworzenia dokumentacji wyników testów i korzystania z niej. Przedstawię różne konteksty, w jakich ta dokumentacja jest użyta i co jest od niej wymagane w zależności od kontekstu. Uwaga: Należy tu wyraźnie odróżnić pojęcia „dokumentacja testów” od „dokumentacji wyników testów”. Dokumentacja wyników testów opisuje rezultaty testów, jest zapisem zachowania się aplikacji w trakcie testów. Dokumentacja testów zawiera w sobie dokumentację wyników testów oraz inne dokumenty używane i tworzone w trakcie testów, z planem testów na czele. Po co tworzymy dokumentację wyników testów i kiedy z niej korzystamy Dokumentowanie wyników testów ma dwa podstawowe cele (uporządkowane według ważności) 1. Odnotowanie faktu, że dany test został wykonany i że przeszedł lub nie 2. Zapisanie jak zachowywała się dana wersja oprogramowania W zależności od kontekstu, w jakim pracuje dany wytwórca oprogramowania, waga punktu 2 może się różnić. Za to w każdym wypadku punkt 1 jest najważniejszym celem dokumentowania wyników testów. Musimy wiedzieć, co zostało przetestowane i z jakim skutkiem. Jeżeli nie przechowujemy nawet tej podstawowej informacji oznacza to, że nie mamy żadnej kontroli nad procesem testowania. Warto sobie uświadomić, kiedy najczęściej korzystamy ze stworzonej wcześniej dokumentacji wyników testów. Otóż robimy to wtedy, gdy: 1. W systemie został wykryty błąd (w testach bądź po wdrożeniu) 2. Chcemy dowiedzieć się jak działały poprzednie wersje systemu. W sytuacji z punktu pierwszego, dokumentacja wyników testów staje się materiałem dowodowym w śledztwie „dlaczego błąd nie został wykryty w trakcie testów?” W sytuacji z punktu drugiego, dokumentacja pełni rolę bazy wiedzy. Sięgamy do niej, aby porównać działanie wersji oprogramowania bądź też dowiedzieć się jak system działa. Strona 11 z 50
  • 12. TESTER.PL Przeanalizuję obydwa zastosowania i postaram się zwrócić uwagę, jakie cechy powinna posiadać dokumentacja wyników testów, aby w obydwu przypadkach była jak najbardziej pomocna. Wykryto błąd na produkcji Załóżmy, że mamy do czynienia z systemem bankowym, załóżmy też, dla uproszczenia, że w banku faza testów jest jednoetapowa. Nowe pakiety idą od programistów do testerów a od testerów na produkcję. Jak wiadomo w systemach bankowych nie ma żartów i błędy na produkcji mogą bank kosztować wiele nerwów i pieniędzy. Przeanalizujmy, co się dzieje, jeżeli na produkcji pojawia się poważny błąd. Rozpoczyna się analiza skutków błędu oraz przyczyn, dla których błąd nie został wykryty w trakcie testów. Zadaje się, więc, działowi testów kolejne pytania: 1. Czy dana funkcjonalności została w ogóle przetestowana? Najgorsza odpowiedź, jakiej może udzielić tester na takie pytanie brzmi “nie wiem”. Jeżeli odpowiedź brzmi “Nie” to oczywiście następnym pytaniem jest: 2. Dlaczego nie przetestowano danej funkcjonalności/scenariusza biznesowego? Jest wiele sytuacji, w których świadoma rezygnacja z testowania danej funkcjonalności jest uzasadniona. Może się na przykład okazać, że przeprowadzenie danego scenariusza testowego nie jest możliwe w środowisku testowym, ze względu na różnicę między środowiskiem testowym a produkcyjnym. Pojawienie się groźnego błędu na produkcji może skłonić kierownictwo do zainwestowania w stworzenie testerom warunków lepiej odwzorowujących te produkcyjne. Jeżeli odpowiedź na pytanie 1 brzmi “Tak i w trakcie testów wystąpił ten sam błąd i został on zaraportowany z numerem xxxx” to śledztwo przenosi się do działu programistów i konfiguracji. Jeżeli odpowiedź na pytanie 1 brzmi “Tak i wszystko działało jak należy” zaczyna się analiza czy rzeczywiście w trakcie testów działało jak należy. Szuka się więc odpowiedzi na pytanie: 3. Czy tester prawidłowo zinterpretował wyniki testów? Jeżeli dokumentacja zawiera tylko informację “test przeszedł/nie przeszedł” to niewiele pomoże przy szukaniu odpowiedzi na ostatnie pytanie. W takiej sytuacji będzie trzeba uwierzyć testerowi na słowo bądź spróbować ponownie przeprowadzić test w środowisku testowym (o ile takie jeszcze istnieje dla danej wersji oprogramowania). Dlatego też na tym etapie, jest pomocne, jeżeli dokumentacja zawiera bardziej szczegółowe informacje o przebiegu testów. Można je przejrzeć ponownie i sprawdzić czy system rzeczywiście działał w środowisku testowym, czy też tester przegapił błąd. Oczywiście im dokładniejsze informacje tym analiza jest łatwiejsza i bardziej owocna. Strona 12 z 50
  • 13. TESTER.PL Wyniki tej analizy pozwalają się zastanowić jak można ulepszyć proces wytwarzania oprogramowania, aby zmniejszyć szansę wystąpienia sytuacji, w których system działa w środowisku testowym a nie działa na produkcji. Albo jak pomóc testerom, aby nie przegapiali błędów w trakcie testów. Podsumowanie Przy analizie błędów występujących na produkcji, dokumentacja wyników testów jest materiałem dowodowym. Najważniejszą informacją jest czy funkcjonalność była testowana czy nie. Im więcej informacji dodatkowych, tym większa szansa wyciągnięcia rzeczowych wniosków na przyszłość. Korzystanie z dokumentacji wyników testów w trakcie testów Zapisywanie informacji o tym, co zostało przetestowane a co nie, nie tylko pomaga testerowi wybronić się w sytuacji, kiedy błąd został wykryty na produkcji. Pozwala mu też samemu kontrolować postęp prac. Jeżeli każda kolejna wersja oprogramowania wymaga od jednej osoby wykonania 100 scenariuszy testowych, to zapisywanie wyników staje się koniecznością. Po drugie, dokumentacja wyników testów jest cennym źródłem informacji o tym jak zachowuje się/powinien się zachowywać testowany system. Jeżeli mamy do czynienia z komercyjnym produktem renomowanej firmy (np. serwerem bazy danych, edytorem tekstu), to jest do niego dołączona dokumentacja, gdzie wszystko jest w miarę przystępnym językiem wytłumaczone i zilustrowane przykładami. Tester bardzo często ma do czynienia z oprogramowaniem tworzonym na potrzeby firmy, dla której pracuje. Często jedyną tworzoną dokumentacją jest specyfikacja wymagań oraz projekt i specyfikacja techniczna (detailed design). Jakkolwiek często są to dokumenty rzetelne i wyczerpujące, nie są one łatwą lekturą dla początkujących. Po drugie, po kilku latach trwania projektu, poszczególne dokumenty skupiają się na wąskim aspekcie nowych zmian funkcjonalnych, zakładając, że ogólne zasady działania systemu są znane. Czytelne, dobrze udokumentowane testy mogą być niezastąpionym źródłem informacji o tym jak system naprawdę działa. Dokumentowanie w praktyce Jak już wyżej napisałem, najważniejszą informacją, jaką powinniśmy zawrzeć w dokumentacji wyników testów jest informacja o tym, jakie testy wykonaliśmy i jakie były ich rezultaty. W najprostszej wersji będzie to lista scenariuszy z informacją przeszedł/nie przeszedł. Może to na przykład wyglądać tak: 1. Aktywacja klienta – Sukces 2. Dezaktywacja klienta – Sukces 3. Reaktywacja – Błąd Strona 13 z 50
  • 14. TESTER.PL Jeżeli testujemy scenariusze z wieloma parametrami, ułatwieniem może być zebranie wyników w tabeli. Bardziej szczegółowe dokumentowanie rezultatów testów może mieć różne formy, w zależności od tego jak bardzo chcemy być szczegółowi. Zacznijmy od końca. Poniżej przedstawiam przykład dokumentacji, jaka mogłaby być stworzona przez prymusa kursu “Testowania Oprogramowania” Test Case 3.24 Aktywuj klienta z segmentu klientów indywidualnych Opis: Należy przetestować zachowanie się aplikacji w trakcie aktywacji nowego klienta indywidualnego. Operacja ta polega na wybraniu odpowiedniej pozycji z menu, następnie wypełnienia szeregu pól tekstowych i zatwierdzeniu danych przez naciśnięcie przycisku “OK”. Po wybraniu odpowiedniej pozycji z menu: Pojawia się okienko dialogowe do wprowadzania danych: Strona 14 z 50
  • 15. TESTER.PL Należy wprowadzić następujące dane: • Imię i nazwisko • Adres zamieszkania • Telefon kontaktowy • NIP • PESEL • Nazwisko panieńskie matki • Imię matki • Imię ojca Do pól zostają wprowadzone następujące wartości: Pole Imię Nazwisko Ulica Miasto NIP PESEL Wartość Jan Kowalski Jeziorna 5 01-230 Warszawa 111-222-33-44 01030478954 Strona 15 z 50
  • 16. TESTER.PL Nazwisko panieńskie matki Imię matki Imię ojca Telefon Nowak Anna Tomasz 22 44 55 667 Następnie kliknięty zostaje przycisk “OK”. Pojawia się komunikat, że konto zostało utworzone: Strona 16 z 50
  • 17. TESTER.PL Zatwierdzenie danych powoduje utworzenie następujących wierszy w bazie danych: W tabeli CUSTOMERS powstaje wiersz z ID wygenerowanym przez serwer jako unikalny identyfikator wiersza. Pole ACCOUNT_NUMBER ma wartość wyświetloną w powyższym okienku dialogowym: Select CUSTOMER_ID, ACCOUNT_NUMBER, FIRST_NAME, LAST_NAME, CREATION_DATE from CUSTOMERS where ACCOUNT_NUMBER = 23454985 CUSTOMER_ID ACCOUNT_ FIRST_NAME NUMBER 326473246 23454985 Jan LAST_NAM E Kowalski CREATION_ DATE 02-04-2005 W tabeli SERVICES pojawiają się nowe wiersze dla domyślnych serwisów tworzonych w trakcie aktywacji. Dla kont indywidualnych takie serwisy to: • Telefoniczny dostęp do konta – Klient może przeprowadzać operacje na koncie dzwoniąc na odpowiedni numer telefonu • Internetowy dostęp do konta – Klient może przeprowadzać operacje na koncie korzystając z przeglądarki internetowej • Karta Visa – Klient otrzymuje kartę kredytową • SMSy z informacją o zmianie salda – klient dostaje SMSa przy każdej zmianie salda jego konta. Select CUSTOMER_ID, SERVICE_NUMBER, SERVICE_TYPE, ACTIVATION_DATE from SERVICES where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 SERVICE_NUMB ER 1 SERVICE_TYPE TEL_ACC Strona 17 z 50 ACTIVATION_D ATE 02-04-2005
  • 18. TESTER.PL 326473246 326473246 326473246 2 3 4 INT_ACC VISA SMS_NOTIF 02-04-2005 02-04-2005 02-04-2005 W tabeli PRICING_SCHEME_ASGN tworzone są cenniki usług dla klienta: Select CUSTOMER_ID, SERVICE_NUMBER, PRICING_SCHEME_ID from PRICING_SCHEME_ASGN where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 326473246 326473246 326473246 SERVICE_NUMBER 1 2 3 4 PRICING_SCHEME_ID IND_TEL_ACC IND_INT_ACC GEN_VISA GEN_SMS W tabeli BILLING_EVENTS pojawiają się 2 wiersze – 1 wiersz opłaty aktywacyjnej a drugi jako opłata za pierwszy miesiąc. Tabela BILLING_EVENTS zawiera informacje o zdarzeniach, za które klient powinien zapłacić, a które nie są bezpośrednio związane z serwisami. Select CUSTOMER_ID, EVENT_TYPE, EVENT_DATE, AMOUNT from BILLING_EVENTS where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 326473246 EVENT_TYPE ACTIV MON_FEE EVENT_DATE 02-04-2005 02-04-2005 AMOUNT 20.00 15.00 W tabeli ADDITIONAL_ADDRESSES nie jest tworzony żaden nowy wiersz, ponieważ nie został utworzony żaden adres dodatkowy. System zachowuje się zgodnie z oczekiwaniami. To oznacza, że test przeszedł pomyślnie. SUKCES. Piękne, prawda? Jest to przykład idealnie nadający się do książki na temat testowania. Gdybym spotkał się kiedyś z projektem, w którym cała dokumentacja testów tak by właśnie wyglądała to moje odczucia byłyby następujące: 1. Byłbym pełen szczerego podziwu, że ktoś tak się przyłożył 2. Potem pomyślałbym sobie “Ludzie pracujący przy tym projekcie chyba nie mają co robić z czasem albo mają jakieś super narzędzie” Strona 18 z 50
  • 19. TESTER.PL Takie ładne, potoczystym językiem spisane wyniki świetnie i szybko się czyta, ale mało który projekt (a może żaden) ma czas i budżet, aby tego typu dokumenty wykonywać dla wszystkich testów. Głównym zadaniem testerów jest testować. Przy za wysoko postawionej poprzeczce większość czasu będą oni spędzali na tworzeniu dokumentacji wyników. W efekcie, pakiety idące na produkcje - zamiast w 70% - będą przetestowane w 20% (ale za to jak udokumentowane!). Jedyna sytuacja, w której taka szczegółowość byłaby uzasadniona to taka, kiedy testujemy po raz pierwszy nową funkcjonalność. Jeżeli jednak testujemy coś po raz n-ty (a scenariusz aktywacji do takich należy), powinniśmy pomijać rzeczy oczywiste, które prawie zawsze są takie same. Bardziej realny przykład wygląda tak: Test Case 3.24 Aktywuj klienta z segmentu klientów indywidualnych Strona 19 z 50
  • 20. TESTER.PL Stan bazy danych: Select CUSTOMER_ID, ACCOUNT_NUMBER, FIRST_NAME, LAST_NAME, CREATION_DATE from CUSTOMERS where ACCOUNT_NUMBER = 23454985 CUSTOMER_ID ACCOUNT_NUMBER CREATION_DATE 326473246 23454985 Jan FIRST_NAME LAST_NAME Kowalski 02-04-2005 Select CUSTOMER_ID, SERVICE_NUMBER, SERVICE_TYPE, ACTIVATION_DATE from SERVICES where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 326473246 326473246 326473246 SERVICE_NUMBER SERVICE_TYPE ACTIVATION_DATE 1 TEL_ACC 2 INT_ACC 3 VISA 4 SMS_NOTIF 02-04-2005 02-04-2005 02-04-2005 02-04-2005 Select CUSTOMER_ID, SERVICE_NUMBER, PRICING_SCHEME_ID from PRICING_SCHEME_ASGN where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 326473246 326473246 326473246 SERVICE_NUMBER 1 2 3 4 Strona 20 z 50 PRICING_SCHEME_ID IND_TEL_ACC IND_INT_ACC GEN_VISA GEN_SMS
  • 21. TESTER.PL Select CUSTOMER_ID, EVENT_TYPE, EVENT_DATE, AMOUNT from BILLING_EVENTS where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 326473246 EVENT_TYPE ACTIV MON_FEE EVENT_DATE 02-04-2005 02-04-2005 AMOUNT 20.00 15.00 SUKCES. Zwróćmy uwagę, na czym polegały skróty. Po pierwsze, usunąłem sekcję na temat wyboru pozycji z menu. Aktywacja jest funkcjonalnością tak podstawową, że każdy wie, gdzie ją znaleźć. I zawsze to będzie w tym samym miejscu, więc nie warto o tym pisać w dokumentacji każdego scenariusza (chyba, że struktura menu się zmieniła). Po drugie usunąłem większość wyjaśnień. Nadają one dokumentowi potoczystość, ale pisanie ich zajmuje zbyt dużo czasu. Poza tym, są one tak naprawdę powieleniem informacji, która powinna się znajdować w scenariuszu testu (specyfikacji zadania testowego). Czytelnikiem tego dokumentu najczęściej będzie ktoś, kto ma przynajmniej ogólne pojęcie o systemie, więc domyśli się tego, co nie jest napisane wprost. A jeżeli się nie domyśli, to sprawdzi sobie oczekiwane rezultaty w odpowiednim scenariuszu z planu testów. (Muszę jednak uczciwie zauważyć, że to co napisałem powyżej, też nie zawsze wytrzymuje konfrontacji z rzeczywistością. Niejednokrotnie oczekiwania co do wyników testów, nie są zbyt szczegółowo określone przed wykonaniem testu. Szczególnie dla scenariuszy, które powodują złożone zmiany w systemie, oczekiwania są sformułowane pobieżnie i krystalizują i uszczegóławiają się dopiero w trakcie wykonywania testu.) Coś takiego można zrobić szybko. Jedyna wada to selektywność informacji. A co będzie, jeżeli informacje zawarte w dokumencie okażą się nie wystarczające w trakcie jakiejś analizy w przyszłości? Można temu zaradzić. Spójrzmy na trzecią wersję: Test Case 3.24 Aktywuj klienta z segmentu klientów indywidualnych Strona 21 z 50
  • 22. TESTER.PL Stan bazy danych: Select * from CUSTOMERS where ACCOUNT_NUMBER = 23454985 Strona 22 z 50
  • 23. TESTER.PL CUSTOMER_ID ACCOUNT_NUMBER LAST_NAME FIRST_NAME NIP TAX REGION EMPLOYER LAST_KNOWN_SALARY PHONE ADDRESS_STREET ADDRESS_CITY PREFFERED_TIME_TO_CONTACT PROFESSION CREDIT_CARD_NUMBER FATHERS_NAME MOTHERS_NAME MOTHERS_MAIDEN_NAME MAIDEN_NAME DATE_OF_BIRTH CUSTOMER_SEGMENT VIP BAD_DEBTS IN_COLLECTION LAST_NOTE DATE_OF_CREATION NUMBER_OF_SERVICES DISCOUNT_PLAN STATUS EDUCATION RESPONSIBLE_PERSON ELIGIBLE_FOR_PROMOTIONS REASON_OF_DEACTIVATION DEACTIVATION_DATE COMMENTS 326473246 23454985 Kowalski Jan 111-222-33-44VAT22 Warsaw Kaluski&Kaluski 10000 22 44 55 667 Jeziorna 5 01-230 Warszawa Afternoon Programmer 2562-2389-2376-2321Tomasz Anna Nowak 14/07/1984 INDIVIDUAL N N N 02/04/2005 4 HJ-KDISC AC MSC Jan Tkaczuk Y Moved to our company from competitors Select * from SERVICES where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 326473246 326473246 326473246 SERVICE_NUMBER SERVICE_TYPE ACTIVATION_DATE STATUS COMMENTS ADDRESS_STREET ADDRESS_CITY DEACTIVATION_REASON DEACTIVATION_DATE ON_HOLD LAST_COMPLAINT LEVEL_OF_SATISFACTION DISCOUNT 1 TEL_ACC 02/04/2005 AC Added on initial activation N 7 30 2 INT_ACC 02/04/2005 AC Added on initial activation N 7 0 3 VISA 02/04/2005 AC Added on initial activation N 7 30 4 SMS_NOTIF 02/04/2005 AC Added on initial activation N 7 0 Select * from PRICING_SCHEME_ASGN where CUSTOMER_ID = 326473246 CUSTOMER_ID SERVICE_NUMBER EFFECTIVE_DATE Strona 23 z 50 PRICING_SCHEME_ID DISCOUNTING_MODE
  • 24. TESTER.PL 326473246 326473246 326473246 326473246 CHARGE_MODE 1 02/04/2005 2 02/04/2005 3 VISA 4 STD IND_TEL_ACC STD IND IND_INT_ACC STD IND GEN_VISA 02/04/2005 VISA GEN_SMS 02/04/2005 IND Select * from BILLING_EVENTS where CUSTOMER_ID = 326473246 CUSTOMER_ID 326473246 326473246 EVENT_TYPE AMOUNT VAT_RATE ACTIV TBB OTC MON_FEE TBB RCM SERVICE_NUMBER EVENT_DATE STATUS TAX_RATE GL_CAT RATING_MODE 02/04/2005 20 0 22 INDGL 0 02/04/2005 15 7 INDGL SUKCES. Tu danych jest więcej, zamieszczone są wartości wszystkich kolumn. Wygląd jest mało czytelny, ale tak to wygląda w trakcie szybkich copy-paste z narzędzi typu OraTool czy Rapid Sql. Poza tym sam fakt wielości danych powoduje, że dokument jest nieczytelny. Jednak, pomimo, iż dokumentu nie czyta się jednym tchem, ma on komplet danych potrzebnych do analizy. W dokumencie są one nieczytelne, ale można je skopiować do arkusza kalkulacyjnego i tam odpowiednio przetworzyć i zbadać. Możemy też wspomóc proces dokumentowania takimi narzędziami jak LReport (http://lreport.sourceforge.net), o którym pisałem w poprzednim numerze TESTERa. Ale czasami i na to nie ma czasu. I tu już nie ma reguły. Musimy się kierować zdrowym rozsądkiem oraz doświadczeniem i decydować, co jest najważniejsze. Ostatecznie możemy zredukować dokumentację do zrzutu ekranu pokazującego, że rezultaty są zgodne oczekiwaniami. Osobnym tematem jest, co powinno być zapisem zachowania się aplikacji – zawartość tablic, logi etc. Moim zdaniem odpowiedź brzmi “zależy od konkretnego przypadku”. Jeżeli aplikacja operuje na obiektach bazodanowych, które w sposób dość bezpośredni odzwierciedlają obiekty biznesowe, wtedy zawartość tablic jest pomocna. Jeżeli aplikacja używa dość abstrakcyjnych pojęć na poziomie bazy danych, ale za to ma bardzo bogaty i dopracowany mechanizm logowania, to może się okazać, że lepiej jest w dokumencie zamieszczać logi. Albo i to, i to. Strona 24 z 50
  • 25. TESTER.PL Podsumowanie Najważniejszą informacją, jaką musimy zawrzeć w dokumentacji wyników testów jest informacja o tym, jakie testy wykonaliśmy i jakie były ich rezultaty. Przy dokumentowaniu bardziej szczegółowym powinniśmy się kierować zdrowym rozsądkiem. Zawsze musimy pamiętać, nawet biorąc pod uwagę wszystkie zalety starannej dokumentacji, że głównym zadaniem testera jest testować. Warto zastanowić się nad użyciem narzędzi do wspomagania procesu dokumentowania, szczególnie dla obszarów, które są testowane często i operują na tych samych zestawach tabel. Strona 25 z 50
  • 27. TESTER.PL Test Driven Development kolejna miękka metodologia tworzenia modułów czy sposób na zwiększenie zainteresowania programistów testami modułowymi Joanna Nowakowska, Pion Zarządzania Jakością Rodan Systems S.A. Lucjan Stapp, Wydział MiNI, Politechnika Warszawska Joanna Nowakowska jest konsultantem ds. Zapewnienia Jakości w firmie Rodan Systems S.A.. Jest absolwentką Szkoły Głównej Handlowej w Warszawie na kierunku Metody Ilościowe i Systemy Informacyjne oraz ścieżce studiów Zarządzanie Jakością. Od 2002 roku pracuje w Zespole Zapewnienia Jakości w firmie Rodan Systems S.A., gdzie jest odpowiedzialna za dokumentację systemu zarządzania jakością, organizację prac zespołu testowego, przeprowadzanie szkoleń dla pracowników oraz klientów firmy oraz modułowe, systemowe i akceptacyjne testy aplikacji. W marcu 2005 uzyskała tytuły ISTQB Certified Tester, Advanced Level, Functional Tester, ISTQB Certified Tester, Advanced Level, Technical Tester oraz ISTQB Certified Tester, Advanced Level, Test Manager nadawane przez International Software Testing Qualifications Board (ISTQB) i International Software Quality Institute (iSQI), tym samym stając się pierwszą osobą w Polsce posiadającą tytuł ISTQB Certified Tester, Full Advanced Level. Współzałożyciel Stowarzyszenia Jakości Systemu Informatycznych, członek Review Board w German Testing Board. Lucjan Stapp jest wieloletnim pracownikiem naukowym Politechniki Warszawskiej. Doktor nauk matematycznych, (bo gdy robił doktorat nie było jeszcze doktoratów z informatyki). Wielokrotnie pracował też jako kierownik zespołów projektowych i zespołów zapewnienie jakości w dużych i małych projektach. Zwolennik lekkich metodyk, także w testowaniu. Członek założyciel SJSI, przewodniczący Komisji Rewizyjnej SJSI. Strona 27 z 50
  • 28. TESTER.PL Test Driven Development kolejna miękka metodologia tworzenia modułów czy sposób na zwiększenie zainteresowania programistów testami modułowymi Joanna Nowakowska, Pion Zarządzania Jakością Rodan Systems S.A. Lucjan Stapp, Wydział MiNI, Politechnika Warszawska Wstęp Kiedy spojrzymy na klasyczny model procesu testowania – model V (rys.1), to zauważamy, że pierwszym etapem testów dynamicznych są testy modułowe (ang. unit/component tests). specyfikacja wymagań Testy akceptacyjne specyfikacja systemu Testy systemowe specyfikacja funkcjonalna Testy Integracyjne ”małe” implementacja Testy modułowe Rysunek 1. Model V Głównym celem przeprowadzenia testów modułowych jest dynamiczna, niskopoziomowa weryfikacja testowanego systemu (dalej: System Under Tests, SUT), we wczesnej fazie realizacji projektu. Po wyodrębnieniu składowych elementów SUT, takich Strona 28 z 50
  • 29. TESTER.PL jak: moduły, klasy i ich metody można – i trzeba - dokonać weryfikacji sposobu działania tych elementów niezależnie (w odosobnieniu) od reszty aplikacji. Co dają nam testy modułowe: • umożliwiają jednoznaczne określenie miejsca wystąpienia błędu, a także wskazanie nieefektywnych linijek kodu programu na poziomie poszczególnych modułów, • uniemożliwiają „przykrycie” błędów w jednym komponencie przez działanie innego komponentu, • umożliwiają uzyskanie istotnych informacji o jakości testów i pokryciu testowym najniższym kosztem ze wszystkich typów testów, dzięki bezpośredniemu działaniu na kodzie systemu. Z przeprowadzonych badań wiadomo, że około 80 % wszystkich błędów popełnianych przy bezpośrednim1 tworzeniu oprogramowania to błędy w kodzie poszczególnych modułów. Tym samym ich wykrycie i usunięcie powinno zdecydowanie wpłynąć na jakość tworzonego systemu. Z drugiej strony usunięcie błędów znalezionych na poziomie testów modułowych kosztuje relatywnie mało – usunięcie tego samego błędu znalezionego podczas testów modułowych może kosztować od kilku do kilkuset razy mniej, niż znalezienie i usunięcie go już po przekazaniu oprogramowania do użytku przez klienta [2]. Bardzo często okazuje się, że w organizacji pojawia się konflikt pomiędzy zespołem wytwórczym a zespołem testowym o to, kto powinien odpowiadać za przygotowanie i przeprowadzenie testów modułowych. Z jednej strony istnieją argumenty za tym, by testy modułowe wykonywał programista, ponieważ: • • • najlepiej zna kod danego elementu systemu, posiada „białą” znajomość SUT, zmiany w kodzie mogą pociągnąć za sobą efekty uboczne, łatwe do zauważenia przez twórcę kodu, dużo trudniej przez osobę zewnętrzną (a więc nie znającą kodu). Z drugiej strony programiści nie chcą testować swojego kodu, gdyż uważają, że: • nie mają czasu na testy, • testy są nudne i bezcelowe, • programiści „nie robią” błędów, • SUT i tak będzie testowany przez zespół testowy, Co więcej programistom często brak kompetencji w zakresie testowania. W niniejszym artykule chcemy przedstawić metodologię, która ułatwia rozwiązanie konfliktu między zespołem wytwórczym a testowym, a następnie zaprezentować przykładowy zestaw narzędzi umożliwiających wykonanie testów modułowych tą metodą. 1 Najwięcej błędów powstaje zawsze z niejasności specyfikacji, autorom chodzi tu o błędy popełniane bezpośrednio w tworzeniu SUT. Strona 29 z 50
  • 30. TESTER.PL Test Driven Development Test Driven Development (TDD) to podejście, którego nazwa pochodzi od tytułu książki Kent Beck’a Test Driven Development by Example [1] z 2002 roku. Przedstawia ona zmodyfikowaną ideę pochodzącą od eXtreme Programming (XP), zwaną w XP testfirst programming lub test-first development, a polega na idei: NAJPIERW NAPISZ TESTY, A NASTĘPNIE TWÓRZ KOD! Osiąga się w ten sposób dwa cele: • • wymusza się przemyślenie problemu przed stworzeniem kodu (bardziej na poziomie specyfikacji niż walidacji), zwiększa się poprawność tworzonego kodu. Schemat działania przy stosowaniu metody TDD można opisać w 4 prostych krokach [2]: Krok pierwszy: 1. Przemyśl problem 2. Przemyśl jak to testować 3. Napisz prosty test z dobrym interfejsem Krok drugi: 1. Napisz tylko tyle kodu, by uruchomić test 2. Obserwuj, dlaczego test nie „przeszedł” – stąd pobierz wiedzę, co naprawdę masz zaprogramować Krok trzeci: 1. Napisz tylko tyle kodu, by test „przeszedł” 2. Uruchom ponownie test, sprawdź czy napisany moduł „przechodzi” test (a także wszystkie poprzednio napisane testy) Krok czwarty: 1. Usuń wszelkie powtórzenia, zwiększ czytelność kodu 2. Ponownie wykonaj testy 3. Jak wszystko OK, to zapisz wykonywany moduł Strona 30 z 50
  • 31. TESTER.PL Rysunek 2. Schemat działania w TDD To nie jest – niestety - takie proste jak wygląda na pierwszy rzut oka i wymaga większej uwagi przy pracy, żeby dobrze przygotować testy. Tym niemniej nie jest to bardzo uciążliwe, a przy pewnej praktyce robi się to sprawnie i dość szybko. Co więcej, istnieje wiele shareware’owych narzędzi wspomagających tworzenie oprogramowania metodą TDD. Najbardziej znanym z nich jest JUnit2 - narzędzie z grupy XUnit3 przeznaczone do testów modułowych (oraz jego rozszerzenie – JUnitPerf4 – przeznaczone do modułowych testów wydajnościowych). Testy modułowe napisane z wykorzystaniem biblioteki JUnit mogą zostać uzupełnione o statyczną analizę kodu (na zgodność kodu ze standardami programowania) – tutaj wykonaną za pomocą narzędzia Hammurapi5, oraz testy pokrycia, których przeprowadzenie umożliwi nam m.in. Emma 6. Wszystkie 2 http://www.junit.org XUnit – rodzina narzędzi przeznaczonych do testów modułowych (w zależności od języka programowania: Java – JUnit, Visual Basic – VBUnit (http://www.vbunit.org), C++ - CPPUnit (http://cppunit.sourceforge.net), C# - NUnit (http://nunit.nunit.org). 4 http://www.clarkware.com/software/JUnitPerf.html 5 http://www.hammurapi.org 6 http://emma.sourceforge.net 3 Strona 31 z 50
  • 32. TESTER.PL wymienione tutaj narzędzia zostały opisane dokładniej w ostatnim paragrafie, gdzie przedstawiono pełniejszy opis środowiska narzędziowego. Chcąc określić, jakie są koszty i narzuty wynikające z zastosowania takich narzędzi, w ramach zajęć stworzono 2 porównywalne grupy studentów tworzące tą samą prostą aplikację (około 6 godzin pracy 3-osobowego zespołu): • grupa testowa - metodologią TDD, • grupa kontrolna - tradycyjnie, bez projektowania testów jednostkowych. Oba zespoły pracowały w tym samym środowisku: • Eclipse SDK 3.0.2 • wbudowany JUnit • wbudowany Hammurapi • Emma Na rysunku 3 przedstawiono czasy, jakie zespoły zużyły na wykonanie zadania. Jak widać, w okresie początkowym zespół pracujący zgodnie z metodyką TDD potrzebował zdecydowanie więcej (o ponad 1/3) czasu – głównie na nauczenie się poprawnego posługiwania się wykorzystywanymi narzędziami (JUnit’em i Hammurapi’m – Emma służyła głownie do osiągnięcia ustalonego z góry poziomu pokrycia testami). Po nabraniu wprawy (zadanie 4 i 5) ta różnica czasu nie była już tak znacząca, zespół pracujący w metodyce TDD potrzebował około 7 % czasu więcej. Czas wykonania zadania 8 7 6 5 4 3 2 1 0 zadanie 1 zadanie 2 zadanie 3 grupa TDD zadanie 4 zadanie 5 grupa kontrolna Rysunek 3 Czas wykonania zadania A jak metodologia TDD wpływa na ilość popełnionych błędów, więc także na jakość produktu? Możemy to zobaczyć na rys. 4. Strona 32 z 50
  • 33. TESTER.PL W okresie początkowym lepsze wyniki uzyskała grupa kontrolna; wynika to – naszym zdaniem – z dodatkowego stresu, jakiemu poddana została grupa pracująca w metodyce TDD. Widać jednak, że już od 3 zadania proporcje zmieniają się zdecydowanie na rzecz pracujących zgodnie z TDD, uzyskali oni o 50% lepsze rezultaty. Ilość popełnionych błędów 14 12 10 8 6 4 2 0 zadanie 1 zadanie 2 zadanie 3 grupa TDD zadanie 4 zadanie 5 grupa kontrolna Rysunek 4. Ilość błędów popełnionych w kodzie Kolejny rysunek przedstawia jak poprawiła się jakość tworzonego kodu – jak wynika z rys. 5 zdecydowanie bardziej zgodny ze standardami kod wyprodukował zespół pracujący zgodnie z metodyką TDD. Jakość kodu (wg Hammurapi) 18 16 14 12 10 8 6 4 2 0 zadanie 1 zadanie 2 zadanie 3 grupa TDD zadanie 4 grupa kontrolna Rysunek 5 Jakość kodu (wg Hammurapi) Strona 33 z 50 zadanie 5
  • 34. TESTER.PL Podsumowując to proste doświadczenie, możemy stwierdzić, że stosowanie metodyki TDD przy tworzeniu modułów to: • nieduży koszt dodatkowy – po nauczeniu się metodyki zwiększenie czasu na wykonanie kodu jest nieduże (mniej niż 10 %), • nastąpiło istotne zwiększenie poprawności kodu (50 % mniej błędów w TDD). Tworzony metodyką TDD kod jest podatny na refactoring, dzięki analizie wyników z Hammurapi’ego następuje też odkrywanie wzorców poprawnego programowania. Pomimo wielu zalet metodyki TDD dostrzegamy również jej wady, tu chcielibyśmy zwrócić uwagę na podstawowe: • przy stosowaniu metodyki TDD obowiązuje zasada wszystko albo nic – jeżeli przerwiemy przed końcem (bo np. skończył się czas) – nie otrzymamy gotowego modułu; • nie zastępuje testów jednostkowych w 100% i gdy w kontrakcie jest wymóg przeprowadzenia testów jednostkowych musimy je przeprowadzić; • jest to miękka metodyka, co powoduje, że wiele organizacji odrzuci ją jako nie nadającą się do stosowania. O ile ostatni zarzut jest co najmniej dyskusyjny, to dwa pierwsze mogą spowodować jej zdecydowane ograniczenie. Wydaje się nam jednak, że zyski (ponad 50 % poprawy jakości modułów przy mniej niż 10 % nakładzie czasu)) jest argumentem zdecydowanie przemawiającym za jej stosowaniem. Opis wykorzystanego środowiska narzędziowego (dla aplikacji napisanych w języku Java) Poniżej chcielibyśmy zaprezentować zintegrowane środowisko testowe dla aplikacji napisanych w Java, działające w oparciu o narzędzie Eclipse i wbudowaną bibliotekę Ant wspierającą uruchamianie testów. Wymienione tutaj narzędzia są darmowe, także dla użytku komercyjnego. Konfiguracja wszystkich narzędzi znajduje się w pliku build.xml, co umożliwia nam uruchomienie pełnych testów (z wykorzystaniem wszystkich opisanych tutaj narzędzi) za pomocą jednego przycisku! Biblioteka JUnit JUnit to narzędzie z grupy XUnit przeznaczone do testów modułowych oprogramowania tworzonego w Javie.. Podstawowymi elementami biblioteki są: Strona 34 z 50
  • 35. TESTER.PL • • • • abstrakcyjna klasa TestCase, z wykorzystaniem której tworzony jest przypadek testowy (klasa zawiera metody setUp() i tearDown() – co umożliwia ładowanie danych wejściowych potrzebnych do wykonania przypadku oraz czyszczenie po wykonaniu testu); klasa Assert, zawierająca zestaw asercji porównujących wyniki oczekiwane z rzeczywistymi; klasy TestRunner (junit.textui.TestRunner i junit.swingui.TestRunner) umożliwiające wykonanie przypadku testowego; klasa TestSuite, umożliwiająca grupowanie większej ilości przypadków testowych. Standardowo wyniki wykonania testu wyrzucane są na konsoli, jednak uruchamiając testy jako zadanie w Ant możemy wygenerować raport z wykonania przypadków testowych w formacie XML/HTML. Przykładowy raport zaprezentowany został na rysunku 6. Rysunek 6. Raport z narzędzia JUnit Z założenia narzędzie JUnit nie wspiera testów wydajnościowych. Chcąc wykonać takie testy powinniśmy zaopatrzyć się w narzędzie JUnitPerf – bibliotekę umożliwiającą uruchamianie testów JUnit z parametrami wydajnościowymi. Hammurapi Hammurapi to narzędzie do kontroli zgodności kodu ze standardami programowania. W skład aplikacji wchodzą między innymi: • Hammurapi – narzędzie do automatycznego przeglądu kodu Java. Ładuje cały kod do repozytorium i generuje szczegółowy raport. Przeznaczony głównie dla architektów. Strona 35 z 50
  • 36. TESTER.PL • Quickrapi – szybka wersja Hammurapi. Przeglądu dokonuje w pamięci. Generuje uproszczone raporty. Przeznaczony głównie dla deweloperów • Archiver Hammurapi zawiera listę 120 inspektorów - reguł sprawdzających poprawność języka. Można samemu dodawać nowe reguły, można też je dezaktywować, a także grupować w zestawy (i pojedyncze zestawy używać np. odnośnie konkretnych typów testów czy technologii). Pełna lista inspektorów (wraz z opisem i kodami) dostępna jest pod adresem: http://www.hammurapi.org/content/inspectors.html Na chwilę obecną Output Listener Hammurabiego umożliwia generowanie raportów w formacie XML/HTML, umieszczonym tam nieprawidłowościom nadaje priorytety, przekazując równocześnie informację o miarach (np. NCSS, class complexity itd.). Przykładowe okno raportu przedstawiono na rys. 7. Rysunek 7. Przykładowe okno raportu z aplikacji Hammurapi Emma Przy tworzeniu testów modułowych bardzo istotną informacją może się okazać ta o pokryciu testowym – takich informacji dostarczy nam kolejne narzędzie – Emma. Emma to narzędzie napisane w Javie, niezależne od zewnętrznych bibliotek, które może działać samodzielnie (z linii poleceń), bądź jako zadanie w Ant. Emma mierzy pokrycie testami klas, metod, bloków (ang. basic blocks – nie mylić z pokryciem instrukcji – statements) oraz linii kodu, w oparciu o pliki o rozszerzeniu *.class lub *.jar (inaczej niż najbardziej popularny, komercyjny program Clover mierzący pokrycie w Strona 36 z 50
  • 37. TESTER.PL oparciu o pliki *.java). Narzędzie udostępnia 2 sposoby instrumentalizacji: tryb on-the-fly dla małych aplikacji oraz tryb offline przeznaczony dla bardziej złożonych systemów (J2EE, klient-serwer, itd.). Generowane w formacie XML/HTML/TXT statystyki agregowane są na kilku poziomach (np. pakietów, klas itd.), a pokryte linie kodu zaznaczone kolorami. Dodatkowo Emma umożliwia filtrowanie danych trafiających do raportu (np. pokrycie tylko konkretnych pakietów). Należy zdawać sobie sprawę, że raporty z Emmy nie są w 100 % zgodne z typową zalecaną techniką programistyczną (głównie chodzi o obsługę wyjątków), tym niemniej jest to naprawdę bardzo użyteczne narzędzie. Przykład raportu z aplikacji Emma przedstawiono na rys. 8 Rysunek 8. Raport z aplikacji Emma Bibliografia [1]. [2]. [3]. [4]. Beck, K, Test Driven Development by example, Addison-Wesley, 2002 Gilb T., Graham D., Software Inspection, Addison-Wesley 1993, Newkirk, James W,. Vorontsov, Alexei A, Test Driven Development in Microsoft .NET, Microsoft Professional, 2005 Hunt, Andy, Thomas, Dave, Pragmatic Unit Testing in C# with NUnit, Pragmatic Programmers, 2005 Strona 37 z 50
  • 38. TESTER.PL Certyfikowany Test Manager 7- 9 września 2005 r., hotel Bristol, Warszawa Program seminarium Dzień pierwszy Wprowadzenie Ogólne zasady budowy systemu informatycznego Przykładowe metodyki stosowane przy realizacji projektów informatycznych Klasyczna metodyka "kaskadowa" Metoda "spirali" Lekkie metodyki na przykładzie XP Zasady i praktyka budżetowania projektów informatycznych - Jak powstaje budżet projektu Zarządzanie wymaganiami Współpraca niezbędnym czynnikiem sukcesu Zarządzanie ryzykiem Testowanie w różnych metodykach wytwarzania oprogramowania Związek testów z etapami realizacji projektu: modele V i W Test Driven Development Zakres, przygotowanie oraz metody prowadzenia podstawowych poziomów testów Testy modułów Testy integracyjne "małe" Testy systemowe Testy integracyjne "duże" Testy akceptacyjne Testy pielęgnacyjne Zakres, przygotowanie oraz metody testów właściwości Testy wydajnościowe Testy architektury i koncepcji Testy użyteczności Testy bezpieczeństwa Inne Testy regresji i ich rola w procesie testowania Przeglądy Przegląd wybranych norm związanych z jakością i testowaniem Strona 38 z 50
  • 39. TESTER.PL Dzień drugi Zarządzanie procesem testowym Planowanie prac Szacowanie pracochłonności Struktura dokumentacji testowej Przeprowadzenie testów Rejestrowanie wyników testów Kontrola postępu prac Zarządzanie zgłoszeniami problemów i zmian • • • Zarządzanie wersjami oprogramowania i danych Definicja testware ("testaliów") Zarządzanie wersjami Metody opisu i przechowywania przypadków i scenariuszy testowych Dzień trzeci Zarządzanie procesem testowym - cd Zarządzanie środowiskami o Struktura środowiska testowego o Testy w projekcie rozproszonym Testowanie a zmiany wymagań Jakość procesu testowego Kryteria oceny jakości systemu informatycznego Narzędzia Egzamin Kierowanie zespołem testów Budowanie zespołu Role w zespole Cechy dobrego testera Zadania szefa zespołu Przywództwo Zarządzanie konfliktem Sztuka kompromisu Podsumowanie Wręczenie certyfikatów Strona 39 z 50
  • 40. TESTER.PL Testowanie bezpieczeństwa oprogramowania: Wróćmy do podstaw Mark Curphey Tłumaczenie: Tomasz Zemelka Mark Curphey jest dyrektorem w Software Security Consulting at Foundstone (firma jest własnością McAfee (www.foundstone.com/s3i)). Uzyskał stopień magistra ze specjalnością Ochrona Informacji na Royal Holloway, University of London, gdzie specjalizował się w zaawansowanej kryptografii Adres mailowy: mark@curphey.com. Strona 40 z 50
  • 41. TESTER.PL Testowanie bezpieczeństwa oprogramowania: Wróćmy do podstaw Mark Curphey Tłumaczenie: Tomasz Zemelka7 Wersja angielska tego artykułu ukazała się w Software Magazine w listopadzie 2004 pt. „Software Security Testing: Let's Get Back to Basics“ i można ją znaleźć na internetowej stronie magazynu: www.Softwaremag.com. Lepsza droga testowania bezpieczeństwa oprogramowania sieciowego oparta na zmodyfikowanym procesie powstawania programów „Oprogramowanie to paliwo wykorzystywane przez nowoczesny biznes, paliwo, dzięki któremu rządy rządzą, a społeczeństwo staje się lepiej połączone. Programy komputerowe pomogły stworzyć, udostępnić i ukazać informację we wcześniej nieznanej formie. W skali globalnej zapierające dech w piersi tempo rozwoju oprogramowania pomaga udźwignąć światową ekonomię. W życiu codziennym urządzenia bazujące na oprogramowaniu pomagają leczyć choroby, są w stanie dać głos niemym, sprawić, że upośledzeni ruchowo mają możliwość odzyskania sprawności. Mając na uwadze wszystkie te względy można powiedzieć, że oprogramowanie jest nieodzownym elementem naszego nowoczesnego świata”. Rośnie zaawansowanie technologii, ale wygląda na to, że zabezpieczenia oprogramowania nie dotrzymują kroku postępowi. Mimo nowych technicznych standardów, takich jak WS-Security2 czy nowoczesnych zamienników, jak choćby AES dla starzejącego się już algorytmu kryptograficznego DES, problem bezpieczeństwa staje się coraz większy zamiast maleć. Na domiar złego, zgodnie z badaniami prowadzonymi przez National Institute of Standards (NIST), brak bezpieczeństwa spowodowany jest w 92% brakiem bezpieczeństwa aplikacji, a nie sieci. (Rys.1) Dlaczego tak wielu ludzi niewłaściwie odbiera kwestię bezpieczeństwa oprogramowania i co należy zrobić zanim sprawy się pogorszą? Jak w każdej dobrej 7 Redakcja niniejszym dziękuje Tomaszowi Zemelce nie tylko za przetłumaczenie artykułu, ale także za uzyskanie zgody autora i wydawcy na niniejszą publikację. Strona 41 z 50
  • 42. TESTER.PL analizie, najpierw należy poszukać ‘korzenia’ (źródła) problemu, zanim zaproponujemy nowe lepsze rozwiązania. W szczególności przedstawimy lepszą drogę testowania bezpieczeństwa oprogramowania sieciowego zaproponowanego przez OWASP – The Open Web Application Security Project (www.owasp.org) Przez ostatnią dekadę, wprost z wczesnego środowiska hackerskiego, wyłonił się ogromny przemysł zabezpieczeń oprogramowania. Wczesne, dominujące społeczeństwo akademickie, mające dostęp do pochodnych Unixa i chcące poszerzyć granice nowej technologii, tworzyło rozszerzenia i ‘hackowało’ kod źródłowy na własne potrzeby. Powstająca sieć komputerowa bazująca na systemach telefonicznych była miejscem sprawdzania tej nowej technologii w praktyce, robiący to entuzjaści zaczęli dzielić się ‘sztuczkami’, które ich zdaniem były po prostu ‘cool’. Te garażowe spotkania i podziemna kultura spowodowała, że hakerzy zaczęli używać poradników typu ‘Captain Crunch’ i ‘Condor’ oraz wytworzyła się subkultura wykorzystująca następstwa tego dzielenia wiedzy. Dominujący trend przemysłu zajmującego się bezpieczeństwem podążał za masową technologią przyjmując ścieżkę od sieci internetowych poprzez główny nurt powstawania komercyjnych systemów operacyjnych stosując wiele sztuczek właśnie z tamtego okresu. Podczas gdy umiejętności administratora zarządzającego systemem relatywnie dobrze wykorzystane są w bezpieczeństwie sieci i systemu operacyjnego, gdzie funkcjonalność jest zdefiniowana z góry albo przynajmniej została ograniczona, ewoluując do rozwiązywania nowych generacji problemów bezpieczeństwa, potrzebujemy nowego podejścia i innego zestawu umiejętności. Generalnie musimy zaakceptować fakt, iż jeśli istnieje problem bezpieczeństwa oprogramowania, to rozwiązanie leży w stworzeniu programu zabezpieczającego. Wiedza potrzebna do budowania takiego oprogramowania znacznie różni się od wiedzy na temat bezpiecznego konfigurowania firewalla. Zabezpieczenie musi zostać wbudowane w program tak, by nie mogło być później konfigurowane. Ułatwieniem może być myślenie o rozwoju bezpieczeństwa oprogramowania jak o kombinacji ludzi, procesów i technologii. Jeżeli są to czynniki ‘tworzące’ oprogramowanie, logiczne jest, że czynniki te również muszą zostać przetestowane. Dzisiaj, większość ludzi testuje tylko technologię albo samo oprogramowanie. W rzeczywistości większość nie testuje oprogramowania dopóki nie zostało stworzone i nie znajduje się w fazie życia tzn. kod nie został stworzony i zaimplementowany w działającej aplikacji sieciowej. W zamian stosują techniki testów penetracyjnych po tym jak aplikacja została umieszczona w internecie. Generalnie jest to bardzo nieefektywna i kosztowna praktyka. Grady Booch, autor oprogramowania modelującego i współtwórca Unified Modeling Language (UML), opisał to podejście jako leczenie objawów, a nie przyczyny. Znakomicie opisuje to bezpieczeństwo oprogramowania. Przemysł zabezpieczeń musi się przystosować i nauczyć srogiej lekcji jaką dostał od społeczeństwa w minionej dekadzie. Tak jak inżynierowie oprogramowania muszą nauczyć się, że tworzenie oprogramowania to nie to samo co budowanie wieżowców, tak przemysł zabezpieczeń musi się przystosować, jeśli chce przetrwać. Efektywne testowanie programu powinno składać się z następujących składników: Strona 42 z 50
  • 43. TESTER.PL Ludzi – aby zagwarantować wystarczające wykształcenie, świadomość i umiejętności Proces – aby mieć pewność, że zespół posiada właściwą politykę i każdy wie jak się w niej odnaleźć, wie również jakie są najefektywniejsze techniki i procesy Technologia – by upewnić się, że proces został efektywnie zaimplementowany i przekłada się na właściwe bezpieczeństwo w procesie tworzenia języków i struktur. Chyba, że wykorzystywane jest podejście całościowe, gdyż testowanie wyłącznie technicznej implementacji aplikacji nie odsłania sterujących czy operacyjnych braków w zabezpieczeniach, które mogły się pojawić. Ludzie muszą testować w poszukiwaniu przyczyny, a nie symptomów, a kiedy znajdą przyczynę, muszą przepisać lek zarówno krótko jak i długoterminowy, by sobie z tym poradzić. Poprzez testowanie ludzkie i tym bardziej procesowe jesteśmy w stanie zlokalizować zagadnienie, które pojawi się później w fazie testów technologicznych i w ten sposób wyplenić błędy wcześniej oraz zidentyfikować główną przyczynę ich powstania. Ludzie zwykle testują tylko część technicznych problemów, które mogą wystąpić w systemie. Wynikiem tego jest niekompletna i nieodpowiednia ocena wyrażająca bezpieczeństwo. Denis Verdon, Szef Korporacji Information Security Group At Fidelity National Financial, zaprezentował znakomitą analogię dla tego niezrozumienia na konferencji OWASP AppSec w Nowym Jorku: „Gdyby samochody testowano tak jak aplikacje…testy bezpieczeństwa przyjmowałyby tylko zderzenia frontalne. Samochody nie byłyby testowane na wypadek bocznych zderzeń albo na wypadek zachowania stabilności w trakcie nagłych manewrów w sytuacjach wyjątkowych, nietestowana byłaby również skuteczność hamulców czy zabezpieczenia antywłamaniowe.” Wiele organizacji zaczęło stosować skanery aplikacji sieciowych. Te skanery, zachowujące się jak czarne skrzynki, usiłują ‘pełznąć’ po sieci w poszukiwaniu luk w zabezpieczeniach jak automatyczny haker. Mogłyby mieć zastosowanie w testowaniu oprogramowania, ale nie wierzymy, by automatyczna czarna skrzynka była albo kiedykolwiek mogła być efektywna. Skaner sieciowy powinien być ostatnim etapem w procesie testowania, nie pierwszym. Nie zmniejszamy jednak jego roli, raczej staramy się pokazać, że należy zrozumieć jakie ma ograniczenia i że struktura testów powinna być właściwie zaplanowana. Przykład Recenzowaliśmy stronę sieciową, gdzie projektanci stworzyli tylne drzwi dla celów administracyjnych. Kiedy klikało się link albo wysyłało formularz ze strony, był on przesyłany w postaci parametrów (przykładem zastosowania takiej funkcji może być serwis www.weather.com, gdzie, podając jako parametr kod miejsca zamieszkania, otrzymuje się prognozę pogody dla swojego regionu) W tej aplikacji developerzy tak skonstruowali przesyłanie parametrów, że pozornie dowolny ciąg parametrów długości 40 znaków powodował automatyczne zalogowanie na stronie jako administrator. Jedyna możliwość, aby skaner sieciowy wykrył tego rodzaju błąd, to moment kiedy skaner Strona 43 z 50
  • 44. TESTER.PL użyłby dokładnego kodu z biliona możliwości, co jest niewykonalne. W tym przypadku zajęłoby to setki lat. Natomiast, nawet dla laika patrzącego w kod źródłowy, błąd ten był oczywisty. If input from browser = „the special 40 characters” then log user in as administrator Wystarczyłoby by jeden złośliwy użytkownik wysłał link do setek albo tysięcy ludzi z publicznej listy mailingowej, aby wszyscy mieli całkowitą kontrolę nad stroną i kontami klientów biznesowych. Testowanie pokazało, że obecny zbiór skanerów do aplikacji sieciowych wykrywa mniej niż 20% błędów w powszechnie używanych stronach internetowych. To pozostawia 80% różnych dziur w kodzie programu, które mogą znaleźć i wykorzystać potencjalni hakerzy. Gary McGraw, autor „Building Secure Software”, ujął to w ten sposób: „Jeżeli test penetracyjny nie powiedzie się, to masz świadomość tego, że problem istnieje, jeżeli test penetracyjny zakończy się powodzeniem, to nie masz pojęcia czy błąd istnieje” OWASP przyciągnął wielu specjalistów zorientowanych prorozwojowo oraz uzyskał wsparcie wielkich firm zajmujących się zabezpieczeniami w IT, takich jak Fidelity. Powoli kształtuje dominujący trend postrzegania jak kierować bezpieczeństwem oprogramowania. Verdon z Fidelity National powiedział: „Środowisko ludzi zajmujących się zabezpieczeniami w dalszym ciągu nie daje rady wymaganiom jakie stawiają przed nimi ci, którzy zajmują się aplikacjami i developmentem. Szczerze mówiąc wielu z nich nadal nie wie jakie pytania zadać. Z pewnością architekci znają struktury J2EE i .Net’s security, ale nikt do tej pory nie dał im wskazówek jak z nimi pracować. Członkowie OWASP uświadomili to sobie i zaczęli zapełniać tę lukę. Pomagają tworzyć powszechny język, który potrzebny jest do właściwego modelowania problemów zabezpieczeń i ich rozwiązywania.” OWASP Testing Project OWASP Testing Project jest to projekt składający się z dwóch części mający na celu utorować drogę do stworzenia spójnego zbioru dokumentacji oraz oprogramowania wspomagającego. Pierwsza część projektu ma za zadanie przedstawienie zorientowanej zadaniowo struktury bezpieczeństwa, aby pomóc organizacjom przy tworzeniu ich własnych procesów. Druga wspomaga strukturę szczegółowymi opisami technicznymi tego, w jaki sposób zaimplementować procesy wysokiego poziomu, włączając egzaminowanie kodu specyficznych problemów. Tak jak wszystkie projekty OWASP, dokumentacje i oprogramowanie jest darmowe i dostępne dla wszystkich. Na testową strukturę zorientowaną zadaniowo powinny składać się działania umiejscowione w następujących etapach procesu tworzenia: Strona 44 z 50
  • 45. TESTER.PL • Zanim rozpocznie się proces tworzenia • W trakcie fazy definiowania i projektów • W trakcie procesu tworzenia • Podczas etapu wdrażania Zanim zacznie się proces tworzenia, zgodnie ze strukturą powinno się przetestować czy powstał odpowiedni proces cyklu życia programu i czy zawiera niezbędne zabezpieczenia. Zaleca się przetestowanie czy zespół tworzący oprogramowanie jest zaopatrzony we właściwe standardy i zna właściwy sposób postępowania oraz czy twórcy stworzyli metryczne i wzorcowe kryteria. Ta koncepcja nie powinna być niczym nowym dla zespołów, które stosują najlepsze techniki, takie jak Rational Unified Software stworzony przez Rational Software (od 2003 przejęty przez IBM). Następnie, aby mieć pewność, że bezpieczeństwo jest integralną częścią powstawania oprogramowania w jego cyklu życia, koniecznie należy sprawdzić czy właściwa polityka, standardy i dokumentacja są na miejscu. Dokumentacja jest bardzo ważna, ponieważ daje twórcom wytyczne i wprowadza politykę, według której mogą pracować: ludzie tylko wtedy robią właściwe rzeczy, kiedy wiedzą jakie rzeczy są właściwe. Jeśli aplikacja ma powstać w Javie, niezbędny staje się standard zabezpieczeń dla Javy. Jeżeli aplikacja ma korzystać z kryptografii, dostępny musi być standard kryptograficzny. Poprzez dokumentowanie powszechnych i najczęściej spotykanych problemów zmniejszy się liczba decyzji, które należy podjąć w trakcie procesu tworzenia, a ryzyko związane z bezpieczeństwem implementacji zostanie zmniejszone. Testing Requirements is Essential Testowanie zaczyna się na poważnie podczas fazy definiowania i projektowania. Wymogi bezpieczeństwa określają jak aplikacja pracuje z punktu widzenia zabezpieczeń. Niezbędne jest przetestowanie wymogów bezpieczeństwa. W tym przypadku w pierwszej kolejności należy przetestować to, czy odpowiednie wymogi istnieją i czy nie zawierają luk. Np. jeżeli bezpieczeństwo wymaga, aby użytkownik, który chce dostać się do zasobów uprzednio zalogował się na stronie, należy sprawdzić czy to oznacza, że musi być zarejestrowany w systemie i posiadać przypisaną rolę? W trakcie szukania luk w wymaganiach rozważmy takie mechanizmy bezpieczeństwa jak: • User Management • Authentication • Authorization • Session Management • Transport Security • Data Protection • Data Validation Aplikacje powinny mieć udokumentowany projekt i architekturę. Przez udokumentowanie mamy na myśli modele, dokumenty tekstowe i inne podobne Strona 45 z 50
  • 46. TESTER.PL elementy. Elementy te koniecznie muszą zostać przetestowane, należy zwrócić uwagę czy wymuszają właściwy poziom bezpieczeństwa, zgodny z wymaganiami. Identyfikacja wad zabezpieczeń w fazie projektu nie tylko jest najmniej kosztownym etapem do lokalizacji błędów, ale również najefektywniejszym do wprowadzania zmian. Na przykład jeżeli stwierdzimy, że projekt przewiduje wezwanie do autoryzacji w kilku miejscach, może należałoby rozważyć komponent będący centralną autoryzacją. Jeżeli aplikacja przewiduje kontrolę danych w kilku miejscach, może powinno się stworzyć centralną strukturę walidacyjną (co byłoby wydajniejsze i tańsze). Projektowe wzorce bezpieczeństwa stają się coraz popularniejsze i użyteczne na tym etapie. Jeśli jakiś słaby punkt zostaje odkryty, powinien od razu trafić do architekta systemu, by ten zastosował alternatywne rozwiązanie. Bardzo użyteczne dla bezpieczeństwa są modele UML opisujące sposób pracy aplikacji. W niektórych przypadkach mogą istnieć gotowe modele. Używając tych modeli należy wraz z projektantami systemu określić dokładne działanie aplikacji. Jeżeli zostaną odkryte jakieś słabe punkty, należy je przekazać do architektów systemu w celu zastosowania alternatywnych rozwiązań. Istnieje specjalny dialekt UML dla modeli bezpieczeństwa tzw. SecureUML. ‘Uzbrojeni’ w projekt i opinie architektów oraz model UML dokładnie opisujący działanie systemu możemy rozpocząć wykonywanie prób modelu-zagrożeń. Model zagrożeń stał się bardzo popularną techniką polegającą na szukaniu ‘dziur’, które mógłby wykorzystać przeciwnik i sprawdzaniu czy zostały wprowadzone odpowiednie środki zapobiegawcze. Tworzy się realistyczne scenariusze ‘ataku’. Analizując projekt i architekturę pod kątem tych scenariuszy sprawdza się czy aplikacja jest odpowiednio zabezpieczona. Jeżeli wystąpią jakieś zagrożenia, należy ponownie wrócić do projektantów i architektów, aby ci odpowiednio zmodyfikowali projekt. Teoretycznie, wdrażanie jest implementowaniem projektu. Jednakże w rzeczywistości wiele decyzji dotyczących projektu podejmowanych jest właśnie na etapie tworzenia kodu. Są to zwykle pomniejsze zmiany, które dotyczą zbyt szczegółowych zagadnień by być opisanymi na etapie projektu czy analizy wymagań lub nie objęte żadnymi standardami. Jeżeli projekt i architektura były niewystarczające, wówczas developer będzie zmuszony do podejmowania wielu takich decyzji. Jeżeli niewystarczająca była polityka lub standardy, konstruktor będzie miał jeszcze więcej decyzji do podjęcia. Zespół do spraw bezpieczeństwa powinien ‘przejść’ kod wraz z developerem, a w niektórych przypadkach również z architektami systemu. Takie ‘przejście’ kodu jest dokładnym przejrzeniem kodu, gdzie developerzy czy architekci mogą wyjaśnić logikę i przebieg działania programu. Zespołowi daje to możliwość ogólnego zrozumienia kodu, a developerom pozwala na wyjaśnienie, dlaczego pewne rzeczy zostały napisane w ten sposób, a nie inny. Celem nie jest sprawdzenie kodu tylko zrozumienie, na wysokim poziomie, w jaki sposób funkcjonuje aplikacja. Znając kod i wiedząc jak zostały rozwiązane niektóre istotne zagadnienia, tester może przetestować kod w poszukiwaniu luk w zabezpieczeniach. Strona 46 z 50
  • 47. TESTER.PL Jeżeli zostaną sprawdzone wymagania, przeanalizowany projekt, powstaną modele zagrożeniowe i zostaną przeprowadzone testy kodu, można by założyć, że wszystkie usterki zostały wykryte. Jednakże ostatnim krokiem jest test wdrożonej aplikacji mający na celu sprawdzenie czy nic nie zostało pominięte. Test penetracyjny powinien sprawdzać sposób w jaki cała infrastruktura została wdrożona i zabezpieczona. Podczas gdy aplikacja wydaje się być właściwie zabezpieczona, może okazać się, że jakiś niewielki błąd dający się wykorzystać do złamania zabezpieczeń tkwi w konfiguracji zarządzania w procesie instalacji. To właśnie jest miejsce, gdzie najbardziej efektywne stają się czarnoskrzynkowe skanery szukające dziur w konfiguracji zarządzania. Pamiętajmy, że koszty naprawy znalezionego na tym etapie błędu w zabezpieczeniach są ogromne i mogą wymagać wielkich zmian w projekcie. Dobry program testujący angażuje zespół odpowiedzialny za zabezpieczenia złożony przeważnie z tych samych osób, które tworzyły oprogramowanie. Dobre zespoły kładą większy nacisk na testowanie definicji i fazy projektowej cyklu życia oprogramowania niż na testowanie wdrażania. W sprzedaży pojawiają się tzw. „złote środki” do testowania, ale takie programy po prostu nie istnieją. Rys.2 Zespoły testujące powinny spodziewać się tego, że ponad połowę czasu zajmuje testowanie projektów i procesów. Pozostały czas powinien być przeznaczony na sprawdzenie tego, jak te projekty i polityka tworzenie została wykorzystana w kodzie. Rys.3 Podsumowanie Tworzenie bezpiecznego oprogramowania oznacza tworzenie lepszego oprogramowania. Testowanie bezpieczeństwa oznacza testowanie całego cyklu życia oprogramowania, które kolejno testuje ludzi, procesy i technologie. Strona 47 z 50
  • 48. TESTER.PL Kontakt: Regina Koenig, (22) 528 66 37 Mercury rkoenig@mercury.com Beata Pogorzelska, (22) 810 10 50 ITBC Communication Beata_Pogorzelska@itbc.pl MERCURY MANAGED SERVICES DLA PLATFORMY SAP NETWEAVER™ Warszawa, 7 czerwca 2005 r. - Mercury Interactive Corporation (NASDAQ: MERQ), lider w zakresie optymalizacji technologii biznesowych (BTO), poinformował o udostępnieniu rozwiązań Mercury Managed Services dla SAP NetWeaver, umożliwiających krytycznych aplikacji, bez zarządzanie wydajnością konieczności inwestowania i dostępnością w dodatkową infrastrukturę. Rozwiązanie Mercury Managed Services zapewnia wysoką jakość obsługi użytkowników, nawet w ramach dużych wdrożeń obejmujących tysiące stanowisk. Oferowane usługi pozwalają korzystającym z oprogramowania SAP na: • całościową weryfikację wydajności i skalowalności zautomatyzowanych procesów gospodarczych; • identyfikowanie, diagnozowanie i rozwiązywanie problemów w zakresie wydajności, wynikających między innymi z dostosowywania rozwiązań do niestandardowych potrzeb, integracji z systemami innych firm oraz zmian w infrastrukturze; Strona 48 z 50
  • 49. TESTER.PL • prewencyjne zarządzanie poziomem usług. Dzięki zastosowaniu pakietu Mercury Performance Center możliwie jest wykonywanie testów obciążeniowych, dostrajanie wydajności, planowanie mocy obliczeniowej oraz diagnostykę wdrożeń SAP NetWeaver przed ich uruchomieniem. Ponadto użytkownicy mogą skorzystać z rozwiązania Mercury Business Availability Center, które umożliwia zarządzanie poziomem usług i konfiguracją, odwzorowywanie powiązań między aplikacjami, diagnostykę aplikacji oraz zarządzanie dostępnością systemów. W ramach programu Mercury Managed Services klienci korzystający z produktów firmy SAP współpracują ze specjalistami firmy Mercury w zakresie zarządzania rozwiązaniem SAP NetWeaver przez cały okres jego eksploatacji. Rozwiązanie jest już dostępne na rynku. USŁUGI MERCURY MANAGED SERVICES Program Mercury Managed Services polega na udostępnianiu rozwiązań przez Internet, w modelu hostingu. Firma Mercury wyznacza zespół specjalistów, który udziela użytkownikom pomocy w zdalnym zarządzaniu wydajnością i dostępnością krytycznych aplikacji do zarządzania przedsiębiorstwem (ERP) i obsługą klienta (CRM) oraz innych aplikacji niestandardowych. W większości przypadków rozwiązanie Mercury Managed Services umożliwia efektywne wprowadzanie w życie rozwiązań informatycznych w ciągu kilku tygodni, a nawet kilku dni. Z Mercury Managed Services korzysta obecnie ponad 500 klientów ze Stanów Zjednoczonych, Europy i Dalekiego Wschodu. MERCURY I SAP Mercury i SAP współpracują od połowy lat dziewięćdziesiątych. Jako partner SAP w dziedzinie oprogramowania, firma Mercury opracowała szereg rozwiązań przeznaczonych do optymalizacji jakości, wydajności i skalowania rozwiązań firmy SAP. Produkty Mercury, takie jak Mercury WinRunner®, Mercury QuickTest Professional™ i Mercury LoadRunner®, uzyskały certyfikaty w zakresie integracji z oprogramowaniem SAP. Dzięki tym certyfikatom użytkownicy mają zagwarantowane niezawodne współdziałanie interfejsów pomiędzy produktami Strona 49 z 50
  • 50. TESTER.PL obu firm. W lutym 2005 r. zostało zawarte długoterminowe porozumienie, dzięki któremu w ramach usługi SAP Go Live Check Service przeznaczonej dla użytkowników platformy SAP NetWeaver™ oferowane jest rozwiązanie Mercury LoadRunner. Strona 50 z 50