0. M.Shalimov 164 05.03.14 17:19 Сейчас в теме

Автоматизированное тестирование в 8.3

В данной статье будет рассмотрен новый механизм системы "1С:Предприятие 8" поддерживаемый начиная с платформы версии 8.3.
Механизм позволяет легко и быстро создавать различные сценарии тестирования, без необходимости написания сложных процедур и функций для имитации действий пользователя.

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

Комментарии
Избранное Подписка Сортировка: Древо
1. speshuric 1127 06.03.14 16:51 Сейчас в теме
Шаг далеко вперёд по сравнению со сценарным тестированием из ЦУПа
2. M.Shalimov 164 06.03.14 17:11 Сейчас в теме
(1) speshuric, по информации с "Экспертского" тренинга проходившего на прошлой неделе, в скором времени ЗАО "1С" выпустит обновленное сценарное тестирование входящее в ЦУП предоставляющее больше возможностей. Не исключено, что данный механизм будет в нем задействован.
3. speshuric 1127 06.03.14 17:46 Сейчас в теме
(2) Спасибо, я в курсе. 1С в общем-то сразу позиционировала этот механизм, как замену костылям из сценарного тестирования. И я даже с полгода назад смотрел, как там и что реализовано, но на тот момент была куча нереализованных моментов, если я правильно помню. Вам спасибо за краткий how-to с которого можно начать большинству разработчиков.
POWone; cleaner_it; +2 Ответить
4. StaticUnsafe 07.03.14 10:30 Сейчас в теме
Радует что платформа развивается.
6. M.Shalimov 164 07.03.14 12:55 Сейчас в теме
(5) headMade, КИП - отдельное решение, описанный в статье механизм - механизм платформы 8.3. Кроме платформы и тестируемой базы больше ничего не нужно.
7. pumbaE 628 07.03.14 13:17 Сейчас в теме
А интерпретация результатов тестирования где?
Информация о том что из 230 тестов упало 2 теста, о том что согласно последнему тестированию у нас появилось две регрессии, о том что программист Иванов поместил в хранилище такое, что поломало другие тесты...

Насколько вижу в users, появилось "1С: Сценарное тестирование 8 3.0.1.35 28.02.14", кто уже щупал подскажите, как CI можно применять? Как происходить связь с хранилищем, настройки полного запуска тестов или минимального набора поддерживаются? Запуск без модификации конфигурации возможнет, экспорт результатов тестов в junit?


POWone; CratosX; kuzyara; Tkal61; Bukaska; Alever; KAPACEB.AA; JohnyDeath; awa; lustin; artbear; marsohod; speshuric; +13 Ответить
8. M.Shalimov 164 07.03.14 14:17 Сейчас в теме
(7) pumbaE, В данной статье я описал только процесс настройки тестирования и предложил варианты его использования. Интерпретация результатов (как и новое сценарное тестирование) выходит за рамки данной статьи, но в ближайшее время я буду продолжать решать задачи тестирования в которых пощупаю на практике новое сценарное тестирование и напишу отдельную статью, если конечно меня никто не опередит:)
11. pumbaE 628 07.03.14 15:35 Сейчас в теме
(8)
пощупаю на практике новое сценарное тестирование и напишу отдельную статью
буду только рад увидеть обзор "нового" сценарного тестирования.

Может тогда обратите внимание:
1. Как там производиться тестирование web интерфейса интересно.
2. Насколько связаны сценарное тестирование с разработкой/хранилищем и другими различными системами баг-трекинга(возможно ли автоматом запускать сценарное тестирование, при каждом помещении в хранилище, возможно ли информировать разработчиков о провалившихся тестах, с diff изменений, которые привели к поломке тестовых сценариев).
3. Связано ли с "Автоматизированная проверка конфигураций", есть ли единая точка, где можно увидеть пульс проекта (результаты тестов, результаты проверки конфигурации, результаты нагрузочного тестирования, code-review исходного кода конфигурации).

p.s.: имхо, 1С надо растить культуру тестирования(автоматического).

Прикрепленные файлы:
alest; gradi; vlad.frost; wunderland; artbear; +5 Ответить
13. M.Shalimov 164 07.03.14 16:04 Сейчас в теме
14. artbear 1161 07.03.14 17:00 Сейчас в теме
(11) На все вопросы ИМХО ответ один - нету ничего подобного :) :(
15. M.Shalimov 164 07.03.14 18:15 Сейчас в теме
(14) artbear, по работе с хранилищем, вполне вероятно, ничего не добавили (все таки это платформа, а не конфигурация) а вот в целом механизмы тестирования будет интересно рассмотреть.
27. lustin 02.04.14 03:00 Сейчас в теме
(11) pumbaE, докладываю предварительно и коротко перед сном ;-)

