Como testar software que grava CDs sem desperdiçar CDs?

16

Quero escrever um aplicativo que possa ser usado para gravar CDs (música). Eu sei que deveria testá-lo com CDs reais de qualquer maneira, mas não quero fazer isso toda vez que fizer uma pequena alteração. Mas quero saber e testar se os dados corretos serão gravados, para que você não obtenha CDs corrompidos.

Estou usando uma biblioteca que apenas expõe APIs para gravar diretamente em uma unidade física; não permite gravar em uma imagem de disco (o que seria muito mais fácil de testar).

Como eu pude testar isso sem desperdiçar CDs e tempo para cada alteração / poucas alterações que faço?

destro
fonte
5
Seria possível para mudar para uma biblioteca que não permitem que você gravar uma imagem de disco?
FrustratedWithFormsDesigner

Respostas:

29

A resposta simples é geralmente a melhor: CD regravável?

Também para economizar tempo, escreva arquivos relativamente pequenos. Apenas faça arquivos maiores de vez em quando.

Kevin D
fonte
1
Concordo que esta é uma resposta simples e boa, mas se o WTP quiser levar o teste para outro nível, zombar da API (consulte outras respostas a esta pergunta) desbloqueará toda uma dimensão das possibilidades de teste (como automatizada).
Novelas
@louisgab Eu concordo totalmente com você, quando escrevi a resposta, estava realmente abordando a questão de desperdiçar CDs. Eu esperava que outra resposta viesse com algo melhor (e eles o fizeram). Se alguma coisa, eu recomendaria a abordagem de zombaria e sugeriria minha resposta somente quando o WTP realmente quiser testar fisicamente o processo de gravação.
Kevin D
19

Se você estiver no linux, poderá configurar um "dispositivo de CD" que seja apenas um pipe nomeado. Sua API grava no "dispositivo" e você conecta a outra extremidade a um programa que permite ver o que faz / convertê-lo em uma imagem de disco. Muitas opções lá. Consulte este artigo para obter informações sobre pipes nomeados.

A resposta de Kevin é muito mais fácil na IMO.

Spencer Rathbun
fonte
2
Na verdade, estou no Mac OS X, que também é um sistema UNIX. Vou tentar.
Novamente
6

Escreva o maior número possível de testes que usem uma simulação da API da biblioteca. Isso permite que você teste seu código em unidades. Isso mostra que seu código funciona dentro de si, assumindo que a biblioteca tenha o desempenho que deveria.

Em algum momento, você precisará fazer testes de integração que realmente usam a biblioteca. Mas o ponto é que você já tem um nível de confiança com seu próprio código antes de chegar a esse ponto. Os testes de integração geralmente levam mais tempo e recursos, como você viu. Um teste de unidade completo permite que você não confie completamente no teste de integração.

unholysampler
fonte
3

De que teste você está falando exatamente?

Lendo "Não quero fazer isso toda vez que faço uma pequena alteração" em sua pergunta, imagino que você esteja falando sobre testes de unidade .

Mais tarde, você adiciona que está usando uma API responsável pela gravação de dados em CDs. Se essa API for testada e documentada corretamente, você não precisará lidar com o processo real de gravação dos dados no CD e não precisará testá-lo. Nesse caso, você lida com testes de integração , que você não precisa fazer "toda vez que faz uma pequena alteração" .

Arseni Mourzenko
fonte
Mas preciso saber se estou usando a API corretamente.
rightfold
@WTP: veja minha edição. Além disso, uma API gravada corretamente não permitiria criar CDs corrompidos usando-a incorretamente. Se isso acontecer, provavelmente você deve procurar outra API primeiro. Uma API está aqui para fornecer uma abstração e, especialmente, para evitar lidar com as formas de evitar corrupção ao salvar dados em um CD.
Arseni Mourzenko 4/11/11
Você tem um ponto lá. A API está muito bem documentada.
Novamente
1

WTP,

Como você deseja testar seu software (não a API, nem o gravador), como Chris apontou, seria necessário um mock da API.
Para o teste de integração, um gravador "ISO" confiável deve permitir automatizar o teste do conteúdo do CD analisando o arquivo .iso.
A gravação real de um CD ou DVD não renderia resultados conclusivos, pois você não seria capaz de determinar se a causa do erro é um CD com defeito, um gravador com defeito ou um bug de software, a menos que você queira executar estatísticas de qualidade gravando várias cópias de o mesmo disco (que aparentemente você não faz).
Boa sorte!

Jerónimo Vargas
fonte