План тестирования проекта nest-ldap

План тестирования


4 Описание методов и варианты тестов.
обозначения:
ВД - Входные Данные
ОР - Ожидаемый Результат

-------------------------
Тестирование класса MasterHoleyCache
-------------------------

Группа тестов 1: Метод checkout - заполнение кэша из хранилища.
Тест 1.1:
	ВД: Вызвать после инициализации хранилица (объекта класса LdapSanStorage) 
	ОР: Заполненный кэш из дерева LDAP. 

Тест 1.2:
	ВД: Вызвать перед инициализацией хранилица (объекта класса LdapSanStorage) 
	ОР: Должно быть сгенерировано исключение типа NullPointerException

Группа тестов 2: Метод add - добавление элемента в кэш.
Тест 2.1:
	ВД: Передавать различные элементы наследованные от SanElement
	ОР: Добавление элемента в кэш. Вывод на экран значения ID этого элемента в кэше. 

Тест 2.2:
	ВД: Передеать элемент типа null
	ОР: Должно быть сгенерировано исключение типа NullPointerException

Тест 2.3:
	ВД: Повторно передать элемент, который только что передавали
	ОР: Должно быть сгенерировано исключение типа ElementExistException

Группа тестов 3: Метод removeByID - удаление элемента из кэша по идентификатору.
Тест 3.1:
	ВД: Передать корректный ID, т.е. тот, который сейчас занят в кэше.
	ОР: Удаление элемента из кэша и хранилища.

Тест 3.2:
	ВД: Передать некорректный ID, т.е. тот, который сейчас не занят в кэше.
	ОР: Должно быть сгенерировано исключение типа UnknownIDException

Группа тестов 4: Метод remove - удаление элемента из кэша по SanElement.
Тест 4.1:
	ВД: Передать корректный SanElement, т.е. тот, который существует в кэше
	ОР: Удаление элемента из кэша и хранилища.

Тест 4.2:
	ВД: Передать элемент типа null
	ОР: Должно быть сгенерировано исключение типа NullPointerException

Тест 4.3:
	ВД: Передать SanElement, которого нет в кэше.
	ОР: Должно быть сгенерировано исключение типа UnknownElementException

Группа тестов 5: Метод isLoaded - проверка на загруженность элемента в кэше
Тест 5.1:
	ВД: Передать корректный SanElement, т.е. тот, который существует в кэше
	ОР: Должно быть возвращено значение true - такой элемент существует в кэше

Тест 5.2:
	ВД: Передать элемент типа null
	ОР: Должно быть сгенерировано исключение типа NullPointerException

Тест 5.3:
	ВД: Передать SanElement, которого нет в кэше.
	ОР: Должно быть возвращено значение false - такого элемента нет в кэше

Группа тестов 6: Метод isLoadedByID - проверка на загруженность элемента в кэше
Тест 6.1:
	ВД: Передать корректный ID, т.е. тот, который сейчас занят в кэше.
	ОР: Должно быть возвращено значение true - такой ID существует в кэше

Тест 6.2:
	ВД: Передать некорректный ID, т.е. ID меньший 0 и ID больший размера кэша
	ОР: Должно быть сгенерировано исключение типа UnknownIDException

Тест 6.3:
	ВД: Передать ID, которого нет в кэше.
	ОР: Должно быть возвращено значение false - такого ID нет в кэше

Группа тестов 7: Метод countOfLoaded - количество элементов загруженных в кэш
Тест 7.1:
	ВД: Вызвать метод, когда кэш пуст
	ОР: Должно быть возвращено значение 0

Тест 7.2:
	ВД: Загрузить n элементов в кэш (Подсчитать их при загрузке, при изначальном пустом кэше). Вызвать метод.
	ОР: Должно быть возвращено значение n.

Тест 7.3:
	ВД: Инициализировать кэш при изначально не пустом дереве. Вызвать метод (Он возвратит n ). Загрузить 
	    m элементов в кэш. Вызвать метод.
	ОР: Должно быть возвращено значение n + m.

Группа тестов 8: Метод countOfID - количество ID занятых в кэше
Тест 8.1:
	ВД: Вызвать метод, когда кэш пуст
	ОР: Должно быть возвращено значение 0

Тест 8.2:
	ВД: Загрузить n элементов в кэш (Подсчитать их при загрузке, при изначальном пустом кэше). Вызвать метод.
	ОР: Должно быть возвращено значение n.

