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

0. 715 10.11.16 21:12 Сейчас в теме
Альтернативное решение для организации сценарного тестирования конфигураций, разработанных на управляемых формах

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

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

А чтобы проверить ожидаемое поведение с фактическим - отдатю юзерам. если претензий не поступило = ок, поступило - вот тебе и тесты...
9. grumagargler 715 11.11.16 18:54 Сейчас в теме
(8) CheBurator, пока в голову не приходят идеи, кто кроме человека может определить правильность тестов и их состав. Тестирование очень конкретная вещь и ожидать каких-то эвристических анализаторов всевозможных сценариев с их запуском и проверкой, не стоит, мы не решаем задачу коммивояжера. Есть сценарий – есть тест к нему. Сценарий не покрывает какие-то ситуации? Значит нужен еще один сценарий, который должен покрыть. Если таких сценариев много, начните с одного, это всё равно лучше, чем вообще ничего.
davydoff; +1 Ответить
48. Aphanas 87 21.04.22 05:42 Сейчас в теме
(9) Тестирование - конкретная вещь, имеет весьма ограниченный смысл и небольшую пользу, так? Лучше, чем вообще ничего. Но ведь он же не бесплатный. Тест тоже надо написать. Так может эти усилия направить на более тщательную разработку, чем на написание тестов?
51. JohnyDeath 300 21.04.22 16:09 Сейчас в теме
(48) напишем более тщательно и сразу в прод? так предлагаете?
или будете накликивать руками и сверять результат с ожидаемым глазками каждый раз, когда выпускаете релиз? или, наверное, только когда трогали конкретно это место, ведь вы же его тщательно тестировали. верно?
53. Aphanas 87 21.04.22 16:57 Сейчас в теме
А тесты, которые Вы напрограммируете, Вы чем тестировать предлагаете? Глазками?
55. JohnyDeath 300 21.04.22 17:03 Сейчас в теме
(53) вы как сейчас проверяете свою работу? не было ощущение, что делаете какой-то мартышкин труд?
56. Aphanas 87 21.04.22 17:32 Сейчас в теме
(55) По ситуации. В зависимости от того, как это реализовано, какая заложена логика в алгоритм. Синтаксические ошибки, исключения времени выполнения не считаю такой уж проблемой, заслуживающей отдельного создания еще и тестов. Важно, чтобы новый кусок был написан правильно принципиально. К тому же, нет смысла тестировать консоль запросов, например, каждый раз, когда тестируется новый запрос. Она должна быть протестирована один раз, остальное от лукавого, имхо.
Нужно думать не как автоматизировать тестирование, а как писать так, чтобы автоматизированное тестирование было не нужно.
52. grumagargler 715 21.04.22 16:20 Сейчас в теме
(48)
Тестирование - конкретная вещь, имеет весьма ограниченный смысл и небольшую пользу, так?

нет, не так. Программирование это процесс, где тестирование занимает неотъемлимую его часть.
Так может эти усилия направить на более тщательную разработку, чем на написание тестов?

Это не связанные вещи. Какие бы вы усилия не направляли на тщательную разработку, это никак не решает проблем слабо связанных подсистем, с чем нам приходится иметь дело в подавляющем большинстве случаев. Если вы занимались разработкой ПО с более чем 20к строк кода, то вы наверняка понимаете, что изменение допустим роли или типа реквизита может привести к катастрофическим последствиям в идеально отлаженных алгоритмах, где напрямую изменяемые участки не задействованы. На сегодня нет ни одного анализатора или ИИ, который мы смог решить подобные проблемы, лежащие в основе эволюции софта по требования заказчиков.
54. Aphanas 87 21.04.22 17:01 Сейчас в теме
(52) Изменение одного, казалось бы незначительного элемента может с одинаковой вероятностью привести как к катастрофическим последствиям в идеально отлаженных алгоритмах, так и полностью обесценить и сделать бессмысленными все написанные ранее тесты.
57. grumagargler 715 21.04.22 17:36 Сейчас в теме
(54)
так и полностью обесценить и сделать бессмысленными все написанные ранее тесты

