Inżynieria oprogramowania zajmuje się teorią, metodami i narzędziami związanymi z wytwarzaniem programowania. Zajmuje się efektywnymi metodami wytwarzania i implementowania oprogramowania.
Proces tworzenia oprogramowania- Specyfikacja oprogramowania - Tworzenie oprogramowania - Zatwierdzenie oprogramowania - Ewolucja oprogramowania.
Modele cyklu życia oprogramowania- Model kaskadowy - Model ewolucyjny - Model przyrostowy - Model spiralny.
Awaryjności systemów: Zatoka Perska – 1988 r. Blackout – 2003 r.
Weryfikacja oprogramowania ma na celu sprawdzenie, czy wytwarzane oprogramowanie jest zgodne ze specyfikacją.
Walidacja sprawdza, czy oprogramowanie jest zgodne z oczekiwaniami użytkownika.
Standardy testów - IEEE 829 – określający formę zbioru 8 dokumentów potrzebnych w każdej z faz testowania.
Testy funkcjonalne - wcielamy się w rolę użytkownika, traktując oprogramowanie jak „czarną skrzynkę”, która wykonuje określone zadania. (black box testing).
Testy strukturalne. - tester ma dostęp do kodu źródłowego oprogramowania, może obserwować jak zachowują się różne części aplikacji, jakie moduły i biblioteki są wykorzystywane w trakcie testu. (white box testing).
Testy możemy także podzielić ze względu na:
-Sposób przeprowadzania
-Zakres aplikacji jaki obejmują testy
- Przeznaczenie
- Testy wydajnościowe i obciążeniowe
Podział ze względu na zakres aplikacji jaki obejmują testy
Testy jednostkowe testują oprogramowanie na najbardziej podstawowym poziomie podstawowym pojedynczych funkcji (metod).
Testy integracyjne pozwalają sprawdzić jak współpracują ze sobą różne komponenty oprogramowania,
Testy systemowe dotyczą działania aplikacji jako całości, zazwyczaj na tym poziomie testujemy: szybkość działania, bezpieczeństwo, niezawodność, dobrą współpracę z innymi aplikacjami i sprzętem.
Podział ze względu na przeznaczenie
Testy akceptacyjne – testy wykonywane w celu sprawdzenia na ile oprogramowanie działa zgodnie z wymaganiami klienta
Testy funkcjonalne – testy sprawdzające działanie oprogramowania zgodnie ze specyfikacją.
Testy regresyjne –Celem testów regresyjnych jest sprawdzenie, czy dodając nową funkcjonalność, poprawiając błędy nie naruszyliśmy niespodziewanie innej funkcjonalności oprogramowania.
Testy wydajnościowe i obciążeniowe
Testy instalacyjne/testy konfiguracji –jak oprogramowanie zachowuje się na różnych platformach sprzętowych, systemach operacyjnych.
Testy wersji alfa i beta – testy te służą głównie zdobyciu informacji zwrotnej od użytkowników.
Testy używalności – tzw. usability tests, służą temu by sprawdzić jak szybko potencjalni użytkownicy mogą opanować działanie aplikacji,
Testy post -awaryjne – testy służące sprawdzeniu, czy aplikacja zachowuje się poprawnie po wystąpieniu sytuacji awaryjnej.
Testy zautomatyzowane
assertEquals(a, b) – sprawdza, czy parametr a jest równy b (a i b mogą być tutaj typami prostymi oraz klasami, ale jeśli są typem dynamicznym, to muszą implementować metodę equals)
assertFalse(a) – sprawdza, czy wyrażenie logiczne a zwraca wartość false
assertNotNull(a) – sprawdza, czy a jest różne od null, przy czym a jest referencją do obiektu
assertNotSame(a, b) – sprawdza, czy parametry a i b nie wskazują na ten sam obiekt
assertNull(a) – sprawdza, czy referencja a ma wartość null
assertSame(a, b) – sprawdza, czy parametry a i b wskazują na ten sam obiekt
assertTrue(a) – sprawdza, czy wyrażenie logiczne a zwraca wartość true