If battery passes a load test and battery terminals are clean and tight, the problem is elsewhere. Test the wiring between battery, starter, and block. You will need a helper and a digital multimeter for this.
Pull the fuel pump fuse while engine is idling to bleed off the fuel rail pressure. Now the engine will crank without starting but without dumping in raw fuel. Put a multimeter on the 2 volt range. Attach one meter lead to the battery positive terminal. Attach the other meter lead to the starter positive terminal post. Use the points of the probes to dig in through any dirt or corrosion to get a solid connection.
Now have your helper crank the engine for 5 seconds and watch the multimeter reading. You should see under 1 volt, preferably under 0.5 volt.
Next connect one meter lead to the starter housing, and the other to the engine block. Again dig in the points of the probes to get a good connection. Have your helper crank again for 5 seconds. There should be very little voltage drop here, under 0.1 volt.
Now check between engine block and battery negative terminal. Dig in probe points, crank for 5 sec, watch the meter. Should be less than 0.5 volts here.
If any of those tests returns a high voltage drop, there is a bad connection that is starving your starter of voltage. Solutions could be as simple as cleaning terminals at starter, at battery, and at the engine block negative connection.
Could be as invasive as cleaning between starter and block or replacing internally corroded starter positive cable or engine block negative cable.
But if those tests come back okay, and the engine still cranks sluggish, maybe there is a problem with the starter motor itself.