exponenta event banner

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

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

Если настраиваемое хранилище данных разработано на основе инструкций в разделе Разработка настраиваемого хранилища данных, выполните следующие процедуры тестирования, чтобы получить квалификацию настраиваемого хранилища данных. Сначала выполните модульные тесты, а затем тесты рабочего процесса:

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

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

Для всех этих тестовых случаев:

  • Если в описании теста не указано, предположим, что выполняется тестирование непустого хранилища данных ds.

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

Модульные испытания

Строительство

Ниже приведены инструкции по модульному тестированию для конструктора хранилища данных.

Описание тестового примераОжидаемые выходные данные

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

Объект хранилища данных пользовательского типа хранилища данных с минимальными ожидаемыми свойствами и методами

Проверка объекта хранилища данных ds имеет matlab.io.Datastore как один из его суперклассов.

Выполните следующую команду:

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

1 или true

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

Объект хранилища данных пользовательского типа хранилища данных с минимальными ожидаемыми свойствами и методами

read

Руководство по тестированию установки для read метод

Описание тестового примераОжидаемые выходные данные

Позвоните в read метод для объекта хранилища данных ds.

t = read(ds);

Данные из начала хранилища данных

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

Позвоните в read снова для объекта хранилища данных.

t = read(ds);

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

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

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

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

Ошибок нет

Корректные данные в правильном формате

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

Вызов объекта хранилища данных ds.

[t,info] = read(ds);

Без ошибок

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

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

Если больше нет доступных для чтения данных, вызовите read в объекте хранилища данных.

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

readall

Руководство по тестированию установки для readall метод

Описание тестового примераОжидаемые выходные данные

Позвоните в readall в объекте хранилища данных.

Все данные

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

Считывание из хранилища данных до hasdata(ds) является false, а затем вызовите readall способ.

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

Все данные

hasdata

Руководство по тестированию установки для hasdata метод

Описание тестового примераОжидаемые выходные данные

Позвоните в hasdata метод в объекте хранилища данных перед выполнением любых вызовов read

true

Позвоните в hasdata метод для объекта хранилища данных после выполнения нескольких вызовов read, но прежде, чем все данные будут прочитаны

true

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

true

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

false

reset

Руководство по тестированию установки для reset метод

Описание тестового примераОжидаемые выходные данные

Позвоните в reset метод в объекте хранилища данных перед выполнением любых вызовов read способ.

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

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

Ошибок нет

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

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

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

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

Ошибок нет

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

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

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

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

Ошибок нет

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

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

Если больше нет данных для чтения, вызовите reset для объекта хранилища данных, а затем вызовите read метод

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

Ошибок нет

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

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

progress

Руководство по тестированию установки для progress метод

Описание тестового примераОжидаемые выходные данные

Позвоните в progress метод в объекте хранилища данных перед выполнением любых вызовов read способ.

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

Позвоните в progress метод для объекта хранилища данных после выполнения вызова readall, но перед выполнением каких-либо вызовов read

readall(ds);
progress(ds)

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

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

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

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

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

preview

Руководство по тестированию установки для preview метод

Описание тестового примераОжидаемые выходные данные

Звонить preview в объекте хранилища данных перед выполнением любых вызовов read.

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

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

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

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

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

Звонить preview в объекте хранилища данных после выполнения нескольких вызовов read и вызов reset.

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

Звонить preview в объекте хранилища данных, когда больше нет данных для чтения.

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

Звонить preview после выполнения нескольких вызовов read метод и затем вызов read снова.

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

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

Звонить preview, а затем позвоните readall в хранилище данных.

readall возвращает все данные из хранилища данных.

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

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

partition

Руководство по тестированию установки для partition метод

Описание тестового примераОжидаемые выходные данные

Звонить partition в объекте хранилища данных ds с допустимым числом разделов и допустимым индексом разделов.

Звонить read в разделе хранилища данных и проверьте данные.

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

Убедитесь, что раздел является допустимым.

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

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

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

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

isequal возврат инструкции true.

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

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

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

Проверка данных, возвращенных вызовом read и preview в разделе секционированного хранилища данных.

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 должен быть объектом хранилища данных пользовательского хранилища данных.

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

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

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

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

initializeDatastore

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

Описание тестового примераОжидаемые выходные данные

Звонить initializeDatastore в объекте хранилища данных ds с действительным info структура.

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

  • FileName

  • Offset

  • Size

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

Например, инициализируйте info struct, а затем вызовите initializeDatastore в объекте хранилища данных ds.

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

Проверьте инициализацию, изучив свойства объекта хранилища данных.

ds

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

getLocation

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

Описание тестового примераОжидаемые выходные данные

Звонить getLocation в объекте хранилища данных.

location = getLocation(ds)

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

  • Список файлов или каталогов

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

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

resolve(location)

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

isfullfile

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

Описание тестового примераОжидаемые выходные данные

Звонить isfullfile в объекте хранилища данных.

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

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

Проверьте тесты рабочего процесса в соответствующей среде.

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

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

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

Высокий рабочий процесс

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

Описание тестового примераОжидаемые выходные данные

Создание массива высокого уровня путем вызова tall в объекте хранилища данных ds.

t = tall(ds)

tall функция возвращает выходные данные того же типа, что и выходные данные read метод хранилища данных.

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

t = tall(ds)

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

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

Обратиться gather и проверьте результат.

Примеры см. в разделе Рабочий процесс больших данных с использованием массивов и хранилищ данных (панель инструментов параллельных вычислений).

Ошибок нет

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

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

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

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

Описание тестового примераОжидаемые выходные данные

Звонить mapreduce в объекте хранилища данных ds.

outds = mapreduce(ds,@mapper,@reducer)
Дополнительные сведения см. в разделе mapreduce.

Для поддержки использования mapreduce функция, read метод пользовательского хранилища данных должен возвращать оба значения info и data выходные аргументы.

Без ошибок

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

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

Примечание

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

После завершения внедрения и проверки пользовательского хранилища данных оно готово к использованию.

См. также

| |

Связанные темы