TESTOWANIE OPROGRAMOWANIA



Podobne dokumenty
JUnit TESTY JEDNOSTKOWE. Waldemar Korłub. Platformy Technologiczne KASK ETI Politechnika Gdańska

Automatyzacja testowania oprogramowania. Automatyzacja testowania oprogramowania 1/36

Testowanie I. Celem zajęć jest zapoznanie studentów z podstawami testowania ze szczególnym uwzględnieniem testowania jednostkowego.

Programowanie poprzez testy z wykorzystaniem JUnit

Weryfikacja i walidacja. Metody testowania systemów informatycznych

Testowanie. Ryszard Beczek & Piotr Miłkowski 1 04/11/07

Testy automatyczne. Korzystające z junit

Testowanie oprogramowania

Budowa aplikacji webowej w oparciu o Maven2 oraz przykłady testów jednostkowych. Wykonał Marcin Gadamer

Całościowe podejście do testowania automatycznego dla programistów. (TDD, BDD, Spec. by Example, wzorce, narzędzia)

LABARATORIUM 9 TESTY JEDNOSTKOWE JUNIT 3.8

Testowanie oprogramowania. Testowanie oprogramowania 1/34

REFERAT PRACY DYPLOMOWEJ

Testowanie II. Celem zajęć jest zapoznanie studentów z oceną jakości testów przy wykorzystaniu metryk pokrycia kodu testami (ang. code coverage).

Plan testów do Internetowego Serwisu Oferowania i Wyszukiwania Usług Transportowych

INŻYNIERIA OPROGRAMOWANIA TESTOWANIE INTEGRACYJNE

Egzamin / zaliczenie na ocenę*

Testowanie aplikacji mobilnych na platformie Android - architektura, wzorce, praktyki i narzędzia

PRZEWODNIK PO PRZEDMIOCIE

Testowanie oprogramowania. Piotr Ciskowski

Maciej Oleksy Zenon Matuszyk

Testowanie II. Cel zajęć. Pokrycie kodu

Akademia ADB Wykład I Praca w grupie i jakość kodu

Laboratorium Informatyka (I) AiR Ćwiczenia z debugowania

Programowanie kontraktowe w Javie

Michał Olejnik. 22 grudnia 2009

Testowanie aplikacji Java Servlets

Porównanie metod i technik testowania oprogramowania. Damian Ryś Maja Wojnarowska

Wprowadzenie do testów jednostkowych. Marcin Dziedzic, Wiktor Żołnowski

Programowanie Zespołowe

Tester oprogramowania 2014/15 Tematy prac dyplomowych

Dokument Detaliczny Projektu

Całościowe podejście do testowania automatycznego dla programistów. /C#/PHP (TDD, BDD, Spec. by Example, wzorce, narzędzia)

Zwinna współpraca programistów i testerów z wykorzystaniem BDD i. by Example (JBehave/Spock/SpecFlow)

Refaktoryzacja. Na podstawie

Zespół: Agata Chrobak Kornel Jakubczyk Tomek Klukowski Przemek Kosiak. Projekt SZOP Plan testów

Platformy Technologiczne

Dlaczego testowanie jest ważne?

Wprowadzenie do Behaviordriven

Program szkolenia: Test Driven Development (TDD) using Spock or JUnit 5

NAJLEPSZE STRATEGIE SKUTECZNYCH PROGRAMISTÓW. TECHNIKI PRACY Z KODEM KOD: NSKOD

INŻYNIERIA OROGRAMOWANIA TESTOWANIE JEDNOSTKOWE 2015/2016

Fuzzing OWASP The OWASP Foundation Piotr Łaskawiec J2EE Developer/Pentester

Wzorce projektowe i refaktoryzacja

Wzorce Strukturalne. Adapter: opis. Tomasz Borzyszkowski

Główne założenia XP. Prostota (Simplicity) Komunikacja (Communication) Sprzężenie zwrotne (Feedback) Odwaga (Agressiveness)

Programowanie zespołowe

Pierwsze kroki. Algorytmy, niektóre zasady programowania, kompilacja, pierwszy program i jego struktura

Kod doskonały : jak tworzyć oprogramowanie pozbawione błędów / Steve McConnell. Gliwice, cop Spis treści. Wstęp 15.

