0. kraynev-navi 421 02.01.18 18:42 Сейчас в теме

Тестирование интерфейса в обычном приложении 8.2 при помощи SikuliX

Как же не хватает клиента тестирования на платформе 8.2. Не кликнешь на кнопку, не выберешь из списка, не проверишь видит ли надпись пользователь.
Воспользуемся внешним инструментом SikuliX, который позволит нам протестировать функционал форм.
Данный инструмент легко встраивается в линию сборки и может "дружить" с уже известным многим Open-source продуктами.

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

Комментарии
Избранное Подписка Сортировка: Древо
1. Evil Beaver 6287 03.01.18 13:11 Сейчас в теме
Отличная работа, спасибо!
2. pumbaE 627 03.01.18 13:17 Сейчас в теме
# -*- coding: UTF-8 -*-
разве не помогает в начале файла для преодоления проблем с кириллицей?
8. kraynev-navi 421 07.01.18 08:53 Сейчас в теме
(2) я имел в виду установить сам Sikuli в русскоязычную папку пользователя
3. as 04.01.18 00:22 Сейчас в теме
Отлично. Даже и не думал, что обычные формы можно так просто начать тестировать. Хотя про AutoIt знал :)
4. vermouth 04.01.18 15:25 Сейчас в теме
Киньте в меня камнем, кто не верит в такое тестирование.. правда... по числу негативных отзывов в мой адрес хочу понять - насколько я ошибаюсь
triviumfan; Brawler; grumagargler; +3 Ответить
9. kraynev-navi 421 07.01.18 08:54 Сейчас в теме
(4) что значит верить или не верить в тестирование? )))
5. Dzenn 344 05.01.18 01:25 Сейчас в теме
Открыл для себя что-то новое, хотя думаю, что мне эта технология никогда не пригодится. В каких случаях нужно проводить такие тестирования?
6. Region102 05.01.18 21:44 Сейчас в теме
(5) Для "домашней разработки" это не обязательно, но если пишешь серьезные приложения для бизнеса, то тестирование должно внедряться на самом начальном этапе разработки. Когда у вас конфигурация - это 5 справочников и 2 документа, то да, там можно и самому потыкать чтобы проверить корректность последних изменений. Когда же это уже десятки объектов метаданных с тесными взаимосвязями, то тут доработал что-то полугодичной давности и посыпались ошибки в работе по цепочке. Сейчас клиенты очень негативно относятся к 1С, так как тестировать в нашей среде принято на пользователях, а бизнес этого не любит.

Меня же больше интересует написание тестов для мобильной платформы и возможность внедрения в мобильной платформе нормальных сервисов для анализа ошибок в приложениях, типа fabric.io
7. ivanov660 1627 06.01.18 21:59 Сейчас в теме
(6) Бизнес в 1С не любит косяков, а также не готов платить за тестирование. Взаимоисключающие вещи к моему сожалению.
monkbest; artbear; +2 Ответить
11. kraynev-navi 421 07.01.18 09:04 Сейчас в теме
(7) Надо смотреть на тестирование как на часть разработки. Вы же не принуждаете бизнес оплачивать, например, собственное обучение. Вы обучаетесь за свой счет, понимая, что инвестируете в свое качество разработки. Выполняя тестирование вы также повышаете свое качество разработки.
artbear; grumagargler; +2 Ответить
16. ivanov660 1627 07.01.18 22:23 Сейчас в теме
(11)На самом деле косвенно конечно да. Откуда берутся деньги на внутренние нужды компании? С клиентов) Чем более "качественный" сервис - тем выше цена в прайсе.
За тестирование я двумя руками за, и за повышение квалификации сотрудников и качества разработки.
RSConsulting; +1 Ответить
14. grumagargler 612 07.01.18 19:10 Сейчас в теме
(7) Проводил неоднократно эксперименты с коллегами. Спрашиваю: - Вот вы говорите вам не хватает времени/денег делать работу качественно, так? Ответ – да, именно так. Хорошо, даем премию, даем времени пока не скажете «готово». Работаем…и в результате – почти ничего не изменилось. Другими словами, тестирование это не как сервис, за который можно дополнительно заплатить и оно появится (если мы говорим про программистов), это часть процесса разработки, требует обучения и повышения общей культуры создания программ.
UniversaLL; JohnyDeath; kuntashov; kraynev-navi; +4 Ответить
19. ivanov660 1627 07.01.18 22:35 Сейчас в теме
(14)Если подойти немного философски, то человек (особенно программист) ленивое существо) обремененное кучей проблем, а также набором устоявшихся поведенческих шаблонов. И вариант с отправлением в свободное плаванье в большинстве случаев приведет к провалу.
Если говорим про коллектив разработчиков продукта, то тут следует внести изменения в бизнес процесс разработки. Надо фактически заставить работать по изменившимся правилам. Обязательно потребуются инструкции и обучение. Иначе не работает, там где этого процесса не было.
10. kraynev-navi 421 07.01.18 08:59 Сейчас в теме
(6) А потом через год "вдруг" появляется еще пара документа и ты уже не помнишь как руками все это прочекать. А тестами все уже было покрыто и запускается на автомате.
Или другой случай - эти 5 справочников и 2 документа так удачны и составляют подсистему, что принято решение интегрировать в другие конфигурации. Тесты ускорят процесс в разы.
12. triviumfan 10 07.01.18 14:11 Сейчас в теме
Не понимаю, кто использует такого рода тестирование... оно же нереально затратное. А целесообразно ли?
Даже у самой 1с нет автоматического тестирования, зачастую вижу баги с переопределением обработчиков или удалением привязки их из формы, ввиду чего имеем "метод объекта не обнаружен".
13. Region102 07.01.18 16:24 Сейчас в теме
(12) Многие крупные разработчики до сих пор не применяют тестирование в принципе. Взять конфигурацию рарус УАТ проф начальных релизов и прогнать их стандартными средствами проверки конфигураций, и взять последние релизы, ошибки так и тянуться ГОДАМИ. А за внедрение этой конфигурации они миллионы подымают.

