0. Alien_job 169 16.01.15 15:02 Сейчас в теме

Написание простой обработки через тестирование

Раньше я считал, что в 1С невозможно юнит-тестирование (ведь тут нет вездесущих объектов, привычных классов и и. т.). Иногда на Инфостарте появлялись специализированные обработки, но часто они скорее отпугивали от темы тестирования, чем привлекали к ней. Потом я узнал про xUnitFor1C. Оказалось, что тестирование в 1С в общем не так уж и сложно, даже в сравнении с другими языками. В данной статье я расскажу о своем первом опыте.

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

Вознаграждение за ответ
Показать полностью
Комментарии
Избранное Подписка Сортировка: Древо
1. Evil Beaver 6462 24.02.15 10:14 Сейчас в теме
кто-то уже применяет эти подходы (раз кто-то написал xddTestRunner)

Мы применяем и наблюдаем положительный эффект.
3. Alien_job 169 24.02.15 10:27 Сейчас в теме +116 $m
(1) Evil Beaver, А как вы тестируете отчеты (табличные документы)? Если я рисую табличный документ заранее то он отличается от уже признаком "макет" и отсутствием имен полей. В конце концов я пришел к тому что сначала добиваюсь правильного внешнего вида отчета, сохраняю его в файл и загружаю файл в макет. В результате малейшее изменение требований (изменить формат даты в заголовке) приведет к падению всех тестов.
2. Xershi 801 24.02.15 10:22 Сейчас в теме
Эта работа с тестами нужна чтобы выявить косяки разработки?
5. Alien_job 169 24.02.15 10:31 Сейчас в теме
(2) Xershi, работа с тестами конечно занимает время - но это время окупается сразу за счет отладки (при таком подходе отладка не нужна). Плюс на выходе получается код покрытый тестами, который проще сопровождать.
9. awk 694 24.02.15 11:37 Сейчас в теме
(5) Дешево, быстро, качественно - выбирай любые два.
4. artbear 1171 24.02.15 10:29 Сейчас в теме
Молодец, что юзаешь наш продукт xUnitFor1C.спасибо за статью.
Только почему не указываешь прямую ссылку на проект?
И почему мало о нем знаешь? :)
есть сообщество, есть пользователи, есть разработчики, в тч и я, который фактически productOwner продукта.
есть много многолетнего опыта в тестировании для 1С
6. Alien_job 169 24.02.15 11:01 Сейчас в теме +1 $m
(4) artbear, ссылку на проект указал. Сообщество (обсуждения) не нашел. Прочитал вики на сайте проекта. Пожалуй эта вся информация которую я смог найти. Не нашел сквозных примеров использования а без них мне непонятно как этим всем пользоваться.
7. artbear 1171 24.02.15 11:30 Сейчас в теме
(6) По тестированию и ТДД есть мое старое выступление с Инфостарт 2012 - статья http://infostart.ru/public/326820
Также есть видео-обучение от Алексея Лустина и Евгения Павлюка http://infostart.ru/public/328695/
Также есть мое выступление с Инфостарт 2013 - где я рассказываю про xUnitFor1C
Примеры есть в самом репозитарии.
Конечно, я соглашусь, что информации маловато и нужно больше популяризовать.
lenna_1985; endym; theshadowco; Alien_job; +4 Ответить
32. for_sale 823 03.07.18 19:31 Сейчас в теме
(7)
Добрый день!

За проект большое спасибо, идея замечательная, реализация (наверное) тоже.
Один огромный минус - читал Ваши материалы и тут, и на Гитхабе - очень сумбурно, не понятно, где входы, где выходы, с чего начать. Поэтому автору большое спасибо за доступное объяснение.

У меня вопрос - правильно ли я понимаю, что данный проект реализует только тест кода? И никаких возможностей тестировать интерфейс (открыл форму, выбрал значение, щёлкнул по кнопке), кроме коллекции глюков от 1С под названием Автотестирование, нет?
33. Alien_job 169 04.07.18 09:13 Сейчас в теме
(32) Есть, раньше называлась vanessa-behavior
Насколько я понимаю, актуальная версия разрабатывается тут https://github.com/silverbulleters/add
Простой способ её получить:
- установить onescript
- выполнить в консоли opm install add
В каталоге библиотеки будет файл bddRunner.epf, его открыть в 1С в режиме предприятия, в нем открыть справку.
artbear; for_sale; +2 Ответить
35. artbear 1171 17.07.18 13:49 Сейчас в теме
(33) (32) Да, проверка поведения системы для управляемого приложения есть в https://github.com/silverbulleters/add

