Tu sais onur, tes questions, des gens se les sont posées (pas forcément sur le même sujet) depuis le début de l'informatique. « Comment savoir qu'un programme fait bien ce qu'on veut qu'il fasse ? ». Cette question, ça fait bien longtemps (depuis allez, 40 ans) qu'on sait que ce n'est pas en testant le programme de manière dynamique qu'on va y répondre. D'après toi, à quoi sert le typage ? À quoi servent les warnings de compilation ? À quoi sert l'analyse statique ? À quoi servent les prouveurs automatiques ? etc, etc, etc ...
L'approche intelligente, c'est clairement l'approche sémantique. Et des gens ont déjà travaillé dessus d'ailleurs. cf
ça par exemple.