SourceForge.net Logo
prevtopnext
Система тестирования izh_test
    Частные случаи

Чтение/запись данных в специфических форматах

При использовании различных собственных нестандартных форматов данных, обычно приходится на всякое изменение в сохраняемой структуре менять также процедуру чтения и процедуру записи (иногда при хорошо организованном коде приходится делать только одно изменение на чтение/запись).

Таким образом, хотелось бы всегда быть уверенным, что структура нормально сохраняется, а после сохранения также нормально читается.

Самый простой и правильный путь протестировать это:

  1. заполнить тестовую структуру данных из программы
  2. сохранить тестовую структуру данных в файл
  3. прочитать тестовую структуру данных из файла
  4. сравнить прочитанную тестовую структуру данных с первоначальной

Однако в этом случае нужна ещё хорошая процедура сравнения тестовых структур данных. А при изменениях в структуре тестовых данных эту процедуру сравнения тоже нужно не забывать менять, что ещё меньше уменьшает надёжность.

Иногда для тестовой структуры уже бывает есть какой-то быстрый способ сохранения в текстовом виде или ещё каком (без чтения). В этом случае предыдущую тестовую последовательность действий можно заменить на следующую:

  1. заполнить тестовую структуру данных из программы
  2. сохранить тестовую структуру данных в файл
  3. прочитать тестовую структуру данных из файла
  4. сохранить первоначальную структуру в текстовом виде
  5. сохранить прочитанную структуру в текстовом виде
  6. сравнить текстовое представление первоначальной и прочитанной структуры
Причём последний пункт можно объединить, выполнить командой check , тогда в случае проблем можно будет сразу видеть различия.

Ещё проще, если имеется способ не только сохранять структуры в каком-то текстовом виде, но и читать из неё (например xml). В таком случае банально тестовое заполнение можно делать в текстовом редакторе, а тестовая программа будет просто читать тестовое заполнение из текстового файла.

Чтение/запись текстового формата вообще выполняется в один шаг тестом типа exec_check . Тестовой программе просто говорится откуда и в каком формате читать, а сохраняет она сразу в результат теста.

Иногда бывает полезно протестировать чтение/запись самого эталона, так как часто при сохранении в текстовом формате происходит нормализация и текстовый пример, созданный в текстовом редакторе может прямо не совпадать с результатом после чтения/записи.

В таком случае нужно использовать поле result_file теста exec_check , так как на несколько тестов будет приходиться одинаковый эталон, то неплохо бы, чтобы они оставляли после себя разные результаты.

В некоторых совсем сложных случаях не бывает ни процедуры сравнения структур, ни сохранения их в текстовом виде. В таком случае протестировать "хоть что-то" можно следующим образом:

  1. заполнить тестовую структуру данных из программы
  2. сохранить тестовую структуру данных в файл
  3. прочитать тестовую структуру данных из файла
  4. записать прочитанную структуру в другой файл
  5. сравнить содержание первого и второго файлов
Конечно, гарантировать в этом случае то, что мы сохраняем всё что можно, мы не можем. Но, по крайней мере, мы убеждаемся что процедуры чтения/записи работают, и они соответствуют друг другу..


prevtopnext

SourceForge.net Logo