Tento Návod Vysvětluje, Jak Python může být Použit pro Zkušební Programování a Seznamy Funkcí a Porovnání Top Python Testování Rámcích:
S rozšířeným použití Umělé Inteligence, Python se stala populární programovací jazyk.
Tento kurz se bude týkat, jak Python může být použit pro zkušební programování spolu s některými Python-založené testování rámců.
začněme!!
=> zkontrolujte všechny Python tutoriály zde.
co je Python?
podle tradiční definice je Python interpretovaný obecný programovací jazyk na vysoké úrovni, který pomáhá programátorům psát zvládnutelný a logický kód pro malé i velké projekty.
Některé z výhod Krajty jsou:
- Žádné kompilace způsobuje rychlé vyřízení Editaci, Testování, Ladění cyklu.
- Snadné ladění
- Rozsáhlé support library
- Snadno se učí dat-struktura
- Vysoká produktivita
- Týmová spolupráce
Práce V Pythonu
- Interpret čte python kódu ze zdrojového souboru a zkoumá to syntaktická chyba.
- pokud je Kód bezchybný, interpret převede kód na ekvivalentní „bajtový kód“.
- tento bajtový kód je poté přenesen do virtuálního počítače Python (PVM), kde je bajtový kód znovu zkompilován pro případnou chybu.
co je testování Pythonu?
- automatizované testování je ve světě testování dobře známým kontextem. To je místo, kde testovací plány jsou prováděny pomocí skriptu místo člověka.
- Python je dodáván s nástroji a knihovnami, které podporují automatizované testování vašeho systému.
- testovací případy Pythonu se poměrně snadno zapisují. Se zvýšeným používáním Pythonu se také stávají populárními rámce pro automatizaci testů založené na Pythonu.
seznam testovacích rámců Pythonu
Níže jsou uvedeny některé testovací rámce Pythonu, které byste měli vědět.
- Robot
- PyTest
- Doctest
- Nose2
- svědčí
porovnání testovacích nástrojů Pythonu
pojďme rychle shrnout tyto rámce v krátké srovnávací tabulce:
Licence | Kategorie | Kategorie Speciální funkce |
||
---|---|---|---|---|
Robota |
Free software (ASF Licence} |
Python generic zkušební knihoven. | akceptační testování | testovací přístup založený na klíčových slovech. |
PyTest |
Free software (MIT License) | Stand alone, allows compact test suites. | Unit Testing | Special and simple class fixture for making testing easier. |
unittest |
Free software (MIT License) | Part of Python standard library. | Unit Testing | Fast test collection and flexible test execution. |
DocTest |
Free software (MIT License) | Part of Python standard library. | Unit Testing | Python Interactive Shell for the command prompt and inclusive application. |
Nose2 |
Free software (BSD License) |
Carries unittest features with additional feature and plugins. | unittest extension | A large number of plugins. |
Svědčit |
Free software (ASF Licence) |
Nese unittest a nos rysy s další funkce a pluginy. | unittest extension | test discovery enhancement. |
(Zkratky: MPO = Massachusetts Institute of Technology (1980), BSD = Berkeley Software Distribution (1988), ASF = Apache Software Foundation(2004))
Pojďme začít!!
#1) Robot
- nejoblíbenější rámec robota je open-source rámec pro testování automatizace založený na Pythonu.
- tento rámec je zcela vyvinut v Pythonu a používá se pro akceptační testování a Test-řízený vývoj. Styl klíčových slov se používá k psaní testovacích případů v rámci robota.
- Robot je schopen spuštění Java a .Čistý a také podporuje automatizaci testování na cross-platformy, jako je Windows, Mac OS a Linux na desktopové aplikace, mobilní aplikace, webové aplikace, atd.
- spolu s akceptačním testováním se Robot používá také pro automatizaci robotických procesů (RPA).
- Pip (Package Installer for Python) je vysoce doporučeno pro instalaci robota.
- použití tabulkových dat syntaxe, keyword-driven testování, bohaté knihovny & toolset, a paralelní testování jsou některé silné rysy Robota, které dělají to populární mezi testery.
příklad:
*** Settings ***Library SeleniumLibrary*** Variables ***${SERVER} localhost:7272${BROWSER} Firefox${DELAY} 0${VALID USER} demo${VALID PASSWORD} mode${LOGIN URL} http://${SERVER}/${WELCOME URL} http://${SERVER}/welcome.html${ERROR URL} http://${SERVER}/error.html*** Keywords ***Open Browser To Login Page Open Browser ${LOGIN URL} ${BROWSER} Maximize Browser Window Set Selenium Speed ${DELAY}Login Page Should Be Open Title Should Be Login PageGo To Login Page Go To ${LOGIN URL} Login Page Should Be OpenInput Username ${username} Input Text username_field ${username}Input Password ${password} Input Text password_field ${password}Submit Credentials Click Button login_buttonWelcome Page Should Be Open Location Should Be ${WELCOME URL} Title Should Be Welcome Page
zde je ukázka neúspěšného provedení testu.
Here is a sample of Successful Test Execution.
Packages/Methods:
Package Name | Working | Package Import |
---|---|---|
run() | To run tests. | from robot import run |
run_cli() | To run tests with command line argument. | z importu robota run_cli |
rebot () | pro zpracování testovacího výstupu. | od robot import rebot |
Odkaz na API: Robot Rámci Uživatelská Příručka
Odkaz ke Stažení: Robot,
#2) PyTest
- PyTest je open-source, Python-založené testování rámec, který je obecně pro všechny účely, ale zejména pro Funkční a testování API.
- Pip (Package Installer for Python) je vyžadován pro instalaci PyTest.
- podporuje jednoduchý nebo komplexní textový kód pro testování API, databází a UIs.
- jednoduchá syntaxe je užitečná pro snadné provedení testu.
- bohaté pluginy a je schopen spouštět testy paralelně.
- může spustit jakoukoli konkrétní podmnožinu testů.
příklad:
import pytest //Import unittest module//def test_file1_method(): //Function inside class// x=5 y=6 assert x+1 == y,"test failed"
pro spuštění testu použijte py.zkušební příkaz.
Screenshot pro referenci:
balíčky/metody:
Funkce | Parametry | Pracovní |
---|---|---|
pytest.cca (v) | očekávaný, rel=None, abs=None, nan_ok=False |
Tvrdit, že dvě čísla, nebo dvě sady čísel jsou přibližně se rovná nějaké rozdíly. |
pytest.fail () | msg (str) pytrace (bool) |
pokud vykonávající test explicitně selže, zobrazí se Zpráva. |
pytest.skip() | allow_module_level(bool) | Skip the executing test with the message shown. |
pytest.exit() | msg (str) returncode (int) |
Exit testing process. |
pytest.main() | args=None plugins=None |
Return exit code once in-process test execution is done. |
pytest.raises() | expected_exception: Expectation | Assert that a code block call raises expected_exception or to raise a failure exception |
pytest.warns() | expected_warning: Očekávání | Tvrdí pruhu s funkcemi |
Pokud chcete, aby přístup k test psaný v konkrétním souboru, použijeme následující příkaz.
py.test <filename>
Pytest Svítidla: Pytest Přípravek se používá ke spuštění kódu před spuštěním zkušební metody, aby se zabránilo opakování kódu. To se v podstatě používá k inicializaci připojení k databázi.
můžete definovat pytest svítidlo, jak je uvedeno níže.
@pytest.fixture
Assertion: Assertion je podmínka, která vrací true nebo false. Provedení testu se zastaví, když tvrzení selže.
Vzhledem k tomu, níže je Příklad:
def test_string_equal():assert double(55) == 62assert 25 == 62+ where 25 = double(55)
Odkaz na API: Pytest API
Odkaz ke Stažení: Pytest
#3) Unittest
- Unittest je první Python-založené automatizované jednotky testovací rámec, který byl navržen tak, aby práce s Python standardní knihovny.
- podporuje opětovné použití testovacích obleků a testovací organizace.
- byl inspirován JUnit a podporuje automatizaci testů včetně testovacích kolekcí, nezávislosti testů, instalačního kódu pro Testy atd.
- je také nazýván jako PyUnit.
- Unittest2 je backport dalších nových funkcí přidaných do Unittest.
standardní pracovní postup Unittest:
- Importujte modul Unittest do programového kódu.
- můžete definovat vlastní třídu.
- Vytvořte funkce uvnitř třídy, kterou jste definovali.
- místo unittest.main (), což je hlavní metoda ve spodní části kódu pro spuštění testovacího případu.
Příklad:
import unittest //Import unittest module//def add(x,y): return x + yclass Test(unittest.TestCase): //Define your class with testcase// def addition(self): self.assertEquals(add(4,5),9)<strong>//Function inside class//if __name__ == '__main__': unittest.main()<strong>//Insert main() method//
Obrázek:
Balíčky/Metody:
Způsob, | Pracovní |
---|---|
setUp() | Volal před zkušební metoda provedení připravit zkušební instalaci. |
tearDown () | volal po provedení zkušební metody, i když test vyvolá výjimku. |
setUpClass () | voláno po testech v jednotlivé třídě. |
tearDownClass () | voláno po testech v jednotlivé třídě. |
spustit () | spustit test s výsledky. |
debug () | spusťte test bez výsledku. |
addTest () | přidejte zkušební metodu do testovací sady. |
Discover () | najde všechny testovací moduly v podadresářích z konkrétního adresáře. |
assertEqual (a,b) | pro testování rovnosti dvou objektů. |
asserTrue / assertFalse (podmínka) | pro testování Booleovské podmínky. |
(Poznámka: unittest.mock() je Knihovna pro testování Pythonu, která umožňuje nahradit systémové části falešnými objekty. Třída Core mock pomáhá snadno vytvořit testovací sadu.)
Odkaz na API: Unittest API
Odkaz ke Stažení: Unittest
#4) DocTest
- Doctest je modul, který je součástí Python je standardní distribuce a je používán pro White-box Testování jednotek.
- vyhledává interaktivní relace Pythonu, aby zkontroloval, zda fungují přesně podle potřeby.
- využívá selektivní Možnosti Pythonu, jako jsou docstrings, Python interactive shell a Python introspection (určení vlastností objektů za běhu).
- Základní Funkce:
- Aktualizace docstring
- Provedení Regresní Testování
- funkce testfile() a testmod() se používají k zajištění základní rozhraní.
Příklad:
def test(n): import math if not n >= 0: raise ValueError("n must be >= 0") //number should be 0 or greater than 0 if math.floor(n) != n: raise ValueError("n must be exact integer") //Error when number is not an integer if n+1 == n: raise OverflowError("n too large") //Error when number is too large r = 1 f = 2 while f <= n: //Calculate factorial r *= f f += 1 return rif __name__ == "__main__": import doctest //Import doctest doctest.testmod() //Calling the testmod method
Obrázek:
Balíčky/Funkce:
Function | Parameters |
---|---|
doctest.testfile() | filename (mendatory) |
doctest.testmod() | m]
|
doctest.DocFileSuite() | *paths, |
doctest.DocTestSuite() |
Note: Pro kontrolu interaktivní příklady v textu souboru můžeme použít testfile funkce ();
doctest.testfile ("example.txt”)
můžete přímo spustit test z příkazové řádky s;
python factorial.py
Odkaz na API: DocTest API
Odkaz ke Stažení: Doctest
#5) Nose2
- Nose2 je nástupcem Nos a to je Python-based Jednotka Testování rámec, který lze spustit Doctests a UnitTests.
- Nose2 je založen na unittest proto je označován jako rozšíření unittest nebo unittest s plugin, který byl navržen tak, aby testování jednoduché a jednodušší.
- nos používá kolektivní testy od unittest.testcase a podporuje více funkcí pro psaní testů a výjimek.
- nos podporuje balení příslušenství, třídy, moduly, a komplexní inicializace, které mají být definovány v jednom okamžiku namísto psaní často.
Příklad:
from mynum import *import nosedef test_add_integers(): assert add(5, 3) == 8def test_add_floats(): assert add(1.5, 2.5) == 4def test_add_strings(): nose.tools.assert_raises(AssertionError, add, 'paul', 'carol') // To throw one of the expected exception to passif __name__ == '__main__': nose.run()
Obrázek:
Balíčky/Metody:
Method | Parameters | Working |
---|---|---|
nose.tools.ok_ | (expr, msg = None) | Shortcut to assert. |
nose.tools.ok_ | (a,b, msg = None) | Shortcut to ‘assert a==b, „%r != %r” % (a, b) |
nose.tools.make_decorator | (func) | To replicate metadata for the given function. |
nose.tools.zvyšuje | (*výjimka) | hodit jednu z očekávaných výjimek projít. |
nos.nástroj.časovaný | (limit) | pro určení časového limitu, během kterého by měl test projít. |
nos.nástroj.with_setup | (setup=None, teardown=None) | pro přidání metody nastavení do testovací funkce. |
nos.nástroj.intest | (func) | metodu nebo funkci lze označit jako test. |
nos.nástroj.nottest | (func) | metodu nebo funkci nelze označit jako test. |
Odkaz na API: Pluginy pro Nose2
Odkaz ke Stažení: Nose2
#6) Svědčit
- Svědčit byl navržen tak, aby nahradit unittest a nos. Svědčit má pokročilejší funkce přes unittest.
- Svědčit je populární jako Java implementace sémantického testování (Snadno se učí a provádění testování softwaru specifikace).
- provedení automatizované jednotky, integrace a testování systému je snadnější svědčit.
funkce
- jednoduchá syntaxe k fixační metodě.
- improvizovaný testovací objev.
- nastavení na úrovni třídy a metoda odtrhávání.
- rozšiřitelný plugin systém.
- snadno ovladatelné testovací nástroje.
Příklad:
from testify import *class AdditionTestCase(TestCase): @class_setup def init_the_variable(self): self.variable = 0 @setup def increment_the_variable(self): self.variable += 1 def test_the_variable(self): assert_equal(self.variable, 1) @suite('disabled', reason='ticket #123, not equal to 2 places') def test_broken(self): # raises 'AssertionError: 1 !~= 1.01' assert_almost_equal(1, 1.01, threshold=2) @teardown def decrement_the_variable(self): self.variable -= 1 @class_teardown def get_rid_of_the_variable(self): self.variable = Noneif __name__ == "__main__":run()
Obrázek:
Balíčky/Metody:
Název | Pracovní | Balení dovoz |
---|---|---|
tvrdit | Poskytuje komplexní testovací nástroje pro testování systému. | import „github.com/stretchr/testify/assert“ |
mock | užitečné pro testování objektů a volání. | import „github.com/stretchr/testify/mock“ |
require | funguje stejně jako assert, ale zastaví provádění testů, když testy selžou. | import „github.com / stretchr / svědčit / vyžadovat “ |
suite | poskytuje logiku pro vytváření struktury a metod testování sady. | import „github.com/stretchr/testify/suite“ |
Odkaz na API: Balíček soubory Svědčit
Odkaz ke Stažení: Svědčit
Další Python Testování Rámec
zatím jsme zkontrolovali nejvíce populární Python Testování Rámec. Na tomto seznamu je několik dalších jmen, která by se v budoucnu mohla stát populární.
#7) chovat
- chovat se označuje jako BDD (Behavior Driven Development) testovací rámec, který se také používá pro testování černé skříňky. Behavior používá přirozený jazyk pro psaní testů a pracuje s řetězci Unicode.
- chovat adresář obsahuje soubory funkcí, které mají formát prostého textu vypadá jako přirozeného jazyka a Python krok implementace.
Odkaz na API: Chovat Uživatelská Příručka
Odkaz ke Stažení: Chovat
#8) Salát
- Salát je užitečné pro Chování Řízený Vývoj Testování. Díky tomu je proces testování snadný a škálovatelný.
- salát obsahuje kroky jako:
- popisující chování
- definice kroků v Pythonu.
- spuštění kódu
- modifikující kód projít testem.
- spuštění upraveného kódu.
- tyto kroky jsou dodržovány 3 – 4 krát, aby byl software bezchybný a tím zlepšil jeho kvalitu.
Odkaz na API: hlávkový Salát Dokumentace
Odkaz ke Stažení: Salát
Často Kladené Otázky A Odpovědi
Pojďme se podívat na některé nejčastější Dotazy na toto téma-
Q #1) Proč je Python používán pro automatizaci?
odpověď: protože „Python přichází s nástroji a knihovnami, které podporují automatizované testování vašeho systému“, existuje několik dalších důvodů, proč se Python používá pro testování.
- Python je objektově orientovaný a funkční, který umožňuje programátorům závěr o tom, zda funkce a třídy jsou vhodné dle požadavků.
- Python nabízí bohatou knihovnu užitečných balíčků pro testování po instalaci ‚Pip‘.
- funkce bez státní příslušnosti a jednoduchá syntaxe jsou užitečné pro vytvoření čitelných testů.
- Python hraje roli mostu mezi testovacím případem a testovacím kódem.
- Python podporuje dynamické psaní kachen.
- nabízí dobře nakonfigurované IDE a dobrou podporu rámce BDD.
- bohatá podpora příkazového řádku je užitečná pro ruční kontrolu.
- jednoduchá a dobrá struktura, modularita, bohatá sada nástrojů a balíčky mohou být užitečné pro vývoj měřítka.
Q #2) jak strukturovat Python test?
odpověď: než vytvoříte test v Pythonu, měli byste zvážit dvě věci, jak je uvedeno níže.
- který modul/část systému chcete otestovat?
- jaký typ testování se rozhodujete (zda jednotkové testování nebo integrační testování)?
celková struktura Python Test je stejně jednoduché jako ostatní, kde se rozhodneme složek testy, jako jsou vstupy, test kód, který bude proveden, výstup a porovnání výstupů s očekávanými výsledky.
Q #3) který automatizační nástroj je napsán v Pythonu?
odpověď: Buildout je automatizační nástroj, který je napsán a rozšířen pomocí Pythonu a používá se pro automatizaci sestavení softwaru. Buildout může být použitelný pro všechny fáze softwaru od vývoje až po nasazení.
Tento nástroj je založen na 3 základních principech:
- Opakovatelnost: uvádí projekt konfigurace, vyvinutý ve stejném prostředí by měl produkovat stejný výsledek bez ohledu na jejich historii.
- Componentization: softwarová služba by měla obsahovat nástroje pro vlastní monitorování a měla by konfigurovat monitorovací systém při nasazení produktu.
- automatizace: nasazení softwaru by mělo být vysoce automatizované a časově úsporné.
Q #4) lze Python použít se selenem?
Odpověď: Ano. Jazyk Python se používá se selenem k provádění testování. Python API je užitečné pro připojení k prohlížeči přes Selenium. Python Selenium combination lze použít k psaní funkčních / akceptačních testů pomocí Selenium WebDriver.
Q #5) je selen s Pythonem dobrý?
odpověď: Existuje několik důvodů, proč jsou selen a Python považovány za dobrou kombinaci:
- selen má nejsilnější sadu nástrojů pro podporu rychlé automatizace testů.
- selen nabízí speciální testovací funkce pro testování webových aplikací, které pomáhají zkoumat skutečné chování aplikací.
- zatímco Python je skriptovací jazyk na vysoké úrovni, objektově založený a uživatelsky přívětivý s jednoduchou strukturou klíčových slov.
Nyní, pokud jde o použití selenu s Pythonem, má několik výhod, jak je uvedeno níže.
- snadno kódovat a číst.
- Python API je velmi užitečné pro připojení k prohlížeči prostřednictvím selenu.
- Selenium vysílá standardní příkaz Pythonu do různých prohlížečů bez ohledu na jeho konstrukční varianty.
- Python je poměrně jednoduchý a kompaktní než ostatní programovací jazyky.
- Python přichází s velkou komunitou, která podporuje ty, kteří jsou zcela noví, aby používali selen s Pythonem k provádění automatizačních testů.
- je svobodný a otevřený programovací jazyk po celou dobu.
- Selenium WebDriver je dalším silným důvodem pro použití selenu s Pythonem. Selenium WebDriver má silnou podporu vazby pro snadné uživatelské rozhraní Pythonu.
Q #6) jaká jsou opatření pro výběr nejlepšího testovacího rámce Pythonu?
odpověď: Při výběru nejlepšího testovacího rámce Pythonu je třeba vzít v úvahu níže uvedené body:
- Pokud kvalita a struktura skriptů splňuje vaše účely. Programovací skript by měl být snadno srozumitelný/udržovatelný a bez vad.
- programové struktury Python hraje důležitou roli při výběru testování rámec, který se skládá – Atributy, příkazy, funkce, operátory, moduly a soubory knihovny norem.
- jak snadno můžete generovat testy a v jakém rozsahu je lze znovu použít?
- metoda použitá pro provedení zkušebního/zkušebního modulu (techniky běhu modulu).
Q #7) Jak vybrat nejlepší testovací rámec Pythonu?
odpověď: pochopení výhod a omezení každého rámce je lepší způsob, jak vybrat nejlepší testovací rámec Pythonu. Pojďme prozkoumat –
Robot Framework:
výhody:
- testovací přístup založený na klíčových slovech pomáhá snadněji vytvářet čitelné testovací případy.
- více API
- snadná syntaxe testovacích dat
- podporuje paralelní testování pomocí selenové mřížky.
omezení:
- vytváření přizpůsobených HTML reportů je s robotem poměrně složité.
- menší podpora paralelního testování.
- vyžaduje Python 2.7.14 a vyšší.
Pytest:
výhody:
- podporuje kompaktní testovací sadu.
- není třeba debugger ani explicitní testovací protokol.
- více příslušenství
- rozšiřitelné pluginy
- snadné a jednoduché vytvoření testu.
- je možné vytvořit testovací případy s menším počtem chyb.
omezení:
- není kompatibilní s jinými frameworky.
Unittest:
výhody:
- Není potřeba žádný další modul.
- snadno se učí pro testery na úrovni začátečníků.
- jednoduché a snadné provedení testu.
- Rapid test report generation.
Omezení
- snake_case pojmenování Python a camelCase pojmenování JUnit způsobit trochu zmatek.
- nejasný záměr zkušebního kódu.
- vyžaduje obrovské množství kódu kotle.
Doctest:
výhody:
- dobrá volba pro provádění malých testů.
- zkušební dokumentace v rámci metody také poskytuje další informace o tom, jak metoda funguje.
omezení
- porovnává pouze tištěný výstup. Jakákoli změna výstupu způsobí selhání testu.
nos 2:
výhody:
- nos 2 podporuje více konfigurace testování než unittest.
- obsahuje podstatnou sadu aktivních pluginů.
- odlišné API od unittest, které poskytuje více informací o chybě.
omezení:
- při instalaci pluginů třetích stran musíte nainstalovat instalační nástroj / distribuovat balíček, protože Nose2 podporuje Python 3, ale ne pluginy třetích stran.
svědčit:
výhody:
- snadno pochopitelné a použití.
- jednotky, integrace a systémové testy lze snadno vytvořit.
- zvládnutelné a opakovaně použitelné testovací komponenty.
- přidání nových funkcí svědčit snadné.
omezení:
- Původně Svědčit byl vyvinut s cílem nahradit unittest a Nos, ale proces tranzitující to pytest je, takže to je doporučeno pro uživatele, aby se zabránilo používání Svědčit o několika připravovaných projektech.
Chovat Rámce:
Výhody:
- Snadné provedení všech typů testovacích případů.
- detailní zdůvodnění & myšlení
- jasnost QA / Dev výstupu.
omezení:
- podporuje pouze testování černé skříňky.
salát Framework:
výhody:
- jednoduchý jazyk pro vytvoření více testovacích scénářů.
- užitečné pro testovací případy řízené chováním pro testování černé skříňky.
Omezení:
- silně vyžaduje silnou koordinaci mezi vývojáři, testery & zúčastněnými stranami.
můžete si vybrat nejvhodnější testovací rámec Pythonu zvážením výše uvedených výhod a omezení, které vám pomohou vytvořit kritéria vhodná pro vaše obchodní potřeby.
Q #8) který rámec je nejlepší pro automatizaci Pythonu?
odpověď: Při zvažování výhod a omezení, můžeme uvažovat o testování typu jako jedno z opatření pro volbu best testování rámec:
- Funkční Testování: Robot, PyTest, Unittest
- Chování-Driven Testování: Chovat, hlávkový Salát
Robot je nejlepší rámec pro ty, kteří jsou na Python testování a chtějí získat solidní start.
Závěr
Podjednotky, Zkušební, Testovací prostředky, Sancho, Testtools jsou některé další názvy přidané do seznamu Python Testování Rámec. Existuje však jen několik nástrojů, které byly popularizovány, protože testování Pythonu je poměrně nový koncept, který je zaveden do testovacího světa.
společnosti pracují na tom, aby tyto nástroje byly lepší, aby byly snadno pochopitelné a provedly testování. S bohatými a přesnými třídy svítidel, modulů a balíků těchto nástrojů se mohou stát dobře-zběhlý a vhodnější pro provádění Python Testování.
mezitím výše uvedené rámce od unittest svědčit poskytují tolik potřebnou podporu a služby k dosažení zamýšleného výkonu systému.