METODY PROGRAMOWANIA

Wskazówki projektowe. Programowanie Obiektowe Mateusz Cicheński

Wprowadzenie do metodologii modelowania systemów informacyjnych. Strategia (1) Strategia (2) Etapy Ŝycia systemu informacyjnego

Testowanie i walidacja oprogramowania

Techniki efektywnego testowania kodu dla programistów Java (Spock

Testy poziom po poziomie

Automatyczne testowanie aplikacji Android

Programowanie obiektowe. Literatura: Autor: dr inŝ. Zofia Kruczkiewicz

WYKORZYSTANIE JĘZYKA GROOVY W TESTACH JEDNOSTKOWYCH, INTEGRACYJNYCH I AUTOMATYCZNYCH. Mirosław Gołda, Programista Java

Etapy życia oprogramowania

IO - Plan wdrożenia. M.Jałmużna T.Jurkiewicz P.Kasprzyk M.Robak. 5 czerwca 2006

Podstawy Informatyki. Algorytmy i ich poprawność

Rubik s Manager - Plan testów

Programowanie w Ruby

Etapy życia oprogramowania. Modele cyklu życia projektu. Etapy życia oprogramowania. Etapy życia oprogramowania

TESTOWANIE APLIKACJI KORPORACYJNYCH

szkolenia pod drzewem Wybrane Techniki XP bnd 2008 Tomasz Włodarek. Materiał udostępniany na podstawie licencji Creative Commons (by-nc-nd) 1.00.

Testowanie aplikacji. Kurs języka Ruby

Wykład 8. Testowanie w JEE 5.0 (1) Autor: Zofia Kruczkiewicz. Zofia Kruczkiewicz

Dokument Detaliczny Projektu

Wykład VII. Programowanie III - semestr III Kierunek Informatyka. dr inż. Janusz Słupik. Wydział Matematyki Stosowanej Politechniki Śląskiej

12) Wadą modelu kaskadowego jest: Zagadnienia obowiązujące na egzaminie z inżynierii oprogramowania: 13) Wadą modelu opartego na prototypowaniu jest:

AUREA BPM HP Software. TECNA Sp. z o.o. Strona 1 z 7

Ełk, dn r. DOMSET Marcin Brochacki. ul. Wojska Polskiego 43 lok. 3, Ełk. Nip ZAPYTANIE OFERTOWE

Wyjątki Monika Wrzosek (IM UG) Programowanie obiektowe 180 / 196

Testowanie jednostkowe. Jacek Starzyński, ZETiIS PW

Praca z kodem legacy : strategie, naprawa błędów, refaktoryzacja oraz

Kurs programowania. Wstęp - wykład 0. Wojciech Macyna. 22 lutego 2016

Tworzenie przypadków testowych

Podstawy modelowania programów Kod przedmiotu

Programowanie Obiektowe Ćwiczenie 4

Strategia testów mająca doprowadzić do osiągnięcia pożądanych celów

Programowanie w języku Java - Wyjątki, obsługa wyjątków, generowanie wyjątków

Czym jest jpalio? jpalio jpalio jpalio jpalio jpalio jpalio jpalio jpalio

Załącznik nr 19 do Umowy nr... z dnia... Plan Testów Systemu. Projekt ZEFIR 2

Praktyka testowania dla początkujących testerów

Zakres tematyczny dotyczący podstaw programowania Microsoft Office Excel za pomocą VBA

Wprowadzenie db4o - podstawy db4o - technikalia Przydatne wiadomości. Wprowadzenie. db4o. Norbert Potocki. 1 czerwca Norbert Potocki db4o

Konwerter Plan testów. Jakub Rauch Tomasz Gołębiowski Adam Busch Bartosz Franaszek 1 czerwca 2008

Informatyzacja przedsiębiorstw WYKŁAD

Usługa: Testowanie wydajności oprogramowania

Wykład 2 Wybrane konstrukcje obiektowych języków programowania (1)

Wprowadzenie do systemów informacyjnych

Wyjątki. Streszczenie Celem wykładu jest omówienie tematyki wyjątków w Javie. Czas wykładu 45 minut.

JAVA. Java jest wszechstronnym językiem programowania, zorientowanym. apletów oraz samodzielnych aplikacji.

