Chess, ontwikkeld door Microsoft Research, is een krachtig hulpmiddel voor het detecteren van gelijktijdige fouten in multithreaded -programma's door systematisch alle mogelijke thread -interleavings te onderzoeken. Het kan effectief problemen identificeren zoals impasse, levenskaten en gegevensraces, waardoor het een waardevol actief is bij het testen van gelijktijdige software [1] [3] [4]. Of schaken effectief kan worden gebruikt met MVVMCross om gelijktijdigheidsfouten te detecteren, hangt echter van verschillende factoren af.
MVVMCross Overzicht
MVVMCross is een raamwerk voor het bouwen van platformonafhankelijke toepassingen met behulp van het Model-View-ViewModel (MVVM) -patroon. Het biedt hulpmiddelen en infrastructuur voor het beheer van de complexiteit van platformonafhankelijke ontwikkeling, inclusief afhankelijkheidsinjectie en threading-hulpprogramma's [2] [5].
Chess gebruiken met MVVMCross
Om schaken met MVVMCross te gebruiken, zou u schaken moeten integreren in uw testraamwerk. Hier zijn enkele stappen en overwegingen:
1. Gelijktijdigheid in MVVMCross: MVVMCross -toepassingen omvatten vaak gelijktijdige bewerkingen, vooral bij het omgaan met asynchrone gegevenslaading of achtergrondtaken. Schaken kan gunstig zijn bij het testen van deze gelijktijdige scenario's.
2. Testinstelling: u zou uw MVVMCross -tests moeten instellen om schaak te gebruiken. Dit omvat het maken van testmethoden die kunnen worden uitgevoerd door schaken, wat systematisch de thread -interleavings varieert om bugs van concurrency te detecteren. Mogelijk moet u uw testklassen aanpassen om te werken met het planningsmechanisme van schaken.
3. Attributen en annotaties: schaken maakt gebruik van attributen zoals `[ScheduletestMethod]` en `[DataracetestMethod]` om methoden te markeren voor gelijktijdige testen. U zou deze attributen moeten toepassen op uw MVVMCross -testmethoden om de mogelijkheden van Chess te benutten [1].
4. Integratie -uitdagingen: de belangrijkste uitdaging zou het schaken integreren met de bestaande testinfrastructuur van het MVVMCross Framework. MVVMCross -tests erven meestal over van `mvxiocsupportingtest` en gebruiken MOQ voor het bespotten van afhankelijkheden [2]. U zou ervoor moeten zorgen dat schaken naadloos met deze componenten kan werken.
5. Reproduceerbaarheid: een van de sterke punten van schaken is het vermogen om gelijktijdigheidsfouten te reproduceren, wat cruciaal is voor foutopsporing. Als u schaken met MVVMCross met succes integreert, zou u in staat moeten zijn om concentratie -kwesties effectiever te reproduceren en te debuggen.
Conclusie
Hoewel schaken een krachtig hulpmiddel is voor het detecteren van gelijktijdigheidsfouten, zou de integratie ervan met MVVMCross zorgvuldige opstelling en aanpassing vereisen. Als u het schaken met succes kunt integreren in uw MVVMCross-testkader, kan dit een effectieve manier zijn om concurrency-problemen in uw platformoverschrijdende toepassingen te identificeren en te debuggen. De complexiteit van deze integratie kan echter variëren, afhankelijk van de bijzonderheden van uw projectarchitectuur en testvereisten.
Citaten:[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-theis-view-get-linked-t-the-viewModel/17602246
[6] https://learn.microsoft.com/en-us/archive/msdn-magazine/2008/june/tools-and-techniques-to-identify-concurrency-issues
[7] https://stackoverflow.com/questions/689671/tool-for-tetecting-concurrency-problems
[8] https://stackoverflow.com/questions/22122318/how-can-i-detect-the-platform-at-runtime-using-mvvmcross
[9] https://courses.cs.washington.edu/courses/cse503/10wi/readings/osdi2008-chess.pdf