Comment tester un logiciel qui grave des CD sans perdre de CD?

16

Je veux écrire une application qui peut être utilisée pour graver des CD (musique). Je sais que je devrais quand même le tester avec de vrais CD, mais je ne veux pas le faire à chaque fois que je fais un petit changement. Mais je veux savoir et tester si les bonnes données seront gravées, afin que vous n'obteniez pas de CD corrompus.

J'utilise une bibliothèque qui expose uniquement les API à graver directement sur un disque physique; il ne vous permet pas d'écrire sur une image disque (ce qui serait beaucoup plus facile à tester).

Comment pourrais-je tester cela sans perdre de CD et de temps pour chaque changement / quelques changements que j'apporte?

à droite
la source
5
Serait - il possible de passer à une bibliothèque qui ne vous permet d'écrire une image disque?
FrustratedWithFormsDesigner

Réponses:

29

La réponse simple est souvent la meilleure: des CD réinscriptibles?

Aussi pour gagner du temps, écrivez des fichiers relativement petits. Ne faites que des fichiers plus gros de temps en temps.

Kevin D
la source
1
Je suis d'accord pour dire que c'est une réponse simple et bonne, mais si WTP veut faire passer les tests à un autre niveau, se moquer de l'API (voir les autres réponses à cette question) débloquera toute une dimension des possibilités de tests (comme dans, automatisé).
louisgab
@louisgab Je suis totalement d'accord avec vous, quand j'ai écrit la réponse, je ne parlais que du gaspillage de CD. Je m'attendais à une autre réponse pour trouver quelque chose de mieux (et ils l'ont fait). Si quoi que ce soit, je recommanderais l'approche moqueuse et ne suggérerais ma réponse que lorsque WTP souhaite réellement tester physiquement le processus de gravure.
Kevin D
19

Si vous êtes sous Linux, vous devriez pouvoir configurer un "périphérique cd" qui n'est qu'un canal nommé. Votre API écrit sur le "périphérique" et vous connectez l'autre extrémité à un programme qui vous permet de voir ce qu'il fait / de le convertir en image disque. Beaucoup d'options là-bas. Consultez cet article pour plus d'informations sur les canaux nommés.

La réponse de Kevin est beaucoup plus facile à l'OMI.

Spencer Rathbun
la source
2
Je suis actuellement sur Mac OS X qui est également un système UNIX. Je vais essayer.
droite
6

Écrivez autant de tests que possible qui utilisent une maquette de l'API de la bibliothèque. Cela vous permet de tester votre code en unités. Cela montre que votre code fonctionne en lui-même en supposant que la bibliothèque fonctionne comme elle est censée le faire.

À un moment donné, vous devrez effectuer des tests d'intégration qui utilisent réellement la bibliothèque. Mais le fait est que vous avez déjà un certain niveau de confiance avec votre propre code avant d'en arriver là. Les tests d'intégration prennent souvent plus de temps et de ressources, comme vous l'avez vu. Des tests unitaires approfondis vous permettent de ne pas vous fier entièrement aux tests d'intégration.

unholysampler
la source
3

De quels tests parlez-vous exactement?

En lisant "Je ne veux pas faire ça à chaque fois que je fais un petit changement" dans votre question, j'imagine que vous parlez de tests unitaires .

Mais plus tard, vous ajoutez que vous utilisez une API qui est chargée de graver des données sur CD. Si cette API est testée et documentée correctement, vous n'avez pas à gérer le processus réel de gravure des données sur le CD et vous n'avez pas à le tester. Dans ce cas, vous traitez avec les tests d'intégration , que vous n'avez pas à faire "à chaque fois que [vous] faites un petit changement" .

Arseni Mourzenko
la source
Mais j'ai besoin de savoir si j'utilise l'API correctement.
droite
@WTP: voir ma modification. De plus, une API correctement écrite ne vous permettrait pas de créer des CD corrompus en l'utilisant incorrectement. S'il fait ce genre de choses, vous devriez probablement rechercher une autre API en premier. Une API est là pour fournir une abstraction et surtout pour éviter de traiter les moyens d'éviter la corruption lors de l'enregistrement des données sur un CD.
Arseni Mourzenko
Vous avez un point là. L'API est très bien documentée.
droite
1

WTP,

Comme vous voulez tester votre logiciel (pas l'API, ni l'enregistreur), comme l'a souligné Chris, une maquette de l'API serait nécessaire.
Pour les tests d'intégration, un enregistreur "ISO" fiable devrait vous permettre d'automatiser le test du contenu du CD en analysant le fichier .iso.
En fait, graver un CD ou un DVD ne donnerait pas de résultats concluants, car vous ne seriez pas en mesure de déterminer si la cause de l'erreur est un CD défectueux, un enregistreur défectueux ou un bogue logiciel, sauf si vous souhaitez effectuer des statistiques de qualité en enregistrant plusieurs copies de le même disque (ce que vous n'avez apparemment pas).
Bonne chance!

Jerónimo Vargas
la source