Commonly, these types of tests are called Functional Tests. They differ from Unit Tests in that they don't test the small units of code—like functions—but the overall behavior of a functionality. Functional Tests are needed for concurrent code because they exercise the functionality as a whole, allowing us to create tests that depict the complexity that comes with having the application do operations asynchronously.
A concurrent application without Functional Tests will be fragile, so any change to its code may unleash a chaos of race conditions, atomicity violations, deadlocks, and so on.