0. artbear 1171 30.01.15 13:14 Сейчас в теме

Механизмы тестирования в 1С. Использование методики TDD (разработка через тестирование) в 1С

Данная статья написана по материалам доклада, прочитанного автором на первой конференции инфостарта 2012 года. Она опубликована в журнале Инфостарта №1.

Перейти к публикации

Лучшие комментарии
50. artbear 1171 07.10.16 20:40 Сейчас в теме
(49) Можешь писать здесь.
Можешь создавать issue на проекте, как ты сегодня и сделал.
Можешь писать в официальном чате https://gitter.im/xDrivenDevelopment/xUnitFor1C

2 последних варианта предпочтительнее.
Остальные комментарии
Избранное Подписка Сортировка: Древо
1. zorka-gold 09.02.15 14:16 Сейчас в теме
Много битых (не рабочих) ссылок !
Andris_infostart; +1 1 Ответить
2. artbear 1171 09.02.15 16:13 Сейчас в теме
(1) Ага, есть такое, все-таки выступление двухлетней давности.
Ссылки поправлю в ближайшее время.
3. artbear 1171 09.02.15 16:27 Сейчас в теме
(1) Исправил ссылки
Также добавил абзац
Рекомендуемая система для тестирования в 1С (я фактически ее product-owner и один из авторов) - https://github.com/xDrivenDevelopment/xUnitFor1C/wiki (2012-2015 гг.)
В ней огромное количество возможностей, поддержка от 8.2.13 - до 8.3.5.ХХХ, запуск из командной строки, работа с build-серверами, есть хорошая документация, есть много примеров и тестов, есть видеотренинги и видео-примеры.

Есть генерация тестовых данных из боевой базы. Тесты при этом будут работать как в пустой, так и в заполненной тестовой базе.

Система активно развивается как раз после той самой, первой конференции Инфостарт-2012
4. awk 694 09.02.15 19:04 Сейчас в теме
Есть метод белого ящика – то есть, мы опять же знаем, что у нас внутри, как организован проект, какие идут связи и можем более точно построить тесты, например, предположить, что на каких-то граничных условиях наши тесты могут падать.
Специально обученные отделы тестирования, крайне не любят данный метод. Говорят, что он только сбивает.
8. artbear 1171 10.02.15 13:32 Сейчас в теме
(4) Белый ящик не всегда плох, как раз на знании особенностей реализации можно доп.тесты написать, которые помогут.
Черный ящик плох тем, что внутренностей не знаем, и не знаем подводных камней.
19. awk 694 16.02.15 23:06 Сейчас в теме
(8) тестировщику и не надо знать. Программисту - наверное надо.
21. artbear 1171 16.02.15 23:40 Сейчас в теме
(19) Есть разные мнения по поводу белого ящика, например, на Википедии есть информация об этом.
я уже отметил, что можно очень полезные доп.тесты сделать.
я лично обе методики юзаю при тестировании.
5. baloo 09.02.15 19:30 Сейчас в теме
В профессии уже 10 лет. 7.7-8.0-8.1-8.2-УТ-БП-УПП-итд-итп. Где-то полгода назад начал на досуге изучать веб-разработку, RoR, через него и вкусил TDD. Сильно заинтересовало, стал изучать литературу, пробовать применять к 1С. Сказать, что это изменило мой стиль разработки - не сказать ничего, это буквально перевернуло устоявшийся и "закостеневший" за годы процесс. Натыкался до НГ на упомянутый проект на гитхабе, разбирался, хотел присоединиться к разработке, но потом НГ, отчетность, дела, обучение, как обычно, короче, толком в курс не вошёл. В статье упомянуто про "видеотренинги и видео-примеры", где их можно посмотреть, киньте ссылкой плз.
pt_olga; slazzy; lustin; +3 Ответить
6. artbear 1171 09.02.15 23:45 Сейчас в теме
9. slazzy 39 10.02.15 15:12 Сейчас в теме
(6), Можно позадавать Вам пару вопросов по ходу обдумывания материала? :)

Например про Защитное программирование. По сути чем это отличается от простых проверок в начале функции? В 1С это является стандартом, мы вызываем функцию и проверяем параметры. Если параметры какие-то не такие, то чаще всего принято возвращать какое-то значение из функции и сообщать пользователю о неверных данных.

