Руководства по тестированию для пользовательских хранилищ данных

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

Если вы разработали свой пользовательский datastore на основе инструкций в Develope Custom Datastore, то выполните эти процедуры тестирования, чтобы проверить свой пользовательский datastore. Сначала выполните модульные тесты, а затем тесты рабочего процесса:

  • Модульные тесты определяют конструктор и методы datastore.

  • Тесты рабочего процесса определяют использование datastore.

Для всех этих тестов:

  • Если не указано в описании теста, примите, что вы тестируете непустой datastore ds.

  • Проверьте тесты на расширениях файлов, кодировках файлов и местоположениях данных (таких как Hadoop®), что ваш пользовательский datastore предназначен для поддержки.

Модульные тесты

Конструкция

Инструкции по модульному тесту для конструктора datastore следующие.

ТестОжидаемый выход

Проверьте, работает ли ваш пользовательский конструктор datastore с минимальными необходимыми входами.

Объект Datastore вашего пользовательского типа datastore с минимальными ожидаемыми свойствами и методами

Проверьте, является ли ваш объект datastore ds имеет matlab.io.Datastore как один из его суперклассов.

Выполните эту команду:

isa(ds,'matlab.io.Datastore') 

1 или true

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

Объект Datastore вашего пользовательского типа datastore с минимальными ожидаемыми свойствами и методами

read

Модульный тест руководства по read метод

ТестОжидаемый выход

Вызовите read метод для объекта datastore ds.

t = read(ds);

Данные из начала datastore

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

Вызовите read снова метод для объекта datastore.

t = read(ds);

Данные, начиная с конечной точки предыдущей операции чтения

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

Продолжите вызов read метод для объекта datastore в цикле while.

while(hasdata(ds))
  t = read(ds);
end

Ошибок нет

Исправление данных в правильном формате

Когда данные будут доступны для чтения, проверьте info выход (при наличии) read способ.

Вызовите объект datastore ds.

[t,info] = read(ds);

Нет ошибки

info содержит ожидаемую информацию

t содержит ожидаемые данные

Когда больше нет доступных для чтения данных, вызывайте read на объекте datastore.

Ожидаемый выход или сообщение об ошибке на основе пользовательской реализации datastore.

readall

Модульный тест руководства по readall метод

ТестОжидаемый выход

Вызовите readall метод для объекта datastore.

Все данные

Вызовите readall метод на объекте datastore, когда hasdata(ds) является false.

Читайте из datastore до hasdata(ds) является false, и затем вызовите readall способ.

while(hasdata(ds))
  t = read(ds);
end
readall(ds)

Все данные

hasdata

Модульный тест руководства по hasdata метод

ТестОжидаемый выход

Вызовите hasdata метод для объекта datastore перед выполнением каких-либо вызовов в read

true

Вызовите hasdata метод на объекте datastore после нескольких вызовов в read, но перед чтением всех данных

true

Когда больше данных доступно для чтения, вызовите readall метод, а затем вызов hasdata способ.

true

Когда больше нет доступных для чтения данных, вызовите hasdata способ.

false

reset

Модульный тест руководства по reset метод

ТестОжидаемый выход

Вызовите reset метод для объекта datastore перед выполнением каких-либо вызовов read способ.

Проверьте, что read метод возвращает соответствующие данные после вызова в reset способ.

reset(ds);
t = read(ds);

Ошибок нет

The read возвращает данные из начала datastore.

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

Когда больше данных доступно для чтения, вызовите reset метод после нескольких вызовов read способ.

Проверьте, что read метод возвращает соответствующие данные после вызова reset способ.

Ошибок нет

The read метод возвращает данные из начала datastore.

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

Когда больше данных доступно для чтения, вызовите reset метод после вызова readall способ.

Проверьте, что read метод возвращает соответствующие данные после вызова reset способ.

Ошибок нет

The read метод возвращает данные из начала datastore.

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

Когда больше нет доступных для чтения данных, вызовите reset метод для объекта datastore, а затем вызов read метод

Проверьте, что read возвращает соответствующие данные после вызова в reset способ.

