Nur neugierigQ/A, baut Veröffentlichung vs Debug baut und Assertions
Beim Loslassen Software Q/A baut, bevorzugen Sie immer die "RELEASE" Version zu verwenden, oder verwenden Sie manchmal die DEBUG-Version?
Hier ist mein Rätsel: Wir verwenden Asserts, um für Bedingungen zu fangen, die nie passieren sollten.
Auf der einen Seite kann es für Q/A hilfreich sein, unsere Software mit den aktivierten Assertions zu testen, damit sie, wenn sie ein Szenario erstellen können, das eine Assertion auslöst, es uns melden können.
Auf der anderen Seite besteht immer das Risiko, dass ein Entwickler eine Assertion so codiert hat, dass sie das Verhalten des Codes ändert. In diesem Fall sollte Q/A den a build mit deaktivierten Assertions testen.
Bis heute haben wir immer Q/A auf unseren Relesae-Builds ausgeführt, da dies der Code war, der ausgeliefert werden würde. Ich denke jedoch darüber nach, ein Muster zu versuchen, bei dem unsere wirklich frühen Releases für Q/A mit bestätigten Assertionen ausgehen würden. Wenn wir uns dem Versand nähern, werden wir ihnen mitteilen, dass ihre Builds deaktiviert sind.
Was denkst du?
Seitennotiz: Für diejenigen, die TDD tun, finden Sie, dass Einheitentests die Notwendigkeit oder den Nutzen von Behauptungen in Ihrem Code beseitigen? – JMarsch
Sogenannte defensive Programmierung macht, wenn sie gründlich verwendet wird, einige grundlegende Tests etwas veraltet. Noch richtiges TDD würde erfordern, zuerst die Tests zu schreiben, die irgendeine Ausnahme in jenen Fällen erwarten (wie ArgumentOutOfRangeException etc.). – Lucero
Ich stimme der defensiven Programmierung zu, und wir tun das - null überprüft Reichweitenüberprüfungen, etc. Es gibt jedoch einige Arten von Überprüfungen, die teuer zu machen sind, und Bedingungen abdecken, die nur passieren könnten, wenn einer unserer Programmierer ein Fehler. Wir verwenden gerne Behauptungen für diese Bedingungen. – JMarsch