Low volume PCB assembly testing
I am working for such a company but am mainly situated in the development, so I have some insight but there are probably people out there who know much more:

When it comes to testing, we follow various approaches. Basically we start with AOI (Automated Optical Inspection). This is rather cheap and reveals many errors before any further steps are done which require the board to be powered.

The next step is checking electrical connections. We do this in a few different ways, it usually depends on the amount of test points available and if the board was designed for testing (yes, usually no one cares for that in advance). The methods we use most are:


Flying Probe (basically an automated way of contacting pins and checking if the resistance meets expected values). This also comes relatively cheap since the programs can be created from netlists which have to be specified by the customer.
Boundary Scan: The Flying Probe can mainly contact test points or larger points such as resistors, ... if there is no available point to touch it on the PCB, the Flying Probe is of no use. To test Inter-IC connections we mainly rely on Boundary Scan Tests if the Controller supports these. But they have their limits as well. Also, programs can be "written" automatically but need to be adapted.
In-Circuit-Tests: This is probably the most extensive test method we use (and also the most expensive). Basically we build an adapter which will host the DUT and contacts the various testpoints. Using integrated Boundary Scan techniques and stimulating digital and analog signals nearly every mode of testing is possible. E.g. it is also possible to boot the board to some bootloader and execute tests available in the bootloader, test Ethernet connections, test USB connections, ... No need to say that this comes at a cost.


I am sure there are even more possibilites of testing available but these cover the requirements we get from our customers quite well. Still, 100% testing is not possible.