V7: Автоматическое тестирование конфигураций 1С. FuncTest-0.11.0 #124976


#0 by fez
http://1c.alterplast.ru/functest/.Основных новшеств - два.1. Добавлены классы, позволяющие производить юниттестирование.2. В условиях функциональных тестов теперь можно записывать списки и таблицы значений..Остальное по ссылке вверху.
#1 by fez
Зачем нужна эта дура: вкратцеНаши ожидания от функционала любой программы (в том числе и конфигурации 1С) можно записывать в виде, понятном для компьютера. И затем использовать эти записи для автоматической проверки сохранения программой ожидаемого функционала.Полезно для контроля над ошибками при внесении в программу изменений.Так же может применятся, как способ написания ТЗ.
#2 by a13x
надо было в заголовке написать "О новых ""шедеврах""" :).у меня статья про юниттестированиеhttp://1c.alterplast.ru/functest/unittests.htmlзагружается не полностью :-( - обрывается на предложении"Только разбираться с особенностями тестирования подо",хотя страница судя по всему целиком загружается
#3 by fez
Это страничка в режиме "Under construction". Там вверху написано. Напишу-ка покрупнее :)
#4 by fez
Немного ссылок по теме автоматического тестирования:.Пример тестирования на PERLhttp://www.xprogramming.ru/Articles/TDD-PERL.html.Обзорные статейки по тестированию.http://www.xprogramming.ru/Articles/ExtremeTesting.htmlhttp://www.maxkir.com/sd/testing.html.Книга - классика жанра. Настоятельно рекомендуется к прочтению.http://www.xprogramming.ru/Misc/XPE_Review.html
#5 by fez
(3+) Собственно, классы юниттестирования построены по образу и подобию любого другого аналогичного пакета. В книге, ссылка на которую приведена в , довольно подробно описывается, как работать с этими классами на примере Python.
#6 by fez
как бы еще ветку апнуть?
#7 by Wasya
Расскажи про юнитесты. А то папку с классами вижу. А зачем это нужно, разбираться пока времени нет.
#8 by Дурочка 1С
Почему разработчики типовых этим не пользуются?
#9 by fez
Сам давно хотел спросить :)
#10 by Дурочка 1С
Может, автоматизация тестирования низкая?
#11 by fez
эээ... ммм... Я примеры приведу ладно?.Для начала совсем простой пример. Допустим, мы хотим проверить, насколько правильно работает в 1С операция сложения. Типа на 26-м релизе 3+4 возвращает 8.Создаем класс-тест.в defcls пишем:класс ПроверкаСложения = ПроверкаСложения.txt : ТестовыйСлучай};В реализации класса пишемФункция Сам(Конт) Возврат Конт; КонецФункции.В Предприятии открываем обработку ЗапускВсехТестовКонфигурации.ert, ставим там галочку в нужном месте, жмем "Запустить".
#12 by fez
Может там вообще нету? ни автоматизации, ни тестирования?.(11+) Ключевой строкой является вызов метода ПроверитьРавенство, который определен в классе ТестовыйСлучай. Таких "Проверочных" методов в этом классе много, и в англоязычных языках программирования они все имеют в своем названии слово Assert.Поскольку Тест - это проверка, то эти методы и занимаются этими самыми проверками.
#13 by Дурочка 1С
+ ... в FuncTest-0.11.0
#14 by fez
(12+) Теперь оглянемся на 1С. В первую очередь 1С - это База данных. И часто нужно тестировать корректность изменения этих самых данных.И здесь возникает два важных нюанса.1. Операции с данными - самые медленные операции на свете.2. Тесты должны быть независимыми друг от друга. В идеале - каждый тест должен быть вообще самодостаточен. Это неизбежно приводит к тому, что каждый тест должен сначала привести БД в нужное ему состояние (см. п 1 про скорость), а потом еще и зачистить за собой (опять п.1 про скорость)..Для решения проблемы быстродействия, а так же для избавления программиста от необходимости писать код "зачистки" базы для каждого теста - создан класс ТестовыйСлучайСДанными, в котором методы Сетап и Сброс определены таким образом, что... ну кому интересно - сам посмотрит и все увидит, там примитивно..В сухом остатке: если в тестовом методе создаются какие-то данные, то наследовать такой класс-тестовый случай нужно от класса ТестовыйСлучайСДанными.
#15 by Дурочка 1С
У меня есть оригинальная конфигурация и несколько баз в разных фирмах на ней работают. В одном из документов ошибка (логическая) в модуле проведения была обнаружена только через 2,5 года ...FuncTest-0.11.0 может находить такие ошибки?
#16 by Wasya
Потом получается я должен по всем текстам модулей расставить вызовы этих функций. Да не забыть проверить тестовый или рабочий режим у меня в базе?! И как сделать что бы эти вызовы тестовых функций не попадали в рабочую конфигурацию? Gcomp?
#17 by Wasya
Насмешила. Интересно существует ли программа по автоматическому написанию программ? Идея такая один модуль генерит код случайным образом. Второй модуль отбирает осмысленный код. Потом запускаем functest который проверяет соответствует ли программа ожидаемым результатам.
#18 by fez
Нет. Код тестов - это совершенно самостоятельный код, который запускается специальной обработкой. Называется эта обработка (читаем ) - ЗапускВсехТестовКонфигурации.ert. Входит в поставку.
#19 by a13x
в принципе, очевидныйслишком большие затраты придется понести, чтобы написать на все типовые юниттесты, ага.сейчас уже точно дешевле следовать принципу "работает - не трогай".хотя тесты для типовых механизмов на самом деле делать удобно - берешь типовую демобазу, делаешь тесты используя текущее состояние демобазы + тесты, учитывающие изменения, которые собираешься сделать,вносишь изменения, проверяешь, не поломались ли тесты.если считать, что типовая конфигурация работает без косяков - сдаешь работу без зазрения совести, если все тесты проходят
#20 by a13x
+ я по большей части имел в виду то, что типовые спроектированы по понятным причинам без учета - условно скажем - фанктеста, т.е. не поддерживают "интерфейсов" фанктеста (да и вообще любой другой потенциальной реализации TDD для 1С), выручает отчасти лишь то, что объекты 1С, что называется persistent, и их состояние хранится в базе
#21 by fez
"типовые спроектированы по понятным причинам без учета - условно скажем - фанктеста"Для того, чтобы проверить FuncTest'ом результат проведения документа - не нужно вообще ничего, кроме конфигурации, Фанктеста и постановщика задачи.Для того, чтобы проверить Фанктестом результат выполнения отчета - нужно внести в этот самый отчет ну совершенно минимальные изменения (строк 10).Проблема на самом деле в другом. 1С устраивает ситуация, когда тестированием занимается армада пользователей.
#22 by artbear
А можно вообще в отчет никаких изменений не вносить, все настройки автоматом можно сделать, а потом также программно нажать на нужную кнопку (например, Сформировать).В принципе функционал по программному нажатию кнопки добавить в Фанктест несложно [строк 10 :) ].
#23 by a13x
да, я это и имел в виду, говоря, "выручает".только я сомневаюсь, что такая ситуация 1С "устраивает", просто сначала упустили этот момент... а может и действительно устраивает - на официальном форуме не один раз поднимался вопрос по поводу тестирования - правда в основном по поводу методик, но ответы поступали по большей части "а что вы предлагаете" (в смысле - "расскажите про ваши решения").зато есть где развернуться - команда, которая предложит удачный в плане реализации как кода так и методик тестирования framework для 8ки заработает немало скорее всего
#24 by fez
Страничка http://1c.alterplast.ru/functest/unittests.html наполнена содержанием, взятым из сообщений , и .Страничка http://1c.alterplast.ru/links.html пополнилась ссылками, взятыми из .
#25 by fez
up
#26 by artbear
А я в большинстве случаев задачу упростил.Т.к. занимаюсь внедрением на базе типовых, и довольно часто приходится обновляться (например, ЗиК, Бух), а все алгоритмы в типовыхо протестировать довольно сложно, тем более, что все они не мои собственные, я в тесты загнал типовые отчеты, которые получают какие-то сводные данные (например, Бух/Пуб - ОСВ, карточка по счету, по субконто, анализ счета, ЗиК - свод зп, свод проводок, налоговая ведомость и пр.).В итоге после обновления я просто прогоняю все тесты на исходной (тестовой базе), и если получаю расхождения итоговых данных, четко знаю, где и что ждать бухам, и кто виноват(бухи или 1С) :)Часто в роли тестовой базы выступает свежая копия рабочей базы.Естественно, перед сравнением тестов перепроводятся все документы за нужный период (квартал, месяц и пр.), и только после этого тесты сверяются.---Также я Фанктест использую для проверки данных прошлых периодов, типа вдруг фин.директор/главбух дату запрета редактирования сняла и что-то перепровела по ошибке.
#27 by fez
На самом деле у меня тут тоже стоит подобная задача. Проверка на изменения в реальной базе. Как раз и сервантик для этого дела недавно образовался.
#28 by KF
Развод! :)Как то уж слишко складно поют два типа самых разных человека.Следовательно прямой вывод лажа! Кто то бабло срубить хотит.
#29 by a13x
ага, развод, распространяемый по GPL, да
#30 by fez
С одной стороны, мы разные: я из Москвы, а Артур из Октябрьского в Башкирии. С другой стороны - мы оба являемся разработчиками FuncTest, что не является секретом для любого, кто внимательно читал http://1c.alterplast.ru/functest/whatsnew.html, потому совершенно естественно, что нам обоим нравится наша разработка.А бабло срубить - куда же без этого. Без ФанкТеста я вряд ли бы добился нынешней устойчивости моей конфигурации. А это в свою очередь повлекло за собой увеличение моей зарплаты, которая сейчас сильно выше рыночной ставки московского 1С-ника.Чего и вам желаю.
#31 by artbear
(30+) C третьей стороны, денег за Фанктест еще не просим :)
#32 by fez
(31+) Ага: налетай, торопись, покупай живопИсь! Скоро подорожает.
#33 by MetaEditor
эта ветка наверно заставит меня посмотреть таки поглубже что за фанктест там у вас такой............
#34 by fez
А что, мелко уже смотрел? :)
#35 by MetaEditor
34)мелко смотрел, совсем только на поверхности.... )
#36 by artbear
Еще вот эту ветку на риалнете посмотри.http://1c.realnet.ru/cgi-bin/forum.cgi?ask=20412&pp=lastТам есть некоторые описания для применения в реальных базах
#37 by MetaEditor
36) иду...
#38 by fez
Посмотрел?
Тэги:
Ответить:
Комментарии доступны только авторизированным пользователям

В этой группе 1С