Ошибок нет

The read метод возвращает данные из начала datastore.

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

progress

Модульный тест руководства по progress метод

ТестОжидаемый выход

Вызовите progress метод для объекта datastore перед выполнением каких-либо вызовов read способ.

0 или ожидаемый выход, основанный на пользовательской реализации datastore.

Вызовите progress метод для объекта datastore после вызова readall, но прежде чем совершать какие-либо вызовы в read

readall(ds);
progress(ds)

0 или ожидаемый выход, основанный на пользовательской реализации datastore.

Вызовите progress метод на объекте datastore после нескольких вызовов в read и в то время как больше данных доступно для чтения.

Часть между 0 и 1 или ожидаемый выход, основанный на пользовательской реализации datastore.

Вызовите progress метод на объекте datastore, когда больше нет доступных для чтения данных.

1 или ожидаемый выход, основанный на пользовательской реализации datastore.

preview

Модульный тест руководства по preview метод

ТестОжидаемый выход

Функции preview на объекте datastore перед выполнением каких-либо вызовов в read.

The preview метод возвращает ожидаемые данные от начала datastore, основанные на пользовательской реализации datastore.

Функции preview на объекте datastore после нескольких вызовов в read и в то время как больше данных доступно для чтения.

The preview метод возвращает ожидаемые данные от начала datastore, основанные на пользовательской реализации datastore.

Функции preview на объекте datastore после вызова readall и в то время как больше данных доступно для чтения.

The preview метод возвращает ожидаемые данные от начала datastore, основанные на пользовательской реализации datastore.

Функции preview на объекте datastore после нескольких вызовов в read и вызов в reset.

The preview метод возвращает ожидаемые данные от начала datastore, основанные на пользовательской реализации datastore.

Функции preview на объекте datastore, когда больше нет доступных для чтения данных.

The preview метод возвращает ожидаемые данные от начала datastore, основанные на пользовательской реализации datastore.

Функции preview после нескольких вызовов в read метод, а затем вызов read снова.

The read метод возвращает данные, начиная с конечной точки предыдущей операции read.

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

Функции preview, а затем позвоните readall на datastore.

The readall метод возвращает все данные из datastore.

В то время как datastore имеет данные, доступные для чтения, вызывайте preview, а затем позвоните hasdata.

The hasdata метод возвращает true.

partition

Модульный тест руководства по partition метод

ТестОжидаемый выход

Функции partition на объекте datastore ds с допустимым количеством разделов и допустимым индексом разделов.

Функции read в разделе datastore и проверьте данные.

subds = partition(ds,n,index)
read(subds)

Проверьте, что раздел действителен.

isequal(properties(ds),properties(subds))
isequal(methods(ds),methods(subds))

The partition метод разделяет datastore на n разделы и возвраты раздел, соответствующий заданному index.

Возвращенный раздел subds должен быть объектом datastore пользовательского datastore.

Секционированный datastore subds должны иметь те же методы и свойства, что и исходный datastore.

The isequal оператор возвращает true.

Вызывающие read в разделе возвращает данные, начиная с начала раздела.

Если вы задаете размер чтения, то размер возвращенных данных эквивалентен размеру чтения.

Функции partition на объекте datastore ds с количеством разделов, заданным как 1 и index возвращенного раздела, заданного как 1.

Проверьте возвращенные данные по телефону read и preview в разделе секционированного datastore.

subds = partition(ds,1,1)
isequal(properties(ds),properties(subds))
isequal(methods(ds),methods(subds))
isequaln(read(subds),read(ds))
isequaln(preview(subds),preview(ds))

Раздел subds должен быть объектом datastore пользовательского datastore.

Раздел subds должны иметь те же методы и свойства, что и исходный datastore ds.

The isequal и isequaln операторы возвращают true.

Функции partition на subds разделов с допустимым количеством разделов и допустимым индексом разделов.

Перераспределение раздела datastore должно работать без ошибок.

initializeDatastore

Если ваш datastore наследует от matlab.io.datastore.HadoopFileBased, затем проверьте поведение initializeDatastore использование руководящих принципов в этой таблице.

