Тестирование интеграций между системами

Публикация № 1086369 01.07.19

Интеграция и обмен данными - Внешние источники данных

Как начать разрабатывать интеграцию без реальной «второй стороны»? Как быть уверенным, что обмен не «сломается» при следующем обновлении? О том, какие подходы можно применять при тестировании интеграций и как такое тестирование может выглядеть в целом – в докладе Никиты Грызлова на конференции INFOSTART EVENT 2018 EDUCATION.

Проблемы и их предпосылки

  • Если у вас большая организация, то в ней обычно используется «зоопарк» систем, написанных на различных языках. 
  • Ядром вашей учетной системы (или комплекса систем), скорее всего, является – вы там ведете оперативный учет, бухгалтерию, зарплату и т.д. 
  • А вокруг этого ядра накручены какие-то дополнительные служебные сервисы, типа Service Desk, корпоративного портала и др. 
  • Также, скорее всего, у вас есть управление учетными записями Active Directory;
  • Если вы занимаетесь торговлей – у вас есть какое-то кассовое оборудование.
  • И в целом, в ваш единый контур информационных систем могут входить любые приложения для решения любых задач – неважно, на каком языке они написаны.

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

  • Сейчас наиболее популярна интеграция через HTTP-запросы. В случае 1С это могут быть как HTTP-сервисы, так и веб-сервисы по протоколу SOAP
  • Также большую популярность сейчас набирает обмен сообщениями по технологии брокера сообщений
  • Я сталкивался даже с интеграцией через почту – когда одна система отправляла на почтовый ящик другой системе какой-то пакет данных, а вторая система принимала его по почте, обрабатывала и также ответным письмом отчитывалась, что пакет обработан.

Какие вообще проблемы могут быть при интеграции? 

  • Когда у вас есть два независимых отдела, которые пилят интеграцию с двух сторон, основной сложностью является их независимая работа – необходимо организовать интеграцию так, чтобы самим разработчикам не приходилось постоянно объяснять друг другу через слак или телеграм, как это работает. Нужно как-то изначально договориться о формате, чтобы то, что делает каждый из отделов для целей интеграции, потом в итоге заработало. 
  • Второй сложностью является тестирование интеграции. Вы можете быть уверенными, что на вашем компьютере все работает, но когда это запускается в тестовом контуре или сразу на production – оно вдруг по каким-то причинам падает, ломается и т.д.
  • И следующая проблема – бизнес живет, бизнес-требования меняются, и правила, по которым нужно интегрировать различные системы, или пакеты данных, которыми обмениваются системы, тоже меняются. Нам нужно быть уверенными, что изменения, которые привнесли разработчики, не нарушат нашу текущую интеграционную цепочку.

 

Подходы, которые помогают решить проблемы интеграции

 

Как помочь разным отделам работать вместе? Есть несколько подходов и идей, которые решают эту проблему. 

Первое решение – это продуманный сценарий работы с данными, которыми вы обмениваетесь на всех четырех операциях CRUD (Create – создание, Read – чтение, Update – обновление и Delete – удаление). Если вы отправляете своей системе данные о каком-то документе, сразу продумайте, что будет с этим документом в другой системе, если вы его поменяете (перепроведете, распроведете) или вообще удалите. Когда вы у себя в голове эту связку нарисуете и согласуете ее со второй системой, у вас потенциальных проблем интеграции уже будет меньше. Мне в этом случае больше всего помогает визуализация различных потоков. Я просто рисую на бумаге те операции с данными, которые могут быть в системе, а потом переношу этот рисунок в системы визуализации (BPMN, UML, ARIS – без разницы). Например:

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

Второй инструмент – это спецификация, спецификация, спецификация. Это – самая, на мой взгляд, важная вещь, которая может быть при разработке интеграции. Оба отдела, обе системы, которые пытаются интегрироваться между собой, должны иметь четкое описание интерфейса, по которому они между собой общаются. С помощью чего мы можем это решить? Для описания спецификации есть огромное количество инструментов, правда, они чаще всего заточены под конкретный транспорт:

  • Если вы обмениваетесь XML-файлами, вы должны знать, что такое XSD – это правила описания XML-файла, его полей, допустимых значений, типов и т.д.
  • Для прочих транспортов (JSON, HTTP, AMQP) также есть аналогичные инструменты стандартизации – например, JSON-schema, OpenAPI, AsyncAPI и т.д.
  • Также вам могут помочь обыкновенные примеры сообщений, когда система, с которой вы интегрируетесь, говорит о том, что она будет вам посылать примерно такие значения. Проанализируйте, насколько корректно они будут загружены в вашу систему. 
  • Конечно же, не все можно описать в какой-то жесткой спецификации. Внутри XSD документация есть, но в 1С она практически никак не отображается. Сделайте описание в Word или в Markdown – расскажите не только, что конкретно интегрируется, но и зачем. Это даст вам контекст и позволит продумать какие-то дополнительные сценарии, которые вы изначально могли не заметить. 

 

Уровни тестирования интеграции

 

Следующая проблема – это тестирование. Я думаю, все, кто более-менее всерьез занимаются тестированием, слышали, что есть пирамида тестирования:

  • на самом нижнем уровне находится наиболее простой в плане реализации тестирования способ – модульное тестирование;
  • далее идет тестирование взаимодействия между модулями, которые есть в системе – тестирование блоков, различных подсистем;
  • на следующем уровне реализуется тестирование системы в целом;
  • и только потом происходит end-to-end тестирование, когда вы начинаете заниматься тестированием взаимодействия одной реальной системы с другой. Не важно, с чем реализовано это взаимодействие – с тестовым стендом или реальным окружением.

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

 

Модульное тестирование обработчиков интеграции, применение моков

