Eines der wenigen Dinge, denen sich die meisten Softwareentwickler einig sind, ist, dass Sie sich nicht darauf verlassen sollten, dass Code richtig funktioniert, es sei denn, Sie testen ihn. Wenn Sie es nicht testen, hat es möglicherweise versteckte Fehler, die Sie später nur noch mehr arbeiten lassen.
Ich verstehe, wie ich meinen normalen Code teste, aber wie soll ich meinen Testcode testen, um sicherzustellen, dass er Fehler effektiv findet und meldet, wenn sie vorhanden sind? Ich persönlich war dumm genug, fehlerhafte Testfälle zu schreiben, die bestanden hätten, wenn sie nicht bestanden hätten, und damit den Zweck meiner Tests überhaupt zunichte zu machen. Glücklicherweise habe ich die Fehler rechtzeitig gefunden und behoben, aber laut Test-Mantra scheint es, als ob keine Testsuite vollständig wäre, ohne eigene Tests, um sicherzustellen, dass sie funktionieren.
Mir scheint, der beste Weg, dies zu tun, besteht darin, sicherzustellen, dass der Test für fehlerhaften Code fehlschlägt. * Wenn ich 2 Minuten damit verbringe, dem Code abwechselnd Fehler hinzuzufügen und sicherzustellen, dass er fehlschlägt, sollte ich ein akzeptables Maß an Vertrauen haben Die Tests funktionieren. Dies bringt mich zu meiner zweiten Frage: Was sind gute Möglichkeiten, Fehler einzuführen, um sicherzustellen, dass sie von den Testfällen erfasst werden? Soll ich nur zufällig Anweisungen auskommentieren, sicherstellen, dass der falsche Zweig von a if-else
ausgeführt wird, indem sein Zustand negiert wird, und die Ausführungsreihenfolge von Code mit Nebenwirkungen usw. ändern, bis ich zufrieden bin, dass meine Tests die meisten Ergebnisse erzielenhäufige Fehler? Wie validieren professionelle Entwickler, dass ihre Tests tatsächlich das tun, was sie tun sollen? Nehmen sie einfach an, dass die Tests funktionieren, oder nehmen sie sich auch die Zeit, sie zu testen? Wenn ja, wie testen sie die Tests?
Ich schlage nicht vor, dass die Leute so viel Zeit damit verbringen sollten, ihre Tests zu testen und dann die Tests auf ihre Tests zu testen, dass sie nie den tatsächlichen Code schreiben, aber ich habe dumm genug gehandelt, dass ich das Gefühl habe, ein bisschen davon profitieren zu können von "Meta-Testing", und war neugierig auf den besten Weg, dies zu tun. : D
* Ich könnte überprüfen, ob der Test bestanden wurde, wenn ich fehlerfreien Code teste, aber die Verwendung des Codes als Testspezifikation scheint ziemlich rückständig zu sein ...