OberonCore

Библиотека  Wiki  Форум  BlackBox  Компоненты  Проекты
Текущее время: Вторник, 19 Март, 2024 08:07

Часовой пояс: UTC + 3 часа




Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3  След.
Автор Сообщение
СообщениеДобавлено: Пятница, 10 Апрель, 2009 14:15 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
Категорически согласен. ... А так паттерны в виде неформальных приемов ходили-то уже давно.
Таки неверно, что они ходили в неформальном виде. Какие-то, конечно, и в неформальном виде -- они же все время нарождаются.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Пятница, 10 Апрель, 2009 23:46 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
А всё же.
Раз всё из модулей, и для каждого модуля свой тестовый модуль с тестовой процедурой, то два вопроса:

1. Как назвать тестовые модули и/или тестовые процедуры. Чтобы дисциплина.

2. Как прогонять.

Простейший (текущий :)) вариант: 1 -- как попало; 2 -- тупым коммандером:
(!)"М1.P1;M2.P2;..."
Кстати, интересно, сколько тут можно напихать, пока коммандер не подавится.
Но это легко исправить: дать имена модулей.процедур, столбиком к примеру, ну и шнягу впереди приписать, у нас же текст как интерфейс, мол, (!)xUnit.Do

Можно только имена модулей перечислять, где тестовые процедуры, а шняга сама будет все команды из каждого модуля вызывать. Или, лучше, одну команду Test.

Порядок тестов, вроде, важен. Значит, как-то его задавать по-любому надо.
Тесты в модуле пронумеровать-по порядку расставить?
Через Met'у подряд их и перебрать. А лучше просто одну: Test, да и всё. А там все остальные.

Способы именований:

А. Каджый тестирующий модуль имеет доп. суффикст Test по сравнению с тестируемым. Плюс: всё тут же. Он же и минус -- отковыривать тесты от нетестов (придется Sym, Code чистить).

B. На каждую подсистему Abc заводим доп. подсистему Abctest, в которой тестовые модули имеют те же имена, что и тестируемые. Или другие. Главное, полный донт фак в смысле отковыривания тестов от нетестов. В случае чего вбил в Логе в имя модуля инфикс test, дважды кликнул, да Ctrl+0.

Автоматически список модулей генерить умеем (для новичков в комплекте с Информатики-21 примерчики, Info21sysFiles, кажется).
Сгенерили, переставили один раз в нужный порядок, приписали (!)xUnit.Do, и понеслась.
Пусть xUnit.Do сама .Test к именам модулей приписывает.

Может, проверять в Do, чтобы не было модулей, которые забыли в список добавить.

Если порядок важен, то автоматизировать его проблематично по-любому.
Потому без явного ковыряния списка тестов обойтись некак (ударение на е; это новое такое слово, сильно не хватает его).


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Суббота, 11 Апрель, 2009 13:11 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Совершенно верно!
Я примерно так себе и представлял - ББ мне кажется уже готовой системой типа xUnit.
Надо только не забывать тестирующий модуль писать для каждого основного-тестируемого.

В Junit (да и во всех остальных) имеено так и делается.
Именование - добавляется префикс-суффикс test.
Если рефлексия есть, то список тестирующих модулей составляется легко.
Если нет, как в С++, то приходится в xUnit добавлять "регистрацию" модулей в некоем контейнере.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 06:10 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Info21 писал(а):
Способы именований:


C. Создаём подсистему Test. В ней отдельными подкаталогами - тесты для нужных подсистем. Как-то так:
Код:
/Test
    /Code
    /Mod
    /Sym
    /Tests
        /Abc
            Module1.odc
            Module2.odc
            ...
        /Forms
        /Text
            Controllers.odc
            ...

Тестирующий модуль собирает и компилит тесты для требуемых подсистем, по результатам - чистит ненужные кодовые/символьные файлы. Примерно так:

(!)TestCmds.DoSubs Abc Text~
(!)TestCmds.DoModule AbcModule2~


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 06:22 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Горячев писал(а):
Info21 писал(а):
Способы именований:

C. Создаём подсистему Test. В ней отдельными подкаталогами - тесты для нужных подсистем.
Сложновато выглядит, и выбивается из стандартной структуры папок. Хотя, конечно, хорошо, что всё в одной папке спрятано.
Иван Горячев писал(а):
Тестирующий модуль собирает и компилит тесты для требуемых подсистем
Непонятно: что значит "собирает". Вроде как че ж их собирать, они же уже есть.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 06:26 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Валерий Лаптев писал(а):
Надо только не забывать тестирующий модуль писать для каждого основного-тестируемого.
А это само собой выходит. Сначала тестирующие процедурки прямо в тестируемом модуле (по лени), потом, как всё разрастется, они там надоедают -- возникает импульс злобной энергии их оттуда выкинуть в отдельный модуль :) Как раз, когда модуль уже очертания принимает. В этот момент и дисциплину можно применить.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 06:55 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Info21 писал(а):
Непонятно: что значит "собирает". Вроде как че ж их собирать, они же уже есть.


