Při porovnání Racerx s jinými nástroji pro testování souběžnosti, zejména v souvislosti s aplikacemi MVVMCross, je nezbytné porozumět jedinečným funkcím a omezením každého nástroje.
Racerx
** Racerx je nástroj statické analýzy citlivé na tok navržený k detekování problémů se souběžností, jako jsou závody a zablokování. Vyniká tím, že vyžaduje minimální anotaci zdrojového kódu, obvykle vyžaduje pouze malý stůl určující API používaná pro získávání a uvolňování zámků. To snižuje zátěž o anotaci velkých systémů, což zefektivňuje vývojáře pracující se složitými aplikacemi. Racerx vytváří graf řídicího toku (CFG) ze zdrojového kódu, který obsahuje informace o funkcích volání, sdílené paměti a využití ukazatele. Poté používá tento graf k identifikaci potenciálních problémů souběžnosti analýzou toho, jak se zámky používají v kódové základně [1].
Porovnání s šachy
** Šachy, další nástroj pro testování souběžnosti vyvinutý společností Microsoft Research, používá kombinaci kontroly modelu a dynamické analýzy. Na rozdíl od Racerx, šachy systematicky zkoumá plány vláken, aby detekovaly chyby souběžnosti, jako jsou podmínky rasy, zablokování a korupce dat. Chess poskytuje plně opakovatelné prostředí provádění, které je prospěšné pro účely ladění. Šachy se však spoléhají na tvrzení programátora pro ověření státu a nezpracovávají synchronizaci prostřednictvím vzájemně propojených operací, což by mohlo omezit jeho použitelnost v některých scénářích [1].
Porovnání s jinými nástroji
V souvislosti s aplikacemi MVVMCross, které jsou primárně napříč platformami a používají vzor MVVM, může být výběr nástrojů pro testování souběžnosti ovlivněn specifickými potřebami aplikace. Například, pokud aplikace zahrnuje složité vlákno nebo souběžné operace, mohou být nástroje jako Chess nebo Racerx prospěšné. Samotný MVVMCross však neodmyslitelně neposkytuje nástroje pro testování souběžnosti; Zaměřuje se na poskytnutí rámce pro vývoj napříč platformami pomocí vzorce MVVM [9] [10].
Úvahy pro aplikace MVVMCross
Při vývoji aplikací MVVMCross je primárním zaměřením často na sdílení chování a obchodní logiku napříč platformami. Zatímco MVVMCross poskytuje funkce, jako je injekce závislosti a rámce pluginů, přímo se nezabývá testováním souběžnosti. Vývojáři by proto mohli do svého testovacího pracovního postupu muset integrovat externí nástroje, jako je Racerx nebo Chess, aby se zajistilo, že souběžné operace v rámci jejich aplikací jsou řádně ověřeny.
Stručně řečeno, Racerx je výkonným nástrojem pro detekci problémů souběžnosti s minimální anotací kódu, což je vhodné pro velké a komplexní systémy. Jeho použitelnost na aplikace MVVMCROSS by však závisí na specifických požadavcích na souběžnost aplikace a možná by bylo nutné použít spolu s dalšími testovacími rámci, které jsou přímo integrovány do ekosystému MVVMCross.
Citace:[1] https://learn.microsoft.com/en-us/archive/msdn-magazine/2008/june/tools-and-techniques-to-identify-concurrency-ssues
[2] https://www.palmmedia.de/blog/2011/8/30/ioc-container-Benchmark-Performance-Comparison
[3] https://testsigma.com/blog/android-testing-tools/
[4] https://www.mvvmcross.com/documentation/fundamentals/testing
[5] https://www.functionrize.com/automated-testing/cross-bowser-testing-tools
[6] https://www.browerstack.com/guide/cross-platfort-testing-tools
[7] https://stackoverflow.com/questions/17233922/mvvmcross-mvx-trace-insage
[8] https://stackoverflow.com/questions/25134716/shald-i-choose-mvvmlight-or-mvvmcross-on-new-project-of-sMedium-comp
[9] https://github.com/mvvmcross/mvvmcross
[10] https://www.mvvmcross.com