Testy oprogramowania i ich rodzaje
Data publikacji: 20.03.2010
Testowanie Jakości Oprogramowania
Testowanie jest kontrolą jakości oprogramowania na każdym etapie jego powstawania. Celem tego procesu jest badanie poprawności aplikacji oraz wczesne wykrycie ewentualnych błędów, co ma bezpośrednie przełożenie na koszty. Tylko wczesne wykrycie błędów jest w stanie zapewnić najmniejsze koszty ich naprawy. W poniższym artykule omówione zostały podstawowe rodzaje testów. Ponadto przedstawiony został proces wdrożenia systemu testowania, który jest niewątpliwie istotnym elementem funkcjonowania firmy.
Na przestrzeni lat możemy obserwować upadek projektów, lub całych firm, które nie potrafią dostosować się do wymagań rynku. Dostarczają one niesprawne oprogramowanie o niskiej jakości, przez co nie są w stanie zarządzać procesem jego wytwarzania z należytą starannością.
Trochę historii
4 czerwca 1996 roku bezzałogowa rakieta kosmiczna Ariane 5 eksplodowała po czterdziestu sekundach lotu, zamieniając w popiół 7 miliardów dolarów wydane przez 10 lat na jej budowę oraz ładunek, który był wart 500 milionów dolarów. Po dwóch tygodniach zespół badający przyczyny katastrofy przedstawił raport: okazało się, że źródłem katastrofy był prosty błąd w oprogramowaniu, związany z niepoprawną konwersją liczby zmiennoprzecinkowej na liczbę całkowitą.
W 1997 roku firma Mercedes-Benz, znana z produkcji dużych, luksusowych samochodów wypuściła na rynek swój pierwszy „mały” model – Mercedesa klasy A. Samochód przyciągnął uwagę mediów, zwłaszcza, gdy okazało się, że przeprowadzone testy bezpieczeństwa jazdy nowego produktu Mercedesa wypadły bardzo niezadowalająco. Okazało się, że samochód przewraca się podczas „testu łosia”, polegającego na wykonaniu gwałtownego skrętu najpierw w jedną, a potem w drugą stronę. Firma od razu zabrała się za usuwanie usterek – jedynym elementem, który wymagał poprawienia było oprogramowanie komputera sterującego systemem amortyzatorów.
Wnioski
Testowanie pełni priorytetową rolę na każdym etapie powstawania oprogramowania. Celem tego procesu jest badanie poprawności aplikacji oraz wczesne wykrycie ewentualnych błędów. Wszystkie zabiegi, jakie poczynimy w kierunku poprawy jakości oprogramowania, mają na celu zmniejszenie ryzyka wystąpienia błędu po przekazaniu produktu do klienta.
Ma to bezpośrednie przełożenie na koszty. Koszty (czas i pieniądze) obsługi błędu wykrytego podczas kolejnych etapów produkcji zwiększa się nawet dziesiątki razy wraz z upływem czasu. Błąd wykryty w fazie definiowania projektu prawie nic nie kosztuje. Zazwyczaj można go usunąć w kilkanaście minut, co przekłada się, co najwyżej na kilka dodatkowych dolarów.
Inaczej jest, kiedy błąd zostanie ujawniony już w systemie produkcyjnym, który realizuje konkretne procesy biznesowe. Wystąpienie takiej sytuacji nierzadko może prowadzić do dramatu, który zapoczątkuje ciąg zdarzeń spychających firmę wprost do bankructwa.
Testowanie oprogramowania – rodzaje testów
Oprogramowanie testuje się na wiele różnych sposobów. Wybór metody, zakresu i przypadków testowych zależy od potrzeb konkretnej firmy. Na potrzeby wykonywanych testów zespół testerów opracowuje przypadki testowe oraz dokumentację podtestową. Poniżej przedstawiamy wybrane rodzaje testów:
TESTY MANUALNE
Testy wykonywane ręcznie przez testera, który przechodzi przez interfejs użytkownika zgodnie z określoną sekwencją kroków:
TESTY AUTOMATYCZNE
Testy automatyczne skutecznie przyspieszają proces tworzenia testów systemowych, ich wykonywanie oraz analizę, a tym samym pozwalają na wcześniejsze wykrycie i wyeliminowanie błędów w aplikacjach.
Testy automatyczne wykonywane są w oparciu o wysokiej jakości oprogramowanie:
Raz a dobrze – z praktyki IT Kontrakt
Wdrożenie procesu testowania wydaje się trudnym zadaniem a jego egzekwowanie i utrzymanie w opinii niektórych jest zadaniem niewykonalnym. IT Kontrakt udowadnia swoim klientom, że w cale tak nie jest. Priorytetem jest uświadomienie klientowi, iż bez centralnego punktu kontroli i przejrzystych, powtarzalnych metodyk bardzo trudno jest zapanować nad projektami testów i zapewnić wysoką jakość aplikacji w odpowiednim terminie przy ograniczonych zasobach.
IT Kontrakt w ramach outsourcingu usług testowych oferuje swoim Klientom:
w procesie projektowania i tworzenia środowiska testowego, w wyborze narzędzi wspomagających testowanie, metodyki i rodzaju testów, sporządzają kosztorys automatyzacji testów, szkolą pracowników firmy w zakresie dalszej obsługi
i zarządzania środowiskiem testowym.
Jednym z praktycznych przykładów owocnej współpracy pomiędzy IT Kontrakt a jej klientem z sektora bankowego, jest prowadzenie oraz wykonywanie przez specjalistów IT Kontrakt testów systemów informatycznych, wspierających procesy i produkty bankowe oraz testów aplikacji. Proces testowania rozpoczął się od zdefiniowania przejrzystych i kompletnych wymagań stawianych oprogramowaniu, które zostło poddane kontroli. Kryteria te odzwierciedlały potrzeby przedsiębiorstwa, a ich określanie i zarządzanie nimi było zadaniem o kluczowym znaczeniu dla projektowania i sprawdzania aplikacji. Zespół IT Kontrakt w ramach współpracy wykonywał Testy Funkcjonalne, Testy Akceptacyjne oraz Testy Wydajnościowe. W obszarach objętych testami znajdowały się aplikacje BKL, CMN Call Center, SAS OpRisk Monitor, BKL oraz IBM WebSphere MQ.
Oczywiście temat testów, można zgłębiać nieustannie. Powyższy artykułu miał na celu wprowadzanie do świata możliwości testowania oraz przedstawienie tego ważnego zagadnienia w sposób możliwie praktyczny i przystępny.
wstecz
Systemy informatyczne odgrywają kluczową rolę w środowisku biznesowym. Złożoność tych systemów stale rośnie a nacisk kładziony na branżę IT dąży w kierunku dostarczania w krótszym czasie, przy mniejszym budżecie - usług najwyższej jakości.
Testowanie Jakości Oprogramowania
Testowanie jest kontrolą jakości oprogramowania na każdym etapie jego powstawania. Celem tego procesu jest badanie poprawności aplikacji oraz wczesne wykrycie ewentualnych błędów, co ma bezpośrednie przełożenie na koszty. Tylko wczesne wykrycie błędów jest w stanie zapewnić najmniejsze koszty ich naprawy. W poniższym artykule omówione zostały podstawowe rodzaje testów. Ponadto przedstawiony został proces wdrożenia systemu testowania, który jest niewątpliwie istotnym elementem funkcjonowania firmy.
Na przestrzeni lat możemy obserwować upadek projektów, lub całych firm, które nie potrafią dostosować się do wymagań rynku. Dostarczają one niesprawne oprogramowanie o niskiej jakości, przez co nie są w stanie zarządzać procesem jego wytwarzania z należytą starannością.
Trochę historii
4 czerwca 1996 roku bezzałogowa rakieta kosmiczna Ariane 5 eksplodowała po czterdziestu sekundach lotu, zamieniając w popiół 7 miliardów dolarów wydane przez 10 lat na jej budowę oraz ładunek, który był wart 500 milionów dolarów. Po dwóch tygodniach zespół badający przyczyny katastrofy przedstawił raport: okazało się, że źródłem katastrofy był prosty błąd w oprogramowaniu, związany z niepoprawną konwersją liczby zmiennoprzecinkowej na liczbę całkowitą.
W 1997 roku firma Mercedes-Benz, znana z produkcji dużych, luksusowych samochodów wypuściła na rynek swój pierwszy „mały” model – Mercedesa klasy A. Samochód przyciągnął uwagę mediów, zwłaszcza, gdy okazało się, że przeprowadzone testy bezpieczeństwa jazdy nowego produktu Mercedesa wypadły bardzo niezadowalająco. Okazało się, że samochód przewraca się podczas „testu łosia”, polegającego na wykonaniu gwałtownego skrętu najpierw w jedną, a potem w drugą stronę. Firma od razu zabrała się za usuwanie usterek – jedynym elementem, który wymagał poprawienia było oprogramowanie komputera sterującego systemem amortyzatorów.
Wnioski
Testowanie pełni priorytetową rolę na każdym etapie powstawania oprogramowania. Celem tego procesu jest badanie poprawności aplikacji oraz wczesne wykrycie ewentualnych błędów. Wszystkie zabiegi, jakie poczynimy w kierunku poprawy jakości oprogramowania, mają na celu zmniejszenie ryzyka wystąpienia błędu po przekazaniu produktu do klienta.
Ma to bezpośrednie przełożenie na koszty. Koszty (czas i pieniądze) obsługi błędu wykrytego podczas kolejnych etapów produkcji zwiększa się nawet dziesiątki razy wraz z upływem czasu. Błąd wykryty w fazie definiowania projektu prawie nic nie kosztuje. Zazwyczaj można go usunąć w kilkanaście minut, co przekłada się, co najwyżej na kilka dodatkowych dolarów.
Inaczej jest, kiedy błąd zostanie ujawniony już w systemie produkcyjnym, który realizuje konkretne procesy biznesowe. Wystąpienie takiej sytuacji nierzadko może prowadzić do dramatu, który zapoczątkuje ciąg zdarzeń spychających firmę wprost do bankructwa.
Testowanie oprogramowania – rodzaje testów
Oprogramowanie testuje się na wiele różnych sposobów. Wybór metody, zakresu i przypadków testowych zależy od potrzeb konkretnej firmy. Na potrzeby wykonywanych testów zespół testerów opracowuje przypadki testowe oraz dokumentację podtestową. Poniżej przedstawiamy wybrane rodzaje testów:
TESTY MANUALNE
Testy wykonywane ręcznie przez testera, który przechodzi przez interfejs użytkownika zgodnie z określoną sekwencją kroków:
- testy integracyjne pozwalają sprawdzić jak współpracują ze sobą różne komponenty oprogramowania. Obecnie rzadko mamy do czynienia z monolitycznymi aplikacjami. Są one raczej tworzone modułowo, dlatego należy sprawdzić, czy wszystko razem działa poprawnie
- testy systemowe dotyczą działania aplikacji jako całości. Zazwyczaj na tym poziomie testujemy różnego rodzaju wymagania niefunkcjonalne, takie jak – szybkość działania, bezpieczeństwo, niezawodność, dobrą współpracę z innymi aplikacjami i sprzętem.
- testy funkcjonalne – znane również jako testy czarnej skrzynki. Osoba testująca nie ma dostępu do informacji na temat budowy programu, który testuje. Wykonując testy nie opiera danych testowych na budowie wewnętrznej programu, lecz na założeniach funkcjonalnych, jakie powinien spełniać program zgodnie z dokumentacją
- testy regresyjne – mają na celu sprawdzenie wpływu nowych funkcjonalności na działanie systemu
- testy akceptacyjne z udziałem klienta – wykonywane w celu sprawdzenia na ile oprogramowanie działa zgodnie z wymaganiami klienta
- testy dokumentacji, których celem jest wykrycie niespójności i niezgodności w dokumentacji analitycznej, technicznej oraz dokumentacji użytkownika, sporządzonej w ramach realizowanego projektu informatycznego
- testy użyteczności, których celem jest weryfikacja interfejsu użytkownika w zakresie przystępności, wygody, szybkości oraz zgodności z oczekiwaniami przyszłych użytkowników.
TESTY AUTOMATYCZNE
Testy automatyczne skutecznie przyspieszają proces tworzenia testów systemowych, ich wykonywanie oraz analizę, a tym samym pozwalają na wcześniejsze wykrycie i wyeliminowanie błędów w aplikacjach.
Testy automatyczne wykonywane są w oparciu o wysokiej jakości oprogramowanie:
- LoadRunner, WinRunner
- Rational Functional Tester
- Borland® Silktest®
- narzędzia freeware (Apache JMeter, AppPerfect Test Studio itp.)
- Poznaniu architektury systemu. Na tym etapie będzie można wstępnie określić na ile skomplikowany będzie proces testowania
- Określeniu jakiego typu testy są potrzebne. Może być to związane zarówno z charakterystyką testowanego systemu jak i z wymaganiami klienta, standardami zapewniania jakości przyjętymi w firmie
- Weryfikacji testowalności systemu. Jest to istotne przy dużych, wielowarstwowych aplikacjach. Tester, aby móc skutecznie testować system, musi mieć dostęp do wszelkich potrzebnych mu danych.
- Takie podejście do procesu testowania pozwala na dokładne oszacowanie czasochłonności procesu testowania a co za tym idzie określenie dokładnych kosztów całego procesu.
Raz a dobrze – z praktyki IT Kontrakt
Wdrożenie procesu testowania wydaje się trudnym zadaniem a jego egzekwowanie i utrzymanie w opinii niektórych jest zadaniem niewykonalnym. IT Kontrakt udowadnia swoim klientom, że w cale tak nie jest. Priorytetem jest uświadomienie klientowi, iż bez centralnego punktu kontroli i przejrzystych, powtarzalnych metodyk bardzo trudno jest zapanować nad projektami testów i zapewnić wysoką jakość aplikacji w odpowiednim terminie przy ograniczonych zasobach.
IT Kontrakt w ramach outsourcingu usług testowych oferuje swoim Klientom:
- Wykonywanie testów automatycznych: funkcjonalnych, wydajnościowych, obciążeniowych i regresyjnych. Specjaliści IT Kontrakt wybierają narzędzia testowe, rodzaje wymaganych testów, opracowują skrypty testowe, wykonują testy oraz przeprowadzają analizę wyników testów i sporządzają raport potestowy.
- Automatyzację istniejącego środowiska testowego: nasz dedykowany zespół ekspertów automatyzuje istniejące już przypadki testowe.
- Zarządzanie i utrzymanie środowiska testowego: nasi specjaliści pomagają zarządzać, optymalizować i utrzymać istniejące repozytorium przypadków testowych, doradzają w wyborze narzędzia ułatwiającego zarządzenie środowiskiem testowym (HP Quality Center, JIRA).
- Zaawansowane automatyczne testy wydajnościowe i obciążeniowe.
- Konsulting ds. metodyki testowania – konsultanci IT Kontrakt doradzają klientom
w procesie projektowania i tworzenia środowiska testowego, w wyborze narzędzi wspomagających testowanie, metodyki i rodzaju testów, sporządzają kosztorys automatyzacji testów, szkolą pracowników firmy w zakresie dalszej obsługi
i zarządzania środowiskiem testowym.
Jednym z praktycznych przykładów owocnej współpracy pomiędzy IT Kontrakt a jej klientem z sektora bankowego, jest prowadzenie oraz wykonywanie przez specjalistów IT Kontrakt testów systemów informatycznych, wspierających procesy i produkty bankowe oraz testów aplikacji. Proces testowania rozpoczął się od zdefiniowania przejrzystych i kompletnych wymagań stawianych oprogramowaniu, które zostło poddane kontroli. Kryteria te odzwierciedlały potrzeby przedsiębiorstwa, a ich określanie i zarządzanie nimi było zadaniem o kluczowym znaczeniu dla projektowania i sprawdzania aplikacji. Zespół IT Kontrakt w ramach współpracy wykonywał Testy Funkcjonalne, Testy Akceptacyjne oraz Testy Wydajnościowe. W obszarach objętych testami znajdowały się aplikacje BKL, CMN Call Center, SAS OpRisk Monitor, BKL oraz IBM WebSphere MQ.
Oczywiście temat testów, można zgłębiać nieustannie. Powyższy artykułu miał na celu wprowadzanie do świata możliwości testowania oraz przedstawienie tego ważnego zagadnienia w sposób możliwie praktyczny i przystępny.
Źródło: SoftQA, Mirosław Dąbrowski, Testy oprogramowania i ich rodzaje, marzec 01/2010
sdjournal.orgwstecz


