Home Arrow Icon Knowledge base Arrow Icon Global Arrow Icon Чи можна враховувати шахи ефективно з mvvmcross для виявлення помилок одночасності


Чи можна враховувати шахи ефективно з mvvmcross для виявлення помилок одночасності


Chess, розроблений Microsoft Research, є потужним інструментом для виявлення помилок одночасності в багатопотокових програмах, систематично вивчаючи всі можливі переплетення потоків. Він може ефективно визначити такі проблеми, як тупик, живолах та раси даних, що робить його цінним надбанням при тестуванні одночасного програмного забезпечення [1] [3] [4]. Однак, чи можна ефективно використовувати шахи з MVVMcross для виявлення помилок одночасності, залежить від декількох факторів.

Огляд Mvvmcross

MVVMCross-це рамка для побудови міжплатформних програм за допомогою шаблону моделі-View-ViewModel (MVVM). Він надає інструменти та інфраструктуру для управління складністю розвитку перехресної платформи, включаючи впорскування залежності та утиліти різьблення [2] [5].

Використання шахів з mvvmcross

Щоб використовувати шахи з mvvmcross, вам потрібно буде інтегрувати шахи у тестувальну рамку. Ось кілька кроків та міркувань:

1. Причасність у MVVMCross: програми MVVMCross часто включають одночасні операції, особливо при роботі з асинхронними завантаженнями даних або фоновими завданнями. Шахи можуть бути корисними при тестуванні цих одночасних сценаріїв.

2. Налаштування тесту: Вам потрібно буде налаштувати тести MVVMCross, щоб використовувати шахи. Це передбачає створення методів тестування, які можуть бути виконані шахою, що систематично змінює переплетення потоку для виявлення помилок одночасності. Можливо, вам доведеться адаптувати свої тестові заняття для роботи з механізмом планування шахів.

3. Атрибути та анотації: CHESS використовує атрибути, такі як `[ScheduletestMethod]` та `[DataracetestMethod]` для позначення методів одночасного тестування. Вам потрібно буде застосувати ці атрибути до методів тестування MVVMCross для використання можливостей шахів [1].

4. Інтеграційні виклики: Основним завданням було б інтеграція шахів з існуючою інфраструктурою тестування рамки MVVMcross. Тести MVVMcross, як правило, успадковуються від `mvxiocSupportingTest` і використовують MOQ для знущань з глузуючими [2]. Вам потрібно буде забезпечити, щоб шахи могли безперешкодно працювати з цими компонентами.

5. Відтворюваність: Одним із сильних сторін шахів є його здатність відтворювати помилки одночасності, що має вирішальне значення для налагодження. Якщо ви успішно інтегруєте шахи з mvvmcross, ви повинні мати можливість ефективніше відтворювати та налагодити питання одночасності.

Висновок

Хоча шахи є потужним інструментом для виявлення помилок одночасності, його інтеграція з MVVMCross потребує ретельної установки та адаптації. Якщо ви зможете успішно інтегрувати шахи у свою рамку тестування MVVMCross, це може бути ефективним способом виявлення та налагодження проблем з одночасністю у ваших програмах міжплатформних програм. Однак складність цієї інтеграції може змінюватися залежно від специфіки архітектури вашого проекту та вимог до тестування.

Цитати:
[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-linked-the-viewmodel/17602246
4
[7] https://stackoverflow.com/questions/689671/tool-for-detecting-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