ТестОжидаемый выход

Функции initializeDatastore на объекте datastore ds с допустимым info struct.

The info struct содержит следующие поля:

  • FileName

  • Offset

  • Size

FileName относится к типу данных char и поля Offset и Size имеют тип данных double.

Для примера инициализируйте info struct, а затем вызов initializeDatastore на объекте datastore ds.

info = struct('FileName','myFileName.ext',...
                       'Offset',0,'Size',500)
initializeDatastore(ds,info)

Проверьте инициализацию, исследуя свойства вашего объекта datastore.

ds

The initializeDatastore метод инициализирует пользовательский объект datastore ds с необходимой информацией от info struct.

getLocation

Если ваш datastore наследует от matlab.io.datastore.HadoopFileBased, затем проверьте поведение getLocation использование этих руководящих принципов.

ТестОжидаемый выход

Функции getLocation на объекте datastore.

location = getLocation(ds)

Основываясь на вашей пользовательской реализации datastore, location выводится одно из следующих:

  • Список файлов или директорий

  • a matlab.io.datastore.DsFileSet объект

Если location является matlab.io.datastore.DsFileSet объект, затем вызов resolve для проверки файлов в location выход.

resolve(location)

The getLocation метод возвращает расположение файлов в Hadoop.

isfullfile

Если ваш datastore наследует от matlab.io.datastore.HadoopFileBased, затем проверьте поведение isfullfile использование этих руководящих принципов.

ТестОжидаемый выход

Функции isfullfile на объекте datastore.

Основываясь на вашей пользовательской реализации datastore, isfullfile метод возвращает true или false.

Тесты рабочего процесса

Проверьте тесты рабочего процесса в соответствующем окружении.

  • Если ваш datastore наследует только от matlab.io.Datastore, затем проверьте все тесты рабочих процессов в локальном MATLAB® сеанс.

  • Если ваш datastore имеет поддержку параллельной обработки (наследует от matlab.io.datastore.Partitionable), затем проверьте тесты рабочего процесса в параллельных окружениях выполнения, таких как Parallel Computing Toolbox™ и MATLAB Parallel Server™.

  • Если ваш datastore имеет поддержку Hadoop (наследует от matlab.io.datastore.HadoopFileBased), затем проверьте тесты рабочего процесса в кластере Hadoop.

Рабочий процесс Tall

Инструкции по тестированию для tall рабочий процесс

ТестОжидаемый выход

Создайте длинный массив путем вызова tall на объекте datastore ds.

t = tall(ds)

The tall функция возвращает выход, которая является совпадающим типом данных как выход read метод datastore.

Для этого тестового шага создайте объект datastore с данными, которые помещаются в вашей системной памяти. Затем создайте длинный массив, используя этот объект datastore.

t = tall(ds)

Если ваши данные являются числовыми, примените соответствующую функцию, подобную mean функцию для обоих ds и t, затем сравните результаты.

Если ваши данные имеют тип данных string или categorical, затем применить unique функция в столбце ds и столбец t, затем сравните результаты.

Применить gather и проверьте результат.

Для примеров смотрите Рабочий процесс Больших данных с использованием высоких массивов и хранилищ данных (Parallel Computing Toolbox).

Ошибок нет

Функция возвращает выход правильного типа данных (не типа tall тип данных).

Функция возвращает тот же результат, применяется ли она к ds или к t.

Рабочий процесс MapReduce

Инструкции по тестированию для рабочего процесса MapReduce

ТестОжидаемый выход

Функции mapreduce на объекте datastore ds.

outds = mapreduce(ds,@mapper,@reducer)
Для получения дополнительной информации см. mapreduce.

Для поддержки использования mapreduce function, the read метод вашего пользовательского datastore должен вернуть оба info и data выходные аргументы.

Нет ошибки

Операция MapReduce возвращает ожидаемый результат

Следующие шаги

Примечание

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

После завершения реализации и валидации пользовательского datastore, пользовательский datastore готов к использованию.

См. также

| |

Похожие темы