В чем критическая для разработки разница между accert и простой проверкой, которая в общем-то почти всегда используется в 1С. Если она не используется, то всё печально :)

Так же стоит упомянуть, что в БСП на текущий момент введен аналог функции accert, а именно
ОбщегоНазначенияКлиентСервер.Проверить И
ОбщегоНазначенияКлиентСервер.ПроверитьПараметр
Которые в самой БСП как раз как типичный accert из С++ и используются.


Я вообще с С++ не знаком почти, но там же где я узнал про accert вумный парень говорил, что вообще-то в С++ accert используется только на этапе разработки и в релизных версиях почти все ассерты удаляются из кода. В 1С это ещё более критично, тк если использовать типовой способ из БСП и проверять все параметры в функции, то мне кажется это сильно замедлит работу функции. Но в статье про это ни слова :) или это не так?


К тому же судя по-всему к 1С это вообще слабо применимо. Это в СИ какой-нибудь кусок памяти видимо может быть изменен другой программой и произойдет какая-нибудь непредвиденная ошибка. В 1С же практически существует конечный пул ошибок и почти всегда их можно предусмотреть и проверить. По сути в 1С и так предостаточно проверок и способов сделать эти проверки, да и сам язык довольно хорошо от них защищает.
10. artbear 1171 10.02.15 18:16 Сейчас в теме
(9) Механизм утверждений/assert-ов (не accert) предназначен именно для подтверждения контракта функции/процедуры и отличается от стандартных проверок параметров тем, что не возвращает некое значение в вызывающую функцию, а сразу выбрасывает исключение, прерывая выполнение кода!!
Это важный момент.
Фактически утверждение говорит о том, что заданы жесткое условие/состояние (инвариант), которому должны удовлетворять функция/процедура.
Здесь неважно, какое условие/контракт проверяется.
Например, можно проверять тип входного параметра, его значения и т.п.

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

По поводу скорости работы:
1. не допускайте преждевременной оптимизации. Как и в других языках, в 1С профайлер - главное мерило производительности, а не личные впечатления :)
2. как правило, проверки не бывают слишком сложными.
38. zqzq 19 25.03.15 16:30 Сейчас в теме
(6) посмотрел видео про змейку и прочее, очень познавательно, но... как-то от обычных 1С-ных задач далеко. В результате так и не очень понятно, как применять это TDD(Бека тоже почитал, но он работу с БД не любит и примеры с ООП не всегда гладко на 1С ложатся). В идеале нужно что-нибудь вроде примера решения задачи с 1С-ного билета по специалисту через тестирование.
lenna_1985; +1 Ответить
40. artbear 1171 25.03.15 16:58 Сейчас в теме
(38) Пример со змейкой дает возможность просто и в игровой форме показать самые базовые приемы работы через ТДД.
У нас на подготовку змейки ушел не один день.
По реальным примерам:
если делать сложную разработку, слишком много времени это займет. а реальной пользы будет мало
Для начинающих сразу не нужно пытаться делать большую разработку с помощью тестов.
я предпочитаю двигаться по шагам, от деталей к общему.

Предложи свою задачу (пусть даже из 1С-билета). Совместно выполним ее анализ и совместно решим, что нужно тестировать автоматическими тестами, а что можно и вручную протестировать.