1. не найдено, web клиент не держит открыто порта для проброса вызовов тестов.
2. все через специализированную конфигурацию написанную на самом 1С. Наблюдаются попытки состыковать это с СППР.
3. code-review в специализированной конфигурации не нашел - даже такой сущности или ее аналога. Не говоря уже об остальных.

тестирование проводил на чужой площадке с временным доступом по TeamViewer - у людей у кого ЦУП куплен.

Так что результаты не окончательные и финального понимания не возникло. Особенно не удалось понять как методически закладывается любимая тема Артура при создании и затем очистке тестовых данных.
9. artbear 1161 07.03.14 15:05 Сейчас в теме
(0)
но на момент написания статьи я рекомендую использовать его в ознакомительных целях, т.к. механизм довольно новый и возможно, еще не до конца отлажен разработчиками.

Механизм уже не очень новый и для целей тестирования вполне можно использовать.
Но к нему все равно есть вопросы. Не все удобно и просто :(
В открытом доступе нет примеров подобных сценариев для типовых конфигураций (я вообще не слышал о таких тестах).
В конце 2012 или начале 2013 г. общался на партнерской конференции 1С и разработчики сценарного тестирования в кулуарах сообщили мне, что им неизвестно о подобных автоматических тестах для типовых конфигураций 1С.
Для тестового фреймворка https://github.com/xUnitFor1C/xUnitFor1C уже есть готовые шаблоны для написания и автоматического выполнения сценарных тестов 8.3 и получения результатов тестирования.
Этот фреймворк уже используется в т.н. "ночных" сборках и прогоне автоматических тестов.
Например, у нашей системы на базе УТ 11 у нас свыше 500 автоматических юнит-тестов и сценарных тестов. автосборка и прогон тестов выполняется несколько раз в сутки.
Danil.Potapov; vlad.frost; Alever; JohnyDeath; ivanov660; speshuric; M.Shalimov; lustin; +8 Ответить
10. lustin 07.03.14 15:28 Сейчас в теме
(9) artbear, Уже 500 ? Молодцы мужики. Я тут всем говорю что около 200.
12. pumbaE 628 07.03.14 15:46 Сейчас в теме
(10) lustin, ну так не за один же день накапливаются у меня в среднем в месяц плюс 20-50 тестов добавляется, ну а сколько переписывается уже устал считать :)
16. KillHunter 7 09.03.14 19:44 Сейчас в теме
Я так понимаю все изменения связаны с использованием веб-интерфейса, хотя по большому счету он для основной массы просто навсего не нужен!
17. M.Shalimov 164 10.03.14 23:49 Сейчас в теме
(16) KillHunter, Не веб интерфейса а управляемого приложения ( в т.ч. веб морда). УУ нужно всем, многие типовые уже управляемы и в скором времени управляемыми станут все. Переход с УПП на ERP20 только вопрос времени, вспомните зарю 7.7.
20. Сисой 83 13.03.14 14:24 Сейчас в теме
(17) Вы за всех так уверенно не говорите.
Большинство крупных контор, поверивших в 8-ку и вложивших миллионы долларов в КИС на ее базе, кроют 1С матом за полную несовместимость новых и старых типовых.
Вот объясните мне, почему компания должна потратить еще полмиллиона долларов, если НИКАКИХ преимуществ при этом она не получит (все задачи УЖЕ решены), а багов и глюков будет немеряно.
Используемые продукты: БП, ЗУП, УПП, Консолидация.
При этом не переходить на УФ нельзя - регламентированный учет требует обновлений.