В смысле в подпапке Test/Tests могут лежать заготовки, например содержащие только процедуру Test. Основной модуль прилепляет нужные заголовки и чего ещё, компилирует, исполняет, выводит результаты, после чего выгружает тесты и удаляет их символьные/кодовые файлы. В результате в исходниках тестов нет ничего лишнего и каталоги не захламлены.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 07:10 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Валерий Лаптев писал(а):
Если нет, как в С++, то приходится в xUnit добавлять "регистрацию" модулей в некоем контейнере.


Или генерить внешними тулзами по тэгам...


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 07:13 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 18:38
Сообщения: 1857
Info21 писал(а):
Сложновато выглядит, и выбивается из стандартной структуры папок. Хотя, конечно, хорошо, что всё в одной папке спрятано.


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


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 07:31 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Горячев писал(а):
В результате в исходниках тестов нет ничего лишнего
А что там может быть? Какая-нибудь избыточная сложность?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 07:54 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
В процессе развития системы к основной тестирующей процедуре могут добавляться различные обвязки и дополнения. Подумаю, постучу по клавишам, потом пример приведу


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 09:17 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Горячев писал(а):
к основной тестирующей процедуре могут добавляться различные обвязки и дополнения. ...
Приходят в голову данные, оформленные как потоки ввода после коммандеров.

Тут маленький резонанс вот с чем: переводя книжку Вирта, осознал, что в Блэкбоксе ослаблена по сравнению с классическим Обероном поддержка идеи "текст как интерфейс". И совершенно зря, причем без нужды. Это видно прикладнику, прогоняющему свои данные туда-сюда, но, видимо, не было видно чистым программерам-авторам Блэкбокса.
И есть простые способы эту поддержку вернуть (запланировано для ближайшего релиза base-комплекта).

Но тут (в связи с тестами) возникает некий новый поворот. Что забавно. Подумаем.


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 09:24 
Модератор
Аватара пользователя

Зарегистрирован: Среда, 16 Ноябрь, 2005 00:53
Сообщения: 4625
Откуда: Россия, Орёл
В смысле ослаблена? Команды в тексте без командеров не распознаются по клику?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 09:28 

Зарегистрирован: Суббота, 07 Март, 2009 15:39
Сообщения: 3261
Откуда: Астрахань
Info21 писал(а):
Валерий Лаптев писал(а):
Надо только не забывать тестирующий модуль писать для каждого основного-тестируемого.
А это само собой выходит. Сначала тестирующие процедурки прямо в тестируемом модуле (по лени), потом, как всё разрастется, они там надоедают -- возникает импульс злобной энергии их оттуда выкинуть в отдельный модуль :) Как раз, когда модуль уже очертания принимает. В этот момент и дисциплину можно применить.

Имеено так Мартин Фаулер описывал свое вхождение в тестирование раньше программирования... :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Понедельник, 13 Апрель, 2009 11:23 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Евгений Темиргалеев писал(а):
В смысле ослаблена?
Не хватает средств. Сейчас нет сил сочинять объяснение, попозже как-нибудь. Поскольку для себя делаю, для работы, то... соответственно.


Последний раз редактировалось Info21 Вторник, 14 Апрель, 2009 10:49, всего редактировалось 1 раз.

Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2009 10:06 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Вот, постучал. Простейший вариант
Вложение:
Test.zip [17.47 КБ]
Скачиваний: 608


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Вторник, 14 Апрель, 2009 10:57 
Аватара пользователя

Зарегистрирован: Пятница, 25 Ноябрь, 2005 12:02
Сообщения: 8500
Откуда: Троицк, Москва
Иван Горячев писал(а):
Простейший вариант
Простейший?


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Апрель, 2009 01:04 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Ну где-то да. Для "проще" вообще не стоит огород городить - можно обойтись соглашениями. А "всерьёз" нужно ещё кучу вещей добавлять


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Апрель, 2009 01:19 
Модератор
Аватара пользователя

Зарегистрирован: Понедельник, 14 Ноябрь, 2005 18:39
Сообщения: 9459
Откуда: Россия, Орёл
Что-то только непонятно, кому "нужно" :) И насколько "всерьёз" с этим колупаться :)


Вернуться к началу
 Профиль  
 
СообщениеДобавлено: Среда, 15 Апрель, 2009 02:14 

Зарегистрирован: Суббота, 26 Ноябрь, 2005 10:37
Сообщения: 875
Откуда: Россия, Владивосток
Я человек ленивый. Поэтому мне, ежели бы вдруг понадобились тесты, захотелось бы иметь генерацию шаблона тестов по интерфейсу подопытного модуля. Ну плюс там обработка ошибок, нелинейный порядок тестов...


Вернуться к началу
 Профиль  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 43 ]  На страницу Пред.  1, 2, 3  След.

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Вся информация, размещаемая участниками на конференции (тексты сообщений, вложения и пр.) © 2005-2024, участники конференции «OberonCore», если специально не оговорено иное.
Администрация не несет ответственности за мнения, стиль и достоверность высказываний участников, равно как и за безопасность материалов, предоставляемых участниками во вложениях.
Без разрешения участников и ссылки на конференцию «OberonCore» любое воспроизведение и/или копирование высказываний полностью и/или по частям запрещено.
Powered by phpBB® Forum Software © phpBB Group
Русская поддержка phpBB