ОФФ. что-то Инфостарт совсем перестал информировать о новых сообщениях в моей же ветке :(
42. zqzq 19 26.03.15 09:02 Сейчас в теме
(40) на сайте 1с есть пример билета и каркасная конфигурация:
http://www.1c.ru/rus/partners/training/questions.htm
Можно взять первую задачу - оперативный учет. На экзамене на неё отводится примерно 60-90 минут. По-моему, она сильно ближе к реальным 1с-овским задачам, чем змейка, а вот как подступиться с помощью 1с-ТДД непонятно (действительно, может не 1 день занять, особенно с непривычки).
lenna_1985; Quasar; Mos; +3 Ответить
7. lustin 10.02.15 06:51 Сейчас в теме
(5) baloo, вот за RoR отдельное спасибо - мы в процессе работы очень много вдохновения именно оттуда черпаем. И да - "мозг меняется".
11. sergei2k 10.02.15 19:08 Сейчас в теме
Конфигурация "Сценарное тестирование" поддерживает создание и выполнение тестов с использованием нового механизма платформы.
Но, сам механизм работает с ошибками (например, не записывает выбор панели функций раздела), и очень последовательность действий пользователя при записи сценария должна быть очень продуманной.
12. artbear 1171 10.02.15 19:35 Сейчас в теме
(11) Напоминаю, что это выступление 2012 года.
Тогда еще не было продукта сценарное тестирование для упр.приложения.
Согласен, что есть много сложностей при разработке таких тестов.
Например, ребята недавно нарвались на вылет 1С при попытке записи действий пользователя, если не была открыта ни одна форма.
несколько последних платформ 8.3.5 тупо падают.
стоит только открыть какую-то форму, а уж потом запустить запись, 1С нормально работает.
В общем, проблем масса.

Когда я осенью 2012 года был на партнерской конференции в Москве, в Космосе, специально подходил к разработчикам сценарного тестирования.
Они показывали как раз сценарное тестирования для упр.приложений, внутреннюю альфа-версию
Они мне сообщили, что на тот момент им неизвестно о тестировании продуктов упр.приложения (УТ 11, УНФ и др.) средствами автотестирования 8.3 :(
13. so-quest 130 11.02.15 10:59 Сейчас в теме
http://infostart.ru/public/22168/ ничего интересного из себя не представляет.

https://github.com/wwall/xUnitFor1C - тут добавлена поддержка проверки равенства структур. Может кому потребуется
14. artbear 1171 11.02.15 11:58 Сейчас в теме
(13) ты бы это как-нибудь документировал для понимания сторонними разработчиками.
А я бы тогда подумал о включении в основной xUnitFor1C :)
15. AlexSunS 15.02.15 17:34 Сейчас в теме
Как много веяний "новых" на ИС.
16. artbear 1171 16.02.15 01:02 Сейчас в теме
В Вики xUnitFor1C я документировал пример готового теста проверки отчета на СКД.
В тесте сначала создаются тестовые данные в базе, затем выполняется отчет на СКД, получается сводная таблица.
Эта таблица сверяется с эталоном.
JohnyDeath; +1 Ответить
17. minimajack 60 16.02.15 20:13 Сейчас в теме
(16) лишнее
юТест.ПроверитьБольше(ТестовыеДанные.Количество(), 0, "Ожидали, что загрузка макета загрузит данные больше 0");

вы же не юнит-тестирвание проверяете
18. pumbaE 630 16.02.15 20:31 Сейчас в теме
(17) 1с и чистый юнит-тест не совсем совместимы.
22. minimajack 60 17.02.15 08:02 Сейчас в теме
(18) pumbaE, (20)
имхо:
я к тому что "ПроверитьБольше" - это "от черта".
либо равенство количеству строк (количество = 5), либо равенство на булево ( количество > 0 )...
само по себе "больше" не помогает в тестировании, а наоборот помогает скрыть ошибки, т.к. проще написать больше 0 и забить
23. artbear 1171 17.02.15 19:32 Сейчас в теме
(22) ты прав, а мы внимания не обратили.
ПроверитьБольше здесь от "лукавого"
В Вики поправил, вообще удалив эту ненужную строку.
Спасибо!
24. pumbaE 630 18.02.15 09:12 Сейчас в теме
(22) minimajack, не соглашусь. Не в данном случаи, а в общем. ПроверитьБольше дает большее представление об ошибке чем "проверить(Количичество()>0) ", сразу видно что передано, параметр 1=0, параметр2(проверки) = 0 и уже в пояснении достаточно написать просто "ТЧ Товары.Количество()". В случаи же проверки истины, нам в пояснении надо писать "ТЧ Товары.Количество() = 0" и т.д., повторять тот же код, который мы пытались проверить.
25. artbear 1171 18.02.15 10:14 Сейчас в теме
(24) Женя, я лично считал, что в (22) говорится о ПроверитьНеРавенство(0, Таб.Количество()) или ПроверитьРавенство(5, Таб.Количество())
ПроверитьИстина(Таб.Количество() > 0) или ПроверитьИстина(Таб.Количество() = 5) явно плохо.
26. minimajack 60 18.02.15 12:24 Сейчас в теме
(24) pumbaE, по идее в тестах мы заранее знаем точное значение ожидаемого результата, и именно это значение надо использовать как написано в 25, если это невозможно использовать ( а это очень и очень маловероятно...по крайней мере в 1С8 без ВК и внешних сервисов) - использовать ПроверитьИстина(Таб.Количество() > 5) с описанием ошибки вручную - вплоть до ссылки на описание почему именно это значение.
Пример:
один и тот же набор данных используется при тестировании двух отчетов. Изменяют первый отчет(вывод дополнительных данных, новый тип операции и т.п.) -> меняют исходные данные (тестовый файл) -> меняют тест по первому отчету -> все ок; при этом второй отчет на ошибке ПроверитьБольше 0 все также будет проходить, но не факт что результат отчета будет идентичный. Если бы стояло ПроверитьРавенство(5, Таб.Количество()) - ошибка сразу стала бы известна - именно на этапе загрузки данных, а не по факту. То есть найти ошибку будет проще. И именно поэтому, я написал "помогает скрыть ошибки".
ПроверитьНеРавенство(0, Таб.Количество()) - аналогично скроет ошибку.
Использовать скрытое сравнение как ПроверитьИстина(Таб.Количество() = 5) - тоже плохо, как минимум тем что используется не по назначению и неудобно для рефакторинга.
ИМХО оптимальный ПроверитьРавенство(5, Таб.Количество()) - дает наиболее точный результат
В общем все это мое личное мнение. Я никого не принуждаю писать код именно так, просто исходя из своего опыта даю рекомендации.
27. artbear 1171 18.02.15 15:24 Сейчас в теме
(26) Да, согласен, что ПроверитьРавенство(5, Таб.Количество()) наиболее оптимально.
пара уточнений:
  • лучше писать ПроверитьРавенство(5, Таб.Количество(), "Таб.Количество()") или ПроверитьРавенство(5, Таб.Количество(), "количество созданных объектов")
  • ИМХО лучше вообще исключить эту проверку, как я сделал в Вики, т.к. в данном случае утверждение проверяет создание тест.данных, т.е. функционал, который вторичен для данной задачи. для этой задачи важно проверить именно соответствие результата отчета эталону, а не создание данных.
20. artbear 1171 16.02.15 23:38 Сейчас в теме
(17) Человек, который писал этот тест, еще не очень доверял методу юТест.СоздатьДанныеПоТабличномуДокументу :)
Поэтому и вставил подобную проверку для гарантии правильности теста.
А этот метод, как и многие в xUnitFor1C, либо работает и возвращает данные при правильном макете, либо падает с исключением, если макет неверен.

