USB 2.0 Specification Chapter 9

When testing a USB device or hub you should at least test USBCV. It will automatically test the device framework and descriptor. USBCV is free of charge and is a very easy to use application so there is nothing from stopping you running these tests. There is a USB20CV and a USB30CV available on the USB.ORG that is updated on a regular base. Read the installation guide carefully before you start testing.

Here some common failures:

Not using a hub with port power switching
When running the USBCV Chapter 9 test it's mandatory to use hubs that switch their Vbus.
It is however very hard to get hold of these hub there now a days most hubs keep Vbus on at all times.
When using these kind of hubs it will add an additional test to USBCV. It will test if a device can connect within 1 second after Vbus is on.
This test cannot be done when using a hub that has Vbus always on. It is a common failure for many devices that they are unable to connect within this 1 second so be sure it's tested.

The bcdUSB field must be 2.0 not 1.1  
A common mistake is that people assume that USB 1.1 stand for full and low speed and USB 2.0 for high speed only. This is not true there the USB 2.0 specification includes low, full and high speed. So also low and full speed are USB 2.0 and therefore the bcdUSB field must be 2.0 also for those products not 1.1.   

Run the USBCV Class tests
If a device is MSC, HID, OTG, UVC, HUB run also the appropriate tests within USBCV,  

USB 2.0 device should also pass USB30CV
On top of passing USB20CV a USB 2.0 device must also pass USB30CV.

Use the correct VID
Use the VID of your company and not the one of your USB silicon provider.