forked from AITech/aitech-ppb-pbr
273 lines
9.3 KiB
Plaintext
273 lines
9.3 KiB
Plaintext
{
|
|
"cells": [
|
|
{
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"![Logo 1](https://git.wmi.amu.edu.pl/AITech/Szablon/raw/branch/master/Logotyp_AITech1.jpg)\n",
|
|
"<div class=\"alert alert-block alert-info\">\n",
|
|
"<h1> Przygotowanie do projektu badawczo-rozwojowego</h1>\n",
|
|
"<h2> 9. <i>Testowanie systemowe i adaptacyjne</i>[wykład]</h2> \n",
|
|
"<h3>Krzysztof Jassem (2021)</h3>\n",
|
|
"</div>\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": [
|
|
"<div class=\"alert alert-block alert-success\">\n",
|
|
"<h3>Testowanie systemowe</h3>\n",
|
|
" \n",
|
|
"Przedmiotem <b>testowania systemowego</b> 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",
|
|
"</div>"
|
|
]
|
|
},
|
|
{
|
|
"attachments": {},
|
|
"cell_type": "markdown",
|
|
"metadata": {},
|
|
"source": [
|
|
"<div class=\"alert alert-block alert-success\">\n",
|
|
"<h3>Testowanie adaptacyjne</h3>\n",
|
|
" \n",
|
|
"Przedmiotem <b>testowania adaptacyjnego </b> 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",
|
|
"</div>"
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"<img src=\"obrazy/testy dymne.png\" alt=\"Przykład testów dymnych\" width=400px>"
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"<img src=\"obrazy/sanity test.png\" alt=\"Przykład testów zdroworozsądkowych\" width=900px>"
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"<img src=\"obrazy/testy regresywne.png\" alt=\"Przykład testów regresywnych\" width=900px>"
|
|
]
|
|
},
|
|
{
|
|
"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",
|
|
"<img src=\"obrazy/raport z testowania.png\" alt=\"Przykład raportu z testowania\" width=900px>\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",
|
|
"<img src=\"obrazy/raport z testowania.png\" alt=\"Przykład raportu z testowania\" width=900px>\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",
|
|
"<img src=\"obrazy/load test - raport tekstowy.png\" alt=\"Przykład raportu z testowania\" width=800px>\n",
|
|
"\n",
|
|
"**Przykład raportu graficznego z testu przeciążeń systemu tłumaczenia:**\n",
|
|
"<img src=\"obrazy/load test - raport graficzny.png\" alt=\"Przykład raportu z testowania\" width=800px>"
|
|
]
|
|
},
|
|
{
|
|
"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
|
|
}
|