機械語にgoto構文があるから、高級言語にもそれが実装されて・・・って感じなのかなきっと。メンテ考えたら高級言語では使わないほうが基本的にはいいけど。
抽象化することによって、利用側はWhat(Interface)に集中できて、How(実装)を知る必要がなくなる そのため、Whatを満たした物ができているかの保証は大事で、それをユニットテストが担保している ユニットテストはWhatを満たせているか確認し、実装のテストはしない