gifts2017

Сценарное тестирование в помощь программисту 1С

Опубликовал Решитко Дмитрий (grumagargler) в раздел Программирование - Инструментарий

Альтернативное решение для организации сценарного тестирования конфигураций, разработанных на управляемых формах

Здравствуйте, друзья!

Предлагаю вашему вниманию небольшую конфигурацию для сценарного тестирования решений на базе 1С:Предприятие 8.3, управляемые формы.

Конфигурация называется Тестер. Тестер является средой разработки и запуска сценарных тестов. Тестер не является продуктом BDD в чистом виде и не предназначен для описания поведения системы, до того, как она была разработана.

Главные цели Тестера:

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

Используя тестер, вы можете рассчитывать на решение следующих задач:

  1. Высокая степень покрытия функционала. Тестер хорошо сфокусирован на процесс разработки тестов, что положительно сказывается на количестве и качестве создаваемых тестов
  2. Тесты пишутся на языке программирования 1С, что является не только знакомым инструментом, но также позволяет использовать в тестировании весь набор функций платформы, а главное – позволяет управлять ходом тестирования программно, не опираясь на заложенную модель в инструменте тестирования
  3. Из тестов можно делать библиотеки, например, можно создавать тесты, которые по переданным параметрам открывают окно поиска в динамическом списке, или формируют некий отчет. Если вам нужно для своего теста иметь остаток на складе, можно реализовать библиотечный тест, в который вы передадите состав требуемого остатка, и этот остаток будет оприходован
  4. Простая проверка бизнес логики, без сравнения с данными других баз, без прямых запросов к тестируемому приложению, без макетов с сериализованными «в другом месте» данными. Вся информация может быть сохранена в самом тесте, в макете, при необходимости – доработана.
  5. Кроме того, что все тесты хранятся в базе, и любой пользователь Тестера может использовать написанный другим программистом тест, Тестер имеет возможность инкрементальной выгрузки/загрузки тестов в файловую систему. Это может быть полезно для дальнейшей синхронизации тестов с системами контроля версий, например, Git.

Красивые слова можно проверить на деле. Конфигурация и демонстрационная база расположены здесь https://github.com/grumagargler/tester.

В демонстрационной базе разработана небольшая инфраструктура взаимосвязанных тестов, которая может быть взята на вооружение при разработке ваших собственных тестов. Также, в базе есть пример создания документа Заказ поставщику для ERP2 (демо).

Для конфигурации ERP2 (демо), был создан репозиторий https://github.com/grumagargler/ERP2
Туда я выгрузил демонстрационные тесты. Надеюсь, это начинание не останется без внимания энтузиастов, и тесты будут пополняться.

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

Тестер бесплатный. Разрабатывается и поддерживается для собственных нужд, без какой-либо коммерческой подоплеки.

Спасибо за проявленный интерес к системе и удачных вам тестов друзья!

Скачать файлы

Наименование Файл Версия Размер Кол. Скачив.
tester.dt
.dt 865,30Kb
10.11.16
24
.dt 1.3.1.8 865,30Kb 24 Скачать

См. также

Подписаться Добавить вознаграждение

Комментарии

1. Сергей Старых (tormozit) 11.11.16 13:14
2. DenisCh Гейтс (DenisCh) 11.11.16 13:27
Посмотрим на выходных. Погода всё равно шепчет, так будет чем развлечься.
3. борян петров (TODD22) 11.11.16 13:32
Нужная разработка. На выходных то же посмотрю..... :)
4. ash (ashvik) 11.11.16 14:53
5. Сергей (Che) Коцюра (CheBurator) 11.11.16 17:55
Остался нераскрытым вопрос кто пишет тесты на тесты.
ибо если мы считаем что тесты пишутся правильно, то что нам мешает считать что правильно пишется программа?
6. DenisCh Гейтс (DenisCh) 11.11.16 17:57
(5) Тесты должны писаться так, что их правильность смогла бы понять даже бухгалтерша.
Например, для функции Добавить2К2() правильным тестом будет РезультатФункции = 4
7. Решитко Дмитрий (grumagargler) 11.11.16 18:12
(5) CheBurator, раскройте вопрос на практическом примере, так сложно ответить прицельно. Если вы имеете ввиду бизнес логику, то тестирование нужно для того, чтобы проверить ожидаемое поведение с фактическим, а вот насколько это ожидаемое поведение правильное - выходит за область тестера. Также, если во время тестирования возникает банальная ошибка обращения к несуществующему свойству или методу, уже само по себе не требует подтверждения правильности.
8. Сергей (Che) Коцюра (CheBurator) 11.11.16 18:40
(6) это в прастейшем примере. в чуть более широком - получается человек опрпеделяет правильность. протестировать все ветки болееменее непростой программы - вручную весьма затруднительно. соответсвенно - как определять те тесты что надо написаны? или чего-то не хватает?

