[{"data":1,"prerenderedAt":58},["ShallowReactive",2],{"wiki-test-management-migrating-test-management-systems-ru":3},{"meta":4,"html":8,"headings":9,"words":57},{"title":5,"description":6,"published":7,"updated":7,"sourceUpdated":7},"Миграция между системами управления тестированием","Миграция между системами управления тестированием: что переносится, форматы CSV, XML и API, сопоставление полей, идентификаторы, связи и проверка.","2026-11-03","\u003Cp>\u003Cstrong>Миграция между системами управления тестированием\u003C/strong> - перенос тестовых данных из одной системы в другую: структуры проектов и \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-suite\">наборов тестов\u003C/span>, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-case\">тест-кейсов\u003C/span> с шагами и атрибутами, \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"custom-property\">пользовательских свойств\u003C/span>, вложений и, по решению команды, истории \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-run\">тестовых прогонов\u003C/span> и связей с требованиями и \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"defect\">дефектами\u003C/span>. Миграция заканчивается, когда новая система используется для тестирования и подтверждено, что её данные соответствуют источнику.\u003C/p>\n\u003Cp>Стандарта, который задавал бы формат обмена тест-кейсами между \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-management-system\">системами управления тестированием\u003C/span>, нет. Системы выгружают и загружают данные в форматах общего назначения: CSV и электронных таблицах, собственных форматах XML или JSON, через свои API. В двух соседних областях общие форматы есть: \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"junit-xml\">JUnit XML\u003C/span> для результатов автотестов и \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"reqif\">ReqIF\u003C/span>, Requirements Interchange Format консорциума Object Management Group, для требований. Сущности, которые переносятся, описаны в статье \u003Ca href=\"/ru/wiki/test-management/what-is-a-test-management-system\" class=\"wiki-link wiki-link--article\">Что такое система управления тестированием\u003C/a>.\u003C/p>\n\u003Ch2 id=\"почему-миграция-не-копирование\" class=\"wiki-heading\">Почему миграция - не копирование\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"почему-миграция-не-копирование\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Основные сущности в большинстве систем управления тестированием похожи, но модели данных различаются в деталях, и каждая деталь влияет на перенос:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>Шаги.\u003C/strong> В одной системе шаг - отдельная запись с действием и \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"expected-result\">ожидаемым результатом\u003C/span>, в другой шаги - одно текстовое поле.\u003C/li>\n\u003Cli>\u003Cstrong>Поля.\u003C/strong> Наборы стандартных полей различаются, как и их значения: три уровня приоритета в одной системе, четыре в другой.\u003C/li>\n\u003Cli>\u003Cstrong>Пользовательские свойства.\u003C/strong> Типы полей (список, множественный выбор, число, дата, пользователь) и их допустимые значения задаются в каждой системе и каждом проекте.\u003C/li>\n\u003Cli>\u003Cstrong>Форматирование.\u003C/strong> Текст может храниться как HTML, Markdown или простой текст, а таблицы, изображения и ссылки внутри текста кодируются по-разному.\u003C/li>\n\u003Cli>\u003Cstrong>Идентификаторы.\u003C/strong> Целевая система присваивает свои идентификаторы. Всё, что ссылалось на старые идентификаторы, в том числе автотесты, дефекты в баг-трекере и документы, нужно обновить или сопоставить.\u003C/li>\n\u003Cli>\u003Cstrong>История.\u003C/strong> Результаты прошлых прогонов ссылаются на версии тест-кейсов, пользователей и окружения. Не каждая система умеет импортировать результаты с исходными датами и исполнителями.\u003C/li>\n\u003C/ul>\n\u003Cp>Поэтому миграция - это преобразование данных из одной модели в другую с решениями о том, что переносится, как и что остаётся.\u003C/p>\n\u003Ch2 id=\"что-переносится\" class=\"wiki-heading\">Что переносится\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"что-переносится\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Таблица перечисляет виды данных и вопросы, которые решают по каждому из них до миграции:\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Данные\u003C/th>\n\u003Cth>Что нужно решить\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Структура: проекты, наборы, папки\u003C/td>\n\u003Ctd>Сохраняется ли дерево как есть или реорганизуется? Как отображаются вложенные уровни, если глубина ограничена?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Тест-кейсы\u003C/td>\n\u003Ctd>Какие статусы переносятся: только актуальные или и устаревшие? Какие версии: последняя или все?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Шаги и ожидаемые результаты\u003C/td>\n\u003Ctd>Переносятся ли шаги отдельными записями или текстом? Что делать с общими шагами и вызываемыми тест-кейсами?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Стандартные поля\u003C/td>\n\u003Ctd>Как сопоставляются приоритеты, типы и статусы между двумя наборами значений?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Пользовательские свойства\u003C/td>\n\u003Ctd>Какие нужны в новой системе? Созданы ли их типы и значения до импорта?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Вложения\u003C/td>\n\u003Ctd>Переносятся ли файлы вместе с тест-кейсами и результатами? Что делать с изображениями, встроенными в текст?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Тестовые прогоны и результаты\u003C/td>\n\u003Ctd>История переносится, остаётся в старой системе как архив или выгружается в файлы?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Связи с требованиями\u003C/td>\n\u003Ctd>Остаются ли требования в том же инструменте? Восстанавливаются ли связи по идентификатору?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Связи с дефектами\u003C/td>\n\u003Ctd>Остаются ли дефекты в баг-трекере? Восстанавливаются ли связи результатов с дефектами?\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Пользователи\u003C/td>\n\u003Ctd>Как авторы и исполнители сопоставляются с учётными записями в новой системе?\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch3 id=\"тестовые-прогоны-и-их-история\" class=\"wiki-heading\">Тестовые прогоны и их история\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"тестовые-прогоны-и-их-история\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>История - самая дорогая часть миграции. Результаты ссылаются на тест-кейсы, окружения, сборки и пользователей, и всё это должно существовать в целевой системе до импорта результатов. Некоторые системы не позволяют создать результат с исходной датой или от имени другого пользователя.\u003C/p>\n\u003Cp>Распространены три подхода:\u003C/p>\n\u003Cul>\n\u003Cli>\u003Cstrong>полный перенос\u003C/strong>: прогоны и результаты импортируют с датами и исполнителями там, где это позволяет целевая система;\u003C/li>\n\u003Cli>\u003Cstrong>перенос итогов\u003C/strong>: импортируют только последний результат каждого тест-кейса или результаты последнего релиза;\u003C/li>\n\u003Cli>\u003Cstrong>архив\u003C/strong>: история остаётся в старой системе в режиме только для чтения или выгружается в файлы, а новая система начинает с новых прогонов.\u003C/li>\n\u003C/ul>\n\u003Cp>Выбор зависит от того, для чего используется история: аудиты и нормативные требования, анализ нестабильных областей, сравнение с прошлыми релизами.\u003C/p>\n\u003Ch2 id=\"форматы-обмена\" class=\"wiki-heading\">Форматы обмена\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"форматы-обмена\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Ch3 id=\"csv-и-электронные-таблицы\" class=\"wiki-heading\">CSV и электронные таблицы\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"csv-и-электронные-таблицы\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>CSV - формат, который умеет выгружать и загружать почти любая система управления тестированием. Его общепринятое описание - RFC 4180 (октябрь 2005 года), у которого статус информационного документа, а не стандарта. По RFC 4180 записи заканчиваются переводом строки CRLF, необязательная первая строка содержит названия полей, а поле с запятой, двойной кавычкой или переводом строки заключается в двойные кавычки; двойная кавычка внутри такого поля записывается дважды.\u003C/p>\n\u003Cp>Тест-кейсы часто содержат многострочный текст, поэтому эти правила важны. Тест-кейс с двумя шагами в одной записи CSV:\u003C/p>\n\u003Cdiv class=\"wiki-code\" data-language=\"csv\">\u003Cdiv class=\"wiki-code__header\">\u003Cspan class=\"wiki-code__language\">csv\u003C/span>\u003Cbutton type=\"button\" class=\"wiki-code__copy\" data-wiki-copy data-copied-label=\"Скопировано\">\u003Csvg class=\"wiki-code__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M216,28H88A12,12,0,0,0,76,40V76H40A12,12,0,0,0,28,88V216a12,12,0,0,0,12,12H168a12,12,0,0,0,12-12V180h36a12,12,0,0,0,12-12V40A12,12,0,0,0,216,28ZM156,204H52V100H156Zm48-48H180V88a12,12,0,0,0-12-12H100V52H204Z\"/>\u003C/svg>\u003Csvg class=\"wiki-code__icon wiki-code__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003Cspan class=\"wiki-code__label\">Копировать\u003C/span>\u003Cspan class=\"wiki-code__label wiki-code__label--done\">Скопировано\u003C/span>\u003C/button>\u003C/div>\u003Cpre>\u003Ccode>ID,Title,Priority,Steps,Expected Result\nTC-13,&quot;Pay with an expired card&quot;,High,&quot;1. Open the cart and click &quot;&quot;Checkout&quot;&quot;\n2. Click &quot;&quot;Pay&quot;&quot;&quot;,&quot;The message &quot;&quot;Card expired&quot;&quot; is shown&quot;\u003C/code>\u003C/pre>\u003C/div>\n\u003Cp>RFC 4180 не фиксирует кодировку символов: он называет US-ASCII распространённым вариантом и допускает другие наборы символов через параметр \u003Ccode>charset\u003C/code> типа данных. На практике кодировку, разделитель (запятая или точка с запятой) и формат дат согласуют между выгрузкой и загрузкой, иначе текст не на латинице и даты искажаются.\u003C/p>\n\u003Cp>Из структуры CSV следуют два ограничения. Запись плоская, поэтому шаги в виде отдельных записей кодируют либо одним многострочным полем, либо несколькими строками одного тест-кейса - в зависимости от того, что ожидает импортирующая система. Вложения в CSV поместить нельзя, их переносят отдельно.\u003C/p>\n\u003Cp>Так же используют электронные таблицы в формате Office Open XML (XLSX, стандартизован как ECMA-376 и ISO/IEC 29500). Они избавляют от проблем с разделителями и кодировками, но структура у них такая же плоская.\u003C/p>\n\u003Ch3 id=\"выгрузки-в-xml-и-json\" class=\"wiki-heading\">Выгрузки в XML и JSON\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"выгрузки-в-xml-и-json\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Многие системы выгружают проект в собственном формате XML или JSON, который сохраняет структуру: наборы, тест-кейсы, шаги отдельными элементами, пользовательские свойства, иногда вложения. Такой формат документирует производитель исходной системы. Целевая система может его импортировать, если поддерживает формат именно этого источника, или скрипт преобразует его в формат импорта целевой системы.\u003C/p>\n\u003Ch3 id=\"api\" class=\"wiki-heading\">API\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"api\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>API даёт доступ ко всем данным, которые хранит система, в том числе к тем, которых нет в выгрузке. Миграция через API читает данные из источника и записывает их в целевую систему скриптом. Такой скрипт учитывает ограничения API: постраничную выдачу списков, ограничения на число запросов в минуту, порядок создания (набор раньше его тест-кейсов, тест-кейс раньше его результатов) и повторные попытки после ошибок.\u003C/p>\n\u003Ch3 id=\"форматы-соседних-областей\" class=\"wiki-heading\">Форматы соседних областей\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"форматы-соседних-областей\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h3>\n\u003Cp>Результаты автотестов в большинстве случаев не переносят как историю. После миграции конвейер CI отправляет новые результаты в новую систему, обычно в формате JUnit XML. Автотесты, у которых в именах или атрибутах есть идентификаторы тест-кейсов, переводят на новые идентификаторы.\u003C/p>\n\u003Cp>Требования, которые переносят вместе с тест-кейсами, можно передавать в ReqIF, если оба инструмента его поддерживают. ReqIF - XML-формат OMG; его текущая версия 1.2 вышла в июле 2016 года.\u003C/p>\n\u003Ch2 id=\"сопоставление-полей\" class=\"wiki-heading\">Сопоставление полей\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"сопоставление-полей\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>\u003Cstrong>Сопоставление полей\u003C/strong> (field mapping) - таблица, которая для каждого поля источника указывает, куда оно попадает в целевой системе и как преобразуется его значение. Её пишут до первого пробного импорта, и это основной документ миграции.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Поле источника\u003C/th>\n\u003Cth>Поле в целевой системе\u003C/th>\n\u003Cth>Преобразование\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>ID\u003C/td>\n\u003Ctd>Пользовательское свойство «Legacy ID»\u003C/td>\n\u003Ctd>Копируется как есть\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Title\u003C/td>\n\u003Ctd>Название\u003C/td>\n\u003Ctd>Копируется как есть\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Priority: Critical, High, Medium, Low\u003C/td>\n\u003Ctd>Приоритет: High, Medium, Low\u003C/td>\n\u003Ctd>Critical и High становятся High\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Status: Draft, Ready, Obsolete\u003C/td>\n\u003Ctd>Статус: Draft, Active, Deprecated\u003C/td>\n\u003Ctd>Один к одному по смыслу\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Component (текст)\u003C/td>\n\u003Ctd>Пользовательское свойство «Component» (список)\u003C/td>\n\u003Ctd>Значения нормализуют и создают в списке до импорта\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Steps (HTML)\u003C/td>\n\u003Ctd>Шаги (отдельные записи)\u003C/td>\n\u003Ctd>Текст делят по пунктам нумерации, HTML преобразуют в разметку целевой системы\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Automation (yes, no)\u003C/td>\n\u003Ctd>Пользовательское свойство «Automation status»\u003C/td>\n\u003Ctd>yes становится Automated, no - Manual\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>Сопоставление, которое объединяет значения, теряет информацию: после объединения Critical и High разницу между ними в целевой системе не восстановить. Если разница важна, исходное значение сохраняют в отдельном поле.\u003C/p>\n\u003Cp>Значения, которые сопоставление не покрывает, встречаются в каждой миграции: неизвестный статус, компонент с опечаткой, пустое обязательное поле. Скрипт сообщает о них, а не заполняет молча значениями по умолчанию, и по каждому случаю принимают решение.\u003C/p>\n\u003Ch2 id=\"идентификаторы-и-связи\" class=\"wiki-heading\">Идентификаторы и связи\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"идентификаторы-и-связи\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Целевая система присваивает новые идентификаторы. Старый идентификатор сохраняют в пользовательском свойстве, например «Legacy ID», чтобы люди и документы, которые ссылаются на старый идентификатор, находили тест-кейс. \u003Cstrong>Таблицу соответствия идентификаторов\u003C/strong> (mapping of identifiers) старых новым сохраняют отдельно после импорта.\u003C/p>\n\u003Cp>По таблице соответствия обновляют всё, что ссылалось на старую систему:\u003C/p>\n\u003Cul>\n\u003Cli>связи результатов и тест-кейсов с дефектами в баг-трекере и обратные связи дефектов с тест-кейсами;\u003C/li>\n\u003Cli>связи требований с тест-кейсами;\u003C/li>\n\u003Cli>идентификаторы тест-кейсов в коде автотестов и в конфигурации конвейера CI;\u003C/li>\n\u003Cli>ссылки в документах: \u003Cspan class=\"wiki-term\" tabindex=\"0\" data-wiki-term=\"test-plan\">тест-планах\u003C/span>, отчётах, страницах вики.\u003C/li>\n\u003C/ul>\n\u003Cp>Связи внутри переносимых данных - например, тест-кейс, который вызывает другой тест-кейс, или результат, который принадлежит прогону, - восстанавливают при импорте в порядке зависимостей: сначала объекты, на которые ссылаются, затем те, что ссылаются.\u003C/p>\n\u003Ch2 id=\"ход-миграции\" class=\"wiki-heading\">Ход миграции\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"ход-миграции\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Миграция тестовых данных обычно проходит такие этапы:\u003C/p>\n\u003Col>\n\u003Cli>\u003Cstrong>Инвентаризация.\u003C/strong> Подсчитывают объём данных: проекты, наборы, тест-кейсы по статусам, пользовательские свойства, вложения и их общий размер, прогоны и результаты.\u003C/li>\n\u003Cli>\u003Cstrong>Объём.\u003C/strong> Команда решает, что переносится, а что остаётся: устаревшие тест-кейсы, история, вложения старых прогонов.\u003C/li>\n\u003Cli>\u003Cstrong>Сопоставление.\u003C/strong> Пишут сопоставление полей, создают пользовательские свойства и их значения в целевой системе.\u003C/li>\n\u003Cli>\u003Cstrong>Пробная миграция.\u003C/strong> Часть данных, например один проект или один набор с тест-кейсами всех видов, переносят в тестовое пространство и проверяют.\u003C/li>\n\u003Cli>\u003Cstrong>Исправления.\u003C/strong> По итогам пробы исправляют сопоставление и скрипт и повторяют пробу, пока проверка не пройдёт.\u003C/li>\n\u003Cli>\u003Cstrong>Заморозка.\u003C/strong> На время полной миграции изменения в исходной системе прекращают или записывают изменения, сделанные во время миграции, и переносят их после.\u003C/li>\n\u003Cli>\u003Cstrong>Полная миграция.\u003C/strong> Переносят все данные в пределах объёма.\u003C/li>\n\u003Cli>\u003Cstrong>Проверка.\u003C/strong> Результат сверяют с источником, как описано ниже.\u003C/li>\n\u003Cli>\u003Cstrong>Переключение.\u003C/strong> Тестирование переходит в новую систему, конвейер CI отправляет результаты туда, старую систему переводят в режим только для чтения или архивируют.\u003C/li>\n\u003C/ol>\n\u003Ch2 id=\"проверка-после-миграции\" class=\"wiki-heading\">Проверка после миграции\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"проверка-после-миграции\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Проверка сравнивает целевую систему с источником на нескольких уровнях.\u003C/p>\n\u003Cp>\u003Cstrong>Количества.\u003C/strong> Сравнивают число объектов по проектам и наборам: тест-кейсы по статусам, шаги, вложения, прогоны, результаты. Расхождение в количествах находят и объясняют до всего остального.\u003C/p>\n\u003Cp>\u003Cstrong>Выборочное сравнение.\u003C/strong> Выборку тест-кейсов сравнивают поле за полем: название, все шаги и ожидаемые результаты, каждое пользовательское свойство, вложения. В выборку включают трудные случаи: длинные тексты, таблицы и изображения в тексте, символы не на латинице, тест-кейсы с большим числом шагов, тест-кейсы со всеми заполненными пользовательскими свойствами.\u003C/p>\n\u003Cp>\u003Cstrong>Вложения.\u003C/strong> Сравнивают число и общий размер файлов, выборку файлов открывают. Изображения, встроенные в текст тест-кейсов, проверяют отдельно: на них ссылается текст, и они теряются, если ссылку не преобразовали.\u003C/p>\n\u003Cp>\u003Cstrong>Связи.\u003C/strong> Для выборки тест-кейсов проходят по связям с требованиями и дефектами в обе стороны. Для автотестов запускают прогон в CI и проверяют, что результаты попадают в нужные тест-кейсы новой системы.\u003C/p>\n\u003Cp>\u003Cstrong>Использование.\u003C/strong> До переключения тестировщики выполняют небольшой прогон в новой системе. Он проверяет то, чего не проверяют количества и выборки: что тест-кейсы читаются, что фильтры и отчёты работают с перенесёнными пользовательскими свойствами.\u003C/p>\n\u003Ch2 id=\"миграция-с-историей-и-без-неё\" class=\"wiki-heading\">Миграция с историей и без неё\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"миграция-с-историей-и-без-неё\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cp>Решение об истории влияет на стоимость и длительность миграции сильнее любого другого.\u003C/p>\n\u003Cdiv class=\"wiki-table wiki-table--cols-3\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>\u003C/th>\n\u003Cth>С историей\u003C/th>\n\u003Cth>Без истории\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Что переносится\u003C/td>\n\u003Ctd>Тест-кейсы, структура, прогоны и результаты с датами и исполнителями\u003C/td>\n\u003Ctd>Тест-кейсы и структура; прогоны начинаются заново\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Требования к целевой системе\u003C/td>\n\u003Ctd>Импорт результатов с исходными датами и пользователями\u003C/td>\n\u003Ctd>Только импорт тест-кейсов\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Трудозатраты\u003C/td>\n\u003Ctd>Высокие: окружения, сборки, пользователи и версии тест-кейсов воссоздаются\u003C/td>\n\u003Ctd>Ниже\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Где хранится история\u003C/td>\n\u003Ctd>В новой системе\u003C/td>\n\u003Ctd>В старой системе в режиме только для чтения или в выгруженных файлах\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Отчёты через момент переключения\u003C/td>\n\u003Ctd>Возможны в одной системе\u003C/td>\n\u003Ctd>Требуют объединения данных из двух источников\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Cp>История в старой системе доступна, пока хранится старая система или её выгрузка. Когда старую систему отключают, выгрузка истории становится единственной копией, и её формат и читаемость проверяют до отключения.\u003C/p>\n\u003Ch2 id=\"термины\" class=\"wiki-heading\">Термины\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"термины\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cdiv class=\"wiki-table wiki-table--cols-2\">\u003Ctable>\n\u003Cthead>\n\u003Ctr>\n\u003Cth>Термин\u003C/th>\n\u003Cth>Значение\u003C/th>\n\u003C/tr>\n\u003C/thead>\n\u003Ctbody>\n\u003Ctr>\n\u003Ctd>Миграция между системами управления тестированием\u003C/td>\n\u003Ctd>Перенос тестовых данных из одной системы в другую с преобразованием в модель данных целевой системы\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Сопоставление полей (field mapping)\u003C/td>\n\u003Ctd>Таблица, которая для каждого поля источника указывает, куда оно попадает в целевой системе и как преобразуется его значение\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Таблица соответствия идентификаторов\u003C/td>\n\u003Ctd>Таблица соответствия идентификаторов объектов в источнике и в целевой системе\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>Пробная миграция\u003C/td>\n\u003Ctd>Перенос части данных в тестовое пространство для проверки сопоставления и скрипта\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>CSV\u003C/td>\n\u003Ctd>Comma-separated values: текстовый формат таблиц, описанный в RFC 4180\u003C/td>\n\u003C/tr>\n\u003Ctr>\n\u003Ctd>ReqIF\u003C/td>\n\u003Ctd>Requirements Interchange Format: XML-формат OMG для обмена требованиями между инструментами\u003C/td>\n\u003C/tr>\n\u003C/tbody>\n\u003C/table>\u003C/div>\n\u003Ch2 id=\"источники\" class=\"wiki-heading\">Источники\u003Cbutton type=\"button\" class=\"wiki-heading__anchor\" data-wiki-anchor=\"источники\" aria-label=\"Скопировать ссылку на раздел\" data-copied-label=\"Ссылка на раздел скопирована\">\u003Csvg class=\"wiki-heading__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M117.18,188.74a12,12,0,0,1,0,17l-5.12,5.12A58.26,58.26,0,0,1,70.6,228h0A58.62,58.62,0,0,1,29.14,127.92L63.89,93.17a58.64,58.64,0,0,1,98.56,28.11,12,12,0,1,1-23.37,5.44,34.65,34.65,0,0,0-58.22-16.58L46.11,144.89A34.62,34.62,0,0,0,70.57,204h0a34.41,34.41,0,0,0,24.49-10.14l5.11-5.12A12,12,0,0,1,117.18,188.74ZM226.83,45.17a58.65,58.65,0,0,0-82.93,0l-5.11,5.11a12,12,0,0,0,17,17l5.12-5.12a34.63,34.63,0,1,1,49,49L175.1,145.86A34.39,34.39,0,0,1,150.61,156h0a34.63,34.63,0,0,1-33.69-26.72,12,12,0,0,0-23.38,5.44A58.64,58.64,0,0,0,150.56,180h.05a58.28,58.28,0,0,0,41.47-17.17l34.75-34.75a58.62,58.62,0,0,0,0-82.91Z\"/>\u003C/svg>\u003Csvg class=\"wiki-heading__icon wiki-heading__icon--done\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M232.49,80.49l-128,128a12,12,0,0,1-17,0l-56-56a12,12,0,1,1,17-17L96,183,215.51,63.51a12,12,0,0,1,17,17Z\"/>\u003C/svg>\u003C/button>\u003C/h2>\n\u003Cul>\n\u003Cli>\u003Ca href=\"https://www.rfc-editor.org/rfc/rfc4180\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">RFC 4180, Common Format and MIME Type for Comma-Separated Values (CSV) Files, октябрь 2005\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://ecma-international.org/publications-and-standards/standards/ecma-376/\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">ECMA-376, Office Open XML file formats, Ecma International\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://www.omg.org/spec/ReqIF/1.2\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Requirements Interchange Format (ReqIF), version 1.2, OMG\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003Cli>\u003Ca href=\"https://github.com/testmoapp/junitxml\" target=\"_blank\" rel=\"noopener\" class=\"wiki-link wiki-link--external\">Common JUnit XML format and examples, Testmo\u003Csvg class=\"wiki-link__icon\" viewBox=\"0 0 256 256\" width=\"16\" height=\"16\" fill=\"currentColor\" aria-hidden=\"true\" focusable=\"false\">\u003Cpath d=\"M228,104a12,12,0,0,1-24,0V69l-59.51,59.51a12,12,0,0,1-17-17L187,52H152a12,12,0,0,1,0-24h64a12,12,0,0,1,12,12Zm-44,24a12,12,0,0,0-12,12v64H52V84h64a12,12,0,0,0,0-24H48A20,20,0,0,0,28,80V208a20,20,0,0,0,20,20H176a20,20,0,0,0,20-20V140A12,12,0,0,0,184,128Z\"/>\u003C/svg>\u003Cspan class=\"wiki-visually-hidden\">(откроется в новой вкладке)\u003C/span>\u003C/a> (на английском)\u003C/li>\n\u003C/ul>\n",[10,14,17,21,24,27,30,33,36,39,42,45,48,51,54],{"id":11,"level":12,"text":13},"почему-миграция-не-копирование",2,"Почему миграция - не копирование",{"id":15,"level":12,"text":16},"что-переносится","Что переносится",{"id":18,"level":19,"text":20},"тестовые-прогоны-и-их-история",3,"Тестовые прогоны и их история",{"id":22,"level":12,"text":23},"форматы-обмена","Форматы обмена",{"id":25,"level":19,"text":26},"csv-и-электронные-таблицы","CSV и электронные таблицы",{"id":28,"level":19,"text":29},"выгрузки-в-xml-и-json","Выгрузки в XML и JSON",{"id":31,"level":19,"text":32},"api","API",{"id":34,"level":19,"text":35},"форматы-соседних-областей","Форматы соседних областей",{"id":37,"level":12,"text":38},"сопоставление-полей","Сопоставление полей",{"id":40,"level":12,"text":41},"идентификаторы-и-связи","Идентификаторы и связи",{"id":43,"level":12,"text":44},"ход-миграции","Ход миграции",{"id":46,"level":12,"text":47},"проверка-после-миграции","Проверка после миграции",{"id":49,"level":12,"text":50},"миграция-с-историей-и-без-неё","Миграция с историей и без неё",{"id":52,"level":12,"text":53},"термины","Термины",{"id":55,"level":12,"text":56},"источники","Источники",1849,1793718892356]