Я рассматриваю возможность улучшения пакета, который, по моему мнению, не является потокобезопасным, когда его ввод распределяется между несколькими рабочими потоками. В соответствии с принципами TDD, я должен написать несколько тестов, которые не пройдут в первую очередь, и они, безусловно, будут полезны при оценке проблемы.
Я понимаю, что добиться этого непросто, и что наивно многопоточные тесты будут недетерминированными, поскольку операционная система будет определять планирование и точный порядок чередования различных операций. Я просмотрел и использовал MultithreadedTC в прошлом, и этот был полезен. Однако в этом случае я заранее знал, где именно проваливается существующая реализация, и, таким образом, смог состряпать хороший набор тестов, которые ее покрывали.
Однако, если вы еще не в той точке, где точно знаете, в чем проблема, есть ли хороший способ написать тест, который имеет хорошие шансы вызвать какие-либо потенциальные проблемы? Есть ли библиотеки, которые другие сочли полезными? Буду ли я прав, думая, что с пуристской точки зрения многопоточный тестовый пример должен быть просто теми же вызовами и утверждениями, что и обычный однопоточный тест, только при необходимости запускаться с несколькими рабочими потоками?
Приветствуются любые предложения по инструментам/передовой практике/философии в целом.