Since we are becoming more and more reliant on computing, including very critical tasks of day-to-day life, I was just wondering how those vital components are tested.

More technically, how are the compilers and assemblers tested? (I suppose this relates to [the halting problem](https://en.wikipedia.org/wiki/Halting_problem)!!)