Хитрость обычно заключается в том, чтобы разбить программу на части и сделать так, чтобы эти части можно было тестировать по отдельности, и поэтому, когда вы переходите к другим частям, вы относитесь к ним как к черному ящику, зная, что он либо работает, либо не работает.