Mi az a párhuzamossági tesztelés a szoftvertesztelésben?
⚡ Okos összefoglaló
A párhuzamos tesztelés olyan hibákat észlel, amelyek csak akkor jelennek meg, ha több felhasználó egyszerre dolgozik ugyanazon az alkalmazáson, feltárva a patthelyzeteket, az elveszett frissítéseket és a zárolási problémákat, amelyeket a szekvenciális funkcionális ellenőrzések soha nem tárnak fel.
Mi az a párhuzamossági tesztelés?
Párhuzamos tesztelés egy tesztelési technika, amelyet egy alkalmazás hibáinak észlelésére használnak, amikor több felhasználó van bejelentkezve. Más szóval, figyeli a hatást, miközben több felhasználó ugyanazt a műveletet hajtja végre egyszerre.
A párhuzamos tesztelést más néven is emlegetik többfelhasználós tesztelésEgy párhuzamos program tesztelése nagyobb kihívást jelent, mint egy szekvenciális programé, a nemdeterminizmus és a szinkronizációs problémák miatt: ugyanaz a teszt az egyik futtatáskor sikeres lehet, a következőn pedig megbukhat anélkül, hogy egyetlen sor kód is megváltozna.
Az alábbi ábra szemlélteti az ötletet – több felhasználó ugyanabban a pillanatban éri el ugyanazt az alkalmazáserőforrást, és a teszt megfigyeli, hogy az alkalmazás mit tesz az átfedéssel.
Miért érdemes párhuzamos tesztelést végezni?
Két kérdés indokolja az erőfeszítést, és mindkettő láthatatlan az egyfelhasználós funkcionális futtatások számára.
- Azonosítja az ugyanazon adatbázisrekordok, modulok vagy alkalmazáskódok egyidejű elérésének hatásait.
- Azonosítja és méri a holtpontok, a zárolások, az egyszálú kód használatának és a megosztott erőforrásokhoz való korlátozott hozzáférés szintjét.
Egy funkció teljesen helyes lehet az egyik felhasználó számára, de a második felhasználó számára, aki egy milliszekundummal később érkezik, mégis adatvesztés történhet, ezért ez a technika a következővel párhuzamosan működik: Teljesítményfelmérés ahelyett, hogy belső funkcionális tesztelést végeznénk.
Hogyan végezzünk párhuzamos tesztelést
A párhuzamos tesztelés egy ismételhető sorozatot követ. Az alábbi lépések az sco-ból indulnak ki.ping a felbontáshoz.
- 1. lépés) Azonosítsa a párhuzamosságra hajlamos folyamatokat. Keresse a megosztott állapotot: egyidejű bejelentkezések, hely- vagy készletfoglalás, egyenlegfrissítések, ugyanabba a táblába író kötegelt feladatok és az elérési úton található bármely egyszálú komponens.
- 2. lépés) Állítson be egy párhuzamossági célt. Döntsd el, hogy hány felhasználónak kell egyszerre cselekednie, a valós használati csúcsok alapján, ne pedig kerek szám alapján.
- 3. lépés) Tervezze meg a teszteseteket. Minden próbaper párosítja a megosztott erőforrást, a versengő műveleteket és a várható végállapotot – például két, egyazon fiókból történő kifizetési folyamat nem lehet sikeres.
- 4. lépés) Írj szkriptet, és válaszd ki az eszközt. Szükséges egy konfigurálható virtuális felhasználókat létrehozó terhelésgenerátor; JMeter a leggyakoribb nyílt forráskódú választás, és a szálcsoport-beállításai közvetlenül a párhuzamos forgatókönyvekre vonatkoznak.
- Step 5) Ramp fokozatosan. Növelje az egyidejű felhasználók számát szakaszosan, ne ugráljonping a célhoz, így látható a szint, amelyen a versengés elkezdődik.
- 6. lépés) Monitorozás és elemzés. Figyelőzár várakozások, válaszidő-szórás, hibaarányok és adatbázis-blokkolás együttesen – a párhuzamos működési hibák gyakran időzítési anomáliákként jelennek meg, mielőtt hibaként jelennének meg.
- 7. lépés) Oldja meg és futtassa újra. Javítsa ki a szinkronizálás, indexelés vagy zárolás okát, majd ismételje meg ugyanazt a futtatást annak megerősítéséhez, hogy a viselkedés megváltozott, nem pedig áthelyezett.
Gyakori párhuzamossági hibák
A párhuzamossági hibák néhány felismerhető osztályba sorolhatók, és az osztály helyes elnevezése általában egyenesen a javításra utal.
| Disszidál | Mi történik, | Tipikus tünet |
| Versenyfeltételek | Az eredmény attól függ, hogy melyik munkamenet ért véget előbb | Néhány futamnál helyes, másnál helytelen összesítések |
| Holtpont | Két munkamenet mindegyike zárat tartalmaz, a másiknak szüksége van rá | A tranzakciók lefagynak a hiba visszaadása helyett |
| Elveszett frissítés | Egy második írás felülírja az elsőt olvasás nélkül | A mentett módosítás csendben eltűnik |
| Adatok sérülése | Egy megosztott struktúra csak részben van megírva | Olyan állapotban lévő rekordok, amelyeket érvényes tranzakció nem tudott létrehozni |
| éhezés | Egyetlen munkamenet sem kapja meg a várt erőforrást | Egyetlen felhasználói elérési út időtúllépést okoz, miközben a rendszer egészségesnek tűnik. |
Mivel ezek a hibák időszakosan jelentkeznek, minden futtatásról naplókat és időbélyegeket kell rögzíteni; ellenkező esetben a hibát nem lehet hitelesen felvetni a hibakezelési folyamat.
Párhuzamos tesztelési példa
Vegyünk egy online áruházat, amely egy termék utolsó készleten lévő egységét tartja. Két vásárló egyszerre nyitja ki a terméket, és mindketten megnyomják a gombot. Vásárlás.
- Forgatókönyv: Két munkamenet során a készlet értéke 1, mindkettő sikeresen átmegy az elérhetőségi ellenőrzésen, és mindkettő 0 értéket ír ki.
- Várható eredmény: Az egyik rendelés visszaigazolásra kerül, a másik készlethiány üzenetet kap, és a készlet soha nem megy negatívba.
- Hibajelző: Mindkét megrendelés visszaigazolódik, vagy a készlet -1-re landol, ami azt mutatja, hogy az elérhetőség ellenőrzése és a csökkentés nem egyetlen atomi lépésként kerül végrehajtásra.
- Érdemes kipróbálni a következő variációkat: Ugyanaz a két munkamenet egy profilrekord szerkesztésével, ugyanazon kérés két jóváhagyása, és egy kötegelt feladat a tábla frissítése, miközben a felhasználó ment.
Ugyanez a minta általánosítható: egy erőforrás, két író és nincs rendelési garancia. A forgatókönyv futtatása a következőképpen történik: rendszertesztelés, mielőtt a terhelést hozzáadnánk, tisztán tartja a diagnózist.
A párhuzamos tesztelés előnyei
- Viszonylagosan csökkenti az alkalmazás teszteléséhez szükséges erőfeszítést azáltal, hogy a párhuzamos interakciók körét néhány széles körben használt, jól tesztelt komponensre korlátozza.
- Az enkapszuláció lehetővé teszi a program egy részének viselkedésének elemzését a teljes kódbázis áttekintése nélkül.
- Segít javítani a párhuzamos programok megbízhatóságát és robusztusságát.
- Korán feltárja a zárolási és blokkolási korlátokat, így a kapacitással kapcsolatos döntések a mért versengésen, nem pedig becsléseken alapulnak.
A párhuzamos tesztelés hátrányai
Az alábbi hátrányokkal jellemzően a tesztelők találkoznak párhuzamos tesztelés során.
- Az alkalmazást több platformon kell tesztelni.
- A párhuzamos tesztek intenzívebb teszteket igényelnek, mint a szekvenciálisak.
- A függvények nem adják vissza azonnal az eredményüket a hívónak; ehelyett az eredmény később is kézbesíthető értesítések, blokkok, visszahívó függvények vagy hasonló mechanizmusok révén, ami megnehezíti a tesztelést.
- Az információ vagy a programfolyamat nem jelenik meg a hívási veremben.
- A rendszerben a végrehajtási útvonalak száma rendkívül nagy lehet, mivel egy párhuzamos rendszerben a folyamatok végrehajtás közben kölcsönhatásba lépnek egymással.
- A párhuzamos programoknak magasabb a kudarcaránya, mint a szekvenciálisaknak.
- A párhuzamos programok hibakeresése nehéz, mivel egy hibakereső csatlakoztatása megváltoztatja a hibát okozó időzítést.

