Использование технологий искусственного интеллекта, новый интерфейс 8.5, впервые о юзабилити-тестировании и мощных изменениях в «1С:Сценарное тестирование».
Именно такими тезисами мне запомнился весенний семинар партнёров фирмы «1С», проходивший с 28 февраля по 3 марта 2025 года. Оговорюсь — тезисы выделены исключительно в рамках тематики данного блога, поскольку посвящён он в первую очередь процессу тестирования программных продуктов 1С.
Но тогда причём здесь тема искусственного интеллекта, нового интерфейса в версии 8.5 и удобства использования программных продуктов?
Несмотря на то, что юзабилити-тестирование — это отдельное направление деятельности со своими особенностями, оно всё же не выходит за границы понятия «тестирование», поэтому вполне соответствует тематике данного блога.
Применение технологий искусственного интеллекта — это наше будущее, в том числе и в процессе тестирования. Поэтому хочется начать об этом говорить, а лучше — применять и делиться опытом.
А новый интерфейс 8.5 затрагивает обе темы. Это одновременно и наше будущее, и оно тесно связано с темой юзабилити.
Но давайте вернемся к докладам семинара и ознакомимся с ними.
Доклады в рамках темы «Тестирование»:
- Новое в Сценарном тестировании (Александр Плотников, руководитель группы автоматизации тестирования, 1С)
Доклад Александра Плотникова раскрывал новые возможности инструмента «1С:Сценарное тестирование», версии 3.0.37 (спойлер — эта версия уже официально вышла).
Так как разработка инструментов «1С:Сценарное тестирование» и «1С:Тестировщик» осуществляется отделом, занимающимся разработкой бухгалтерских программ, то и примеры в докладе приведены в рамках соответствующих конфигураций.
Количество таких конфигураций велико — некоторые даже не попали на слайд. Программы могут выпускаться одновременно в коробочной и облачной версиях, что обозначено на слайде специальными значками.
Каждую ночь собирается и тестируется как минимум два релиза конфигурации «1С:Бухгалтерия предприятия». Схема этого представлена на слайде.
Для каждого релиза каждую ночь запускаются тесты, суммарное время выполнения которых составляет 300 часов машинного времени. У нас уже более 100 серверов используется для автоматизации. Ещё 290 часов займёт прогон остальных конфигураций — это «1С:Бухгалтерия некоммерческой организации», «1С:Садовод», «1С:Гаражи» и так далее. Для них автотесты запускаются по необходимости, когда планируется выпуск ближайшего релиза. Автоматизация выполнена через конфигурацию «1С:Сценарное тестирование». В команде, занимающейся автоматизацией, работает всего трое сотрудников. Они проводят автотестирование, пишут новые тесты, разбирают результаты, поддерживают сервера и прочее.
Так как количество автотестов постоянно растёт, соответственно, для выпуска релизов «1С:Бухгалтерия предприятия» в срок без потери качества нужно ускорять их выполнение. Возник вопрос — увеличить число серверов или попытаться ускорить выполнение автотестов? Решили пойти вторым путём и сначала попробовать ускорить выполнение. Но за счёт чего это можно сделать?
Ускорение выполнения автотестов
Был проведен анализ, который показал, что простая перерисовка дерева самого сценария — достаточно трудоёмкая операция. Выяснилось, что каждая такая перерисовка занимает около одной секунды. Очевидно, что во время выполнения автоматических тестов ночью обновление интерфейса совершенно бессмысленно, поскольку за ними никто не наблюдает.
Поэтому была введена специальная настройка. Теперь в параметрах каждого сценария можно задать интервал обновления дерева элементов.
Для новых сценариев по умолчанию установлено значение 10 секунд, однако при ночном прогоне тестов оно автоматически сбрасывается до нуля. Дерево сценария будет обновляться лишь по завершении теста либо в случае возникновения ошибки. Такая оптимизация позволила сократить затраты времени примерно на 16 минут на каждую тысячу шагов сценариев. Поскольку общее количество шагов измеряется миллионами, общая экономия достигает порядка 20% исключительно за счёт оптимизации процесса перерисовки данной формы.
Объединение режимов выполнения и редактирования сценариев тестирования
Также наши пользователи часто задавали вопрос — зачем нужны два режима работы в обработке сценарного тестирования: первый — выполнение, второй — редактирование автотеста?
Интерфейсно между ними существовали различия: некоторые кнопки скрывались, а в режиме записи сценария не велся протоколом выполнения.
Поэтому было принято решение объединить оба режима в единый. Сейчас доступен лишь один общий режим, в котором все необходимые элементы интерфейса отображаются постоянно, и форма не перерисовывается заново при каждом запуске.
Вместо переключателя режимов теперь выводится информация о клиентах тестирования, используемых в сценарии.
Новая форма настроек подключения к клиентам тестирования
Собственно, очень часто возникает необходимость использовать несколько клиентов тестирования одновременно.
Например, когда пишем автотест под администратором, а выполняем его под другой ролью. Или для тестирования обмена нужно одновременно держать открытыми двух клиентов — скажем, «1С:Бухгалтерия предприятия», а вторую базу возьмем «1С:Управление небольшой фирмой». И постоянно переключаться между ними.
Раньше такая возможность была, но приходилось открывать диспетчер задач, искать нужный порт тестируемого клиента, вручную вводить его и только потом подключиться. Это было неудобно.
Процесс упростили. Сейчас вся информация о клиентах доступна в отдельном меню. Из него можно быстро настроить подключение к клиенту тестирования.
Кстати, настройка стала значительно проще: ранее приходилось «жёстко» прописывать конкретный порт, сейчас появилась опция автоматического подбора порта при каждом новом запуске.
Соответственно, если клиент уже открыт, то дальше его можно просто выбрать, а если клиент закрыт, но какие-то порты используются — программа сама подберёт свободный порт.
Для работы с уже запущенными клиентами тестирования была сделана отдельная форма «Клиенты тестирования».
В левой части формы отображаются все клиенты, используемые в сценарии.
Если иконка с цифрой зелёная — значит, клиент уже запущен, подключён к сценарию и с ним можно работать. Выбор осуществляется простым кликом: выбираем нужного клиента, нажимаем кнопку «Выбрать», после чего продолжаем работу с ним.
Если клиент ещё не запущен, справа находятся кнопки подключения, отключения и другие функции управления клиентом. Справа расположена информация обо всех клиентах, запущенных на компьютере, но пока не используемых в сценарии. Нажав на кнопку со стрелкой, можно перетащить клиента в левую таблицу и начать с ним дальнейшую работу.
Новые возможности планов и итерация тестирования
Есть такая сущность в «1С:Сценарное тестирование», как «План тестирования».
В общем понимании, план тестирования — это документ, который описывает, как будет проходить тестирование, кто его выполнит, какие ресурсы будут задействованы, какой объем работ предстоит и так далее. Дополнительно ввели ещё одно понятие — «Итерация тестирования». Это исполнение плана на конкретной версии программы.
Изначально план разрабатывался для ручного тестирования новых проектов, однако, увидев возможности его использования, пришли к выводу, что он прекрасно подходит и для автотестирования. Его можно применять для группировки тестов по функциональности, конфигурации и так далее. Поэтому разрешили использование плана при автоматизации и добавили в итерации возможность ставить тесты в очередь.
Но возник вопрос: что делать, если некоторые тесты нужно выполнять строго последовательно — один за другим? Например, важно дождаться завершения обновления системы до старта самих тестов либо последовательное выполнение этапов обмена данными (нельзя запускать третий этап ранее первого и второго).
Для решения этой проблемы ввели в задание специальное поле «Предыдущие задания», позволяющее указать зависимости между заданиями. Отмечаются нужные пункты простым кликом мыши.
Ещё была добавлена возможность перезапуска задания в случае сбоя и установки тайм-аутов между перезапусками. Полезно, когда ночью возникают проблемы с сетью или виртуальным сервером — повторная попытка, скорее всего, перенаправит задание на другой сервер, где оно, возможно, выполнится. Происходит отсечение ненужных срабатываний.
После настройки можно визуально увидеть, как автотесты будут запускаться на диаграмме Ганта: зависимости тестов друг от друга, их последовательность и прочее.
Таким образом, появляется возможность контролировать порядок запуска: один тест выполняется строго после другого. За счёт уменьшения количества ложных срабатываний тесты становятся стабильнее. Если предыдущий автотест завершился неудачно, последующий запускать бессмысленно — ложных срабатываний не возникнет.
В целом, правильнее начинать тестирование с составления плана (особенно актуально для ручного тестирования), а уже затем приступать непосредственно к процессу тестирования.
Но часто возникают ситуации, когда тестировщик дополняет план уже в процессе тестирования — такое иногда называют исследовательским тестированием. Раньше существовала небольшая проблема: новые тесты, появившиеся во время тестирования, приходилось вручную вносить в план, чтобы они потом автоматически заполнялись в последующих итерациях.
Сейчас этот механизм доработан. Тестировщик теперь создаёт первоначальный простой (а порой и вовсе пустой) план, запускает итерацию, берёт новую сборку и приступает к тестированию, попутно добавляя необходимые проверки прямо в ход выполнения итерации.
Эти изменения автоматически вносятся в план, и при создании следующей итерации на свежей сборке они будут туда уже включены.
Если в результате прохождения итерации на каких-то шагах обнаруживаются ошибки, то они регистрируются, а после исправления необходимо начать новую итерацию.
Тут возникал вопрос — если заполнить план тестирования полностью, то в итерацию попадут абсолютно все проверки. Что с ними делать? Либо вручную удалять эти проверки из итерации, либо вручную отмечать их как выполненные. Механизм был доработан, и теперь можно продолжить предыдущую итерацию. Создаётся новая итерация, куда попадают лишь те проверки, которые ранее не были завершены или завершились неудачно. Это немного сокращает объём ручного труда.
Копирование группы тестов со сценариями
И ещё одно небольшое улучшение. При открытии новой ветки разработки возникает необходимость копирования пачки тестов и дальнейшей работы с ними отдельно.
Раньше приходилось вручную копировать каждый тест и группы. Это занимало много времени. Был добавлен довольно простой механизм, позволяющий копировать сразу все тесты вместе с их иерархией и сценариями.
Достаточно найти нужную группу тестов, нажать кнопку копирования, настроить параметры — и всё! Далее уже можно переименовывать копии и спокойно работать с тестами.
На этом всё. При возникновении вопросов и предложений пишите в Telegram-канал или на почту.
Всем большое спасибо. Всего доброго.