A Microsoft Research által kifejlesztett sakk hatékony eszköz a többszálú programokban a párhuzamos hibák észlelésére az összes lehetséges szál átlapolás szisztematikus feltárásával. Hatékonyan azonosíthatja azokat a kérdéseket, mint például a holtpontok, a livelocks és az adatversenyek, ezáltal értékes eszközt jelentve az egyidejű szoftver tesztelésében [1] [3] [4]. Számos tényezőtől függ annak azonban, hogy a sakk hatékonyan használható -e az MVVMCross segítségével.
mvvmcross áttekintés
Az MVVMCross a platformok közötti alkalmazások kiépítésének kerete a Model-View-ViewModel (MVVM) mintázat felhasználásával. Eszközöket és infrastruktúrát biztosít a platformok közötti fejlesztés összetettségének kezelésére, ideértve a függőségi injekciót és a menetes segédprogramokat [2] [5].
sakk használata mvvmcross
A sakk használatához az mvvmcross segítségével be kell integrálnia a sakkot a tesztelési keretbe. Íme néhány lépés és megfontolás:
1. Az MVVMCross egyidejűleg: Az MVVMCross alkalmazások gyakran egyidejű műveleteket vonnak maguk után, különösen az aszinkron adatbetöltés vagy háttérfeladatok kezelése esetén. A sakk hasznos lehet ezen egyidejű forgatókönyvek tesztelésében.
2. Tesztbeállítás: A sakk használatához be kell állítania az mvvmcross teszteket. Ez magában foglalja a sakk által végrehajtható vizsgálati módszerek létrehozását, amelyek szisztematikusan eltérőek a szál átlapolásaihoz, hogy felismerjék a párhuzamos hibákat. Lehet, hogy adaptálnia kell a tesztosztályokat a sakk ütemezési mechanizmusával való együttműködéshez.
3. Attribútumok és kommentárok: A sakk olyan attribútumokat használ, mint a „[ScheduleTestMethod]` és a „[DataracetestMethod]”, hogy jelölje meg az egyidejű tesztelés módszereit. Ezeket az attribútumokat alkalmaznia kell az MVVMCross teszt módszereire a sakk képességeinek kihasználására [1].
4. Integrációs kihívások: A fő kihívás a sakk integrálása az MVVMCross keretrendszer meglévő tesztelési infrastruktúrájával. Az MVVMCross tesztek általában az „MVXiOCSupportingTest” -ből örökölnek, és a MOQ -t használják a függőségek gúnyolódásához [2]. Gondoskodnia kell arról, hogy a sakk zökkenőmentesen működhessen ezekkel az összetevőkkel.
5. Reprodukálhatóság: A sakk egyik erőssége az egyidejűs hibák reprodukálására való képessége, ami elengedhetetlen a hibakereséshez. Ha sikeresen integrálja a sakkot az mvvmcross -hoz, akkor képesnek kell lennie arra, hogy hatékonyabban reprodukálja és hibakeresse a párhuzamos problémákat.
Következtetés
Míg a sakk hatékony eszköz a párhuzamos hibák észlelésére, az MVVMCross -val való integrációja gondos beállítást és adaptációt igényel. Ha sikeresen integrálhatja a sakkot az MVVMCross tesztelési keretbe, akkor ez hatékony módszer lehet a platformok közötti alkalmazások egyidejű problémáinak azonosítására és hibakeresésére. Ennek az integrációnak az összetettsége azonban a projekt architektúrájának és a tesztelési követelmények sajátosságaitól függően változhat.
Idézetek:[1] https://github.com/leesanderson/chess
[2] https://www.mvvmcross.com/documentation/fundamentals/testing
[3] https://www.microsoft.com/en-us/research/wp-content/uploads/2016/02/tr-2007-149.pdf
[4] https://www.microsoft.com/en-us/download/details.aspx?id=52619
[5] https://stackoverflow.com/questions/17602137/mvvmcross-how-does-this-view-get-t-the-viewmodel/17602246
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2008/june/tools-and-techniques-to-iveDify-curency-sesues
[7] https://stackoverflow.com/questions/689671/tool-for-detingcurrency-problems
[8] https://stackoverflow.com/questions/22122318/how-can-i-detect-the-platform-atruntime-using-mvvmcross
[9] https://courses.cs.washington.edu/courses/cse503/10wi/readings/osdi2008-chess.pdf