powered by simpleCommunicator - 2.0.36     © 2025 Programmizd 02
Форумы / Тестирование и QA [игнор отключен] [закрыт для гостей] / как писать unit-тесты ?
2 сообщений из 2, страница 1 из 1
как писать unit-тесты ?
    #36783783
брадобрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть БД с некой серверной логикой. Надо эту логику тестить.
Как правило это пакет с процедурами.
Вся разработка, естественно, с системой контроля версий.


Есть новая версия пакета. Предположим изменились процедуры
УправлениеКонтрагентами.УдалитьКонтрагента().
УправлениеКонтрагентами.УдалитьДоговорыКонтрагента().

Процедура УдалитьКонтрагента()
- удаляет заданного контрагента
- удаляет договоры заданного контрагента (вызывается УдалитьДоговорыКонтрагента() )
- синхронизирует некую кеш-таблицу с отражением текущих балансов (вызывается СинхронизацияБалансов)

Процедура УдалитьДоговорыКонтрагента()
- удаляет заданного контрагента
- удаляет договоры заданного контрагента

Процедура СинхронизацияБалансов()
- запускает один SQL запрос


Итак вопросы:
вопрос 1 . Тестовая среда (тестовая база) должна быть чистой?

То есть перед вызовом теста каждого юнита надо
а. иметь чистую среду
б. затем в модуле ПодготовкаКТесту() заполнить все таблицы, учавствующие в тестировании?
в. затем запустить тест?
г. затем в модуле ОчисткаПослеТеста() очистить все таблицы, учавствующие в тестировании юнита?

То есть в процедуре, которая будет тестить юнит УдалитьКонтрагента(), необходимо:
1. вставить инсертами контгагентов, договоры.
2. запустить тест
3. проверить, что контрагента нет и договоров нет
4. проверить что после синхронизации балансов нет баланса удаленного контрагента.

так?



вопрос 2 . Считается ли правильным тестом одного родительского юнита, который (юнит) вызывает другие юниты, считать протестированными эти подчиненные юниты?
То есть в данном примере если мы делаем тест процедуры УдалитьКонтрагента(), который внутри себя вызывает УдалитьДоговорыКонтрагента, то надо ли делать отделоьный тест для УдалитьДоговорыКонтрагента ?



Короче, есть набор процедур, которые вызывают друг друга (обычно не в виде графа, а в виде дерева).
Надо ли писать тест для каждой из них?
Надо ли перед вызовом каждого юнита считать, что база чистая (за исключением совсем общих вещей типа справочников ВидыДоговоров, его очевидно, заполнять перед каждым юнитом не стоит).
...
Рейтинг: 0 / 0
как писать unit-тесты ?
    #36783880
DexterI
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
брадобрей


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

депендс он.. как гворится..

1. не совсем понял в чем прикол "чистой" базы в данном случае? Если у вас при тестировании будет 2-3 контрагента и 5-6 договоров к ним, вы это протестите и скажете - все зашибись работает... а потом на продакшене, где этих контагентов 1 миллион, к примеру, процедурка у вас вообще завалится по нехватке памяти... или на тесте у вас все выполнится за секунду, а на продакшене будет выполняться неделю...
2. Если с помощью вызова родительской процедуры вы полностью покроете тестами вызов дочерней (к примеру, перебираются все возможные комбинации параметров вызова дочерней процедуры), то отдельно дочернюю можно не тестить...
...
Рейтинг: 0 / 0
2 сообщений из 2, страница 1 из 1
Форумы / Тестирование и QA [игнор отключен] [закрыт для гостей] / как писать unit-тесты ?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]