Внедряйте тестирование на начальном этапе и со временем люди при выборе качественного продукта обратятся к вам, а не к "старичкам" работающим по старинке. Да и свою карму поднимите.
JohnyDeath; kraynev-navi; +2 Ответить
15. kuntashov 364 07.01.18 22:12 Сейчас в теме
Спасибо за обзор инструмента. Сейчас как раз мучаюсь (другого приличного слова не подберу) с 1С:Сценарным тестированием для тестирования конфигураций на 8.2. Главная беда, конечно - с модальными окнами.

Есть пара вопросов:

1. Как вижу, SukuliX работает в отдельном сеансе/процессе и по идее должна уметь и модальные окна ловить. Я прав?

2. Почему xUnitFor1C используете только для геренации отчета? Не думали о том, чтобы запускать SikuliX-тесты при помощи xddTestRunner.epf, который запускался бы в сервисной информационной базе?

Это более естественный способ использования xUnitFor1C, чем отдельный запуск только для обработки логов. Принцип работы тестовой обработки для xUntitFor1C может быть таким:

* Параметризованный тестовый метод Тест_ДолженВыполнитьСкриптSikuliX(), который принимает на входе путь к сценарию на SikuliX и выполняет его, в конце проверяет лог и выводит исключение, если в логе обнаружены ошибки.

* ЗаполнитьНаборТестов() сканирует переданный через файл конфигурации путь к каталогу с SikuliX-тестами и для каждого файла-теста создает тестовый случай в дереве тестов (тест = Тест_ДолженВыполнитьСкриптSikuliX, Параметр = Путь к конкретному SikuliX-скрипту)

Мы таким образом запускаем 1С:Сценарные тесты.
Основное преимущество такого подхода: не нужно поддерживать батник для последовательного запуска тестов.

