Coverage for requests from different interfaces to DUT

I have 3 interfaces that send requests (randomly, no order, can be same clock or different clocks). What is the best way to check coverage that the DUT can handle requests from all the 3 interfaces? (and to verify that Testbench has covered this scenario).

It is not a must-have that all 3 i/fs send requests. They MAY all be actively sending.

Each i/f has a req(this is of packed structure type) which comes for one clock and a req_valid signal, valid for the same one clock that req is valid.