Простой запуск юнит-тестов

09.04.17

Разработка - Тестирование QA

Шаблон экспресс теста на базе xUnitFor1C

Файлы

ВНИМАНИЕ: Файлы из Базы знаний - это исходный код разработки. Это примеры решения задач, шаблоны, заготовки, "строительные материалы" для учетной системы. Файлы ориентированы на специалистов 1С, которые могут разобраться в коде и оптимизировать программу для запуска в базе данных. Гарантии работоспособности нет. Возврата нет. Технической поддержки нет.

Наименование Скачано Купить файл
Шаблон автономного теста
.epf 336,31Kb
4 2 500 руб. Купить

Подписка PRO — скачивайте любые файлы со скидкой до 85% из Базы знаний

Оформите подписку на компанию для решения рабочих задач

Оформить подписку и скачать решение со скидкой

Вы можете заказать платную доработку или адаптацию этой разработки под вашу конфигурацию на «Бирже заказов».

  • 0% комиссии — оплата напрямую исполнителю;
  • Исполнители любого масштаба — от отдельных специалистов до команд под проект;
  • Прямой обмен контактами между заказчиком и исполнителем;
  • Безопасная сделка — при необходимости;
  • Рейтинги, кейсы и прозрачная система откликов.

Постановка задачи

Я довольно часто пользуюсь инструментом xUnitFor1C. Кроме того периодически приходится писать код и тестировать на разных машинах, удаленных рабочих столах и т.п.
Довольно неудобно вспоминать где я положил браузер тестирования на конкретной машине: в какой сетевой папке или локально, под какую версию браузера были написаны эти тесты несколько месяцев назад, есть ли там нужный мне плагин нужной мне версии и т.д. 
Кроме того иногда возникает желание передать тесты кому-нибудь еще, непосвященному в TDD. При этом приходится объяснять, что нужно скопировать с гита файлы, распаковать, запустить такую-то обработку, из нее открыть мой файл с тестами. Такое объяснение вводит в замешательство даже программистов, не говоря уже о консультантах.
Поэтому возникла идея встроить браузер тестирования в сам тест, чтобы для загрузки списка тестов достаточно было открыть один только файл с этими тестами.

Решение

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

Код модуля обработки с тестами не содержит никаких служебных вставок.

В форму с тестами на клиенте добавилась всего одна служебная процедура. Вот как выглядит код:

Форма

&НаКлиенте
Перем КонтекстЯдра;

&НаКлиенте
Перем Ожидаем;

#Область _ // основная процедура для юнит-тестирования xUnitFor1C

&НаКлиенте
Процедура Инициализация(КонтекстЯдраПараметр) Экспорт
	
	КонтекстЯдра = КонтекстЯдраПараметр;
	Ожидаем = КонтекстЯдра.Плагин("УтвержденияBDD");
	
КонецПроцедуры

&НаКлиенте
Процедура ЗаполнитьНаборТестов(НаборТестов) Экспорт
	
	НаборТестов.НачатьГруппу("Выполнение тестов (на клиенте)");
	НаборТестов.Добавить("ТестДолжен_ПроверитьСуммуДваИДваНаКлиенте");
	
КонецПроцедуры

#КонецОбласти

#Область _ // Блок юнит-тестов

&НаКлиенте
Процедура ТестДолжен_ПроверитьСуммуДваИДваНаКлиенте() Экспорт
	
	Ожидаем.Что(2+2).Равно(4);
	
КонецПроцедуры

#КонецОбласти

#Область _ // Служебная часть - запуск браузера

&НаКлиенте
Процедура ПриОткрытии(Отказ)
	
	Отказ = Истина;
	
	ПозицияРазделителя = СтрДлина(ЭтаФорма.ИмяФормы);
	Пока Сред(ЭтаФорма.ИмяФормы, ПозицияРазделителя, 1) <> "." Цикл 
		ПозицияРазделителя = ПозицияРазделителя - 1; 
	КонецЦикла; 
	ИмяФормыЛаунчер = Лев(ЭтаФорма.ИмяФормы, ПозицияРазделителя) + "ЗапускБраузераУФ";
	
	ПолучитьФорму(ИмяФормыЛаунчер).ЗапуститьБраузер();
	
КонецПроцедуры

#КонецОбласти

Использование

С применением описанной схемы формат тестов не поменялся, поэтому:
 - тест со встроенным браузером без проблем открывается привычным способом
 - в любой уже имеющийся тест можно встроить браузер при необходимости

 Чтобы написать тест нужно:
 - создать новую обработку с юнит-тестами копированием из шаблона
 - описать тестовый случай
 - запустить эту обработку

Послесловие

Я не ожидаю, что найдется большое количество сторонников описанной идеи. Но мне она показалась интересной и полезной, поэтому выкладываю здесь, чтобы была под рукой.


Обновление 2017-02-04

Убрал синхронный вызов при открытии браузера, чтобы можно было запускать в тонком клиенте с запретом модальности


Обновление 2017-04-09

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

Вступайте в нашу телеграмм-группу Инфостарт

xUnitFor1C тесты тестирование приемы разработка

См. также