Конечно, так тоже может быть. Но а какие тут могут быть опции? Та часть программирования, которая относится к тестированию, это ведь не кнопка "включить" - будет хорошо, "выключить" - будет плохо. Это сложная тема, из целой череды не менее важных мероприятий, начиная от повышения профессионализма, заканчивая трудовой дисциплиной. И написание тестов так, чтобы они не ломались - это не просто, нужен опыт, знания. Но повторю, вы не сможете повысить качество продукта путем только повышения допустим навыков программиста или их количества. Прямо сейчас, вы можете выполнить качественно задачу без единого теста, но построить во времени большую систему, способную меняться под требования заказчиков, без ингерации тестирования в разработку, вам будет очень сложно.
58. Aphanas 87 21.04.22 18:05 Сейчас в теме
(57) К примеру, мы пишем новый функционал. Мы вынуждены писать тест для него, получается. Это же двойная работа. Конечно, без автоматизированного тестирования будет сложнее. А если затраты на разработку увеличить раза в два? Сдается мне, что автоматические тесты крутятся, показывают, что всё ок. Они были созданы, усилия были затрачены. Люди смотрят на результаты тестов и видят, что всё хорошо (обычно). Как они воспримут предложение от них отказаться? А вдруг что-нибудь сломается? А что тесты там показывают, что реально означают их результаты, означает ли прохождение теста хоть что-нибудь - не очень понятно, да и так важно, наверное. Какой-то тест что-то покажет. Подспорье в работе. Но это слишком дорогое подспорье, на мой взгляд. Как-то нерационально. Думаю, я не смог бы писать тесты.
59. grumagargler 715 21.04.22 18:27 Сейчас в теме
(58) почему двойная? Мы когда пишем код, мы ведь его проверяем, запускаем программу на выполнение, хватаемся за мышку и выполняем работу потенциального пользователя. Это время ведь тратится, причем безвозвратно. Автоматизируйте этот процесс, пусть каждую итерацию, проверку делают не ваши руки и глаза, а машина. Время, которое вы инвестируете в тест, мало того, что будет после определенных навыков, соответствовать вашему ручному тестированию, так ведь еще никуда не денется, повторный и далее запуск не только будет уже экономить время, но и служить документацией, возвратом к контексту задачи. И еще, самое важное, что упускают все те, кто подходит к вопросу тестирования как к обузе: вы все говорите о том, как много вы потратите времени, и что проще без тестов, но вы не говорите о том, что рано или поздно, создаваемый вами продукт станоится невозможно изменять, в принципе невозможно, потому что вручную отлаженные механизмы, вобрали в себя столько безвозвратного времени, что трогать эти механизмы силы воли не хватает, и либо программист думает "эх, щааас как все перепешу но новому/правильному" или "Уважаемый клиент, то, что вы хотите - неправильно, потому что блабла" (а на самом деле, потому что продукт большой хороший, отлаженный, сложный и....мертвый.
60. CheBurator 3075 21.04.22 19:06 Сейчас в теме
(59)
Автоматизируйте этот процесс,

как только будут оплачивать - так сразу.
в крупных проектах, крупных компаниях - м.б. оправдано.
Большая часть тех с кем я работаю и консультрую - еле-еле наскребает бюджет хотя бы костылей повтыкать. А что уж говорить о мало-мальских нормальных подходах к разработке.
61. JohnyDeath 300 21.04.22 19:10 Сейчас в теме
(60) а потом наскребают на правку костылей, а потом правку на правку. И в итоге выходит еще дороже
62. JohnyDeath 300 21.04.22 19:25 Сейчас в теме
(58) это всё из разряда «не пробовал, но осуждаю».
По факту через некоторое время происходит так, как описал Дмитрий: вы внесли новые правки, надали одну кнопку, в предприятии начали мельтишить окна, заполняться и проводиться документы, сверяться заполненные реквизиты и проводки.
Потом что-то упало, вы тут же в конфигураторе поавите строчку и опять надимаете одну кнопку с запуском сценария. Уже жтим вы сэкономили себе кучу времени.
Тем более, что запись суенариев в тестере сделана очень хорошо и их доработка не вызывает больших трудностей, потому что автор уже испытал всю эту боль и сделал так, чтобы мы её не испытывали.
Это лучший инструмент для разработчика 1с, я считаю.
Надо просто попробывать. Да, сначала может быть непривычно и местами мощг будет сопротивляться. Но это нормально. У вас он начал сопротивляться новому слишком заранее )
21. sorb 13.11.16 09:51 Сейчас в теме
(8) CheBurator, самый незатратный способ определять, какие тесты нужные - это хотя бы начать закрывать тестом каждую возникшую проблему. Оно конечно реактивно получается, но через некоторое время получается добротный, "правильный" набор тестов. А еще например Вы пишете отчет, время от времени запускаете его и смотрите, что получилось. Так вот если запускать не руками, а накидать запускатор, то и отладка пойдет веселей, и вот он - тест, а значит меньше мучаем бедных кладовщиков и других ни в чем не повинных животных. Лично я за максимально гуманное отношение к кладовщикам и животным :)
7. grumagargler 715 11.11.16 18:12 Сейчас в теме
(5) CheBurator, раскройте вопрос на практическом примере, так сложно ответить прицельно. Если вы имеете ввиду бизнес логику, то тестирование нужно для того, чтобы проверить ожидаемое поведение с фактическим, а вот насколько это ожидаемое поведение правильное - выходит за область тестера. Также, если во время тестирования возникает банальная ошибка обращения к несуществующему свойству или методу, уже само по себе не требует подтверждения правильности.
49. Aphanas 87 21.04.22 05:46 Сейчас в теме
(7) Чтобы проверить ожидаемое поведение с фактическим, фактическое-то тоже надо как-то запрограммировать. Оно же с неба не свалится само собой. Где гарантия, что в тестах не будет еще больше багов, чем в тестируемой программе?
50. grumagargler 715 21.04.22 15:54 Сейчас в теме
(49) нет гарантии. А почему она должна быть? Это сугубо ваше личное дело, как вы ведете свою профессиональную деятельность, в частности: пишите код и не проверяете его, проверяеете вручную, или меняете разработку так, чтобы автоматизация тестирования стала частью вашего процесса. Каждый подход имеет свои плюсы и минусы, и ни в одном из них нет никаких гарантий.
10. artbear 1415 11.11.16 20:19 Сейчас в теме
Интересно посмотреть очередную работу по тестированию.
Перед разработкой/при разработке изучали ли аналоги по тестированию в 1С ? Штатное сценарное тестирование от 1С, наш xUnitFor1C, еще vanessa-behavior, другие работы?

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