Ах да, можно еще даунгрейд на 7.7 сделать. Лицензии остались.
21. M.Shalimov 164 13.03.14 18:25 Сейчас в теме
(20) Сисой, Я не утверждаю, что нужно срочно всем выкладывать миллионы и переходить на новую систему. Есть ряд организаций, которые работают на 7.7 и их все устраивает. Но, прогресс не стоит на месте и информационные системы развиваются, так же развивается и бизнес у которого появляются новые требования к ИС и зачастую эти требования уже реализованы в новых версиях типовых.
Как Вы думаете 1С выходит на рынок среднего и крупного бизнеса? Одного желания тут мало, бизнес развивается и будучи небольшим предприятием автоматизировавшим свой учет на 1С бизнес вырастает и хочет продолжать использовать привычный ему софт, отсюда и основные требования к производительности и параллельности.
В фирме 1С тоже не дураки работают, которые ради нескольких сотен тысяч с клиента заставят всех переходить на ERP 2.0, все понимают что множество организаций работают под УПП и не могут быстро перейти на новую систему (а это в любом случае не быстро). Нуралиев не дурак и снимать с поддержки УПП вряд ли будут.
22. pumbaE 628 13.03.14 18:38 Сейчас в теме
(21) ну вот не верю, я что имея доступ к исходникам "очень" трудно было сделать тестирование и для толстых форм, а так скорей политическое решение тестирование только для управляемых.
23. M.Shalimov 164 13.03.14 22:22 Сейчас в теме
(22) pumbaE, Этот вопрос лучше задать в фирму "1С", рассуждения о том что можно было бы им сделать выходят за рамки данной статьи.
24. speshuric 1127 19.03.14 10:59 Сейчас в теме
(22) А с другой стороны, да, у них исходники есть, но отношение к тестированию мягко говоря "не TDDшное". Я всё время ворчу на 1С-ную арифметику, потому что она не имеет заявленных четких границ, из-за этого сложно предсказать результат зачастую. Причем не только для прикладного программиста, но и для разработчика платформы. Почему это плохо? Нет четкой границы, нет и не будет граничных тестов. Вот, например, ЧислоПрописью:
Сообщить(ЧислоПрописью(-1000000000000000, ""));
выводится "-Одна тысяча 00". а для
Сообщить(ЧислоПрописью(-1000000000001000, ""));
выводится "-Одна тысяча одна тысяча 00". Причем для больших положительных чисел проверку не забыли - исключение вываливается. На самом деле аналогичная ситуация почти везде в платформе - и работа с большими (2+ ГБ) объектами, и в системных полях ввода, да много где. Ошибки такие, конечно, исправляются (по мере нахождения), но системного "прочесывания" даже базовых объектов в общем-то нет. Причем, даже баг-репорты даже прекрасно оформленные в 1С слать через v8 дело достаточно неблагодарное (а вот через партнерский доступ проще) - фиг пробьёшь первую линию.

Так что пусть хотя бы в управляемых делают. Авось постепенно пройдут per aspera ad astra.
vlad.frost; CratosX; +2 Ответить
18. pumbaE 628 11.03.14 15:00 Сейчас в теме
( в т.ч. веб морда)
хм, не видел возможности реального тестирования веб-морды... Так что бы с firefox или chromium запустить, разве что selenium, но пока правил конвертации еще никто не делал http://www.screencast.com/t/RMoppLTOMz
19. M.Shalimov 164 11.03.14 15:48 Сейчас в теме
(18) pumbaE, Не использовал, но в описанном методе есть возможность запуска теста через веб.
25. worker1c 113 19.03.14 14:56 Сейчас в теме
Менеджер подключается к клиенту, при запуске сценария, сгенерированного обработкой из 1С ошибка:
{Форма.Форма.Форма(81)}: Значение не является значением объектного типа (Нажать)
	ОкноПриложенияОсновноеКомандныйИнтерфейсКнопкаКомандногоИнте­рфейсаКлиенты.Нажать();

Код:
ОкноПриложенияОсновное = Неопределено;
	КлиентсткиеОкнаТестируемогоПриложения = ТестовоеПриложение.ПолучитьПодчиненныеОбъекты();
	Для Каждого ТестируемоеОкно Из КлиентсткиеОкнаТестируемогоПриложения Цикл
		Если ТестируемоеОкно.Основное Тогда
			ОкноПриложенияОсновное = ТестируемоеОкно;
			Прервать;
		КонецЕсли;
	КонецЦикла;
	ОкноПриложенияОсновноеКомандныйИнтерфейс = ОкноПриложенияОсновное.ПолучитьКомандныйИнтерфейс();
	ОкноПриложенияОсновноеКомандныйИнтерфейсКнопкаКомандногоИнте­рфейсаПродажи = ОкноПриложенияОсновноеКомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяКнопкаКомандногоИнтерфейса"), "Продажи");
	ОкноПриложенияОсновноеКомандныйИнтерфейсКнопкаКомандногоИнте­рфейсаПродажи.Нажать();

	ОкноПриложенияОсновноеКомандныйИнтерфейсКнопкаКомандногоИнте­рфейсаКлиенты = ОкноПриложенияОсновноеКомандныйИнтерфейс.НайтиОбъект(Тип("ТестируемаяКнопкаКомандногоИнтерфейса"), "Клиенты");
	ОкноПриложенияОсновноеКомандныйИнтерфейсКнопкаКомандногоИнте­рфейсаКлиенты.Нажать();