Опустимся в самый низ, в модульное тестирование – рассмотрим, что вообще мы можем тестировать. 

  • В любой интеграции есть какой-то алгоритм, который формирует пакеты, отправляет их, обрабатывает запросы и т.д. Разбейте ваш алгоритм на маленькие кусочки, выделите их в отдельные функции и начинайте их тестировать.
  • Также вы можете проверять, что ваша интеграция срабатывает в нужный момент. У вас же есть какие-то триггеры – соответственно, вы можете вызывать их и проверять, что интеграция в принципе запустилась.
  • А когда вы уверены, что самый нижний уровень в ваших функциях работает корректно, вы можете тестировать уже обработчик интеграции в целом. Это позволяет вам, не выходя за пределы вашей системы, понимать, что она в принципе готова совершать интеграцию. 

 

 

 

Как добиться такого изолированного модульного тестирования?

Про разбитие функций на более мелкие я уже сказал. 

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

  • Если HTTP-соединение (как объект 1С) создается внутри процедуры, то вам будет тяжело его протестировать, не выходя из системы, потому что у вас должен быть какой-то адрес, который будет что-то отвечать – зависимость тестов от окружения при этом очень сильно повышается. 
  • Паттерн «внедрение зависимостей» заключается в том, что перед началом работы какого-то механизма (неважно, процедура это или какой-то объект в целом) ему в качестве входящих параметров передаются все зависимости (все свойства, все настройки полей). Таким образом, процедура работает не с создаваемыми внутри нее параметрами, а с создаваемыми вовне. 

Какую наибольшую пользу можно получить из этого при тестировании?

Вы можете создать какой-то объект, похожий на HTTP-соединение – банальную обработку с методом «Получить», эмулирующим выполнение GET-запроса, в котором указать, что он возвращает число 42. Таким образом, вы остаетесь в рамках своего контура, и ваше тестирование будет упрощаться.

 

 

 

Чем тестировать модули?

 

  • Наиболее популярный прием – это внешние обработки, которые вызывают тестируемые функции или оперируют интегрируемыми объектами;
  • Реже – это какие-то куски кода, встроенные в общие модули конфигурации.

Вы их запускаете, они что-то делают с объектами, которые у вас интегрируются, и выдают вам какой-то результат – в лучшем случае, просто не падают. 

Есть несколько фреймворков для тестирования. 

Наиболее известный и популярный фреймворк для модульного тестирования – xUnitFor1C. Большое спасибо за него автору, Артуру Аюханову. Сейчас этот фреймворк эволюционировал и слился с фреймворком для поведенческого тестирования – это теперь единый инструмент Vanessa-ADD. 

И есть другие фреймворки, которые заточены не под модульное, а, в основном, под тестирование интерфейса – это:

  • Vanessa Automation;
  • Сценарное тестирование;
  • Тестер;
  • Тестирование 3.0

Их много – на слайде упомянуты не все, которые есть. В них тоже возможно писать модульные тесты, но не очень удобно – придется сталкиваться с какими-то неудобствами в плане их написания.

 

Использование эмуляторов при вызове интеграционных механизмов


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

Что мы можем тестировать эмуляторами

  • В первую очередь, это – то, что наша система формирует корректные запросы;
  • Что она корректно обрабатывает ответы от системы – как правильные ответы, так и неправильные;
  • И последний пункт, один из самых важных – это тестирование того, что сервис, с которым вы пытаетесь интегрироваться, недоступен. Даже сайт РосБизнесКонсалтинг, с которого все загружают курсы валют, тоже иногда может падать. Это могут быть какие-то секунды в месяц, но, тем не менее, если пользователь нажмет кнопку и увидит красную надпись – ему будет неприятно. Поэтому ваш код по интеграции с внешней системой должен быть готов к тому, что пакет данных, который вы читаете, может быть некорректен. И процедура тестирования как раз должна показать, что ваша система может эту ситуацию правильно обработать. 

Как тестировать эмулятором? 

 

  • Мы формируем какие-то тестовые наборы или тестовые случаи. 
  • Для того чтобы тестирование в принципе было возможно, мы используем либо метод «Внедрения зависимостей», либо какие-то возможности переопределения настроек транспорта для нашей интеграции (с помощью справочника меняем точку доступа и т.д.).
  • В зависимости от используемого транспорта мы либо находим уже имеющийся эмулятор, либо пишем его на каком-то языке (если это позволяет транспорт, то в том числе, и на 1С).

 

 


Сам принцип тестирования эмуляторами ничем не отличается от того же модульного или поведенческого тестирования. Он очень хорошо укладывается в концепцию Given When Then (Дано, Когда, Тогда). 

  • На первом этапе мы этот эмулятор запускаем и настраиваем, выполняем какие-то настроечные действия в нашей базе – подготавливаем обе системы к выполнению интеграции;
  • Далее – выполняем наши интеграционные действия;
  • И потом обязательно проверяем, что интеграция вернула какое-то ожидаемое для нас значение и ожидаемо отработала

 

Инструмент для тестирования REST и SOAP – SoapUI 
 

Далее я расскажу о тех инструментах, которыми можно тестировать различные транспорты. Начну с наиболее популярного, наиболее распространенного – это HTTP-транспорт, либо конкретно, SOAP-протокол. 

Для тестирования REST и SOAP-сервисов есть такой замечательный инструмент – SoapUI, я думаю, многие про него уже слышали. Он позволяет удобно работать с WSDL (языком описания SOAP-сервисов), тестировать, выполнять запросы и в принципе, автоматизировать работу с тестами, упростить написание тестов и т.д.


 

В общем случае он выглядит вот так:

  • левый красный блок содержит список доступных методов в SOAP – это тот же самый сервис курсов валют с сайта РосБизнесКонсалтинг. 
  • центральный красный кружочек показывает запрос, который мы формируем к SOAP-серверу – в данном случае, это просто получение валюты на дату. 
  • а справа показывается ответ – либо реальный, либо ожидаемый. Здесь на слайде показан реальный ответ от сервиса – я запросил результаты на 1 января и получил большую простыню XML.

 

 

