it-swarm-eu.dev

Co je přesně integrační test?

S mými přáteli jsme se snažili přesně klasifikovat, co je integrační test.

Nyní, na cestě domů, jsem si právě uvědomil, že pokaždé, když se snažím uvést příklad integračního testu v reálném světě, ukáže se to jako akceptační test, tj. něco, co by podnikatel řekl nahlas, že určuje, co by systém měl dodávat.

Zkontroloval jsem dokumentaci Ruby on Rails) pro klasifikaci těchto typů testování a nyní mě úplně hodil.

Můžete mi dát krátký akademický popis integračního testu s příkladem ze skutečného světa?

116
Martin Blore

V tuto chvíli se mi líbí toto prohlášení: „Není důležité, jak tomu říkáte, ale co dělá“, vytvořil Gojko Adzic v tento článek .

Opravdu musíte s lidmi, kteří mluví o testech, specifikovat, co chcete testovat.

Existuje mnoho lidí, kteří mají různé názory, v závislosti na jejich roli.

Pro testery je v Nizozemsku obecně přijímaná metodologie testování TMap . TMap dělá následující rozlišení.

  • test jednotky
  • test integrace jednotky
  • test systému
  • test systémové integrace
  • akceptační test (všechny druhy/úrovně)
  • funkční přejímací test
  • akceptační test uživatele
  • přejímací zkouška výroby

Mají konkrétnější druhy testů, které mohou být provedeny v rámci výše uvedených testů. Podívejte se na tento dokument Word , kde je přehled.

Wikipedia má také pěkný přehled .

rezervovat pragmatický programátor říká:

  • test jednotky je test provádějící modul
  • integrační testy ukazují, že hlavní části systému dobře spolupracují

Když jsem se podíval na tyto různé zdroje a uvedl některé své vlastní zkušenosti a názory, začal bych rozlišováním podle tří kategorií

  • kdo testuje obecně
  • co je testováno
  • co je cílem testu

    • Test jednotky : testovací logika ve třídách programátory pro zobrazení správnosti úrovně kódu. Měly by být rychlé a neměly by záviset na jiných částech systému, které nechcete testovat
    • Funkční akceptační test : testuje scénář případu použití na omezené (speciálně vytvořené) datové sadě provedené testovacím oddělením, aby se ukázalo, že každý specifický scénář funguje tak, jak je uvedeno.
    • Test akceptace uživatele : testuje scénář použití případu na produkci jako data provedená zástupci uživatelů, aby byli formálně akceptováni aplikací
    • Test integrace : Testujte komunikační cesty mezi různými částmi modulu provedené testovacím oddělením nebo vývojáři, aby se ukázalo, že všechny moduly pracují správně společně.

Můj seznam výše je jen začátek a návrh, ale opravdu si myslím: „Není důležité, jak tomu říkáte, ale co dělá“

Snad to pomůže.

26-10-2016 Úpravy: Nedávno byl na YouTube umístěn velmi pěkný úvod Testy jednotek vs. Integrační testy - MPJ's Musings - FunFunFunction # 55

81
KeesDijk

integrační test, ukáže se, že jde o akceptační test

Očividně.

Tito dva jsou téměř stejná věc. Definice testu má ale trochu jiné rozměry.

Integrace == systém jako celek.

Přijetí == systém jako celek.

Jediný rozdíl - a to je nepatrný - je definice testovacích případů.

Integrace == testovací případy pro testování hloubky a stupně integrace. Funguje to pro všechny případy Edge a rohové případy? Testovací případy bývají technické, psané designéry a kodéry.

Akceptace == testovací případy pro výkon pouze 80% sady funkcí zaměřené na koncového uživatele. Ne všechny případy hran a rohů. Testovací případy bývají netechnické, psané konečnými uživateli.

31
S.Lott

Osobně bych si představil integrační test jako test funkce, když je každá součást systému skutečná, žádné falešné objekty.

Skutečné úložiště, skutečná databáze, skutečné uživatelské rozhraní. Specifickou funkčnost otestujete, když je systém kompletně sestaven a je jako by měl být při nasazení.

16
user8685

Ve své (přiznávám) malé zkušenosti jsem pochopil, že integrace Wordu může skutečně způsobit nedorozumění: opravdu je těžké najít něco zcela izolovaného v systému, některé prvky budou potřebovat jistou integraci.

Tak jsem si zvykl dělat následující rozdíly:

  • Používám test jednotky k identifikaci, zdokumentování a zdůraznění veškerého chování, za které je třída, kterou testuji, zodpovědná.
  • Dělám integrační testy pokaždé, když mám v mém systému komponentu (možná více než jednu), která vede nějakou konverzaci s jiným "externím" systémem. (pokračuje níže ...)
  • Implementuji akceptační test k definování, zdokumentování a zdůraznění určitého pracovního postupu, který systém očekává.

V definici integračního testu jsem externě myslel systém, který je mimo můj vývojový rozsah: Nemůžu okamžitě změnit způsob, jakým se chovají, z jakéhokoli důvodu. Mohla by to být knihovna, součást systému, kterou nelze změnit (tj. Je sdílen s jinými projekty ve společnosti), dbms atd. Pro tyto testy musím nastavit něco velmi podobného reálnému prostředí systému bude fungovat v: externí systém musí být inicializován a nastaven do určitého stavu; realistická data musí být zaregistrována v db; atd.