Показать

Платформа 8.3.4.408. Кто-нубудь сталкивался? Проверено на разных серверах, базах.
26. M.Shalimov 164 19.03.14 15:12 Сейчас в теме
(25) worker1c, Судя по коду система не находит кнопки "Клиенты" в подсистеме "Продажи".

при создании сценария нужно сделать идеальную ситуацию, когда у Вас не открываются доп окна, например с информацией, и записывать сценарий сразу после запуска системы с рабочего стола.
Попробуйте переформировать код обработки.
28. pumbaE 628 24.04.14 20:05 Сейчас в теме
Подкорректировал обработку UILogToScript.epf , с возможностью сразу формировать внешнюю обработку, имхо удобней получилось, чему 1С, не надо копировать, вставить и т.д.

M.Shalimov; +1 Ответить
29. M.Shalimov 164 25.04.14 11:09 Сейчас в теме
(28) pumbaE, Можете выложить ее, а я у себя в публикации добавлю ссылку.
З.ы. в 1С планировали это сделать:)
30. pumbaE 628 25.04.14 15:15 Сейчас в теме
(29) там v8unpack используется. Думаете 1С может пользоваться не "православным" инструментом?
https://github.com/xUnitFor1C/xUnitFor1C/tree/feature/104-UILogToScriptUnitTest/%D0%93%D0%A3%D0%98_%D0%A2%D0%B5%D1%81%­D1%82%D1%8B_8_3
stas_ganiev; M.Shalimov; +2 Ответить
31. M.Shalimov 164 25.04.14 15:46 Сейчас в теме
(30) pumbaE, Я просто доношу информацию из уст представителей фирмы "1С":)
32. abryazgin 1 25.09.15 11:09 Сейчас в теме
Я так понимаю, что методом автоматизированного тестирования мы не сможем выполнить нагрузочное тестирование при параллельной работе нескольких клиентов.

У нас один менеджер управляет действиями на нескольких клиентах, но делает это последовательно.

Могу ли я как-то запустить тест, чтобы последовательность процедур выполнялась одновременно на клиенте 1 и клиенте 2?
Через фоновые задания не параллелится, так как это клиентские действия...
33. pumbaE 628 25.09.15 12:41 Сейчас в теме
(32) abryazgin, это не предназначено для нагрузочного тестирования, для нагрузочного пользуйтесь тест центром.
34. abryazgin 1 25.09.15 21:58 Сейчас в теме
(33) pumbaE, вы имеете ввиду это http://v8.1c.ru/expert/tc/tc_overview.htm?

Кстати. В процессе экспериментов обнаружено, что записываются не все действия пользователя.
Например [1] переход по произвольной ссылке (Ctrl+F11) сохраняет только открытие окна поиска и нажатие кнопки поиск, ввод текста или его вставка из буфера не фиксируется.
Например [2] нажатие на кнопку добавить договор в поле выбора договора в документе тоже не фиксируется при записи сценария.
Смотрел на платформе 8.3.5.1460 (что было под рукой).
35. M.Shalimov 164 26.09.15 09:39 Сейчас в теме
(34) abryazgin, С тест-центром все верно. Именно его нужно использовать для нагрузочного тестирования. Рассмотренный вариант подходит для функционального.
По косякам, лучше попробуйте платформу 8.3.6 свежего релиза, рассматриваемая Вами уже довольно устарела.
36. Boson 29.01.16 12:24 Сейчас в теме
Добрый день, может кто-нибудь знает возможно ли настроить Конфу Сценарного Тестирования на работу с тонким клиентом через web соединение по протоколу HTTP?
37. tormozit 5621 07.07.16 17:10 Сейчас в теме
Хочу новую статью или обновления этой.
Gisborn; add063; dj_serega; +3 Ответить
38. gavril 43 21.11.16 15:07 Сейчас в теме
Возможно ли запустить в принципе с ключем /TESTCLIENT и в толстом клиенте?.
Куда будет писать журнал?