Есть возможность написания тестов сразу при выполнении запросов – например:

  • с помощью специального конструктора вы можете написать XPath выражение, которое будет проверять, что вам вернулась какая-то конкретная валюта;
  • также можно проверять коды от HTTP;
  • можно проверять, что сообщение содержит какие-то значения просто по тексту;
  • также, если вам не хватает возможностей XPath-конструктора, вы можете написать более низкоуровневые тесты на языке Groovy.

 

 


Само создание тестов и тестовых сценариев очень простое. 

  • вы определяете список запросов, с помощью которых проверяется корректность SOAP-методов;
  • из выбранных запросов вы можете составить специальный тестовый набор – в него всегда можно добавить запросы дополнительно;
  • внутри этого тестового набора вы по нажатию одной кнопки сразу можете понять, что ваша система работает – на слайде вы видите, что результатом работы стала зеленая полоса, внутри которой написано «FINISHED». 

 

 


После того, как вы сделали тестовый сценарий, вы можете точно так же, по нажатию правой кнопки мыши, сделать нагрузочный тест – на слайде показаны настройки теста для получения курсов валют с сайта РосБизнесКонсалтинга в 5 потоков. Таким же образом вы же можете атаковать свою собственную систему, чтобы понимать, какую нагрузку она у вас выдерживает – если у вас система является backend-ом для сайта, это может быть очень полезно.
 


Ну и, конечно, инструмент не был бы так популярен, если бы он не мог эмулировать какие-то сервисы. Одной кнопкой по процедуре получения курса валют вы можете создать эмулятор сайта РосБизнесКонсалтинга, который будет выдавать ответы, которые также настраиваются в этом инструменте. Все реализуется буквально парой кликов мыши – по большей части без какого-либо программирования.
Инструмент для тестирования HTTP и SOAP – Postman 
 
Инструментов для тестирования HTTP и SOAP очень много. 

 


Отдельно я хочу еще отметить инструмент Postman – я его очень люблю, у него проще интерфейс, он более гибкий и не зашит под какую-то конкретную структуру. Вы просто вбиваете в адресную строку адрес, по которому вы обращаетесь, выбираете метод, задаете параметры и получаете результат.

  • Postman в большей степени заточен под работу с HTTP-сервисами, SOAP он поддерживает на том уровне, на котором вы умеете читать и формировать XML;
  • У него также есть возможность поднять mock-сервер;
  • Вы можете написать и запустить с его помощью тесты на языке JavaScript;
  • Он даже может автоматически поднимать мониторинг вашего сайта.

 

Чем тестировать COM?


Дальше – чем тестировать COM?

Не надо использовать COM в интеграции. Я думаю, что как только у вас становится больше 10 пользователей, и если эти пользователи начинают обращаться по COM к другим системам, то ваша система, скорее всего, «встает колом». Если не «встает» сейчас, «встанет» очень скоро. Я смотрел доклад Богачева в 2014 году, он уверяет, что у него на проекте по COM-соединению периодически обращались 5000 пользователей – я очень рад, что у него это работает, правда, но в моем случае, стабильной интеграции на COM получать не удавалось. Тем более, это просто медленно.

Тестировать COM очень тяжело. По сути, вам нужно:

либо полностью написать эмулятор системы, с которой вы интегрируетесь, если она не предоставляет тестового фреймворка, 

либо поднять тестовый стенд:

  • для Microsoft Office подкладывать файлики;
  • для базы 1С поднимать тестовую базу 1С. 

Это почти как end-to-end тестирование со всеми вытекающими последствиями.

 

Чем тестировать SQL?

 

Для тестирования SQL используется примерно та же схема. 

  • Если у вас есть запросы на чтение, то вы можете поднять в памяти очень легкий сервер управления базами данных SQLite – в режиме in-memory, без какого-то сохранения данных на диск. Как-то его настроить, и он вам что-то вернет. 
  • Если вам нужна вставка или удаление каких-то записей для целей интеграции, то тут уже могут быть сложности в несовместимости того синтаксиса, который вы используете в интеграции с реальным сервером базы данных и конкретно SQLite. В этом случае нужно поднимать тестовый стенд или использовать виртуализацию.

 

Чем тестировать FTP?
 

 

Для прочих транспортов есть большое количество инструментов.
Например, для FTP есть чудесный FTP-сервер pyftpdlib:

  • Он позволяет запускать себя просто из командной строки. 
  • Текущий каталог становится хранилищем FTP-сервера, 
  • Поддерживается авторизация, получение и отправка файлов на этот FTP-сервер. 

Все это прекрасно работает из 1С. Если вы хотите проверить интеграцию по FTP, вам не нужно поднимать реальный FTP-сервер, вы можете всего лишь запустить эту простенькую библиотеку прямо из командной строки.

 

Чем тестировать почту?

 


То же самое с почтой. Для тестирования отправки и получения почты не нужно поднимать SMTP-сервер, вы можете воспользоваться эмулятором, например, Fake-SMTP-Server. 

  • он также запускается из командной строки;
  • помимо того, что вы можете отправлять на него письма, вы через веб-интерфейс можете просматривать, что конкретно в нем лежит;
  • а также у него есть HTTP-API для управления содержимым почтового ящика (получения и удаления писем).

 

Чем тестировать AMQP?

 



С AMQP (системой сообщений RabbitMQ) несколько сложнее. Для него есть библиотеки для тестирования, но они не имеют возможности запуска из командной строки, и вам, скорее всего, придется писать на Java. Все это не нужно. 

Наиболее простой способ тестирования RabbitMQ – это поднять RabbitMQ. Он очень маленький и не такой сложный в настройке – из docker он поднимается буквально в одну команду. Если вы хотите его как-то предварительно сконфигурировать, вы добавляете для команды docker run еще два параметра (с указанием путей к файлам конфигурации и настроек очередей) и у вас есть готовый RabbitMQ – не нужно ничего придумывать.

 

Чем тестировать сайты?
 

 