Ваше решение, конечно же, идеально для всех, кому сначала ехать, а потом шашечки :)
17. kraynev-navi 421 07.01.18 22:24 Сейчас в теме
(15)
1. Да, должен. Примера нету, чтобы подтвердить.
2. Было бы идеально запускать внутри фреймворка. Но есть нюанс.
Пока тест не отработает, он никаких новых окон не позволит открыть кому бы то не было - скрипту, пользователю и т.д. Если вы предлагаете открывать второй экземпляр 1с в режиме предприятия, то у меня есть сомнения в том, что эти два экземпляра (псевдо "клиент-тестирования" и экземпляр с xUnit) не будут перекрывать друг друга. Тут надо придумывать хитрый механизм внутри sikuli, чтобы он разобрался в том, куда ему кликать, на какие окна смотреть. Тут подходим к задаче корректного определения нужного приложения, удержания фокуса и т.д. Попутно, подозреваю, будут еще нюансы. Мне кажется, этот путь сложнее.
Если не прав, буду рад замечаниям.
artbear; kuntashov; +2 Ответить
18. kraynev-navi 421 07.01.18 22:34 Сейчас в теме
(15) и еще дополню.
Конечно, батник не надо поддерживать (дописывая туда новые/удаляя старые). Делается onescript-е, который шерстит папки со сценариями. В этой связке только некрасив "лишний" файл обработки-теста внутри папки сикули.
Про ваш вариант с параметрами надо подумать, может лучше, да.
20. Gilev.Vyacheslav 1836 09.01.18 12:19 Сейчас в теме
а на 8.3 перейти не проще?
mitia.mackarevich; +1 Ответить
22. artbear 1156 09.01.18 13:22 Сейчас в теме
(20) для УПП 1.Х ? нет, не проще :)
24. Gilev.Vyacheslav 1836 10.01.18 10:02 Сейчас в теме
23. artbear 1156 09.01.18 13:36 Сейчас в теме
(21) Зачем вставлена рекламная ссылка?
Добавь полезный комментарий - о чем, почему?
zarucheisky; kraynev-navi; +2 Ответить
25. kuzyara 793 10.01.18 10:12 Сейчас в теме
Это можно, но что за выпады и переход на личности?
(23)
Хорошая документация, реальные сценарии на типовой, готовые кейсы, 8.2, ОФ, неплохое дополнение к 1с:апк.
Легко ищется на трекерах.

Теперь разверните за полезность вашего первого комментария.
26. Makushimo 154 18.05.18 13:01 Сейчас в теме
Скажите, я к компу на котором 1С, подключаюсь через RDP, на нем монитора живого нет или выключен.
Sikuli тут бессильна?
27. kraynev-navi 421 20.05.18 20:00 Сейчас в теме
(26) Если подключаетесь по RDP, то монитор есть - ваш. Если прогонять через неизвестную заранее виртуалку, то можно подсмотреть результирующий отчет. Более подробно см. предпоследний параграф:
В моем случае slave-нода запускается с экранным разрешением 1024х768. Запуск осуществляется под пользователем, для которого настроен автологин. И это следует учесть при создании Sikuli-сценариев. Возможно, есть более удачный способ запуска. Как проверить разрешение – в отчете есть информация на эту тему:
28. Makushimo 154 21.05.18 11:23 Сейчас в теме
(27) Я подключаюсь по RDP настраиваю сценарий, вешаю его на автозапуск и забиваю болт.
Автозапуск прогоняет тест на сервере, где нет монитора и я в этот момент не смотрю на процесс через RDP.
Sikuli работает через скриншоты экрана. Так?
Значит если не с чего делать скриншоты, то и тест не пройдет. Верно?

