OberonCore
https://forum.oberoncore.ru/

О задачах, проектировании и тестировании
https://forum.oberoncore.ru/viewtopic.php?f=5&t=1437
Страница 2 из 3

Автор:  Info21 [ Пятница, 10 Апрель, 2009 14:15 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Валерий Лаптев писал(а):
Категорически согласен. ... А так паттерны в виде неформальных приемов ходили-то уже давно.
Таки неверно, что они ходили в неформальном виде. Какие-то, конечно, и в неформальном виде -- они же все время нарождаются.

Автор:  Info21 [ Пятница, 10 Апрель, 2009 23:46 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

А всё же.
Раз всё из модулей, и для каждого модуля свой тестовый модуль с тестовой процедурой, то два вопроса:

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 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Совершенно верно!
Я примерно так себе и представлял - ББ мне кажется уже готовой системой типа xUnit.
Надо только не забывать тестирующий модуль писать для каждого основного-тестируемого.

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

Автор:  Иван Горячев [ Понедельник, 13 Апрель, 2009 06:10 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Info21 писал(а):
Способы именований:


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

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

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

Автор:  Info21 [ Понедельник, 13 Апрель, 2009 06:22 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Иван Горячев писал(а):
Info21 писал(а):
Способы именований:

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

Автор:  Info21 [ Понедельник, 13 Апрель, 2009 06:26 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

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

Автор:  Иван Горячев [ Понедельник, 13 Апрель, 2009 06:55 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Info21 писал(а):
Непонятно: что значит "собирает". Вроде как че ж их собирать, они же уже есть.


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

Автор:  Vlad [ Понедельник, 13 Апрель, 2009 07:10 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

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


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

Автор:  Vlad [ Понедельник, 13 Апрель, 2009 07:13 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Info21 писал(а):
Сложновато выглядит, и выбивается из стандартной структуры папок. Хотя, конечно, хорошо, что всё в одной папке спрятано.


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

Автор:  Info21 [ Понедельник, 13 Апрель, 2009 07:31 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Иван Горячев писал(а):
В результате в исходниках тестов нет ничего лишнего
А что там может быть? Какая-нибудь избыточная сложность?

Автор:  Иван Горячев [ Понедельник, 13 Апрель, 2009 07:54 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

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

Автор:  Info21 [ Понедельник, 13 Апрель, 2009 09:17 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Иван Горячев писал(а):
к основной тестирующей процедуре могут добавляться различные обвязки и дополнения. ...
Приходят в голову данные, оформленные как потоки ввода после коммандеров.

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

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

Автор:  Евгений Темиргалеев [ Понедельник, 13 Апрель, 2009 09:24 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

В смысле ослаблена? Команды в тексте без командеров не распознаются по клику?

Автор:  Валерий Лаптев [ Понедельник, 13 Апрель, 2009 09:28 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

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

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

Автор:  Info21 [ Понедельник, 13 Апрель, 2009 11:23 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

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

Автор:  Иван Горячев [ Вторник, 14 Апрель, 2009 10:06 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Вот, постучал. Простейший вариант
Вложение:
Test.zip [17.47 КБ]
Скачиваний: 613

Автор:  Info21 [ Вторник, 14 Апрель, 2009 10:57 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Иван Горячев писал(а):
Простейший вариант
Простейший?

Автор:  Иван Горячев [ Среда, 15 Апрель, 2009 01:04 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Ну где-то да. Для "проще" вообще не стоит огород городить - можно обойтись соглашениями. А "всерьёз" нужно ещё кучу вещей добавлять

Автор:  Илья Ермаков [ Среда, 15 Апрель, 2009 01:19 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Что-то только непонятно, кому "нужно" :) И насколько "всерьёз" с этим колупаться :)

Автор:  Иван Горячев [ Среда, 15 Апрель, 2009 02:14 ]
Заголовок сообщения:  Re: О задачах, проектировании и тестировании

Я человек ленивый. Поэтому мне, ежели бы вдруг понадобились тесты, захотелось бы иметь генерацию шаблона тестов по интерфейсу подопытного модуля. Ну плюс там обработка ошибок, нелинейный порядок тестов...

Страница 2 из 3 Часовой пояс: UTC + 3 часа
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/