Для сайта тоже есть несколько чудесных инструментов. Самый прекрасный (на мой взгляд) – это Selenium. Он позволяет полностью автоматизировать действия, которые может выполнять пользователь с сайтом – это кнопконажималка для сайта. Selenium понимает, какие на сайте есть элементы, позволяет спозиционироваться на них, проверить, что у них есть определенные свойства (что этот элемент недоступен и т.д.).

 


 
В фреймворке Selenium можно выделить три основных компонента:

  • Первый – это IDE (система редактирования тестов), в которой вы эти тесты пишете в графическом режиме путем накликивания, либо вы можете опуститься на более низкий уровень и написать тесты на большом количестве языков. 
  • Второй компонент – это так называемый WebDriver, который позволяет вам автоматизировать работу с большим количеством браузеров – с Chrome, с Opera, с Firefox, с Yandex-браузером и т.д. Это некая браузерная «песочница». 
  • И selenium-side-runner – сам инструмент, который будет эти тесты запускать. Он кроссплатформенный, работает и под Windows, и под Linux, и под Mac, может быть даже под BSD (не уверен). Он очень популярен в среде веб-разработки.

 


Вышла новая версия IDE, которая выглядит примерно так:

  • В верхней части вы шагами описываете действия, которые пользователь должен выполнить с сайтом – перейти на какую-то страницу, нажать какую-то кнопку и т.д. 
  • А в нижней части вы можете каждый шаг каким-то образом детализировать. Например, здесь на слайде показана команда ожидания того, что в течение 10 секунд на форме скроется определенный элемент.

 


Мы можем запустить этот тест одной кнопкой, не выходя из IDE. 

Либо мы можем сохранить наши тестовые сценарии в файл, запустить их из командной строки и получить отчет – либо в консоль, либо в формате отчета JSON.

 

Тестирование реальных внешних систем
 

 

С реальными приложениями сложнее. 
На уровне тестирования end-to-end одним из наиболее популярных инструментов является SikuliX. Это тоже «кнопконажималка», но она работает просто с графикой – пытается на рабочем столе найти какие-то графические элементы (картинки кнопок или заголовки надписей), двигать курсор мыши к ним (как по координатам, так и к самим этим картинкам), и выполнять какие-то действия по нажатию, по вставке текста и т.д. 

  • Она кросс-платформенная;
  • у нее тоже есть IDE;
  • и тоже низом можно более сложные тесты писать на нескольких языках.

 


Сам редактор на Windows выглядит примерно так, как показано на слайде:

  • Справа есть область, в которой мы пишем код теста, в данном случае это создание нового слайда в PowerPoint и вставка в заголовок слайда текста «Привет, Инфостарт!». 
  • А слева есть список доступных функций: клики левой кнопкой мыши, поиск элемента, двигание мышкой, клики правой кнопкой мыши и т.д. – их довольно много.
  • Если вам не хватает чего-то, расположенного на панели быстрого доступа, вы всегда можете дополнительно обработать какие-то вещи на более низкоуровневом языке (в данном случае, на Python) – например, циклы, условия и т.д. Это несложно.

 


В плане запуска в самой IDE также есть две кнопки, которые позволяют выполнить тесты – быстро или медленно (с небольшой задержкой между шагами). А также вы можете передать тестовый сценарий в утилиту запуска из командной строки и увидеть, как начнет двигаться мышка, станут нажиматься кнопки и т.д.

 

Тестирование 1С


Что касается 1С, то я думаю, все уже наслушались, чем же ее можно тестировать. Коротко:

  • Тонкий и веб-клиент – с помощью механизма автоматизированного тестирования, и инструментов, которые работают поверх него. 
  • Толстый клиент можно тестировать с помощью различных костылей – вы можете переопределять какие-то обработчики, делать обработчик нажатия кнопки экспортным – вызывать его из кода, заполнять форму, закрывать форму – но это не очень удобно.
  • И все режимы запуска, все клиенты вы можете тестировать так же, через SikuliX, через AutoIT и прочие инструменты, которые позволяют каким-то образом нажимать на кнопки.

 

Проблема обновления API


 


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

 

Выводы

 

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

  • Большинство из инструментов тестирования поддерживает запуск из командной строки;
  • А во всех остальных случаях для тестирования всегда можно использовать SikuliX.

 

 

В плане инструментов, которые нам помогают в автоматизации тестирования, наиболее полезным инструментом-концепцией является концепция «Все есть код» – постарайтесь загнать все, что вам нужно для тестирования, в файлы:

  • Если вам нужна какая-то подготовленная среда – напишите скрипты, которые будут подготавливать вам эту среду. 
  • Или, если вы можете использовать средства виртуализации, типа docker, напишите небольшой docker-файл, чтобы использовать готовый образ, в котором все будет настроено. 
  • Облеките тестовые сценарии, которые у вас есть, в код – напишите для них «запускатели», чтобы можно было их запускать из командной строки. 
  • Единственное, что для того, чтобы это запускать регулярно, вам нужен сервер сборок, который будет это по каким-то событиям запускать и показывать вам красивые отчеты. В Linux вы можете использовать вместо него cron, а в Windows – это Windows Scheduler, я думаю, вы умеете им пользоваться.

 


Последовательность действий – и в автоматизированном, и в обыкновенном тестировании одинаковая:

  • Сначала вы сохраняете тестовые сценарии в виде каких-то файлов (например JSON-файла, который формирует Selenium);
  • Потом настраиваете каким-то образом окружение;
  • Далее – запускаете тесты с помощью docker-compose up (например, тесты Selenium, которые у меня показаны на слайде, написаны и запускаются с помощью docker). 
  • И получаете результаты – опять-таки, в формате JSON. Вы можете их автоматически анализировать, проверять, что шаг выполнился, и т.д.

 

