Podczas korzystania z mojej aplikacji natknąłem się na stan wyścigu w jakimś kodzie, który używa NSOperationQueue
do uruchamiania zadań asynchronicznie po zdarzeniach wyzwalanych przez użytkownika. Wiem, jak naprawić stan wyścigu, ponieważ jest to głupi błąd projektowy, do którego nie będę się zagłębiał, ale chciałbym udowodnić błąd w przypadku testowym (aby nie wrócił podczas optymalizacji/refaktoryzacji dalej w dół linii). To mnie zaskoczyło. W jaki sposób można testować coś wielowątkowego, zwłaszcza gdy celem testu jest wygenerowanie warunków wyścigu?Kodowanie oparte na wątku testowym jednostki? Wymuszanie warunków wyścigu
Czy ktoś ma jakieś linki do materiałów referencyjnych, do których mogę się odnieść, jeśli chodzi o rozwiązywanie wątków i testowanie jednostkowe? Szczególnie interesuje mnie generowanie warunków wyścigowych.
Przypuszczam, że można kpić z dowolnych współdzielonych struktur danych, a wewnątrz symulowanych obiektów można wykonać dowolną synchronizację, której wymaga wykonanie różnych wątków w "niewłaściwej" kolejności. –