Тестирование QA DevOps и автоматизация разработки Программист Пользователь 1С:Предприятие 8 1С:Бухгалтерия 3.0 Россия Бухгалтерский учет Налоговый учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Бухгалтерия предприятие 3.0 и версии КОРП: 3.0.190.11.

5368 руб.

20.01.2022    11612    48    1    

21

DevOps и автоматизация разработки Тестирование QA Программист Пользователь 1С:Предприятие 8 1С:Зарплата и Управление Персоналом 3.x Россия Бухгалтерский учет Платные (руб)

Автотесты 1С - готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарий – feature-файл, разработанный с помощью vanessa-automation. Запуск сценария выполняется интерактивно с помощью vanessa-automation или с помощью vanessa-runner в CI-системах. Доступно тестирование тонкого клиента. Поддерживаемые версии конфигураций 1С:Зарплата и Управление Персоналом 3 и версии КОРП: 3.1.35.48.

5000 руб.

05.08.2024    5879    36    1    

20

Тестирование QA DevOps и автоматизация разработки Программист 1С:Предприятие 8 1С:ERP Управление предприятием 2 1С:Комплексная автоматизация 2.х Россия Бухгалтерский учет Налоговый учет Платные (руб)

Готовые тестовые сценарии, предназначенные для регресс-тестирования функционала конфигурации после обновления типовым релизом. Сценарии проверяют интерактивное заполнение форм документов, справочников и результат проведения документов. Сценарии возможно использовать как для vanessa-automation, так и для СППР. Поддерживаемые версии конфигураций ERP2 и КА2: 2.5.22.145.

5000 руб.

04.07.2022    13793    50    6    

39

Тестирование QA Программист Бесплатно (free)

Переход на Linux и PostgreSQL – серьезный этап для любой компании. Нагрузочное тестирование помогает пройти его без критических сбоев: заранее выявить узкие места, оценить поведение системы под реальной нагрузкой и снизить риск откатов после запуска. В статье разберем, почему миграция с Microsoft SQL Server и Windows на новую инфраструктуру требует отдельной проверки производительности, какие сценарии стоит включать в тест, как настраивать контур и мониторинг, как оценивать результаты и сколько времени реально занимает такой проект.

29.04.2026    415    kulmaksim    0    

3

Тестирование QA Программист Бесплатно (free)

Рассказываем о практическом кейсе нагрузочного тестирования двух баз 1С, где интеграции не эмулировались, а работали по-настоящему – через обмен между базами и поток данных из Kafka. Приведем пример сценариев и параметров тестирования, которые использовались в проекте, и объясним, почему команда отказалась от генераторов данных. Разберем плюсы и минусы такого подхода и обсудим, какие риски и подводные камни могут возникнуть при тестировании в боевых интеграциях. Покажем ошибки и ограничения, с которыми столкнулась команда, и объясним, как их удалось обойти.

20.04.2026    393    dankrav4    0    

2

Тестирование QA Программист 1С 8.3 Абонемент ($m)

Внешняя обработка позволяет генерировать автотесты.

1 стартмани

16.04.2026    466    1    Triplexx    0    

3

Тестирование QA Программист Бесплатно (free)

Создание тестовых данных для юнит- и интеграционных тестов на больших учетных системах часто оказывается самым трудозатратным этапом. Статья посвящена тому, как снять эту боль на фреймворке yaxUnit. Разбираем подходы к работе с данными (от копий баз до генерации под каждый тест) и инструменты, которые упрощают жизнь разработчику: модули-помощники, генераторы кода, макеты, фикстуры и хранение данных в коде. Учимся выстраивать контролируемую среду, ускорять подготовку сценариев и при этом сохранять читаемость и версионируемость тестовых данных. Статья будет полезна тем, кто хочет наладить воспроизводимое и удобное тестирование сложной 1С-логики, не утопая каждый раз в ручной подготовке данных.

10.04.2026    807    batsy66    0    

7

Перенос данных 1C Тестирование QA Программист Бесплатно (free)

Ручное тестирование обменов между кастомизированными базами 1С остается одной из самых сложных и болезненных задач для команд разработки. На реальных проектах показываем типичные ошибки: от неправильной подготовки тестового контура и стерильной регистрации объектов до проверки только «золотых» сценариев и пропуска скрытых зависимостей. Разбираемся, к каким последствиям это приводит на продакшене и почему внимательность к деталям здесь критически важна. Объясняем принципы, которые помогают организовать ручное тестирование интеграций так, чтобы не тратить время на псевдоошибки и не ловить проблемы уже после запуска системы.

03.04.2026    844    romandredan    0    

7
Комментарии
Подписаться на ответы Инфостарт бот Сортировка: Древо развёрнутое
Свернуть все
1. artbear 1587 29.01.17 14:52 Сейчас в теме
Интересная идея.
А почему бы свой результат не выложить на гитхаб? для возможности последующей доработки.
2. json 3425 29.01.17 14:57 Сейчас в теме
(1) а выложил уже, только архив с браузером исключил
https://github.com/progromaking/templates
Для отправки сообщения требуется регистрация/авторизация