Основные выводы, которые я хотел донести до вас этим докладом. 

 

  • Тестирование интеграции – это не больно, это реально, вы все это можете сделать.
  • Большинство сложностей в интеграции на уровне HTTP, FTP, SQL и т.д. – решаемо. Я не говорю, что это несложно – конечно, вам придется приобретать какие-то навыки, изучать какие-то инструменты, читать документацию – но это все реально и решаемо.
  • Кроме того, по вашим трудозатратам, а также по трудозатратам вашей компании тестирование – это дешевле, чем баги в продуктиве. У кого останавливался прод из-за какой-то ошибки в интеграции? Если бы вы не допустили ошибку в продуктиве, ваша компания сэкономила бы очень много денег. 
  • И, самое главное, тестирование – это ваша обязанность. Почитайте стандарты МинТруда по должности «Программист», я не говорю про «Ведущий программист», «Архитектор». Вы, как программисты, должны тестировать – это ваша обязанность. 
  • Процессы интеграции тоже нужно тестировать, более того, их можно тестировать автоматически.

****************

Данная статья написана по итогам доклада, прочитанного на конференции INFOSTART EVENT 2018 EDUCATION.

Больше статей можно прочитать здесь.


 

*************

Специальные предложения

Комментарии
В избранное Подписаться на ответы Сортировка: Древо развёрнутое
Свернуть все
1. Niki_Pro 01.07.19 23:09 Сейчас в теме
Спасибо за статью! Как раз искал что то для тестирования SOAP. А тут оказывается есть SoapUI.
Но сразу возник вопрос. Если веб сервис ничего не возвращает, а инициирует логику на стороне 1С, то как связать последовательность шагов в тесте:
1. Подыгрышь запроса SOAP
2. Выполнение каких-то действий в 1С под пользователем

То есть, в зависимости от того, что придет через SOAP, нужно будет выполнить разные тесты.

Как то можно подружить эти фреймворки: (Vanessa Automation; Сценарное тестирование; Тестер; Тестирование 3.0) и SoapUI?
2. JohnyDeath 300 02.07.19 07:54 Сейчас в теме
(1) SoapUI очень хорошо запускается из командной строки с параметрами, поэтому да, подружить SoapUI с этими инструментами можно.

А вообще можно вообще без него обойтись в Тестере: дергать напрямую из тестера свой сервис и далее проверять, что случилось в базе (если это нужно).
Я так тестирую хттп-сервисы.
3. nixel 1275 02.07.19 16:52 Сейчас в теме
(1) присоединяюсь к ответу @JohnyDeath.

Либо дергайте в тесте свой же веб-сервис через http-соединение, либо опишите конфиг для запуска нагрузочного тестирования в soap-ui или postman и вызывайте его из командной строки через запуск тест-раннера
Оставьте свое сообщение

См. также

Ни в ЗУП ногой!? А мне нравится! Часть 4. Главное - правильный перенос данных! Промо

Обмен между базами 1C v8 v8::СПР ЗУП2.5 ЗКБУ ЗКГУ3.0 ЗУП3.x БУ Бесплатно (free)

Ни для кого не секрет, что ЗУП - одно из сложнейших решений в линейке 1С. Многие разработчики и аналитики не любят им заниматься. Тяжело представить, чтобы начинающий разработчик/аналитик стал по доброй воле работать в сфере управления персоналом и расчета заработной платы. В данной серии статьей будет рассказано, какие видятся плюсы в этом решении и как справляться с его минусами. Кратко расскажу, как встать на этот путь, приведу примеры выполненных задач.

30.05.2022    2732    biimmap    25    

Исправление ошибки подписания документов ЭЦП, выпущенной УЦ Taxcom

WEB Адаптация типовых решений Бесплатно (free)

Исправление ошибок КриптоПро. Ошибка. Не удалось создать подпись из-за ошибки: Время ожидания операции истекло(0x80072EE2) HTTP error occurred during sending request (0xC2110100).

28.07.2022    348    Power_0N    0    

Спецификация OpenRPC

WEB Бесплатно (free)

Спецификация OpenRPC определяет стандартное, независимое от языка программирования описание интерфейса для API-интерфейсов JSON-RPC 2.0. Перевод общей информации и спецификации с официального сайта https://open-rpc.org/

18.04.2022    622    malikov_pro    0    

От реляционной базы данных к единой таблице DynamoDB: пошаговое исследование

WEB Бесплатно (free)

Просто потому, что это NoSQL, это не значит, что он нереляционный. Перевод статьи по DynamoDB, которую можно применить для Yandex Database.

10.03.2022    652    malikov_pro    0    

Serverless (Faas) в 1С. Создание и вызов Yandex Cloud Functions Промо

WEB Облачные сервисы, хостинг v8 Бесплатно (free)

"Я не могу просто взять и скопировать код с гитхаба", "у нас 1С микросервисами окружена", "возможностей мало" - частые фразы 1С разработчиков. которым не хватает возможностей платформы в современном мире. Faas, конечно, история не новая, но нас сдерживало 152ФЗ и задержки по пингам. Для того, чтобы действительно использовать в 1С код, к примеру, на Python, надо было приложить усилия. Теперь всё намного проще - берём и используем.

28.12.2020    11119    comol    31    

Запуск FastAPI (Python) на Yandex Cloud Functions и Yandex Database

WEB Бесплатно (free)

Описание прототипа для запуска HTTP API сервиса на serverless технологии с применением фреймворка.

10.03.2022    1707    malikov_pro    2    

Что, Почему и Когда в дизайне с одной таблицей с помощью DynamoDB

WEB Бесплатно (free)

Перевод статьи по DynamoDB, которую можно применить для Yandex Database.

10.03.2022    469    malikov_pro    0    

Как моделировать отношения "один ко многим" в DynamoDB

WEB Бесплатно (free)

Перевод статьи по DynamoDB, которую можно применить для Yandex Database.

10.03.2022    626    malikov_pro    11    

Обмен данными. Консистентность vs Многопоточность Промо

Обмен между базами 1C v8 1cv8.cf Бесплатно (free)

Рассмотрим теоретические основы обмена данными. Какие бывают обмены, какие гарантии при этом даются, зачем идти на компромиссы и что при этом может пойти не так. Есть ли идеальная схема?

03.09.2019    16803    m-rv    2    

Работа с 1С через протокол OData

WEB v8 1cv8.cf Россия Бесплатно (free)