Тест 8.3:
	ВД: Инициализировать кэш при изначально не пустом дереве. Вызвать метод (Он возвратит n ). Загрузить 
	    m элементов в кэш. Вызвать метод.
	ОР: Должно быть возвращено значение n + m.

Группа тестов 9: Метод getElements - получить элементы заданного типа
Тест 9.1:
	ВД: Необходимо иметь не пустое дерево LDAP. Инициализировать кэш. Вызвать метод с типом SanElement.
	ОР: Должно быть возвращено множество элементов, находящихся в дереве.
Тест 9.2:
	ВД: Необходимо иметь не пустое дерево LDAP. Инициализировать кэш. Вызвать метод с типом Device.
	ОР: Должно быть возвращено множество элементов типа Device, находящихся в дереве.

Тест 9.3:
	ВД: Необходимо иметь не пустое дерево LDAP. Инициализировать кэш. Вызвать метод с типом IPNetwork.
	ОР: Должно быть возвращено множество элементов типа IPNetwork, находящихся в дереве.

Группа тестов 10: Метод get - получить элементы заданного типа
Тест 10.1:
	ВД: Необходимо иметь не пустое дерево LDAP. Два кэша. Необходимо брать ID у одного кэша и вызывать
	метод у другого
	ОР: Должно быть возвращен элемент, с переданным идентификатором

------------------------------
Тестирование класса LdapSanStorageManager
------------------------------
Группа тестов 1: Конструктор класса - соединение с сервером.
Тест 1.1:
	ВД: Вызвать конструктор с корректными параметрами сервера. Дерево на сервере LDAP пусто.
	ОР: Подключение к серверу.

Тест 1.2:
	ВД: Вызвать конструктор с неправильным каким-либо параметром.
	ОР: Должно быть сгенерировано исключение типа StorageBadConnectionException 

Тест 1.3:
	ВД: Вызвать конструктор с корректными параметрами сервера. 
	Дерево на сервере не пусто с установленным главным устройством.
	ОР: Подключение к серверу. Создание в кэше массива занятых идентификаторов. 
	Чтение из Ldap главного устройства (rootDevice).

Тест 1.4:
	ВД: Вызвать конструктор с корректными параметрами сервера. 
	Дерево на сервере не пусто. Главное устройство не установлено.
	ОР: Подключение к серверу. Создание в кэше массива занятых идентификаторов. 
	Выбор из списка устройств главного.

Группа тестов 2: getElements - чтение группы элементов с дерева.
Тест 2.1:
	ВД: Дерево на сервере пусто.  
	ОР: Кэш остался пуст.

Тест 2.2:
	ВД: Дерево на сервере не пусто. Кэш пуст.
	ОР: Все элементы из дерева LDAP должны быть прочитаны с сервера и загружены в кэш.

Тест 2.3:
	ВД: Дерево на сервере не пусто. Кэш уже содержит все элементы дерева.
	ОР: Кэш должен не измениться.

Тест 2.4:
	ВД: Дерево на сервере не пусто. Вызвать метод для определенного типа SAN элементов. 
	(Например, Device,Network,Floor и т.д.)
	ОР: В кэш должны быть добавлены элементы соответствующего типа.

Группа тестов 3: commit - запись изменени в дерево.
Тест 3.1:
	ВД: Загруженный кэш из дерева. Никаких изменений не выполнено.
	ОР: Дерево на сервере не должно измениться.

Тест 3.2:
	ВД: Загруженный кэш из дерева. Добавить какой-либо элемент SAN структуры.
	ОР: Добавленный элемент должен быть записан на сервер, сохранив все свои свойства.

Тест 3.3:
	ВД: Загруженный кэш из дерева. Изменить свойство какого-либо объекта
	ОР: Измененное свойство элемента должно быть записано в дерево.

------------------------------
Тестирование класса LdapWriter
------------------------------
Группа тестов 1: Запись элементов Device
Тест 1.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа Device
	ОР: На сервере должны быть записаны элементы типа Device.

Группа тестов 2: Запись элементов LinkInterface
Тест 2.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа LinkInterface
	ОР: На сервере должны быть записаны элементы типа LinkInterface

Группа тестов 3: Запись элементов Room
Тест 3.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа Room
	ОР: На сервере должны быть записаны элементы типа Room