Наконец-то мне удалось завершить подготовку расширенной статьи, можете почитать здесь: http://infostart.ru/public/642946/
22. sorb 13.11.16 10:17 Сейчас в теме
Все, прочитал статью на хабре - вопрос по отдельной статье для начинающих можно считать полностью раскрытым, спасибо.
26. Fragster 1109 14.11.16 12:34 Сейчас в теме
а есть кнопка "создать тесты открытия всех форм"? и прочие подобные пакетные кнопки?
29. tormozit 6678 14.11.16 12:46 Сейчас в теме
(26) В описанной автором концепции правильнее будет "вызвать все команды командного интерфейса конфигурации".
30. grumagargler 715 14.11.16 16:14 Сейчас в теме
(26) Fragster, таких тестов в начальной базе нет, всё-таки тестер больше для сценарного тестирования, и тем не менее, их можно создать самостоятельно! если будет возможность, создавайте и выкладывайте на жит для других коллег :-)
27. Fragster 1109 14.11.16 12:43 Сейчас в теме
матрицу критериев успеха/отказа по ролям/пользователям также очень хочется - чтобы проставил галочками где тест должен сработать, а где - отвалиться, и всё.
28. Fragster 1109 14.11.16 12:44 Сейчас в теме
ну и хочется тестов на проверку условного оформления, хотя здесь скорее платформенное ограничение сработает...
31. RainyAugust22 259 21.12.16 06:56 Сейчас в теме
Интересная тема! Скачал базу, но при запуске ошибка:
Ошибка инициализации модуля: CommonModule.DF.Module
по причине:
{CommonModule.DF.Module(98,10)}: Процедура или функция с указанным именем уже определена (Pick)
Function <<?>>Pick ( val Ref, val Field, val Default = undefined ) export
платформа 8.3.9.1818 исправьте плз или как запускать правильно?
32. grumagargler 715 21.12.16 15:21 Сейчас в теме
День добрый! Уточните пожалуйста, откуда вы скачали базу?
Вот ссылка на актуальный релиз, способный работать под 8.3.9: https://github.com/grumagargler/tester
База, приложенная к теме, тестировалась на версиях <= 8.3.8
33. Spacer 341 04.04.17 12:08 Сейчас в теме
(32)Чего-то не работает под 8.3.9. 10-ю версию платформы хочет.
34. grumagargler 715 04.04.17 14:21 Сейчас в теме
(33) скачайте пожалуйста с гитхаба последнюю версию, там эта проблема решена.
37. kiruha 388 12.05.17 12:43 Сейчас в теме
(34) скачал последнюю - 1.3.2.15 cf - обновлено 8 часов назад -
для работы с конфигурацией необходима версии платформы не меньше, чем 8.10. Текущая версия 8.3.9...