Kurs programowania. Wykład 2. Wojciech Macyna. 17 marca 2016

Warsztaty szkoleniowe. Technologia SafetyLon w systemach związanych z bezpieczeństwem funkcjonalnym Narzędzia SafetyLon Moduł 4.5.

Szybkość w biznesie. Zwinne testowanie oprogramowania (Agile) Mateusz Morawski (mateusz.morawski@hp.com) 14 kwietnia 2015

PROJEKTOWANIE. kodowanie implementacja. PROJEKT most pomiędzy specyfikowaniem a kodowaniem

Automatyzacja testów aplikacji webowych w Selenium podstawy. Natalia Krawczyk

Programowanie obiektowe

Transkrypt:

TESTOWANIE OPROGRAMOWANIA Uważaj na ten program ja tylko udowodniłem jego poprawność, nie testowałem go Donald Knuth

Plan prezentacji 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki Testowanie oprogramowania 2 / 32

Testowanie wstęp Testowanie może wykazać wyłącznie istnienie bugów, nigdy ich brak. Edsger W. Dijkstra 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki Jeśli nie masz ochoty na testowanie swojego produktu, pamiętaj, że twoi klienci też nie będą tego robić autor nieznany Testowanie oprogramowania 3 / 32

Testowanie wstęp testowanie kodu na bieżąco wielokrotnie skraca czas potrzebny na usunięcie błędów w oprogramowaniu bez testów ukończenie programu (stworzenie działającej wersji) jest praktycznie niemożliwe Testowanie oprogramowania 4 / 20

Testowanie wstęp Co można testować? poprawność zgodność faktycznego zachowania programu z oczekiwanym wydajność spełnianie wymagań czasowych niezawodność odporność na działanie pod wymaganym obciążeniem bezpieczeństwo odporność na ataki, ochrona danych Testowanie oprogramowania 5 / 32

Testowanie wstęp Typy testowania ze względu na perspektywę black-box testing spojrzenie na system z zewnętrznego punktu widzenia; system jako czarna skrzynka, która ma realizować określone zadania i tylko pod tym kątem jest testowana np. testy odbioru white-box testing testowanie obejmujące wgląd we wnętrze programu: testujący przeprowadza test jednocześnie badając kod programu. Wymagane umiejętności programistyczne np. testy jednostkowe Testowanie oprogramowania 6 / 32

Refaktoryzacja refaktoryzacja poprawa jakości kodu bez zmiany jego funkcjonalności kluczowa dla skutecznego testowania i poprawiania błędów 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki przeprowadzenie testu to tylko połowa sukcesu - należy jeszcze poprawić błąd dobrze napisany kod ułatwia programowanie przyrostowe ( małymi krokami ) Testowanie oprogramowania 7 / 32

Refaktoryzacja Pierwszy lepszy głupiec potrafi napisać kod zrozumiały dla komputera. Dobrzy programiści piszą kod zrozumiały dla człowieka. Martin Fowler To świetna zabawa, kiedy można rozwikłać zagadkę morderstwa, ale kod nie powinien wymagać rozwikłania. Kod powinien dawać się czytać. Steve McConnell Testowanie oprogramowania 8 / 32

Testowanie podstawowe pojęcia bug każde zachowanie programu, które odbiega od oczekiwanego; zadaniem testów jest ich wyłapywanie i diagnozowanie jednostka pojedynczy element programu, podlegający testom jednostkowym, np. metoda, funkcja, klasa 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki przypadek testowy zestaw danych, który służy do przetestowania danej jednostki; zawiera dane wejściowe i odpowiadający im poprawny wynik Testowanie oprogramowania 9 / 32

Programowanie sterowane testami (ang. test-driven programming) testy jako sformalizowany sposób zapisu wymagań funkcjonalnych najpierw przygotowywany jest test (klasa testowa, przypadek testowy), a dopiero potem 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki tworzona jest jednostka, która ma za zadanie przejść test niezaliczenie testu jest równoznaczne z błędnym kodem (niespełnieniem wymagań) Testowanie oprogramowania 10 / 32

