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

09.04.17

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

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

Файлы

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

Наименование Скачано Купить файл
(только для физ. лиц)
Шаблон автономного теста
.epf 336,31Kb
4 1 850 руб. Купить

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

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

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

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

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

Решение

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

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

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

Форма

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Послесловие

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


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

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


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

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

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

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

См. также

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

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

2160 руб.

20.01.2022    9727    36    0    

18

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

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

3360 руб.

05.08.2024    2976    18    1    

12

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

Рассказываем о том, как с помощью облачных технологий и подхода «инфраструктура как код» можно значительно упростить и удешевить нагрузочное тестирование 1С. Автор делится кейсом реального проекта, архитектурой решения и инструментами, которые использовал в работе.

вчера в 16:03    364    ovcharenko.di    3    

8

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

Статья о практическом опыте внедрения unit-тестирования в legacy-конфигурацию 1С (УКФ) с использованием фреймворка YAxUnit. Автор делится возникшими техническими вызовами и организационными сложностями, а также их решениями, которые включают использование модулей-помощников, макетов и контекста. Приводятся реальные примеры тестирования HTTP-сервисов и событий документов.

25.07.2025    707    batsy66    5    

9

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

В статье расскажем, как Sentry помогает компании Magnit Tech эффективно решать задачи оперативного выявления и анализа ошибок. Поделимся практическим опытом внедрения Sentry и объясним, почему этот инструмент превосходит другие бесплатные аналоги по функционалу и удобству использования. Рассмотрим гибкий механизм настройки оповещений об ошибках журнала регистрации, который позволяет адаптировать уведомления под конкретные нужды проектов. Объясним, как Sentry используется для мониторинга производительности базы 1С, обеспечивая стабильность работы критически важных систем. Затронем тему интеграции Sentry с системами мониторинга инфраструктуры и CDN.

17.07.2025    905    daniloffartur    1    

6

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

YAxUnit – это сравнительно молодой, но амбициозный и быстро развивающийся инструмент из мира open-source. Расскажем о ключевых этапах развития инструмента и особенностях работы над open-source проектом.

17.07.2025    2174    Жолтокнижниг    1    

22

HighLoad оптимизация Тестирование QA Системный администратор Программист Бесплатно (free)

В мире 1С импортозамещение используемых программных продуктов в первую очередь касается миграции СУБД с MSSQL на Postgres. Одна из основных проблем перехода — более «слабый» оптимизатор запросов Postgres по сравнению с MSSQL, когда запросы на MSSQL выполнялись значительно быстрее, чем на Postgres. Автор статьи разработал инструмент, который позволяет без значительных затрат выявить эти «проблемные» запросы. Основная идея подхода: конвертация на Postgres запросов, снятых при использовании MSSQL, и сравнение времени выполнения на MSSQL и на Postgres.

10.07.2025    1377    berserg    4    

9

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

Процесс тестирования в команде автора эволюционировал от ручных проверок до полноценной автоматизации с использованием современных инструментов и контейнеризации. Начав с Vanessa-ADD в качестве основного решения, команда постепенно расширила стек, включив в него Vanessa-Automation для UI-тестирования, YAxUnit для модульных проверок, Coverage41C для анализа покрытия кода, а также Gitlab CI, Allure и SonarQube для мониторинга качества и непрерывной интеграции. Статья объясняет, почему в качестве стартового инструмента была выбрана Vanessa-ADD и как удалось организовать запуск дымовых и сценарных тестов в CI-контуре на Windows-сервере. Рассмотрен вопрос анализа покрытия кода тестами: зачем потребовался подсчет и какими сложности сопровождали настройку Coverage41C в клиент-серверной архитектуре. Также автор рассказывает про переход на Docker (рассматривался готовый образ, но в итоге был создан собственный) и смену инфраструктуры с Windows и PowerShell на Linux и Bash.

27.06.2025    2197    TaGolovkina    3    

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