Souběžné testování - Concurrent testing

Výzkum a literatura o testování souběžnosti a souběžném testování se obvykle zaměřuje na testování softwaru a systémů, které používají souběžné výpočty . Účelem je, stejně jako u většiny testování softwaru , porozumět chování a výkonu softwarového systému, který používá souběžné výpočty, zejména posouzení stability systému nebo aplikace během běžné činnosti.

Výzkum a studium souběžnosti programů byly zahájeny v padesátých letech minulého století, výzkum a studium souběžnosti testovacích programů se objevily v šedesátých letech. Příklady problémů, které může testování souběžnosti vystavit, jsou nesprávný přístup ke sdílené paměti a neočekávané pořadí pořadí provádění zpráv nebo podprocesů. Je také zvýrazněno řešení sporů o zdroje , plánování , zamezení zablokování , inverze priorit a podmínky závodu .

Vybraná historie a přístupy testování souběžnosti

Přístupy k testování souběžnosti mohou být na omezené úrovni testování jednotky až po úroveň testování systému.

Některé přístupy k výzkumu a aplikaci souběžnosti testovacích programů a softwaru byly:

  • Proveďte test jednou.
To bylo považováno za neúčinné pro testování souběžnosti v nedeterministickém systému a bylo to ekvivalentní testování sekvenčního nesouběžného programu v systému
  • Provedení stejné testovací sekvence několikrát.
Považuje se za pravděpodobné, že najdou některé problémy v nedeterministickém provádění softwaru.
Tomu se později začalo říkat nedeterministické testování.
  • Deterministické testování.
Jedná se o přístup k nastavení systému do konkrétního stavu, aby bylo možné kód spustit ve známém pořadí.
  • Testování dosažitelnosti
Pokus o testování kombinací synchronizačních sekvencí pro zadaný vstup (přístup ke sdílené proměnné není poškozen, efektivní testování proměnných podmínek závodu). Sekvence je obvykle odvozena pro nedeterministické provedení testu.
  • Strukturální přístupy / statická analýza
Analýza struktury kódu a nástroje statické analýzy.
Příkladem byl heuristický přístup
To vedlo k vývoji kontroly kódu, například jlint. Výzkum a srovnání statické analýzy a kontroly kódu pro chyby souběžnosti
Viz také Seznam nástrojů pro statickou analýzu kódu
  • Přístup více uživatelů
Jedná se o přístup k testování souběžnosti programu při pohledu na přístup více uživatelů, ať už slouží různým uživatelům nebo úkolům současně.

Testování softwaru a souběžnosti systému by nemělo být zaměňováno se zátěžovým testováním , které je obvykle spojeno s načítáním systému nad jeho definované limity. Testování souběžných programů může vykazovat problémy, když systém pracuje ve stanovených mezích. Většina výše uvedených přístupů se nespoléhá na přetížení systému. Některá literatura uvádí, že testování souběžnosti je předpokladem zátěžového testování.

Poučení ze studie charakteristik chyb souběžnosti

Studie z roku 2008 analyzovala databáze chyb v softwaru pro výběr open source. Považovalo se to za první skutečnou studii chyb souběžnosti. 105 chyb bylo klasifikováno jako chyby souběžnosti a analyzováno, rozděleno na 31 jako chyby zablokování a 74 chyb bez zablokování. Studie měla několik zjištění pro potenciální sledování a vyšetřování:

  • Přibližně jedna třetina souběžných chyb způsobuje zhroucení nebo zavěšení programů.
  • Většina chyb souběžnosti bez zablokování je atomicita nebo narušení objednávky.
Tj. Se zaměřením na atomicitu (chráněné použití sdílených dat) nebo sekvenci potenciálně najdete většinu chyb bez zablokování.
  • Většina chyb souběžnosti zahrnuje 1 nebo 2 vlákna.
Tj. Těžký současný uživatel / použití není spouštěč těchto chyb. Existuje návrh, že párové testování může být účinné k zachycení těchto typů chyb.
  • U jednoho vlákna došlo k více než 20% (7/31) zablokování chyb.
  • Většina chyb souběžnosti zablokování (30/31) zahrnovala pouze jeden nebo dva zdroje.
Důsledek, že párové testování z pohledu využití prostředků lze použít k odhalení zablokování.

Viz také

Reference

Obecné odkazy