Как уже отмечено в (18), в 1С очень зыбкая граница между юнит-тестами и приемочными тестами.
Я лично давно уже не говорю "юнит-тесты" в 1С, а упоминаю именно тесты.
28. eugeniezheludkov 32 06.03.15 07:06 Сейчас в теме
Воу, хорошая статья , видимо ранее плохо искал раз не натыкался на неё. довольно хорошо и понятно разжевано именно как это реализовать на 1С. на хЮнит1С стал по другому смотреть! с удивлением для себя обнаружил там вики :). еще заинтересовала подсистема (автор - Сергей Старых) – называется Подсистема «Инструменты разработчика».
Тему в закладки, буду пытаться поднять её у себя (сейчас тестированием реальные люди занимаются).. если получится то отпишусь как и что вышло. ранее не находил дельной инфы и считал проект "костылем", приношу извинения.
яб еще добавил "статический анализ кода" на каком - нибудь этапе после код-ревью , т.е когда анализируется структура кода на возможные ошибки и даже неоптимальные участки кода (по шаблонам) во всяком случае для себя я простенький написал: ни одна типовая конфа не проходит 2 шаблона: "неиспользуемые(забытые переменные)","Запросы в циклах" на УПП к примеру это более 7000 таких неоптимальных участка. (выкладывал тут)
29. pumbaE 630 06.03.15 10:57 Сейчас в теме
(28) eugeniezheludkov, автоматизированя проверка конфигураций. Там есть попытка статистического анализа кода, но у меня терпения не хватает каждый раз ее проходить, видно в 1с та-же проблема.
p.s.: когда 90% кода типового, то к сожалению не всегда есть желание посмотреть на чужие ошибки, которые вряд-ли будешь исправлять или будут исправляться.
31. eugeniezheludkov 32 07.03.15 06:36 Сейчас в теме
(29) pumbaE, у меня анализ кода идет в ручном режиме. Внешняя обработка натравливается на выгруженные исходные коды всей конфы (шаблоны-регулярка) при этом чтоб отделить типовые объекты от своих, у нас правило: свои объекты имеют префикс. Проверяются объекты имеющие лишь этот префикс , результат выгружается в эксель, если исходники выгружались бы автоматом+гит+сервер сборок то впринципе эти шаблоны-регулярки могу легко перенеси в шарп, скорость проверки возрастет в разы
32. artbear 1171 07.03.15 11:28 Сейчас в теме
(31) Поделись кодом подобной проверки, очень интересно.
33. artbear 1171 07.03.15 11:32 Сейчас в теме
(32) Ага, увидел. Посмотрю, как сделано.
35. eugeniezheludkov 32 10.03.15 01:32 Сейчас в теме
(33) если что , тут последние коммиты , и сильно не пинайте за мои антипаттерны :( писал на коленке перед НГ
34. artbear 1171 07.03.15 11:33 Сейчас в теме
(31) А в чем проблема с реализацией автовыгрузки конфы на тексты? у нас давно реализовано - проект v83unpack
30. artbear 1171 06.03.15 14:17 Сейчас в теме
(28) (29) Да, пока только АПК остается.
Мы работаем над верификацией программ разными способами - синтакс-проверки, кросс-тестирование, автотесты, покрытие кода, код-ревью, АПК.
Минусы АПК (помимо скорости), о которых я говорил на общей стойке БСП/АПК на недавнем партнерском семинаре 1С - вся автоматизация внутри АПК, нет внешнего управления и возможности получения результатов проверки извне.
Мы пользуемся билд-серверами, они отлично себя показывают, и у меня в планах заставить АПК выполнять автопроверки именно через билд-серверы.
36. baloo 23.03.15 13:24 Сейчас в теме
По поводу проверки "Запросы в циклах" - у вас анализируется вызов в цикле процедур/функций, внутри которых совершается запрос? Кроме того, было бы здорово анализировать не только наличие явного исполнения запроса через запрос на встроенном языке запросов, но и обращение к реквизитам переменных ссылочного типа, что, по сути, влечет за собой неявное выполнение запроса к БД.
ПС обработку не видел, нисколько не критика - чисто размышления по улучшению :)
37. eugeniezheludkov 32 24.03.15 04:05 Сейчас в теме
(36) baloo, естественно анализируется вызов процедур и функций и неявные запросы (типа .НайтиПоКоду()) и отсекаются закомментированные вызовы, и детектируется вызов запросов в рекурсивных функциях https://github.com/znsoft/external1CProgs/blob/master/src/СтатическийАнализ­Кода1с/Form/Форма/module тут можете глянуть исходный код модуля,
todo(если появится время):
-анализ вызываемых функций в другом модуле (к примеру вызов через точку от другого объекта) сейчас такая функция не проверяется :( можно реализовать если просто строить таблицу вызовов функций первым проходом и анализ вызовов вторым проходом
-анализировать обращение к реквизитам переменных ссылочного типа (чет я про них и забыл то сам сколько раз по молодости обжигался :) спасибо за подсказку)
-убрать проверку неиспользуемых переменных т.к такая проверка есть в конфигураторе :)

