I don't normally allow vias on regular SMT pads, but for test points there's no real need to go out of your way to avoid them. As long as the bed-o-nails will make good contact anyways.
Now I can write a clearance rule like this:
(Component Like 'TP*')
which matches Same Net Only and
IsVia OR IsTrack
This will allow you to plop down a via (p v) on top of the testpoint - It'll show a violation before you drop the via (since it's not connected to any net) but it disappears when it gets connected to the pad.
However, when routing, adding a via on TP pad, no go, nuh-uh. It'll get pushed outside the pad. I've tried adding a high speed rule about vias on SMD pads but it had no effect..
Is this just a limitation of the online DRC?