I would think that pre-beta testing is done by the programmers themselves. Am I wrong?
Well - the initial stage of testing will always be done by programmers and after that some test-people because of debugging the code; making sure the code runs (somewhat) as expected. You test constantly as you code, sometimes even setting up automated tests.
Play-testing/Beta-testing has a near finished product, so that is relative late in the process. This is to ensure that the product/game behaves as expected and to weed out such bugs. This is hard to do "in-house", because nobody can be as irrational and ... well, stupid - as the end-users while doing it on messup hardwaresettings.