сейчас времени не очень много (много ТЗ в очереди), все мечтаю рефакторить обработку и вообще переделать на шарп (мой фаворит) или на java для будущих версий 1С :)
39. artbear 1171 25.03.15 16:45 Сейчас в теме
--
>http://forum.infostart.ru/forum24/topic123336/message1323894/#message1323894 >
> 22. magnetto72 24.03.2015 08:06
Я не могу понять как создать/зафиксировать эталон движений, где он должен сохраниться.
При тестировании отчета формирую его, создаю макет "Эталон", копирую в него табличный документ, получаю эталон с правильным результатами.
В "1С:Сценарное тестирование" для этого есть специальное действие "Сравнить движение документа с эталоном", которое снимает "слепок" с эталонной базы, сохраняет все значения в сценарий и затем при прогоне сверяет с тем, что получилось.

А как зафиксировать эталон для движений в xUnitFor1C?
---
Ответ: если мы говорим про отчет, то можно получить эталон прямо по отчету. Пример такого теста: Проверить отчет на соответствие эталону (исходный код модуля обработки) - с сайта xUnitFor1C
41. artbear 1171 25.03.15 19:42 Сейчас в теме
В дополнение к (39) см. (16)
Продублирую:
В Вики xUnitFor1C я документировал пример готового теста проверки отчета на СКД (со скриншотами и готовым кодом).
В тесте сначала создаются тестовые данные в базе, затем выполняется отчет на СКД, получается сводная таблица.
Эта таблица сверяется с эталоном.
43. kraynev-navi 448 20.11.15 15:44 Сейчас в теме
Подниму тему.
А можно как-то автоматизировать ввод названий тестов? Или может уже реализовано, не нашел?
Ну типа так:
Перем юТест;

