{ "cells": [ { "cell_type": "markdown", "metadata": {}, "source": [ "![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n", "
\n", "

Przygotowanie do projektu badawczo-rozwojowego

\n", "

9. Testowanie systemowe i adaptacyjne[wykład]

\n", "

Krzysztof Jassem (2021)

\n", "
\n", "\n", "![Logo 2](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech2.jpg)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 1. Testowanie systemowe i adaptacyjne - wyjaśnienie pojęć" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Testowanie systemowe

\n", " \n", "Przedmiotem testowania systemowego jest całość oprogramowania zainstalowana w pewnym środowisku wykonawczym.\n", " * Środowisko testowania musi być zbliżone do środowiska pracy.\n", " * Testowanie systemowe odbywa się metodą „czarnej skrzynki”.\n", "
" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "

Testowanie adaptacyjne

\n", " \n", "Przedmiotem testowania adaptacyjnego jest oprogramowanie stanowiące przedmiot dostawy do użytkownika w docelowym środowisku pracy.\n", " * Testowana jest zgodność z wymaganiami i potrzebami użytkownika.\n", " * Testowanie akceptacyjne przeprowadza użytkownik / klient.\n", "
" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "# 2. Typy testowania systemowego" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2.1. Testowanie funkcjonalne (functional testing)\n", "**Testowanie funkcjonalne** ma na celu wykazanie rozbieżności między programem a jego specyfikacją zapisaną w postaci wymagań funkcjonalnych lub przypadków użycia.\n", " * Przypadki testowe (scenariusze testowe) wielokrotnie tworzy się na podstawie przypadków użycia.\n", " * Podstawowa zasada:Im więcej błędów wykryto w pewnej funkcji programu, tym (prawdopodobnie) większą liczbę błędów ona jeszcze ukrywa.\n", " * Testowanie funkcjonalne może odbywać się na różnych poziomach szczegółowości:\n", " * testy dymne\n", " * testy zdroworozsądkowe\n", " * testy regresywne" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Testy dymne\n", "**Testy dymne** (ang. smoke tests) to powierzchowne testy pozwalające wykazać błędy krytyczne,\n", " * Przykładem testu dymnego może być test CRUD (Create, Read, Update, Delete).\n", " \n", "**Przykład opisu testów dymnych:**\n", "\"Przykład" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Testy zdroworozsądkowe\n", "**Testy zdroworozsądkowe** mają wykazać, że aplikacja nie działa zgodnie ze stawianymi przed nią wymaganiami.\n", ">\"Smoke test określa, czy w ogóle coś działa, a sanity test - czy działa tak, jak ma działać”.\n", "\n", "**Przykład przypadków testowych na poziomie testowania regresywnego:**\n", "\"Przykład" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Testy regresywne\n", "**Testy regresywne** to szczegółowe testy, pozwalające wykazać, że w aplikacji powstały nieznane błędów będące wynikiem wprowadzonych zmian.\n", "\n", "**Przykład przypadku testowego na poziomie testowania regresywnego:**\n", "\"Przykład" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "### Raport z testowania funkcjonalnego\n", "Przypadki testowe w testowaniu funkcjonalnym warto tworzyć w takiej formie, aby łatwo można je było rozszerzyć o wyniki testowania - tworząc raport z testowania.\n", "\n", "**Fragment raportu z testowania funckjonalnego:**\n", "\"Przykład\n", "\n", "W raporcie z testowania można zawrzeć dodatkowe informacje np. o wydajności działania danego przypadku testowego." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2.2. Testowanie wydajności (performance testing)\n", "Zadaniem **testowania wydajności** jest wykazanie, że system nie daje odpowiedzi w wystarczająco krótkim czasie pod ustalonym obciążeniem produkcyjnym, np. przy dużym wolumenie przetwarzanych danych.\n", "\n", "**Przykładowy fragment raportu z testowania wydajności systemu tłumaczenia:**\n", "\"Przykład\n", "\n", "**Stronę internetową** można bardzo szybko przetestować pod kątem wydajności, korzystając np. z narzędzia dostępnego na stronie https://webspeed.intensys.pl/.\n" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2.3. Testowanie przeciążeń (load testing)\n", "**Przeciążenie** to skumulowanie w krótkim czasie dużej liczby jednocześnie działających użytkowników lub przeprowadzanych transakcji. \n", "\n", "Celem **testowania przeciążeń** jest zweryfikowania działania systemu przy wysokim obciążeniu.\n", " * Przykładowy scenariusz testowania przeciążeń:\n", " * Nagranie ciągu operacji wykonywanych przez jednego klienta (np. \u000b", "w postaci makra)\n", " * Odtworzenie nagranego ciągu operacji dla wybranej (dużej) liczby klientów\n", " * Analiza raportu\n", "\n", "**Przykład raportu tekstowego z testu przeciążeń systemu tłumaczenia:**\n", "\"Przykład\n", "\n", "**Przykład raportu graficznego z testu przeciążeń systemu tłumaczenia:**\n", "\"Przykład" ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2.4. Testowanie pamięci (memory testing)\n", "Celem **testowania pamięci** jest wykazanie, że system narusza narzucone wymagania pamięciowe." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2.5. Testowanie ochrony danych (security testing)\n", "Proces ma wykazać, że dane nie są chronione w odpowiedni sposób.\n", " * Przypadki testowe mają wymusić naruszenie mechanizmów ochrony danych." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2.6. Testowanie konfiguracji\n", "**Testowanie konfiguracji** ma na celu zweryfikowanie działania systemu w różnych konfiguracjach sprzętowych i programowych.\n", " * Testowanie może odbywać się za pomocą specjalnie przygotowanej maszyny wirtualnej.\n", " * Dla serwisów webowych istotne jest testowanie różnych urządzeń oraz różnych typów przeglądarek." ] }, { "attachments": {}, "cell_type": "markdown", "metadata": {}, "source": [ "## 2.7. Testowanie zgodności wersji\n", "**Testowanie zgodności wersji** ma na celu wykazanie niezgodności z przeszłymi wersjami programów:\n", " * testowanie patchów i aktualizacji,\n", " * testowanie nowych wersji." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Strategie testowania integracyjnego" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Środowisko testowania systemowego" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Testowanie manualne: \n", "### Testowanie eksploracyjne\n", "### Testowanie sesyjne\n", "### Testowanie akceptacyjne" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "## Testowanie automatyczne\n", "### Testowanie oparte na nagrywaniu\n", "### Testowanie oparte na słowach kluczowych\n", "### Testowanie oparte na zachowaniu" ] } ], "metadata": { "author": "Krzysztof Jassem", "email": "jassem@amu.edu.pl", "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "lang": "pl", "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.8.5" }, "subtitle": "09. Testowanie integracyjne i systemowe[wykład]", "title": "Przygotowanie do projektu badawczo-rozwojowego", "year": "2021" }, "nbformat": 4, "nbformat_minor": 4 }