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

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

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

  • Модульные тесты квалифицируют конструктора datastore и методы.

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

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

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

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

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

Конструкция

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

Описание тестаОжидаемый Выход

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

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

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

Запустите эту команду:

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

1 или true

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

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

read

Инструкции по модульному тесту для read метод

Описание тестаОжидаемый Выход

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

t = read(ds);

Данные с начала datastore

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

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

t = read(ds);

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

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

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

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

Никакие ошибки

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

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

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

[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);

Никакие ошибки

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

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

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

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

Никакие ошибки

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

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

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

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

Никакие ошибки

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

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

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

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

Никакие ошибки

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.

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

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

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

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

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

Вызовите preview на объекте datastore после совершения нескольких звонков к read и вызов reset.

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

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

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

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

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

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

Вызовите preview, и затем вызовите readall на datastore.

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

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

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

partition

Инструкции по модульному тесту для partition метод

Описание тестаОжидаемый Выход

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

Вызовите read на разделе datastore и проверяют данные.

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

Проверьте, что раздел допустим.

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

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

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

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

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

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

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

Вызовите partition на объекте ds datastore с количеством разделов, заданных как 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.

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

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

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

initializeDatastore

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

Описание тестаОжидаемый Выход

Вызовите initializeDatastore на объекте ds datastore с допустимым info struct ().

info struct содержит эти поля:

  • FileName

  • Offset

  • Size

FileName имеет тип данных char и поля Offset и Size имеют тип данных дважды.

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

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

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

ds

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

getLocation

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

Описание тестаОжидаемый Выход

Вызовите getLocation на объекте datastore.

location = getLocation(ds)

На основе вашей пользовательской реализации datastore, location выход имеет любой их:

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

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

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

resolve(location)

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 на объекте ds datastore.

t = tall(ds)

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 на объекте ds datastore.

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

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

Никакая ошибка

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

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

Примечание

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

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

Смотрите также

| |

Похожие темы

Для просмотра документации необходимо авторизоваться на сайте