Функция ПолучитьСписокТестов(ЮнитТестирование) Экспорт
	
	юТест = ЮнитТестирование;
        ВсеТесты = юТест.ПолучитьВсеТестыИзМодуляНачинающиесяНа("Тест_"); // ГЛАВНОЕ!
        // в результате в массиве будут два элемента "Тест_ДваПлюсДва()", "Тест_ДваПлюсТри()"
	Возврат ВсеТесты;
	
КонецФункции

Процедура ПередЗапускомТеста() Экспорт
	
КонецПроцедуры

Процедура ПослеЗапускаТеста() Экспорт
	
КонецПроцедуры

Процедура Тест_ДваПлюсДва() Экспорт
	
	юТест.Проверить(2 + 2 = 4, "Значение не верно");
	
КонецПроцедуры
Процедура Тест_ДваПлюсТри() Экспорт
	
	юТест.Проверить(2 +3 = 4, "Значение не верно");
	
КонецПроцедуры
Показать
44. artbear 1171 20.11.15 17:12 Сейчас в теме
(43) kraynev-navi, хороший вопрос, я давно им озадачен и борюсь с этой проблемой!

в "чистом" 1С невозможно получить список методов из объекта/модуля :( рефлексии нет!
в свое время я в 1С++ для 1С 7.7 я смог решить эту задачу и в нашей конфигурации тестировании для 1С 7.7 была такая возможность.

Для 1С с примесями :) в толстом клиенте обычных форм 8.2 для решения этой задачи я использовал написанный нами Информатор
можешь посмотреть метод юТест.ПолучитьПростыеТесты... (точное название не помню) из модуля обработки xddTestRunner

Соответственно для 8.3 или 8.2 УФ нельзя использовать подобный подход и остается юзать один из нескольких вариантов:
  • явно возвращать список тестов из теста через ПолучитьСписокТестов - штатный путь xUnitFor1C
  • если у вас установлен Снегопат, можно использовать написанный мной скрипт "Добавить описания тестовых случае xUnitFor1C" xUnitAddTestsDesc.js)
  • супер-хакерский путь - пишем обработку (или скрипт на 1скрипт), которая разбирает файл обработки, получает текст модуля, разбирает его, и добавляет код по возврату списка методов Тест_ХХХ в метод ПолучитьСписокТестов() :)

По последнему пункту - я сейчас постепенно пишу конвертер тестов из формата 3.Х в 4.Х, решение этого пункта будет в конвертере.
Ура, значит, я хакер :)
45. kraynev-navi 448 23.11.15 14:00 Сейчас в теме
(44)Собственно вопрос возник как раз после того, как сам хотел сделать быстренько и не обнаружил функционала у 1С )))
Обход понятен. Подожду вашу обработку ))

Следующий вопрос касательно обработки тесты_ОткрытиеФормКонфигурации.epf
В конфигурации был словлен следующий критичный случай. При тесте формы элемента журнал регистрации выглядит так. В первой транзакции (177013):
	Тесты "Открытие форм конфигурации"			Операция: Справочник.Организации.Форма.ФормаОрганизации
23.11.2015 9:25:16 (177013)	Данные. Изменение	Константа. Не использовать несколько организаций		
23.11.2015 9:25:16 (177013)	Данные. Изменение	Константа. Использовать несколько организаций		
23.11.2015 9:25:16 (177013)	Данные. Добавление	Справочник. Организации	<Объект не найден> (60:80e20050569e529911e591aaf11bdd91)	


И далее идет удаление в ДРУГОЙ транзакции (505009)!
	Тесты "Открытие форм конфигурации"			Операция: Справочник.Организации.Форма.ФормаОрганизации