Místo toho, když dělám akceptační testování I falešné věci: Pracuji na něčem jiném, pracuji na specifikacích systému, ne na jeho schopnosti spolupracovat s externími entitami.

To je ve skutečnosti užší pohled ve srovnání s tím, co KeesDijk popsal dříve, ale domnívám se, že projekty, na kterých jsem dosud pracoval, byly dostatečně malé, aby mi umožnily tuto úroveň zjednodušení.

8
Marco Ciambrone

integrační test ověřuje, že komponenty komplexního systému (např. Software, letadlo, elektrárna) spolupracují tak, jak byly navrženy.

Představme si, že mluvíme o letadle (se softwarem je to abstraktnější a obtížnější udělat rozdíl). Integrační testy zahrnují ověření:

  • správná interakce mezi některými komponenty. Příklad: při stisknutí tlačítka startování se motor nastartuje a vrtule dosáhne očekávané rychlosti otáčení (letadlo stále zůstává na zemi)
  • správná interakce s externími komponenty. Příklad: zkontrolujte, zda vestavěné rádio komunikuje se stacionárním rádiem (letadlo stále na zemi)
  • správná interakce mezi všemi zúčastněnými komponenty, takže systém jako celek funguje podle očekávání. Příklad: posádka zkušebních pilotů a techniků nastartuje letadlo a letí s ním (všichni nosí padáky ...).

integrační test řeší technický problém , konkrétně, že systém funguje i přes jeho rozdělení na komponenty. V softwaru mohou být komponenty případy použití, moduly, funkce, rozhraní, knihovny atd ...

akceptační test ověří, zda je produkt vhodný pro daný účel. V zásadě je provádí zákazník. Při analogii letadla zahrnují ověření, že:

  • předpokládané obchodní scénáře vedou k očekávanému výsledku v téměř reálné situaci. Příklad: nacvičit nástup na palubu se zkušebními cestujícími a zkontrolovat, zda personál může sledovat nástup podle očekávání při provozních postupech. Některé scénáře mohou být tak jednoduché, že by vypadaly jako jednotkový test, ale provádí je uživatel (např. Vyzkoušejte elektrické zástrčky se zařízením společnosti).
  • systém funguje v téměř reálné obchodní situaci. Příklad: proveďte prázdný zkušební let mezi dvěma skutečnými cíli s nově vycvičenými piloty z letecké společnosti, abyste zkontrolovali, jak je slíbená spotřeba paliva.

akceptační test řeší více problém odpovědnosti . Ve vztahu zákazník/dodavatel to může být smluvní odpovědnost (dodržování všech požadavků). V každém případě je však také na odpovědnosti organizace, která používá, aby zajistila, že jejich povinnosti mohou být v systému splněny, a aby opatrně zabránila jakémukoli nepředvídatelnému problému (např. Tato železniční společnost, která při akceptačních zkouškách zjistila, že musela zkrátit některé quais, protože nové vozy byly příliš velké 5 cm - žádný vtip!).

Závěry: - Integrační a akceptační testy se překrývají. Oba mají v úmyslu ukázat, že systém jako celek funguje. „Celek“ by však mohl být pro zákazníka větší (protože samotný systém může být součástí většího organizačního systému) a pro systémového integrátora je pro něj více technický:

enter image description here

7
Christophe

Testování integrace není nic jiného než kontrola připojení a správnosti toku dat mezi dvěma nebo více moduly.

Například: Když skládáme poštu (jeden modul) a odesíláme ji na platné ID uživatele (druhý modul), testování integrace má zkontrolovat, zda je odeslaná pošta v odeslaných položkách.

1
Anita

Jedna praktická definice integračního testu je: Každý test, který vyžaduje interakci s něčím mimo proces.

Například:

  • Systém souborů
  • Síť
  • Databáze
  • Externí API

Mezi vaším procesem a vnějším světem existuje smlouva o různých druzích a minimální ověření, že smlouva by měla být cílem integračního testu. to znamená, že by neměla dělat nic jiného než ověřit smlouvu. Pokud ano, pohybujete se směrem k systému/meziprostorovému prostoru.

Jednotkové testy jsou schopny otestovat veškerou logiku v rámci vaší hranice procesu, a mohou to snadno přesně kvůli nedostatečné závislosti na pomalém/křehkém/složitý „vnější svět“.

I když existují integrační testy, tato definice se nevztahuje (proto jsem tomu říkala praktická definice) myslím, že jsou mnohem méně běžné/užitečné.

N.B. Přísně vzato, ano, tato definice by zahrnovala také testy systému/end-to-end. Podle mé filozofie jsou formou „extrémního“ integračního testu, a proto jejich jména zdůrazňují další aspekt. V opačném směru lze test jednotky považovat za test integrace nulových složek, tj. Všechny testy lze považovat za ležící někde v integračním spektru, které integrují mezi 0-n komponenty :-)

0
Schneider