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?
Respostas:
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.
fonte
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.
fonte
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.
fonte
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" .
fonte
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!
fonte