Programowanie sterowane testami (ang. test-driven programming) przygotowanie testu kompilacja testu BŁĄD błąd kompilacji (brak testowanej jednostki) przygotowanie jednostki testowanej kompilacja testu analiza wyniku i ewentualne poprawki Testowanie oprogramowania 11 / 32

Programowanie sterowane testami (ang. test-driven development) ZALETY bardzo przejrzyście sformułowane wymagania względem systemu zmniejszenie ilości błędów usterki wyłapywane na bieżąco oszczędności czasowe! (mniej debugowania) modularność, rozszerzalność kodu WADY dodatkowe nakłady pracy bez wyczuwalnych zysków (więcej tworzonego kodu) żmudny proces tworzenia testów Testowanie oprogramowania 12 / 32

Testy jednostkowe najniższy poziom testów zorganizowanych poprawność pojedynczych jednostek (klas, funkcji) 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki fragment programu (jednostka) poddawany jest testowi, a wynik działania porównywany jest z wcześniej przygotowanym wynikiem wzorcowym Testowanie oprogramowania 13 / 32

Testy jednostkowe bardzo elastyczne tworzenie przypadków testowych (można np. stworzyć zestaw testowy, który oczekuje na rzucenie określonego wyjątku) testy zautomatyzowane, wykonywane na bieżąco tworzą swoistą dokumentację czytając kod testu, można rozpoznać, jaka funkcjonalność jest wymagana od danej jednostki Testowanie oprogramowania 14 / 32

Testy jednostkowe Mock Objects (ang. mock - przedrzeźniać, udawać) obiekty symulujące działanie zewnętrznych, złożonych komponentów testy powinny być odizolowane od zewnętrznych czynników testowana powinna być wyłącznie jednostka przykład testując moduł wyświetlania, zamiast łączyć się z bazą przy każdym teście, tworzymy podróbkę połączenia, oszczędzając czas Testowanie oprogramowania 15 / 32

Testy jednostkowe Asercje warunki konieczne do zaliczenia testu jeden test zero lub więcej asercji; niezaliczenie którejkolwiek asercji to przerwanie testu z wynikiem negatywnym Przykłady: assertequals(a, b) przechodzi, gdy a == b assertnotnull(a) przechodzi, gdy a nie jest null Testowanie oprogramowania 16 / 32

JUnit testy jednostkowe w Javie http://junit.org wspiera zautomatyzowane przeprowadzanie testów klasy testowe opisywane za pomocą annotacji 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki bogata kolekcja pluginów do integracji Junit różnymi środowiskami użytkownika (Eclipse, NetBeans) Testowanie oprogramowania 17 / 32

JUnit testy jednostkowe w Javie object TestResult błędy object TestFailure interface TestListener interface Test Assert BaseTestRunner TestSuite TestCase TestRunner Testowanie oprogramowania 18 / 32