И что такое slave-нода вообще ни разу не понятно.
30. kraynev-navi 421 21.05.18 15:17 Сейчас в теме
(28) "вешаю на автозапуск" - это в Планировщике указываете скрипт? От чьего имени? Любого вошедшего пользователя, вне зависимости от регистрации? Это наверняка, важно, но затрудняюсь ответить как надо сделать, ибо такой способ использования не пробовал. Возможно, вы правы, если пользователь не залогинился, монитора не будет, взаимодействовать не с чем.
Рабочий вариант со slave-нодой - запуск тестов на jenkins (https://jenkins.io/), настройка автологина под пользователем из под которого запускается агент jenkins
32. Makushimo 154 21.05.18 15:32 Сейчас в теме
(30)
Рабочий вариант со slave-нодой - запуск тестов на jenkins

В двух словах не вдаваясь в детали можно прояснить, что это значит? Запускается сеанс RDP под указанным пользователем, и так получаем как бы монитор? то есть сервер сам к себе под RDP подключается? и если нет монитора, то все равно заработает?
33. kraynev-navi 421 21.05.18 15:56 Сейчас в теме
(32)
Не так. и RDP не нужен и монитор тоже. Нужен пользователь с автовходом. Как-будто при старте винды сразу кто-то вошел и работает.
- создаем на виртуалке спецпользователя локального админа, выставляем ему AutoAdminLogon выставляем в 1. (подробнее, например, тут: https://support.microsoft.com/ru-ru/help/324737/how-to-turn-on-automatic-logon-in-windows, с картинками: https://interface31.ru/tech_it/2011/07/kak-vklyuchit-avtomaticheskiy-vhod-v-sistemu-dlya-windows-7-i-windows-server-2008.html)
- создается батник на ведомой машине, который запускает стандартный агент jenkins "java -jar slave.jar....",
- в планировщике делаем задачу на запуск этого батника из под спецпользователя
При включении/перезапуске виртуалки винда поняла, что пользователь уже "вошел". И взаимодействует с его рабочим столом.
Пока писал нашел вот такой ссыль: http://qaru.site/questions/225464/how-to-run-gui-tests-on-a-jenkins-windows-slave-without-remote-desktop-connection
35. Makushimo 154 22.05.18 17:59 Сейчас в теме
(33) фигасе !
Спасибо. Покурю эти ссылки и что нибудь про jenkins.
29. Makushimo 154 21.05.18 14:02 Сейчас в теме
Вот вы пишете: "Как человек, написавший не одно приложение на AutoIt.."
А можете помочь со скриптом, который нажимает кнопку "ОК" в форме договора?
утилита AutoIt Window info форму договора не воспринимает как окно, а кнопку "ОК" вообще не выделяет. выделяет только командную панель формы.

То есть написать скрипт нажимающий "ОК" на форме написать вообще не реально?
31. kraynev-navi 421 21.05.18 15:23 Сейчас в теме
(29) 1С с AutoIt это еще та связка. Вы правы, там отдельного окна как бы нет. Со скриптом, увы, не помогу. В качестве идеи - можно попробовать "послать" туда хоткей ctrl+enter, если ОК дефолтная кнопка.
34. kraynev-navi 421 21.05.18 16:47 Сейчас в теме
(29)
То есть написать скрипт нажимающий "ОК" на форме написать вообще не реально?

Делал в основном приложения, связанные с браузерами, вебом. Связку 1С и AutoIt никогда не использовал для анализа форм, поэтому сказать "точно нет" или "точно да" не могу.
36. Makushimo 154 23.05.18 13:40 Сейчас в теме
Подскажите, пожалуйста такой вопрос.

Можно ли из 1С одновременно запустить два процесса Sikuli ?

Я пытаюсь решить такую задачу:
Скрипт1 Sikuli нажимает кнопку, 1С выкидывает исключение
Скрипт2 Sikuli выполняется в цикле и он нажимает кнопку закрытия окна исключения платформы.

Скрипт 2 через обработчик ожидания запускаю на форме с интервалом 1 сек.
затем запускаю Скрипт1,
когда платформа выдает исключение, то нажатие кнопки как бы висит и скрипт ждет
по задумке Скрипт2 должен найти окно исключения и закрыть его. Тогда Скрипт1 продолжит свою работу.

Эта идея работает если фоновый скрипт запущен один, а основное действие с формой делаю программно из 1С (например, открыть форму)

Но когда два скрипта, то такое ощущение что Скрипт 2 фоном запускается, затем Скрипт1 как бы выбивает его, т.е процесс Sikuli переключается на него, а фоновое выполнение непонятно куда девается.
37. kraynev-navi 421 25.05.18 15:48 Сейчас в теме
(36) Не очень понял, что за чем, если честно.
Идея с циклическим запуском и двумя скриптами, имхо, не правильная.
Может так: в начале работы 1С запускает сикули-скрипт, который реализует оба функционала - нажатие кнопки и закрытие окна исключения, после отработки 1С. Просто предусмотреть условие, по которому сикули завершит выполнение (+ аварийный выход по таймауту).
38. Makushimo 154 28.05.18 12:58 Сейчас в теме
(37)
ну в итоге я так и сделал.
39. Makushimo 154 28.05.18 13:21 Сейчас в теме
Скажите, а можно ли в отчет Allure подсунуть скриншот ошибки, которая появилась в процессе выполнения теста?

Допустим скриншот как-то уже есть.
40. kraynev-navi 421 28.05.18 13:49 Сейчас в теме
(39) Наверняка можно. Но не пробовал. Если через xunit, то залезть в функционал создания аллюра и посмотреть куда можно допилить вставку скриншотов. Посмотреть можно, например, в VB
Оставьте свое сообщение
Новые вопросы с вознаграждением
Автор темы объявил вознаграждение за найденный ответ, его получит тот, кто первый поможет автору.

Вакансии

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

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

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

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

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