Wie teste ich eine Software, die CDs brennt, ohne CDs zu verschwenden?

16

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?

richtig falten
quelle
5
Wäre es möglich, in eine Bibliothek zu wechseln, wird Sie ein Disk - Image schreiben lassen?
FrustratedWithFormsDesigner

Antworten:

29

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.

Kevin D
quelle
1
Ich bin damit einverstanden, dass dies eine einfache und gute Antwort ist, aber wenn WTP das Testen auf eine andere Ebene leiten möchte, wird durch das Verspotten der API (siehe andere Antworten auf diese Frage) eine ganze Dimension von Testmöglichkeiten freigeschaltet (wie in, automatisiert).
Louisgab
@louisgab Ich stimme dir voll und ganz zu, als ich die Antwort schrieb, ging ich nur auf den Punkt über das Verschwenden von CDs ein. Ich habe völlig erwartet, dass eine andere Antwort etwas Besseres hervorbringt (und das haben sie). Wenn überhaupt, würde ich den spöttischen Ansatz empfehlen und meine Antwort nur dann vorschlagen, wenn WTP den Brennprozess tatsächlich physisch testen möchte.
Kevin D
19

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.

Spencer Rathbun
quelle
2
Ich bin eigentlich auf Mac OS X, das auch ein UNIX-System ist. Ich werde es versuchen.
Rightfold
6

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.

unholysampler
quelle
3

Ü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 .

Arseni Mourzenko
quelle
Ich muss jedoch wissen, ob ich die API richtig verwende.
Rightfold
@WTP: siehe mein edit. Eine korrekt geschriebene API würde es Ihnen auch nicht ermöglichen, beschädigte CDs zu erstellen, indem Sie sie falsch verwenden. Wenn dies der Fall ist, sollten Sie wahrscheinlich zuerst nach einer anderen API suchen. Eine API soll eine Abstraktion bereitstellen und insbesondere verhindern, dass beim Speichern von Daten auf einer CD die Daten beschädigt werden.
Arseni Mourzenko
Sie haben da einen Punkt. Die API ist sehr gut dokumentiert.
Rightfold
1

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!

Jerónimo Vargas
quelle