Ich möchte eine Anwendung schreiben, mit der ich CDs (Musik) brennen kann. Ich weiß, ich sollte es sowieso mit echten CDs testen, aber ich möchte das nicht jedes Mal tun, wenn ich eine kleine Änderung vornehme. Aber ich möchte wissen und testen, ob die richtigen Daten gebrannt werden, damit Sie keine beschädigten CDs erhalten.
Ich verwende eine Bibliothek, die APIs nur zum direkten Brennen auf ein physisches Laufwerk zur Verfügung stellt. Es erlaubt Ihnen nicht, auf ein Disk-Image zu schreiben (was viel einfacher zu testen wäre).
Wie kann ich das testen, ohne bei jeder Änderung / wenigen Änderungen Zeit und CDs zu verschwenden?
Antworten:
Die einfache Antwort ist oft die beste: wiederbeschreibbare CDs?
Schreiben Sie auch relativ kleine Dateien, um Zeit zu sparen. Mach nur ab und zu größere Dateien.
quelle
Wenn Sie unter Linux arbeiten, sollten Sie in der Lage sein, ein "CD-Gerät" einzurichten, das nur eine Named Pipe ist. Ihre API schreibt auf das "Gerät" und Sie schließen das andere Ende an ein Programm an, mit dem Sie sehen können, was es tut / konvertieren es in ein Disk-Image. Es gibt viele Möglichkeiten. In diesem Artikel finden Sie Informationen zu Named Pipes.
Kevins Antwort ist viel einfacher, IMO.
quelle
Schreiben Sie so viele Tests wie möglich, die ein Mock der API der Bibliothek verwenden. Auf diese Weise können Sie Ihren Code in Einheiten testen. Dies zeigt, dass Ihr Code in sich selbst funktioniert, vorausgesetzt, die Bibliothek verhält sich so, wie es sein soll.
Irgendwann müssen Sie Integrationstests durchführen, bei denen die Bibliothek tatsächlich verwendet wird. Der Punkt ist jedoch, dass Sie bereits ein gewisses Maß an Vertrauen in Ihren eigenen Code haben, bevor Sie zu diesem Punkt gelangen. Integrationstests erfordern häufig mehr Zeit und Ressourcen, wie Sie gesehen haben. Daher können Sie sich beim gründlichen Testen von Einheiten nicht vollständig auf Integrationstests verlassen.
quelle
Über welche Tests sprichst du genau?
Wenn Sie in Ihrer Frage "Ich möchte das nicht jedes Mal tun, wenn ich eine kleine Änderung vornehme" lesen, stellen Sie sich vor, dass Sie über Unit-Tests sprechen .
Später fügen Sie hinzu, dass Sie eine API verwenden, die für das Brennen von Daten auf CDs zuständig ist. Wenn diese API korrekt getestet und dokumentiert ist, müssen Sie sich nicht mit dem eigentlichen Vorgang des Brennens der Daten auf die CD befassen, und Sie müssen es nicht testen. In diesem Fall beschäftigen Sie sich mit Integrationstests , die Sie nicht jedes Mal durchführen müssen, wenn Sie eine kleine Änderung vornehmen .
quelle
WTP,
Da Sie Ihre Software testen möchten (weder die API noch den Rekorder), wie Chris betonte, wäre eine Nachahmung der API erforderlich.
Für den Integrationstest sollte ein zuverlässiger "ISO" -Recorder es Ihnen ermöglichen, das Testen des CD-Inhalts durch Analysieren der .iso-Datei zu automatisieren.
Das Brennen einer CD oder DVD würde keine schlüssigen Ergebnisse liefern, da Sie nicht feststellen können, ob die Fehlerursache eine fehlerhafte CD, ein fehlerhafter Rekorder oder ein Softwarefehler ist, es sei denn, Sie möchten eine Qualitätsstatistik durchführen, indem Sie mehrere Kopien von aufnehmen die selbe Scheibe (die Sie anscheinend nicht haben).
Viel Glück!
quelle