Grab a multimeter.
Connect the negative lead to the negative battery terminal and the positive lead to the engine, preferably to the starter motor casing or where it bolts to the engine or transmission.
Crank the engine and record the voltage on the multimeter. If it reads above 0.1 volt you have a high resistance in that circuit which is robbing the starter of power.
If that's OK put the positive lead of the multimeter on the positive terminal of the battery and the negative on the battery cable connected to the starter solenoid and crank again. This time is should read less that 0.5 volt. Again if it's higher the current is going somewhere, but not to the starter.
I can't put a percentage to it but it's very high that most slow starter problems can be traced to a bad ground cable somewhere between the battery and starter.
As for battery voltage, with it fully charged at rest it should be roughly 12.6 volts, crank the engine and it will drop to around 10 volts.
These numbers are close but they can vary with battery age, temperature etc.
If the battery won't charge to 12.6 volts or if it drops below 8 or 9 volts when cranking, it's bad.