Something else to consider is packet loss.
When this happens, a message is sent back to the sending server for it to be re-sent. If this happens frequently during a large file transfer, slower completion times will result. I don't think speed tests can necessarily identify this, as the overall file size sent is small resulting in few packets sent.
That said, I always admire good engineering and the architects of the internet did a fantastic job in designing for fault-tolerance and scalability. This video explains what many (including me) take for granted every day.
Internet Packets and Routers