Ideally, you'd have a room full of testers with a pile of different devices.
The general things you need to check for:
- different browsers
- different operating systems
- different devices
- different viewport sizes
These can affect:
- layout
- typography
- functionality
In most cases, you need some form of the actual software you want to test.
That would mean you have the physical device, with the actual browser software installed.
That's hard to do in a lot of situations. As such, I think one robust-yet-practical set up may be:
OSX install with:
- Latest Chrome, Safari, Firefox browsers. Thumb drive stand-alone versions of one version back.
- Xcode for testing iOS virtually
Windows install with:
- Latest Chrome, Safari, Firefox and IE (sigh) browsers. Thumb drive stand-alone versions of one version back. (Older versions of IE is a bit trickier...the best way is to run a virtual machine for each version)
- Android Studio for testing Android devices virtually
Linux install if you care about Linux users (we all should, of course. Business rarely does.)
A step up from that would be services that provide you 'shared' access to actual devices via VPN tools. These are painful to use, though...as you are essentially trying to emulate a touch device via a mouse via network lag. But it's better than nothing in some situations.