Так ничего не получилось из вышеперечисленного.
39. st4rk 12.12.16 11:16 Сейчас в теме
Для обычных форм есть решение?
40. DimaP 56 23.01.17 15:45 Сейчас в теме
Кто-нибудь на практике использует автоматизированное тестирование от 1С?
Какие результаты?
С какими проблемами столкнулись?
41. Cyberhawk 115 28.09.18 13:04 Сейчас в теме
Внешняя обработка UILogToScript, что лежит на ИТС, не умеет преобразовывать интерактивные действия по выбору значений из выпадающих меню (метод управляемой формы "ПоказатьВыборИзМеню").

В типовых конфигурациях, например, это выпадающее меню можно увидеть в группе "Контактная информация" форм объектов (например, при нажатии кнопки "Добавить" предлагается выбрать тип добавляемой контактной информации - "Электронная почта", "Телефон" и т.д.).
42. Cyberhawk 115 28.09.18 13:53 Сейчас в теме
(41)
Текст ошибки выглядит следующим образом: {ВнешняяОбработка.UILogToScript.МодульОбъекта(511)}: Неопознанный узел executeChoiceFromMenu:
Raise NStr("en = 'Unknown node '; ru = 'Неопознанный узел '") + Reader.Name + ": " + Reader.Value;


Для ее исправления нужно в методе "ConvertCommand" в конструкцию "Если" добавить еще одну ветку:

	ElsIf Reader.Name = "executeChoiceFromMenu" Then
		Presentation = "";
		While Reader.ReadAttribute() Do
			If Reader.Name = "presentation" Then
				Presentation = Reader.Value;
			Else
				Raise NStr("en = 'Unknown attribute '; ru = 'Неопознанный атрибут '") + Reader.Name + ": " + Reader.Value;
			EndIf;
		EndDo;
		AddLine(Writer, VariableName + ? (ScriptVariant = "en", ".ExecuteChoiceFromMenu(""", ".ВыполнитьВыборИзМеню(""") + DoubleQuotationMarks(Presentation) + """);", True);
		LastProcessedCommand = ? (ScriptVariant = "en", "ExecuteChoiceFromMenu", "ВыполнитьВыборИзМеню");
		Reader.Read();
Показать
43. Cyberhawk 115 28.09.18 15:12 Сейчас в теме
Обнаружена еще одна ошибка в обработке UILogToScript, на этот раз в создаваемом этой обработкой коде сценария на встроенном языке 1С.

Ошибка имеет вид "Переменная не определена (ОкноПриложения...CommandInterface)" и проявляется, если:
1) в сценарии присутствует взаимодействие пользователя с панелью навигации формы
и
2) такое взаимодействие не является самым первым действием в этой форме

Т.е. если пользователь в сценарии нажимает на кнопку панели навигации формы объекта (например, переходит из формы документа в какой-нибудь связанный справочник или регистр) и первое такое нажатие не является самым первым действием в форме (после ее открытия), то формируемый обработкой UILogToScript программный код всегда будет выдавать ошибку компиляции.

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

Вариант, не требующий изменения сценария, заключается в доработке обработки UILogToScript и будет приведен ниже.
44. Cyberhawk 115 28.09.18 15:30 Сейчас в теме
(43)
В методе "ConvertWindowCommandInterface" достаточно вызов метода "AddLine" вынести из условия, в котором этот вызов присутствует. Например, расположить сразу после условия (хотя можно и до).

Негативным моментом здесь будет являться то, что если в сценарии присутствует несколько интерактивных взаимодействий пользователя с панелью навигации (в рамках одной и той же формы), то в сформированном обработкой UILogToScript программном коде будет повторяться инициализация переменной, хранящей командный интерфейс формы (будут повторяться вызовы метода "ПолучитьКомандныйИнтерфейс" перед каждый взаимодействием пользователя с панелью навигации формы).
Кажется, что "защититься" от такого избыточного поведения не так просто, как может поначалу показаться: например, если реализовывать кэш, то стоит следить не только за добавлением в него признака, что командный интерфейс формы проинициализирован, но и учитывать, что одна и та же форма может открываться многократно. Поэтому в этом направлении доработку обработки осуществлять не стал.
45. artbear 1161 30.09.18 21:21 Сейчас в теме
(44) Спасибо за выполненный анализ
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

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

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

Технический лидер, архитектор 1С, руководитель проектов
Санкт-Петербург
зарплата от 150 000 руб.
Полный день

Автор новостных обзоров на тему 1С и бухучета
Санкт-Петербург
По совместительству