JUnit testy jednostkowe w Javie Przykład Przetestujemy metodę max() z klasy java.lang.math import org.junit.test; import static org.junit.assert.assertequals; public class MyTestClass { @Test public void testmax() { //kod testujący } } Testowanie oprogramowania 19 / 32

JUnit testy jednostkowe w Javie Przykład Testujemy metodę max() z klasy java.lang.math import org.junit.test; import static org.junit.assert.assertequals; public class MyTestClass { @Test public void testmax() { } } assertequals( 3, (int)math.max(3,6) ); //oblany assertequals( 6, (int)math.max(3,6) ); //zaliczony Testowanie oprogramowania 20 / 32

CppUnit testy jednostkowe w C++ http://cppunit.sourceforge.net Podobnie jak Junit wspiera automatyczne przeprowadzanie testów 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki klasy testujące dziedziczą po klasie CppUnit::TestCase i przykrywają metodę wirtualną runtest() rezultat jest obiektem (referencją do obiektu) klasy CppUnit::TestResult Testowanie oprogramowania 21 / 32

CppUnit testy jednostkowe w C++ Test TestFixture TestSuite TestSuite TestCaller<TestFixture> TestRunner TexTestRunner TestResult Testowanie oprogramowania 22 / 32

CppUnit testy jednostkowe w C++ Przykład Przetestujemy następującą funkcję max(): int max (int a, int b) { if ( a > b ) { return a; } else { return b; } } Tworzymy klasę testującą: #include <cppunit/testresult.h> #include <cppunit/testcase.h> class Max_test : public CppUnit::TestCase { public: void runtest() { assert(max(1,2)==1); //sztucznie wprowadzony błąd! assert(max(2,1)==2); }; Testowanie oprogramowania 23 / 32

CppUnit testy jednostkowe w C++ Przykład Uruchamiamy test z klasy testującej: void main() { CppUnit::TestResult result; Max_test max; } max.run( &result ); Testowanie oprogramowania 24 / 32

Testy integracyjne sprawdzanie poprawności współpracy pomiędzy komponentami systemu coraz większe grupy komponentów są integrowane i testowane pod 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki kątem wzajemnej komunikacji (met. iteracyjna), do momentu przetestowania systemu jako całości wykrywa usterki w interfejsach Testowanie oprogramowania 25 / 32

Testy systemowe testowanie systemu z perspektywy użytkownika końcowego przeprowadzane na kompletnym (w pełni zintegrowanym) systemie 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki badanie pod kątem spełnienia wymagań funkcjonalnych testerzy umyślnie usiłują wywołać błędy, robiąc wszystko, czego tylko można się spodziewać po userze (ang. destructive attitude) Testowanie oprogramowania 26 / 32

Testy regresyjne Patch to poprawka do programu, usuwająca stare błędy i dodająca nowe. Prawo Murphy'ego 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki Błędy pojawią się w jednej części działającego programu, kiedy zmienisz drugą, zupełnie z nią niepowiązaną Prawo Murphy'ego Testowanie oprogramowania 27 / 32

Testy regresyjne polegają na ponownym testowaniu fragmentu programu po wprowadzeniu modyfikacji mają na celu upewnienie się, że wprowadzona poprawka/modyfikacja nie stworzyła nowych bugów w innych częściach programu częstą metodą przeprowadzania jest ponowne uruchomienie wcześniej zaliczonych testów sprawdzenie, czy nie pojawiają się nowe błędy Testowanie oprogramowania 28 / 32

Pozostałe testy Testy integracyjno-systemowe testowanie stworzonego systemu pod kątem współpracy z innymi (system jako komponent) 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki Testy odbioru ostateczne testowanie gotowej aplikacji, gotowej do przekazania klientowi klient może dokonać testów odbioru na własną rękę (UAT, ang. User Acceptance Testing) Testowanie oprogramowania 29 / 32

Hierarchia testów testy jednostkowe testowanie testy integracyjne testy regresyjne testy systemowe poprawki testy integracyjno-systemowe BŁĄD testy odbioru (developera) testy odbioru (klienta) wykrycie błędu Testowanie oprogramowania 30 / 32

Narzędzia wspomagające testowanie xunit umowna nazwa bibliotek/frameworków do testów jednostkowych dostępny dla wielu języków JIRA, trac, Bugzilla oprogramowanie wspomagające zarządzanie projektem, raportowanie błędów i usterek 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki Canoo WebTest, WatiN otwarte narzędzia do efektywnego testowania aplikacji webowych JSystem narzędzie do zautomatyzowanego tworzenia testów systemowych więcej: http://www.opensourcetesting.org/ Testowanie oprogramowania 31 / 32

Źródła, dalsze informacje http://wazniak.mimuw.edu.pl/ [PL] (kurs Zaawansowane CPP, wykład 4 - Testowanie ) http://en.wikipedia.org/wiki/software_testing [EN] (bardzo rozbudowany artykuł) http://www.testinggeek.com/ [EN] (portal dla testerów) 1. Testowanie wstęp 2. Refaktoryzacja 3. Pojęcia związane z testowaniem 4. Programowanie sterowane testami 5. Testy jednostkowe 5.1. JUnit 5.2. CppUnit 6. Testy integracyjne 7. Testy systemowe 8. Testy regresyjne 9. Pozostałe testy 10. Hierarchia testów 11. Narzędzia wspomagające testowanie 12. Źródła i przydatne linki http://www.ece.cmu.edu/~koopman/des_s99/sw_testing/ [EN] (artykuł na temat testowania oprogramowania) Książki: Software Testing: A Craftsman's Approach Paul Jorgensen Sztuka testowania oprogramowania Glenford J. Myers Testowanie oprogramowania 32 / 32