В данной статье мы будем рассматривать работу с данными информационной базы через протокол OData (далее OData).

17.12.2021    13731    ProfessionStore    19    

Подключение к HTTP-сервису с авторизацией посредством передачи клиентского SSL-сертификата

WEB v8 Бесплатно (free)

В статье хочу поделиться опытом настройки подключения 1С к стороннему HTTP-сервису, использующему авторизацию посредством передачи клиентского SSL-сертификата.

07.12.2021    6238    kholkin    12    

Безголовая (Headless) архитектура построения eCommerce

WEB Бесплатно (free)

Обобщение материалов по безголовой архитектуре построения eCommerce.

10.11.2021    1039    malikov_pro    9    

Выгрузка документа по условию Промо

Обмен между базами 1C v8 Бесплатно (free)

Что делать, если документы нужно выгружать не все подряд, а по какому-то фильтру: статусу, дате, набору условий... А что если он соответствовал этим условиям, а потом перестал? А если потом опять начал? Такие ситуации заставили попотеть не одного программиста.

25.04.2019    18555    m-rv    4    

Понимание схемы JSON (JSON Schema), часть 2

WEB Бесплатно (free)

Перевод книги https://json-schema.org/understanding-json-schema/

09.11.2021    3230    malikov_pro    0    

Примеры тестовых сценариев Postman

WEB Бесплатно (free)

Перевод статьи https://learning.postman.com/docs/writing-scripts/script-references/test-examples/

08.11.2021    12991    malikov_pro    0    

Спецификация JSON:API 1.0

WEB Бесплатно (free)

Перевод спецификации https://jsonapi.org/format/

28.10.2021    3253    malikov_pro    4    

.Net в 1С. На примере использования HTTPClient, AngleSharp. Удобный парсинг сайтов с помощью библиотеки AngleSharp, в том числе с авторизацией аля JQuery с использованием CSS селекторов. Динамическая компиляция Промо

WEB v7.7 v8 Бесплатно (free)

Часто приходится парсить сайты, в том числе с авторизацией, перескакивая со страницы на страницу по ссылкам. Тот, кто занимался вэб программированием, знает, как удобно использовать JQuery и CSS селекторы. На .Net написана очень удобная библиотека AngleSharp. Я покажу, как с её помощью можно значительно облегчить себе труд.

10.03.2016    66288    Serginio    33    

Когда интерфейсам 1С нужны веб-технологии

WEB Работа с интерфейсом Анализ и проектирование ИТ-систем Бесплатно (free)

Есть несколько способов сделать интерфейс в 1С богаче и оптимальнее с помощью веб-технологий. О том, какие практические приемы помогут в этой задаче, на митапе «Интерфейс в 1С» рассказали руководители разработки в компании «Арбис» Матвей Серегин и Анна Гнатюк.

15.10.2021    4189    Akcium    10    

WEB/HTTP сервисы. Базовые отличия и применение на практике

WEB v8 Бесплатно (free)

Рассказываем о WEB и HTTP сервисах, их практическом применении, о шишках, которые мы набили, и о выводах, которые сделали. Спойлер: тех, кто дочитает статью до конца, ждет бонус от автора.

04.10.2021    16104    Neti    17    

Swagger для 1С. Описание сложной структуры входящих и исходящих данных

WEB OneScript Россия Бесплатно (free)

Анонс нового функционала 1Script пакета swagger версии 0.5.0.

04.10.2021    3244    kuleshov.x    8    

Повышаем эффективность разработки правил обмена Промо

Групповая разработка (Git, хранилище) Обмен между базами 1C v8 КД Бесплатно (free)

Как повысить скорость и качество разработки правил обмена? Как вести групповую разработку правил обмена? Как облегчить сопровождение правил обмена после передачи в эксплуатацию? Об этом и многом другом вы можете узнать из этой статьи.

25.06.2018    31217    olegtymko    48    

Быстрое чтение составных http сообщений multipart/form-data

WEB v8 Бесплатно (free)

Алгоритм быстрого разбора составного http сообщения multipart/form-data.

26.09.2021    2370    cherkasovvitalik    3    

Бесплатный сертификационный курс Интеграция API Яндекс.Маршрутизации и программных продуктов на базе 1С (22 сентября - 5 октября 2021 года)

WEB Бесплатно (free)

Курс позволит получить востребованную квалификацию по работе с API Яндекс.Маршрутизации, поможет разобраться с особенностями настройки сервиса и научит реализовывать сложные операционные бизнес-схемы, чтобы быстрее интегрировать его в своей компании или на стороне клиента, снижая затраты на логистику на 10-20% и повышая маржинальность организации до 2х раз. Сертифицированные специалисты также смогут присоединиться к агентской программе Яндекс.Маршрутизации и получать дополнительный доход от продажи лицензий и проведения работ по интеграции сервиса.

13.09.2021    1644    routing    0    

Внедрение веб-клиента – взгляд изнутри программиста 1С со стороны заказчика

WEB Бесплатно (free)

Программист 1С в компании TELS Виталий Ильинчик выступил на онлайн-митапе «Web-клиент для 1С». Он рассказал о том, с какими проблемами столкнется ИТ-отдел заказчика и как их можно предупредить. За основу взят опыт внедрения веб-кабинета поставщика на платформе vCan-Site.

10.09.2021    1571    wtlz    0    

Универсальный обмен между идентичными конфигурациями через REST интерфейс OData. Часть І: Справочники Промо

Обмен между базами 1C v8 Бесплатно (free)

Сейчас все чаще интеграции различных конфигураций проектируются через HTTP-сервисы - они и работают быстрее, и "войти" в режим отладки гораздо проще, тем самым обойдя "черный ящик" универсального обмена через xml, например. Более года назад я начал работать в компании, в которой разработчики работали с конфигурациями 1С в режиме совместимости еще 8.2.16 (менять режим совместимости в типичных базах мы не хотели) - а как Вы наверное знаете, если интересовались HTTP-сервисами в 1С, их использование в режиме совместимости 8.3.4 и ниже недопустимо - и здесь я уже не надеялся на разработку и использование HTTP-сервисов. Но позже меня заинтересовал такой "сервис" как REST интерфейс OData, так как его можно использовать не меняя режим совместимости конфигурации - именно он и стал для меня идеальным вариантом решения "нетривиальных" задач.