....	
23.11.2015 9:25:17 (505009)	Данные. Удаление	Справочник. Организации	<Объект не найден> (60:80e20050569e529911e591aaf11bdd91)	

Все транзакции зафиксированы. Т.е. в первой транзакции константа поменяла свое значение и зафиксировалась. Вторая транзакция константу не привела к предыдущему значению.
Попутно вопрос, а почему они фиксируются? Почему не откатиться?
46. artbear 1171 27.11.15 11:12 Сейчас в теме
(45) Тест открытия формы запускает свою транзакцию.
Насколько я понимаю, константа фиксируется в какой-то внутренней транзакции, которая возникает при проверке формы "Справочник.Организации.Форма.ФормаОрганизации"
В итоге получается вложенная транзакция, результаты которой откатываются при завершении тестов.
47. nicxxx 236 07.10.16 16:19 Сейчас в теме
ветка жива еще? на гитхабе созданный тикет удалился через минуту, поэтому спрошу здесь: в тонком клиенте 8.2 можно как-нибудь запустить обработку xddTestRunner? версия 4.1.0.0 выдает ошибку "Тип не определен (ОписаниеОповещения)", потому что в этой версии платформы (8.2.19.83) еще нет такого объекта языка.
в обычном приложении обработка открывается.
48. pumbaE 630 07.10.16 16:48 Сейчас в теме
(47) nicxxx, почитайте https://github.com/xDrivenDevelopment/xUnitFor1C/releases там есть такой текст
4.0.0.7 последний релиз для 8.2
49. nicxxx 236 07.10.16 18:05 Сейчас в теме
да, спасибо, я уже видел письмо с ответом.
А где все-так более живое обсуждение проекта идет? здесь все утихло, судя по тому, что последнее сообщение было 11 мес назад.
У меня есть пара вопросов, по концептуальным возможностям этой обработки, хочется выяснить перед тем, как начинать углубленное изучение.
50. artbear 1171 07.10.16 20:40 Сейчас в теме
(49) Можешь писать здесь.
Можешь создавать issue на проекте, как ты сегодня и сделал.
Можешь писать в официальном чате https://gitter.im/xDrivenDevelopment/xUnitFor1C

2 последних варианта предпочтительнее.
51. nastrou1c 22 13.01.17 15:12 Сейчас в теме
Здравствуйте, Артур.
Спасибо за Ваш труд. Отличная статья и отличный инструмент.
Есть вопрос по вашему фреймворку xUnitFor1C:
Есть ли примеры использования штатного механизма автоматизации тестирования (http://v8.1c.ru/overview/Term_000000816.htm?printversion=1) в связке с xUnitFor1C?
Если есть - хотел бы попросить пример модуля тестирования.
Пример на github-е с открытием всех форм в решении видел и уже использую. Однако его не достаточно. Желательно автоматизировать именно сценарное тестирование заполнения форм, которое позволяет выполнять штатный механизм и использовать встроенные в фреймворк возможности по обработке и сохранению результата.


52. artbear 1171 13.01.17 15:58 Сейчас в теме
53. nastrou1c 22 15.01.17 12:26 Сейчас в теме
(52) Отлично, спасибо большое за наводку!
54. Artal 06.11.18 17:37 Сейчас в теме
Здравствуйте! Это просто великолепно, когда есть такие люди, как автор данного топика. Артур, спасибо вам за проделанную работу. Мне пока очень трудно оценить объем проделанной работы - но она бесспорно огромна.

Я так же познал дзен tdd, когда программировал на ruby. Это было прозрением. Временем быстрой и качественной разработки.

Теперь же я нахожусь в поиске фреймворка для применения методики tdd для внешних обработок, которые мне необходимо писать для конфигурации УТП 1.2 (конфигурация работает в режиме совместимости с версией платформы 8.2.13).

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

Очень интересно узнать от сообщества 1с программистов, которые по сей день программируют для платформы 8.2, какие именно инструменты (возможно в связке) они используют?
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

Программист, аналитик, эксперт 1С
Санкт-Петербург
По совместительству

Программист 1С
Тольятти
зарплата от 70 000 руб.
Полный день

Программист 1С
Москва
зарплата до 160 000 руб.
Полный день

Программист 1С
Воронеж
зарплата от 70 000 руб.
Полный день

Ведущий программист 1С (с функцией наставничества)
Екатеринбург
зарплата от 100 000 руб.
Полный день