Группа тестов 4: Запись элементов Floor
Тест 4.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа Floor
	ОР: На сервере должны быть записаны элементы типа Floor

Группа тестов 5: Запись элементов Building
Тест 5.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа Building
	ОР: На сервере должны быть записаны элементы типа Building

Группа тестов 6: Запись элементов Network
Тест 6.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа Network
	ОР: На сервере должны быть записаны элементы типа Network

Группа тестов 7: Запись элементов NetworkInterface
Тест 7.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа NetworkInterface
	ОР: На сервере должны быть записаны элементы типа NetworkInteface

Группа тестов 8: Запись элементов CompositOU
Тест 8.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа CompositOU
	ОР: На сервере должны быть записаны элементы типа CompositOU

Группа тестов 9: Запись элементов SimpleOU
Тест 9.1:
	ВД: Сгенерировать SAN структуру. Получить из нее элементы типа SimpleOU
	ОР: На сервере должны быть записаны элементы типа SimpleOU

------------------------------
Тестирование класса Cache
------------------------------
Группа тестов 1: Конструктор класса
Тест 1.1:
	ВД: Вызвать конструктор с корректными параметрами
	ОР: Должен создаться кэш

Тест 1.2:
	ВД: Вызвать конструктор с массивом для freeID null.
	ОР: Должно быть сгенерировано исключение типа CacheException

Группа тестов 2: Метод add - добавление элемента
Тест 2.1:
	ВД: Передать в метод корректный SanElement
	ОР: Элемент должен добавиться в кэш

Тест 2.2:
	ВД: Передать в метод SanElement равный null
	ОР: Должно быть сгенерировано исключение типа CacheException("Cache: attempt to add null instaed of element.")

Тест 2.3:
	ВД: Вызвать метод у не инициализированного cache
	ОР: Должно быть сгенерировано исключение типа CacheException("Trying to work with not created cache.")

Тест 2.4:
	ВД: Вызвать метод два раза подряд с одним и тем же элементом
	ОР: Должно быть сгенерировано исключение типа RuntimeException"Cache: 
	    INTERNAL ERROR: attempt to replace existing element (ID = "+id+").")

Группа тестов 3: Метод get - выбор элемента из кэша
Тест 2.1:
	ВД: Передать в метод корректный SanElement
	ОР: Элемент должен вернуться элемент из кэш

Тест 3.2:
	ВД: Передать в метод SanElement равный null
	ОР: Должно быть сгенерировано исключение типа CacheException("Cache: attempt to get null instaed of element.")

Тест 3.3:
	ВД: Вызвать метод у не инициализированного cache
	ОР: Должно быть сгенерировано исключение типа CacheException("Trying to work with not created cache.")

------------------------------
Тестирование класса Ldap
------------------------------
Группа тестов 1: Соединение с сервером
Тест 1.1:
	ВД: Попробовать соединиться с корректными параметрами сервера
	ОР: Должно произойти соединени

Тест 1.2:
	ВД: Соединиться с корректными параметрами сервера, который не запущен в данный момент
	ОР: Должно быть сгенерировано исключение типа BadConnectionException 

Тест 1.3:
	ВД: Соединиться c сервером с неправильно заданным паролем
	ОР: Должно быть сгенерировано исключение типа BadConnectionException 

Тест 1.4:
	ВД: Соединиться с сервером с неправильно заданным suffix
	ОР: Должно быть сгенерировано исключение типа BadConnectionException 

Тест 1.5:
	ВД: Соединиться c сервером с неправильно заданным url
	ОР: Должно быть сгенерировано исключение типа BadConnectionException 

Группа тестов 2: Записать на сервер запись
Тест 2.1:
	ВД: Запись. Для записи использовать корректную иерархию объектов сервера.
	ОР: На сервере должна быть эта запись

Тест 2.2:
	ВД: Запись. Для записи использовать не корректную иерархию объектов сервера.
	ОР: Должно быть сгенерировано исключение некорректной записи.

Группа тестов 3: Прочитать запись с сервер запись
Тест 3.1:
	ВД: Запись в дереве Ldap. Для чтения использовать корректную иерархию объектов сервера.
	ОР: Получить объект с набором свойств.

Тест 3.2:
	ВД: Запись в дереве Ldap. Для записи использовать не корректную иерархию объектов сервера.
	ОР: Должно быть сгенерировано исключение некорректной чтения.