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