11.05.2018    26105    V.Stavinsky    11    

Обмен с HTTP сервисом файлами по формату multipart/form-data

WEB v8 1cv8.cf Россия Бесплатно (free)

Потребовалось отправить картинку в теле запроса в HTTP сервис методом POST, куча реализаций, но есть маленькие нюансы, если хотя бы кому-то поможет, то уже это было не напрасно.

07.09.2021    6432    ix5s    25    

Разработка гибридного web-приложения на 1С, возможности и ограничения

WEB v8 Бесплатно (free)

Все чаще разработчики склоняются к использованию 1C в качестве бэкенда при разработке веб-приложений. Но благодаря встраиванию веб-клиента 1С в сайт можно получить еще больше готовой функциональности. О том, как реализовать гибридное приложение за счет связки 1С с другими веб-технологиями, рассказал разработчик компании Neti Эльдар Мингалиев.

06.09.2021    3978    Бэнни    11    

Встраивание форм 1С на страницы сайта

WEB v8 1cv8.cf Бесплатно (free)

В платформе 8.3.16 появилась возможность выводить на страницах сайта информацию из веб-клиента 1С так, что пользователь даже не заметит, что работает с платформой. Руководитель компании Айтон Михаил Пинягин на онлайн-митапе «Web-клиенты для 1С» рассказал о том, какие особенности нужно учесть при настройке встраиваемого веб-клиента, и какие возможности он дает.

27.08.2021    5410    mikepin    9    

Взаимодействие между базами 1С через COM Промо

Обмен между базами 1C v8 1cv8.cf Бесплатно (free)

Рассмотрено много особенностей взаимодействия между базами 1С по COM технологии

10.08.2015    188649    tormozit    71    

WEB-интерфейсы как механизм сбора и контроля данных в розничной сети. Инструменты и наработки

WEB 1cv8.cf Бесплатно (free)

Веб-интерфейсы упрощают сбор информации и помогают оперативно контролировать процессы на предприятии. О том, как реализовать сервис, собирающий данные от управляющих розничных точек через веб-интерфейс, и какие инструменты для построения такого сервиса можно использовать, на онлайн-митапе «Web-клиенты для 1С» рассказал ИТ-директор компании ИТВОРКС Антон Шаганов.

24.08.2021    2051    itworks    3    

Умная маршрутизация: кейс интеграции с 1С (часть 1)

WEB v8 Бесплатно (free)

Как мы решали проблемы с доставкой в нашем интернет-магазине, внедрили новый бизнес-процесс за 3 месяца и научились меньшим количеством машин привозить больше заказов клиентам.

18.08.2021    5382    greencactus    42    

All inclusive или как "ослики, кролики и редиски" уживаются вместе с 1С

WEB Бесплатно (free)

На Infostart Meetup «Интеграционные решения для 1С» выступил замруководителя ИТ-отдела в компании WiseAdvice Евгений Винниченко. Евгений рассказал о том, как «зоопарк» из RabbitMQ, Redis и уживаются вместе с 1С и какую роль в слаженной работе этого ПО играет шина MULE ESB.

26.07.2021    2693    8095_tores    5    

Этюды по программированию. Взаимодействие с Microsoft Word Промо

Внешние источники данных v8 Бесплатно (free)

Часто приходится заниматься созданием сложных документов Word с таблицами, вложенными фрагментами, хитрым оформлением и прочими радостями жизни. Это - попытка как-то структурировать полученный опыт, чтобы не приходилось перерывать ворох старых обработок в поисках крупиц истины. Надеюсь, эта статья будет полезна и Вам.

11.12.2017    34336    milkers    23    

Описание формата 1С JDTO (JSON data transfer object)

Обмен между базами 1C v8 Бесплатно (free)

Формат 1С JDTO может быть полезен для интеграции информационных баз 1С между собой, а также 1С с внешними системами. Публикация имеет своей целью помочь в освоении этого формата для обмена данными.

16.07.2021    8862    zhichkin    32    

Как вам поможет Service Discovery и управление секретами инфраструктуры в 1С и не только

WEB Бесплатно (free)

DevOps-инженер компаний «Первый Бит» и «Серебряная пуля» Руслан Жданов рассказал, как работает service discovery, зачем нужно хранение секретов, и как реализовать эти технологии в инфраструктуре 1С. Доклад прозвучал в рамках онлайн-митапа Infostart Meetup Novosibirsk.

21.04.2021    2474    ZhdanovR    0    

FastAPI (python) - инструмент для быстрого создания Веб сервиса (WSGI) с REST api

WEB Бесплатно (free)

Ознакомительная статья по FastAPI (python) - инструменту быстрого создания Веб сервиса (WSGI) с REST api.

19.04.2021    12154    Идальго    33    

Использование инструментов разработчика для отладки обменов КД 2.0 Промо

Обмен между базами 1C v8 КД Бесплатно (free)

Пара трюков, благодаря которым жить становится намного проще...

05.05.2017    29374    unichkin    6    

Wildberries. Заполнение карточек товаров. Как получить значение справочников?

WEB Бесплатно (free)

Wildberries. Заполнение карточек товаров. Как получить значение справочников? в документации это описано очень скромно, пытаюсь рассказать на основании своего опыта.

31.03.2021    3818    sergeyisa    1    

Как получить ключ поставщика Wildberries (uuID), supplierID, Идентификатор поставщика

WEB Бесплатно (free)

Как получить ключ поставщика Wildberries (uuID), supplierID, Идентификатор поставщика, для работы с карточками товара.

18.03.2021    14280    sergeyisa    11    

Правила обмена больше не нужны

Внешние источники данных Обмен между базами 1C WEB Файловые протоколы обмена (TXT, XML, DBF), FTP v8 Бесплатно (free)