А чтобы проверить ожидаемое поведение с фактическим - отдатю юзерам. если претензий не поступило = ок, поступило - вот тебе и тесты...
9. Решитко Дмитрий (grumagargler) 11.11.16 18:54
(8) CheBurator, пока в голову не приходят идеи, кто кроме человека может определить правильность тестов и их состав. Тестирование очень конкретная вещь и ожидать каких-то эвристических анализаторов всевозможных сценариев с их запуском и проверкой, не стоит, мы не решаем задачу коммивояжера. Есть сценарий – есть тест к нему. Сценарий не покрывает какие-то ситуации? Значит нужен еще один сценарий, который должен покрыть. Если таких сценариев много, начните с одного, это всё равно лучше, чем вообще ничего.
davydoff; +1 Ответить
10. Артур Аюханов (artbear) 11.11.16 20:19
Интересно посмотреть очередную работу по тестированию.
Перед разработкой/при разработке изучали ли аналоги по тестированию в 1С ? Штатное сценарное тестирование от 1С, наш xUnitFor1C, еще vanessa-behavior, другие работы?

Было бы интересно увидеть справку в виде отдельного файла (markdown, html и т.п.), удобном для просмотра через браузер
11. Пишу код как картины (yurii_host) 11.11.16 21:07
12. Решитко Дмитрий (grumagargler) 11.11.16 21:14
(10) artbear, да, конечно, эти разработки были изучены, именно поэтому родился тестер. Строго говоря, тестеру больше года, просто сейчас решил выложить его, потому что всё чаще стала подыматься тема простых инструментов тестирования. На счет справки, нужно подумать, всё-таки там не один документ, а два (справочники Сценарии и Приложения) и будет больше (под каждый объект метаданных)
13. Решитко Дмитрий (grumagargler) 11.11.16 21:21
(10) artbear, я перечитал своё сообщение, и решил дополнить, чтобы не показаться снобом. Тестер был создан не вопреки существующим программам, а по той причине, что он решает немного другие задачи и немного иначе. Я надеюсь, что дополнительный инструмент станет хорошим подспорьем для людей, интересующихся этим вопросом.
FSerg; sorb; +2 Ответить
14. Павел Гладков (G.P.) 11.11.16 21:45
Заинтересовало, подпишусь
15. Игорь Пашутин (Alien_job) 12.11.16 08:50
Спасибо, очень интересно!
16. Антонио (Fragster) 12.11.16 12:51
Как мне протестировать такой сценарий - один пользователь открывает документ, начинает редактировать, другой пользователь вызывает программную обработку, обработка должна вызвать исключение, если документ редактируется?
17. Евгений Мартыненков (JohnyDeath) 12.11.16 16:04
А чем vanessa не устроила?
Там почти все можно мышкой накликать.
18. Решитко Дмитрий (grumagargler) 12.11.16 19:08
(16) Fragster, есть несколько возможностей, например, вы можете в коде теста выполнить действия первого пользователя, затем, отключиться от приложения (метод Отключить()), изменить параметры подключения через структуру AppData, затем, запуститьПриложение () с указанием другого порта (см. пример в справке), подключиться и продолжить выполнение сценария. Другой способ, запустить тестер из сценария, с указанием стартующего сценария, который сделает действия второго пользователя. Если у вас не получится - напишите, я попробую накидать код.
19. Решитко Дмитрий (grumagargler) 12.11.16 19:22
(17) JohnyDeath, (тут сложно ответить так, чтобы тебя не воспринимали в штыки, всё-таки ванесса продукт, которым пользуются многие, прошу воспринимать ответ только дополнение к общему делу) . Развернуто, я ответил здесь: https://habrahabr.ru/post/307808/
Если вкратце, кроме в разнице подходов, нам не удалось ванессой описать реальные сценарии, в приемлемые для нас сроки. Не получалось и прокликать без ошибок действий 25-30. В конце всех попыток (пробовали не только ванессу) всё свелось к тому, что нам нужен был механизм программного взаимодействия с тестируемым приложением, чтобы удовлетворить наши требования.
sorb; JohnyDeath; +2 Ответить
20. Роман Сюзев (sorb) 13.11.16 08:32
Отличная вещь, спасибо! У меня тестер очень непринужденно вписался в содружество хЮнит и Ванессы, обеспечив тестирование "без правил" и "по-быстрому" :). По публикации: она получилась больше для тех, кто уже тестирует, поэтому, как мне кажется, была бы полезной еще одна статья для тех, кто пока не совсем в теме: Ваш инструмент, пожалуй, имеет самый низкий порог вхождения на данный момент, и существенно ускоряет сам процесс разработки, а это делает его полезным даже для тех, кто пока не готов тратить время на имплементацию хДД. Для раскрытия этого момента, как мне кажется, нужно описание практического примера, типа добавляем в БП 3.0 основные единицы измерения, а потом ставим обновления, с описанием процесса и вытекающих выгод при последующей поддержке. У самого руки чешутся написать, но понимаю, что просто не смогу сделать это за разумное время. Еще раз хочу поблагодарить за удачный инструмент :)
Vladimir_Konyrev; tormozit; +2 Ответить 1
21. Роман Сюзев (sorb) 13.11.16 09:51
(8) CheBurator, самый незатратный способ определять, какие тесты нужные - это хотя бы начать закрывать тестом каждую возникшую проблему. Оно конечно реактивно получается, но через некоторое время получается добротный, "правильный" набор тестов. А еще например Вы пишете отчет, время от времени запускаете его и смотрите, что получилось. Так вот если запускать не руками, а накидать запускатор, то и отладка пойдет веселей, и вот он - тест, а значит меньше мучаем бедных кладовщиков и других ни в чем не повинных животных. Лично я за максимально гуманное отношение к кладовщикам и животным :)
22. Роман Сюзев (sorb) 13.11.16 10:17
Все, прочитал статью на хабре - вопрос по отдельной статье для начинающих можно считать полностью раскрытым, спасибо.
23. Решитко Дмитрий (grumagargler) 14.11.16 03:01
(20) sorb, спасибо! да, я подумаю на счет небольшой статьи с практическими примерами, хотя конечно тема тестирования у многих ребят уже просто в печенках. И ситуация такая, что вроде все понимают, что надо, а вот когда пытаются - опа, а тут оказывается инвестиция времени нужна такая, что уже вроде не очень то уж и хотелось. Конечно, можно утверждать, что те, кто сдался, недостаточно твердые, чтобы идти до конца, или продавливать тему административно. Но ведь в тоже самое время, можно ведь и допустить, что проблемы и в инструментарии, который нам надо улучшать.
25. Решитко Дмитрий (grumagargler) 14.11.16 06:10
(24) CSiER, к сожалению, в таком варианте не будет работать переход из оглавления по ссылкам, желательно справку открывать из тестера :-)
26. Антонио (Fragster) 14.11.16 12:34
а есть кнопка "создать тесты открытия всех форм"? и прочие подобные пакетные кнопки?
27. Антонио (Fragster) 14.11.16 12:43
матрицу критериев успеха/отказа по ролям/пользователям также очень хочется - чтобы проставил галочками где тест должен сработать, а где - отвалиться, и всё.
28. Антонио (Fragster) 14.11.16 12:44
ну и хочется тестов на проверку условного оформления, хотя здесь скорее платформенное ограничение сработает...
29. Сергей Старых (tormozit) 14.11.16 12:46
(26) В описанной автором концепции правильнее будет "вызвать все команды командного интерфейса конфигурации".
30. Решитко Дмитрий (grumagargler) 14.11.16 16:14
(26) Fragster, таких тестов в начальной базе нет, всё-таки тестер больше для сценарного тестирования, и тем не менее, их можно создать самостоятельно! если будет возможность, создавайте и выкладывайте на жит для других коллег :-)
Для написания сообщения необходимо авторизоваться
Прикрепить файл
Дополнительные параметры ответа