Как протестировать программное обеспечение, которое записывает компакт-диски, не тратя их впустую?

16

Я хочу написать приложение, которое можно использовать для записи компакт-дисков (музыка). Я знаю, что в любом случае я должен проверить это на реальных компакт-дисках, но я не хочу делать это каждый раз, когда делаю небольшие изменения. Но я хочу знать и проверить, будут ли записаны нужные данные, чтобы вы не получили поврежденные компакт-диски.

Я использую библиотеку, которая предоставляет только API-интерфейсы для прямой записи на физический диск; это не позволяет вам записывать образ диска (который будет намного проще тестировать).

Как я могу проверить это, не тратя впустую CD и время на каждое изменение / несколько изменений, которые я делаю?

rightfold
источник
5
Можно ли будет переключиться на библиотеку, которая позволит вам записать образ диска?
FrustratedWithFormsDesigner

Ответы:

29

Простой ответ часто лучший: перезаписываемые компакт-диски?

Также для экономии времени пишите относительно небольшие файлы. Делайте только большие файлы время от времени.

Кевин Д
источник
1
Я согласен, что это простой и хороший ответ, но если WTP хочет поднять тестирование на другой уровень, насмешка над API (см. Другие ответы на этот вопрос) откроет целый ряд возможностей тестирования (например, автоматизированный).
Луисгаб
@ louisgab Я полностью с тобой согласен, когда я писал ответ, я действительно только касался вопроса о том, как тратить компакт-диски. Я полностью ожидал другого ответа, чтобы придумать что-то лучше (и они есть). Во всяком случае, я бы порекомендовал подход насмешки и предложил свой ответ только тогда, когда WTP действительно хочет физически протестировать процесс записи.
Кевин Д
19

Если вы работаете в Linux, вы сможете настроить «устройство CD», которое является просто именованным каналом. Ваш API записывает на «устройство», а другой конец подключаете к программе, которая позволяет вам увидеть, что он делает / преобразовать его в образ диска. Там много вариантов. Смотрите эту статью для получения информации о именованных каналах.

Ответ Кевина намного проще, ИМО.

Спенсер Рэтбун
источник
2
Я на самом деле на Mac OS X, которая также является системой UNIX. Я попробую.
Право
6

Напишите как можно больше тестов, которые используют макет API библиотеки. Это позволяет вам тестировать ваш код в единицах. Это показывает, что ваш код работает внутри себя, предполагая, что библиотека работает так, как она должна.

В какой-то момент вам нужно будет провести интеграционное тестирование, которое на самом деле использует библиотеку. Но дело в том, что у вас уже есть уровень уверенности в своем собственном коде, прежде чем вы дойдете до этой точки. Интеграционные тесты, как вы видели, часто требуют больше времени и ресурсов. Столь тщательное модульное тестирование позволяет полностью не полагаться на интеграционное тестирование.

unholysampler
источник
3

О каком именно тестировании вы говорите?

Читая «Я не хочу делать это каждый раз, когда делаю небольшие изменения» , я полагаю, что вы говорите о модульном тестировании. .

Но позже вы добавите, что используете API, который отвечает за запись данных на компакт-диски. Если этот API-интерфейс протестирован и задокументирован правильно, вам не нужно иметь дело с фактическим процессом записи данных на компакт-диск, и вам не нужно тестировать его. В этом случае вы имеете дело с интеграционным тестированием , которое вам не нужно делать «каждый раз, когда вы вносите небольшое изменение» .

Арсений Мурзенко
источник
Но мне нужно знать, правильно ли я использую API.
Право
@WTP: см. Мое редактирование. Кроме того, правильно написанный API не позволит вам создавать поврежденные компакт-диски, используя его неправильно. Если это делает такие вещи, вы должны сначала искать другой API. API здесь для того, чтобы обеспечить абстракцию и особенно избегать способов избежать повреждения при сохранении данных на CD.
Арсений Мурзенко
У вас есть точка там. API очень хорошо документирован.
Право
1

ГУР,

Так как вы хотите протестировать свое программное обеспечение (не API или рекордер), как указал Крис, имитация API была бы необходима.
Для тестирования интеграции надежный регистратор «ISO» должен позволить вам автоматизировать тестирование содержимого компакт-диска путем анализа файла .iso.
На самом деле запись CD или DVD не даст окончательных результатов, поскольку вы не сможете определить, является ли причиной ошибки неисправный CD, неисправный рекордер или программная ошибка, если вы не хотите выполнять статистику качества путем записи нескольких копий тот же диск (который, видимо, нет).
Удачи!

Херонимо Варгас
источник