Есть несколько общепринятых подходов к написанию обмена между 1С-системами, каждый из которых упирается в длительное изучение технологии, мучительную отладку правил конвертации и написание большого количества сервисного кода, в котором потом тяжело разобраться. О принципах работы универсального фреймворка liteExchange, который реализует быстрые обмены между 1С и внешними системами, и берет на себя всю техническую обвязку по стандартному преобразованию данных, на INFOSTART MEETUP Saint Petersburg.Online рассказал Николай Крылов.

17.03.2021    16228    Nikola23    40    

Online телефонный справочник из 1С: Зарплата и управление персоналом Промо

WEB v8 ЗУП3.x Россия Бесплатно (free)

В интернете представлено много реализаций online телефонных справочников организаций. Есть справочники, которые использует для хранения информации базу Active Directory (LDAP), есть справочники, которые реализованы с использованием СУБД (например, MySQL). Но я не нашел справочника, который использует информацию из базы 1С. Далее я рассмотрю данную разработку.

10.03.2017    28185    ruha    21    

Интеграция "1С:Управление торговлей 10.3" с Yandex SpeechKit для распознавания телефонных звонков

WEB Телефония, SIP Бесплатно (free)

Распознавание телефонных звонков позволяет контролировать работу менеджеров, организовать для них дополнительный KPI, помогает разбирать конфликты и категоризировать звонки по вхождению слов. О своем опыте интеграции «1С:Управления торговлей 10.3» и сервиса Yandex SpeechKit на INFOSTART MEETUP Saint Petersburg.Online рассказал ИТ-директор компании «Умный дом» Федор Рыжков.

12.03.2021    1599    zzhiraf_    0    

R.I.P. РИБ

Файловые протоколы обмена (TXT, XML, DBF), FTP Обмен между базами 1C v8 1cv8.cf Бесплатно (free)

РИБ, спасибо и до свидания.

19.02.2021    11211    1c-intelligence    132    

Работа с Ворд через СОМ-Объект

Внешние источники данных v8 Бесплатно (free)

Статья представляет собой еще один велосипед на тему формирования документов на основе шаблонов через СОМ-Объект. Как и все другие велосипеды, этот написан потому, что другие велосипеды - плохие. В действительности, если погуглить, мы получим огромное количество ссылок на советы в стиле "сделай так и будет тебе счастье". Но почему "так", зачем "так", какие есть альтернативы - авторы советов не раскрывают. Хуже того, половина найденных таким способом рецептов окажутся откровенно вредными. Судя по тому, как вредные рецепты копируются из совета в совет, большинство разработчиков, из тех, что переписываются на форумах, просто воспроизводят то, что когда-то нагуглили сами. Ну да, работает - не трогай :-)

15.02.2021    13677    Sindbad_M    36    

РИБ 200 узлов. Середина пути Промо

Обмен между базами 1C v8 Розница Россия Бесплатно (free)

Между настройкой и поддержкой РИБ на 2 узла и на 10 большой разницы нет, а вот когда число удаленных точек переваливает за сотню, приходится решать уже совсем другие вопросы

25.10.2016    42196    comol    215    

Практические опыты с Red Hat JBoss Middleware RED HAT JBOSS FUSE. Часть №2

WEB Бесплатно (free)

Пробуем активировать маршрутизацию, разбираемся с пакетами (бандлами), терминалом karaf, графической средой управления с web-интерфейсом hawtio.

14.02.2021    765    ksnik    0    

Практические опыты с Red Hat JBoss Middleware RED HAT JBOSS FUSE. Часть №1

WEB Бесплатно (free)

Задачи интеграции на солидном предприятии могут быть неочевидно сложны и многообразны. Нередко выполняется скрупулезная оценка рисков до начала разработки "на берегу". Рассмотрите эксперименты с бесплатными аналогами дорогостоящих эквивалентов систем интеграции на основе сервисной шины предприятия ESB. Они проводились на актуальной версии Centos Linux. Большим плюсом Fuse являются разнообразие решаемых задач, широкие возможности смены или доработки стратегии, технологий интеграции уже в процессе внедрения. (В скачанных дистрибутивах заготовки настроек для запуска этого ПО на Windows имеются.). В данной публикации Вы узнаете как установить и запустить сервисную шину RED HAT JBOSS FUSE.

13.02.2021    866    ksnik    0    

Как мы интегрировали свою систему управления разработкой со Slack. Инструменты, возможности, процесс разработки

WEB Бесплатно (free)

Slack – это не только корпоративный мессенджер. Он предоставляет гибкие настройки уведомлений и реализует несколько вариантов интеграции, с помощью которых можно наладить взаимодействие с собственным приложением. Об интеграции Slack с системой управления разработкой, написанной на 1С, рассказал руководитель компании «ПрогТехБизнес» Александр Анисков.

01.02.2021    2635    vandalsvq    9    

Приемы обработки больших данных в 1С Промо

Универсальные обработки Математика и алгоритмы Обмен между базами 1C v8 1cv8.cf Бесплатно (free)

Рассказ об эффективных приемах организации обработок больших объемов данных на платформе 1С

07.08.2015    73602    tormozit    29    

Перенос данных из ЗУП 2.5 в ЗУП 3.1

Зарплата Обмен между базами 1C v8 v8::СПР ЗУП2.5 ЗУП3.x Россия БУ Бесплатно (free)

Довольно часто сталкиваюсь с тем, что у коллег возникает вопрос, как правильно выполнить перенос данных из ЗУП 2.5 в ЗУП 3.1. (Неужели еще кто-то до сих пор работает в ЗУП 2.5? Да, и очень много людей)

25.01.2021    13378    VAAngelov    81    

Обмен с сайтом посредством Post-запроса, json

WEB v8 1cv8.cf Бесплатно (free)

Задача - передавать на сайт объекты с наименованием и уникальным идентификатором (УИ), которые изменяются в 1С. Также нужно сохранять историю отправленных пакетов.

29.10.2020    7187    John_d    26