очень развитые возможности по тестированию интерфейса.
11. ZhokhovM 393 24.02.15 12:23 Сейчас в теме
(6) я тоже не нашел примеров. У меня свои наработки: Универсальное тестирование конфигурации (обычные и управляемые формы). Часть 1. Скоро выйдет в свет новая часть.
12. Alien_job 169 24.02.15 13:07 Сейчас в теме
(11) ZhokhovM, из описания не понятно можно ли вашей обработкой тестировать внешние обработки. У xUnitFor1C есть тесты_ОткрытиеФормКонфигурации.epf - формирует тесты на открытие всех форм и если в конфигурации есть синтаксические ошибки то часть тестов упадет. Правда на УПП 1.3 в лоб использовать её у меня не получилось - многие формы "не предназначены для открытия" =)
Примеры "нашлись" https://github.com/xDrivenDevelopment/xUnitFor1C/tree/develop/Tests/CommonA­pp .
13. pumbaE 630 24.02.15 13:19 Сейчас в теме
14. ZhokhovM 393 24.02.15 14:00 Сейчас в теме
(12) я исключаю формы или предупреждения с помощью cmdow, а так моя публикация проверяет формы: получает объекты форм и открывает форму. А ошибки я копирую из окошка "Информация для технической поддержки", т.к. там показывают полные ошибки чем ошибки в ЖР.
16. artbear 1171 24.02.15 14:11 Сейчас в теме
(11) Ты там схитрил и удалил старые и полезные комментарии :(

Как я уже писал в комментариях к публикации, слишком много общих задач решаешь в своей одной работе.
Фактически ты проверяешь не только конфигурацию (т.е. работу разработчика), но и конкретную ИБ и конкретные данные, что не всегда хорошо.
У тебя в разных ИБ с одной конфигурацией будут выдаваться разные ошибки, что вредно для тестирования, т..к тесты везде должны вести себя одинаково.

были и еще замечания, но ты их потер :(
17. ZhokhovM 393 24.02.15 15:12 Сейчас в теме
(16) artbear, нет, там были ошибки в редактировании публикации после отказа заключения договора с отделом продаж, поэтому я её удалил и перенес всю информацию на новую, меня просто не устраивал стартмани 1$m.
19. ZhokhovM 393 27.02.15 12:36 Сейчас в теме
(16) artbear, пока я изучу тесты и реализаций Тесты_ОткрытиеФормКонфигурации.epf и возможно у себя переделаю.
8. artbear 1171 24.02.15 11:33 Сейчас в теме
(0) На мисте я периодически отвечаю на темы по тестированию
Например, http://www.forum.mista.ru/topic.php?id=730184 или http://www.forum.mista.ru/topic.php?id=710900

(6) Что такое "сквозной пример использования" ?
Еще какие вопросы есть?
Пиши вопросы по тестированию.
Готов ответить.

Можно в личку hangouts "aartbear@gmail.com" или skype "aartbear"
10. Alien_job 169 24.02.15 11:47 Сейчас в теме
(8) artbear, возможно после просмотра видео вопросов станет меньше. Сквозной пример - статья в которой демонстрируется написание обработки через тестирование. С использованием всех возможностей xUnitFor1C и с освещением типовых задач тестирования (модули, формы, отчеты, обмены, ...).
15. artbear 1171 24.02.15 14:03 Сейчас в теме
(10) 1. К сожалению, Это слишком общая формулировка примера. описание будет слишком длинным и специализированным к конкретной конфигурации и задаче, и наверняка будет много лишних деталей, неинтересных читателям.
2. можно тестировать не отдельно модули, формы, отчеты, обмена, а делать тесты в целом под задачу. часто это бывает проще и эффективнее. Это разделение на юнит-тесты и на приемочные тесты.
18. Pr-Mex 124 25.02.15 14:18 Сейчас в теме
(8) artbear, люди хотят больше реальных примеров.
Помнишь тему, чтобы сделать примером разработки через тестирование на типовых конфах?

От себя добавлю, что тоже использую xUnitFor1C в повседневной разработке.
Наша команда разрабатывает конфу, которой уже 7 лет. И только недавно перешли на разработку через тесты. По полной столкнулись с проблемами рефакторинга, легаси кода и т.д.
Итого - бояться тут нечего. Всё решаемо. Билд сервер крутится, отчет о прохождении тестов приходит.
20. magnetto72 23.03.15 14:35 Сейчас в теме
Большое спасибо за статью, позволяющую быстро понять как освоить технику и инструмент.
Подскажите, пожалуйста, каким образом, можно написать тест на процедуру проведения документа? Ведь в ней могут вызываться другие связанные функции и процедуры.
Можно ли где-то посмотреть пример тестирования кода проведения документов?

Подскажите существует ли форум где можно задавать вопросы, обсуждать приемы использования xUnitFor1C?
21. Alien_job 169 24.03.15 07:18 Сейчас в теме
(20) gorokhov.vladislav, полагаю нужно после проведения получить коллекцию движений документа и сравнить её с эталоном.
форум где можно задавать вопросы, обсуждать приемы использования xUnitFor1C

почему бы не инфостарт?
пример тестирования

https://github.com/xDrivenDevelopment/xUnitFor1C/tree/develop/Tests/CommonA­­pp , других нет
22. magnetto72 24.03.15 08:06 Сейчас в теме
(21)
Спасибо за ответ. Я не могу понять как создать/зафиксировать эталон движений, где он должен сохраниться.
При тестировании отчета формирую его, создаю макет "Эталон", копирую в него табличный документ, получаю эталон с правильным результатами.
В "1С:Сценарное тестирование" для этого есть специальное действие "Сравнить движение документа с эталоном", которое снимает "слепок" с эталонной базы, сохраняет все значения в сценарий и затем при прогоне сверяет с тем, что получилось.

А как зафиксировать эталон для движений в xUnitFor1C?
23. Alien_job 169 24.03.15 09:25 Сейчас в теме
(22) magnetto72,
у "Генерация макета на базе реальных данных для xUnitFor1C" есть "СоздатьМакетДанныхНаОснованииЗапроса". Думаю можно выбрать запросом движения документа, создать макет, сохранить его как эталон. В тесте создавать макет на основании запроса и сверять с эталоном.
25. artbear 1171 25.03.15 16:51 Сейчас в теме
(22) Ответил в комментах к моей статье.
24. artbear 1171 25.03.15 16:39 Сейчас в теме
(20) gorokhov.vladislav,
По xUnitFor1C предложение и обсуждение удобнее всего вести в одном из 2 вариантах:
1. Можно на Инфостарте в комментах к моей статье http://infostart.ru/public/326820/ (Методики и механизмы разработки/тестирования в 1С)
или
2. Можно на Гитхабе https://github.com/xDrivenDevelopment/xUnitFor1C/issues
26. strizhhh 20.02.17 16:04 Сейчас в теме
Было бы неплохо поработать над документацией, так как инструмент добротный, а вот порог вхождения для пользователей такой, что нужно код читать, чтобы понять как этим пользоваться.
klinval; ivanov660; +2 Ответить
27. leemuar 21.02.17 14:57 Сейчас в теме
(26) Задача такая есть. Подключитесь, помогите с этим
28. ivanov660 1793 28.02.17 17:27 Сейчас в теме
(26) Соглашусь с коллегой.
У нас появилась задача интеграции в наш механизм тестирования юнит тестов автора. Вот с написанием и особенно отладкой тестов что-то не совсем заладилось.
Простой тест 2+2<>4 написали без проблем, а вот реальный тест проверки формирования по входным документам набора выходных документов пока тяжко.
29. strizhhh 28.02.17 18:18 Сейчас в теме
(28) Насколько я понимаю, авторы (команда разработчиков) внедряют решения с помощью этих своих разработках за деньги (что логично и понятно), поэтому ждать понятной "для любителя" документации, думаю, не стоит.
30. artbear 1171 02.03.17 10:04 Сейчас в теме
(29) Не совсем так.
С документацией всегда сложно, разработчики ее не любят делать :)
Тут процесс итерационный, документация набирается постепенно.
пробовали на Вики проекта xUnitFor1C заходить, там накоплено много информации
Вики xUnitFor1C
31. strizhhh 02.03.17 10:34 Сейчас в теме
(30) Лично я заходил и некоторая информация мне оттуда помогла, бесспорно. Но там много устаревшей и не актуальной информации. Да и утверждение моё о документации было связано с порогом вхождения: я два дня потратил чтобы найти, вычленить нужную мне часть, отбросить лишнее (устаревшее и нерабочее) и прийти к выводу, что времени только на понятие и практику применения ушло в десятки раз больше, чем на другие инструменты. Конечно, я не отрицаю того факта, что я просто тупой.

Не хватает также демонстрации реальной (боевой) практики применения инструмента на реальных проектах. Что закрыло бы много вопросов, как мне кажется.
kabanoff; +1 Ответить
36. artbear 1171 17.07.18 13:57 Сейчас в теме
(31) Мы бы не развивали продукты, которые не используются.

Продукты как раз и развиваются, т.к. это нужно как нам, так и нашим пользователям/организациям/клиентам.

По практике применения - у нас большинство примеров как раз основано на реальном применении.

Из последних - посмотри описание доклада Глеба Стального (ПервыйБит) для Инфостарт 2018 https://event.infostart.ru/2018/agenda/
Его команда активно запустила набор инженерных практик.

Тема «Как запустить 1С:ERP 2 на тысячу пользователей и не написать ни одной страницы ТЗ?»

В рамках доклада расскажу о процессе и результатах перехода 3 scrum-команд на использование современных инженерных практик (разработка через поведение, ночные сборки, непрерывный анализ качества кода) на проектах 1С.
- Почему мы всегда готовим EPC-диаграммы, и как они помогают нам проектировать не только систему, но и все интеграции (да, мы на проектах, как правило, используем RabbitMQ);
- Как мы разрабатываем фичи (BDD), как структурируем, чтобы сохранить читаемость на больших проектах (когда BDD-сценарии занимают 10 тысяч строк) и как мы смогли отказаться от постановок задач в других форматах (кроме задач по обмену, там xsd);
- Зачем гит консультанту;
Рассмотрю полный цикл работ на примерах конкретных проектов. Также покажу какие инструменты и как мы используем (Slack, Zoom, Jira, Confluence, JSD, Bitbucket, Vanessa Behavior, Jenkins, SonarQube, Allure и т.п.)
37. artbear 1171 17.07.18 14:00 Сейчас в теме
(31)
Не хватает также демонстрации реальной (боевой) практики применения инструмента на реальных проектах. Что закрыло бы много вопросов, как мне кажется.


Расскажи, какой именно демонстрации тебе не хватает.
Каких примеров не хватает?

Как я уже писал, хорошей документации всегда не хватает.

Мы открыты любым предложениям по улучшению наших бесплатных и открытых продуктов
38. strizhhh 17.07.18 16:28 Сейчас в теме
(37) Между сообщениями год. TDD и CI активно используются в промышленных форматах. :)
39. artbear 1171 19.07.18 11:30 Сейчас в теме
(38) Твое сообщение пропущено, т.к. оно не находится в официальных каналах общения :(
и его тупо не заметили.

как раз при промышленных масштабах нет времени изучать все источники, хватает и официальных.
34. hawk911 05.07.18 12:10 Сейчас в теме
Добрый день.
Появился новый проект VA (Vanessa-Automation).
Скачивать тут
P.S. Добро пожаловать!
40. flashdancer 07.12.18 16:07 Сейчас в теме +3 $m
Спасибо огромное за такое пояснение!!! Все понятно и одновременно ничего лишнего!
Мне очень помогло!
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

Консультант по 1С:Документооборот
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:Бухгалтерии
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Программист по 1С:ЗУП
Санкт-Петербург
зарплата от 120 000 руб. до 150 000 руб.
Полный день

Консультант-аналитик 1С
Москва
зарплата от 100 000 руб. до 150 000 руб.
Полный день