не могу даже режим совместимости выставить
38. grumagargler 715 12.05.17 14:53 Сейчас в теме
(37)
не могу даже режим совместимости выставить

у вас нет под рукой 8.3.10, или какая-то другая проблема?
39. kiruha 388 12.05.17 15:13 Сейчас в теме
(38)Нет под рукой 8.3.10. Думаю у большинства пока 8.3.9 - иначе не стал бы беспокоить
41. kiruha 388 12.05.17 16:26 Сейчас в теме
43. sorb 12.05.17 16:53 Сейчас в теме
(39) влезу: 8.3.10 по опыту работы с ней чудо как хороша, пожалуй самая стабильная и безбажная с момента появления 8.3. Перебирайтесь, не пожалеете :)
35. kiruha 388 11.05.17 19:09 Сейчас в теме
Для Бух 3.0 есть или планируются тесты ?
36. grumagargler 715 11.05.17 23:26 Сейчас в теме
(35)
Для Бух 3.0 есть или планируются тесты ?

мне не приходится вплотную работать с этой конфигурацией, поэтому с моей стороны - ответ нет.
Возможно, другие коллеги уже имеют какие-то наработки, и поделятся, ведь технически всё для этого есть.
42. grumagargler 715 12.05.17 16:34 Сейчас в теме
приходите в специальный чат https://gitter.im/tester1c/Lobby, там вам другие коллеги смогут более оперативно помогать
45. Светлый ум 277 09.10.19 07:57 Сейчас в теме
В чем ключевое отличие от 1С-овской?
46. grumagargler 715 09.10.19 14:43 Сейчас в теме
(45) решение максимально приближено к разработчику, включая циклы перезапуска и покрытие пограничных/сложных случаев. Вытекающее другое отличие - в тестера сценарии программируются.
47. JohnyDeath 300 09.10.19 18:30 Сейчас в теме
Оставьте свое сообщение
Вакансии
Программист 1С
Екатеринбург
зарплата до 150 000 руб.
Полный день

Разработчик 1С
Новосибирск
зарплата от 200 000 руб.
Полный день

Руководитель проектов 1С
Новосибирск
зарплата от 200 000 руб.
Полный день

Разработчик 1С
Санкт-Петербург
зарплата от 130 000 руб. до 170 000 руб.
Временный (на проект)

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