Генерация проверяющих тестов даже для
Прежде всего, следует различать функциональные и структурные тесты. Алгоритмы построения функциональных тестов генерируют полное множество всевозможных
С другой стороны, структурные тесты проверяют только минимально необходимое множество неисправностей (как правило, одиночных константных неисправностей после процедуры сокращения списка, изложенной в разделе 4.5). Далее мы, в основном, будем рассматривать структурные тесты.
В теоретическом аспекте показано [16.1], что генерация тестов относится к классу NP-полных проблем (т.е. переборного типа), для которых не существует алгоритмов решения полиномиальной сложности. В практическом аспекте сложность ее решения зависит от применяемого алгоритма генерации теста. Эффективность разрабатываемых алгоритмов принято проверять на схемах из различных международных каталогов (
В первом разделе рассматривается структура системы генерации тестов, в последующих двух разделах 16.2-16.3 описаны методы построения тестов, которые используются на начальном этапе генерации проверяющих тестов для всей схемы. В последующих разделах будут изложены методы построения тестов для конкретной неисправности, которые, как правило, используются на заключительном этапе генерации тестов. С нашей точки зрения, их целесообразно применять на последнем этапе, когда осталось относительно небольшое число непроверенных неисправностей. На начальном этапе лучше применять другую стратегию. Нужны быстродействующие и простые в реализации методы построения тестов, которые позволяют с малыми затратами времени получить тест для большей части неисправностей. Одним из таких методов является псевдослучайный метод генерации тестов, достаточно подробно описанный в литературе [16.5,16.6].
Целью автоматизированной системы генерации тестов является построение проверяющего теста для данной схемы. При этом желательно, чтобы:
Это вытекает из экономических требований. Полнота теста непосредственно влияет на качество производимой продукции.
Следует отметить, что полнота теста должна определяться относительно проверяемых (неизбыточных) неисправностей. Так, например, для схемы, имеющей 5% избыточных несправностей, полнота теста 96% является явно недостижимой. Потому иногда различают полноту и эффективность теста, которые определяются следующим образом. Полнота - $$P=\cfrac{O}{N}$$, где $$N$$ - общее число неисправностей и $$O$$ - число проверяемых на данном тесте неисправностей. Эффективность - $$P=\cfrac{O}{N-R}$$, где $$R$$ - число избыточных неисправностей.
Количественные значения полноты (и
Современная система генерации тестов включает в себя следующие основные компоненты:
Структура системы генерации тестов представлена на рис. 16.1. Здесь в первой фазе обычно используются псевдослучайные алгоритмы (или методы
(рис 16.1) Структура системы генерации тестов
Псевдокод укрупненного алгоритма генерации тестов первого этапа представлен ниже.
Первая фаза заканчивается при достижении необходимой для первой фазы полноты теста, определяемой пользователем, либо вследствие лимита времени. При этом число неисправностей, проверяемых одним тестовым набором, сначала достаточно велико, а затем быстро уменьшается. Соответственно число не включенных в тест входных наборов быстро возрастает. В конце первой фазы формируется множество непроверенных неисправностей, тесты для которых далее генерируются во второй фазе.
Первая фаза(схема)
{
While(полнота или время не достигнуты)
{
Генерация теста(t);
Моделирование неисправностей(t);
p=число вновь проверяемых неисправностей(t);
if(p приемлемо) then включение t в тест;
}
}
Вторая фаза(схема, множество неисправностей)
{
while(есть необработанные неисправности)
{
выбор новой неисправности f;
генерация теста t для f;
if(тест для f построен) then
{
включение t в тест;
моделирование неисправностей на наборе t;
исключение неисправностей, проверяемых t;
}
}
}
Выше представлен псевдокод второй фазы генерации теста. При построении теста для данной неисправности можно использовать один из рассмотренных выше методов. Следует отметить, что время генерации теста для текущей неисправности необходимо контролировать.
Если оно превышает некоторый задаваемый пользователем порог, то неисправность исключается из дальнейшей обработки и объявляется непроверяемой. Наибольшие затраты времени имеют место для избыточных несправностей, для которых в худшем случае может потребоваться полный перебор всевозможных входных значений.
Поэтому имеет смысл на этапе препроцессорной обработки схемы, по-возможности, найти и исключить из дальнейшей обработки избыточные неисправности. Существенное влияние на эффективность генерации теста оказывает также метод выбора новой неисправности. Обычно выбираются неисправности, расположенные как можно ближе к внешним входам схемы. Это обусловлено тем, что построенный для такой неисправности тест активизирует в схеме длинный путь и потому проверяет больше несправностей.
Это ведет к болем коротким тестовым последовательностям. Вторая фаза заканчивается, когда обработаны все неисправности из определенного в первой фазе множества. Но возможен и досрочный останов из-за превышения лимитов процесорного времени или
Данный метод не ориентирован на конкретную неисправность и строит тест для всей схемы. Он относительно прост в реализации, обладает высоким быстродействием и для некоторых классов схем позволяет получить тесты с удовлетворительной полнотой (особенно это касается
В простейшем случае псевдослучайный двоичный набор обрабатывается следующим образом. Для текущего случайного двоичного вектора $$X_{i}$$ с помощью программы моделирования с неисправностями определяется величина $$n(X_{i})$$, которая характеризует число неисправностей, проверяемых на наборе $$X_{i}$$ без учета тех неисправностей, которые проверяются ранее построенной тестовой последовательностью $$X_{1}, X_{2},…, X_{i-1}$$.
Далее если $$n(X_{i})\ge Т$$ (порог), то набор $$X_{i}$$ включается в тестовую последовательность и генерируется следующий псевдослучайный набор. Если $$n(X_{i})<Т,$$ то этот входной набор бракуется и не включается в тест. Кроме этого, набор может браковаться и по некоторым другим причинам (например, если при переходе от предыдущего набора к текущему возникает опасное состязание сигналов). Этот процесс продолжается, пока не будет достигнута заданная пользователем полнота тестовой последовательности или пороговая величина длины или времени генерации теста. Упрощенная блок-схема алгоритма псевдослучайной генерации тестов представлена на рис. 16.2.
(рис 16.2) Псевдослучайная генерация тестов
В простейшем случае генерируется псевдослучайный набор, в котором каждый вход с равной вероятностью принимает значения 0,1. Но это не всегда эффективно. Поэтому в том случае, когда псевдослучайные наборы перестают проверять новые неисправности, то вероятности генерации 0,1 для входов схемы подстраиваются.
Кроме этого, был разработан ряд эвристических алгоритмов, которые генерируют псевдослучайные наборы с более сложным распределением вероятностей. При этом для каждого входного набора схемы рассчитываются вероятности подачи на него 0 и 1. Для определения этих вероятностей обычно на этапе препроцессорной обработки предварительно анализируют структуру схемы, либо используют
Следует отметить, что в процессе случайного поиска последовательностная схема может перейти в такое состояние, что найти входной набор, удовлетворяющий изложенным критериям трудно или даже невозможно. В этом случае нужно предусмотреть выход из этого тупикового состояния за счет включения входного набора, не удовлетворяющего приведенным критериям (проверяющие новые неисправности), но переводящего схему в новое состояние. В дальнейшем этот метод получил развитие в эволюционных алгоритмах генерации тестов, которые детально рассмотрены в лекции 25.
Из
Выбираем начальное значение выхода схемы $$х_{7}=0^{*}$$. Из табл. 6.1 критических кубов (методы их построения будут рассмотрены ниже) для
(рис 16.3) Иллюстрация метода критических путей.
Из табл. 6.1 выбираем единственный для
Понятие критических кубов первоначально было введено для
| Функция | $$a$$ | $$b$$ | $$c$$ | Аналитическая запись куба |
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 |
| $$C=ab$$ | $$1^{*}$$ | $$1^{*}$$ | $$1^{*}$$ | $$ c^{1*}=a^{1*}b^{1*}\\ c^{0*}=a^{0*}b^1\vee a^1b^{0*} $$ |
| $$0^{*}$$ | $$1^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | $$0^{*}$$ | $$0^{*}$$ | ||
| $$C=a\vee b$$ | 0 | $$1^{*}$$ | $$1^{*}$$ | $$ c^{1*}=a^{0}b^{1*}\vee a^{1*}b^{0}\\ c^{0*}=a^{0*}b^{0*} $$ |
| $$1^{*}$$ | 0 | $$1^{*}$$ | ||
| $$0^{*}$$ | $$0^{*}$$ | $$0^{*}$$ | ||
| $$C=\overline{a}$$ | $$0^{*}$$ | - | $$1^{*}$$ | $$ c^{1*}=a^{0*}\\ c^{0*}=a^{1*} $$ |
| $$1^{*}$$ | - | $$0^{*}$$ | ||
| $$c=\overline{ab}$$ | $$0^{*}$$ | 1 | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^1\vee a^1b^{0*}\\ c^{0*}=a^{1*}b^{1*} $$ |
| 1 | $$0^{*}$$ | $$1^{*}$$ | ||
| $$1^{*}$$ | $$1^{*}$$ | $$0^{*}$$ | ||
| $$ c=\overline{a\vee b}$$ | $$0^{*}$$ | $$0^{*}$$ | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^{0*}\\ c^{0*}=a^0b^{1*}\vee a^{1*}b^{0} $$ |
| 0 | $$1^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | 0 | $$0^{*}$$ | ||
| $$ c=\overline{a\oplus b}$$ | $$0^{*}$$ | 1 | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^1\vee a^{0}b^{1*}\vee a^{1*}b^0\vee a^{1}b^{0*}$$ |
| 0 | $$1^{*}$$ | $$1^{*}$$ | ||
| $$1^{*}$$ | 0 | $$1^{*}$$ | ||
| 1 | $$0^{*}$$ | $$1^{*}$$ | ||
| $$0^{*}$$ | 0 | $$0^{*}$$ | $$ c^{0*}=a^{0*}b^0\vee a^{0}b^{0*}\vee a^{1*}b^1\vee a^{1}b^{1*}$$ | |
| 0 | $$0^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | 1 | $$0^{*}$$ | ||
| 1 | $$1^{*}$$ | $$0^{*}$$ | ||
| $$C=a\thicksim b$$ | $$0^{*}$$ | 0 | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^0\vee a^{0}b^{0*}\vee a^{1*}b^1\vee a^{1}b^{1*}$$ |
| 0 | $$0^{*}$$ | $$1^{*}$$ | ||
| $$1^{*}$$ | 1 | $$1^{*}$$ | ||
| 1 | $$1^{*}$$ | $$1^{*}$$ | ||
| $$0^{*}$$ | 1 | $$0^{*}$$ | $$ c^{0*}=a^{0*}b^1\vee a^{0}b^{1*}\vee a^{1*}b^0\vee a^{1}b^{0*} $$ | |
| 0 | $$1^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | 0 | $$0^{*}$$ | ||
| 1 | $$0^{*}$$ | $$0^{*}$$ |
Для комбинационных ДУ основной алгоритм генерации тестов методом
Приведенный алгоритм порождает в лучшем случае по два набора для каждого выхода схемы. Для большей полноты теста можно получить дополнительные
Такова укрупненная общая схема алгоритма для
После выполнения начального этапа генерации теста одним из приведенных методов выполняется моделирование схемы с неисправностями, определяется полнота теста и список непроверяемых неисправностей. Далее для непроверенных неисправностей используются методы генерации тестов для конкретной неисправности, которые применяются на заключительном этапе и рассматриваются ниже.
Проверяющий тест - множество входных воздействий, проверяющее заданное множество неисправностей.
Псевдослучайный метод - основан на псевдослучайной генерации входных воздействий.
Критический куб - определяет зависимость выхода логического от его входов таким образом, что изменение значений на входах ведет к изменению значение сигнала на выходе элемента.
В лекции рассмотрена задача построения проверяющих тестов для
(рис 16.4) Схема для упражнения 15
Генерация проверяющих тестов даже для
Прежде всего, следует различать функциональные и структурные тесты. Алгоритмы построения функциональных тестов генерируют полное множество всевозможных
С другой стороны, структурные тесты проверяют только минимально необходимое множество неисправностей (как правило, одиночных константных неисправностей после процедуры сокращения списка, изложенной в разделе 4.5). Далее мы, в основном, будем рассматривать структурные тесты.
В теоретическом аспекте показано [16.1], что генерация тестов относится к классу NP-полных проблем (т.е. переборного типа), для которых не существует алгоритмов решения полиномиальной сложности. В практическом аспекте сложность ее решения зависит от применяемого алгоритма генерации теста. Эффективность разрабатываемых алгоритмов принято проверять на схемах из различных международных каталогов (
В первом разделе рассматривается структура системы генерации тестов, в последующих двух разделах 16.2-16.3 описаны методы построения тестов, которые используются на начальном этапе генерации проверяющих тестов для всей схемы. В последующих разделах будут изложены методы построения тестов для конкретной неисправности, которые, как правило, используются на заключительном этапе генерации тестов. С нашей точки зрения, их целесообразно применять на последнем этапе, когда осталось относительно небольшое число непроверенных неисправностей. На начальном этапе лучше применять другую стратегию. Нужны быстродействующие и простые в реализации методы построения тестов, которые позволяют с малыми затратами времени получить тест для большей части неисправностей. Одним из таких методов является псевдослучайный метод генерации тестов, достаточно подробно описанный в литературе [16.5,16.6].
Целью автоматизированной системы генерации тестов является построение проверяющего теста для данной схемы. При этом желательно, чтобы:
Это вытекает из экономических требований. Полнота теста непосредственно влияет на качество производимой продукции.
Следует отметить, что полнота теста должна определяться относительно проверяемых (неизбыточных) неисправностей. Так, например, для схемы, имеющей 5% избыточных несправностей, полнота теста 96% является явно недостижимой. Потому иногда различают полноту и эффективность теста, которые определяются следующим образом. Полнота - $$P=\cfrac{O}{N}$$, где $$N$$ - общее число неисправностей и $$O$$ - число проверяемых на данном тесте неисправностей. Эффективность - $$P=\cfrac{O}{N-R}$$, где $$R$$ - число избыточных неисправностей.
Количественные значения полноты (и
Современная система генерации тестов включает в себя следующие основные компоненты:
Структура системы генерации тестов представлена на рис. 16.1. Здесь в первой фазе обычно используются псевдослучайные алгоритмы (или методы
(рис 16.1) Структура системы генерации тестов
Псевдокод укрупненного алгоритма генерации тестов первого этапа представлен ниже.
Первая фаза заканчивается при достижении необходимой для первой фазы полноты теста, определяемой пользователем, либо вследствие лимита времени. При этом число неисправностей, проверяемых одним тестовым набором, сначала достаточно велико, а затем быстро уменьшается. Соответственно число не включенных в тест входных наборов быстро возрастает. В конце первой фазы формируется множество непроверенных неисправностей, тесты для которых далее генерируются во второй фазе.
Первая фаза(схема)
{
While(полнота или время не достигнуты)
{
Генерация теста(t);
Моделирование неисправностей(t);
p=число вновь проверяемых неисправностей(t);
if(p приемлемо) then включение t в тест;
}
}
Вторая фаза(схема, множество неисправностей)
{
while(есть необработанные неисправности)
{
выбор новой неисправности f;
генерация теста t для f;
if(тест для f построен) then
{
включение t в тест;
моделирование неисправностей на наборе t;
исключение неисправностей, проверяемых t;
}
}
}
Выше представлен псевдокод второй фазы генерации теста. При построении теста для данной неисправности можно использовать один из рассмотренных выше методов. Следует отметить, что время генерации теста для текущей неисправности необходимо контролировать.
Если оно превышает некоторый задаваемый пользователем порог, то неисправность исключается из дальнейшей обработки и объявляется непроверяемой. Наибольшие затраты времени имеют место для избыточных несправностей, для которых в худшем случае может потребоваться полный перебор всевозможных входных значений.
Поэтому имеет смысл на этапе препроцессорной обработки схемы, по-возможности, найти и исключить из дальнейшей обработки избыточные неисправности. Существенное влияние на эффективность генерации теста оказывает также метод выбора новой неисправности. Обычно выбираются неисправности, расположенные как можно ближе к внешним входам схемы. Это обусловлено тем, что построенный для такой неисправности тест активизирует в схеме длинный путь и потому проверяет больше несправностей.
Это ведет к болем коротким тестовым последовательностям. Вторая фаза заканчивается, когда обработаны все неисправности из определенного в первой фазе множества. Но возможен и досрочный останов из-за превышения лимитов процесорного времени или
Данный метод не ориентирован на конкретную неисправность и строит тест для всей схемы. Он относительно прост в реализации, обладает высоким быстродействием и для некоторых классов схем позволяет получить тесты с удовлетворительной полнотой (особенно это касается
В простейшем случае псевдослучайный двоичный набор обрабатывается следующим образом. Для текущего случайного двоичного вектора $$X_{i}$$ с помощью программы моделирования с неисправностями определяется величина $$n(X_{i})$$, которая характеризует число неисправностей, проверяемых на наборе $$X_{i}$$ без учета тех неисправностей, которые проверяются ранее построенной тестовой последовательностью $$X_{1}, X_{2},…, X_{i-1}$$.
Далее если $$n(X_{i})\ge Т$$ (порог), то набор $$X_{i}$$ включается в тестовую последовательность и генерируется следующий псевдослучайный набор. Если $$n(X_{i})<Т,$$ то этот входной набор бракуется и не включается в тест. Кроме этого, набор может браковаться и по некоторым другим причинам (например, если при переходе от предыдущего набора к текущему возникает опасное состязание сигналов). Этот процесс продолжается, пока не будет достигнута заданная пользователем полнота тестовой последовательности или пороговая величина длины или времени генерации теста. Упрощенная блок-схема алгоритма псевдослучайной генерации тестов представлена на рис. 16.2.
(рис 16.2) Псевдослучайная генерация тестов
В простейшем случае генерируется псевдослучайный набор, в котором каждый вход с равной вероятностью принимает значения 0,1. Но это не всегда эффективно. Поэтому в том случае, когда псевдослучайные наборы перестают проверять новые неисправности, то вероятности генерации 0,1 для входов схемы подстраиваются.
Кроме этого, был разработан ряд эвристических алгоритмов, которые генерируют псевдослучайные наборы с более сложным распределением вероятностей. При этом для каждого входного набора схемы рассчитываются вероятности подачи на него 0 и 1. Для определения этих вероятностей обычно на этапе препроцессорной обработки предварительно анализируют структуру схемы, либо используют
Следует отметить, что в процессе случайного поиска последовательностная схема может перейти в такое состояние, что найти входной набор, удовлетворяющий изложенным критериям трудно или даже невозможно. В этом случае нужно предусмотреть выход из этого тупикового состояния за счет включения входного набора, не удовлетворяющего приведенным критериям (проверяющие новые неисправности), но переводящего схему в новое состояние. В дальнейшем этот метод получил развитие в эволюционных алгоритмах генерации тестов, которые детально рассмотрены в лекции 25.
Из
Выбираем начальное значение выхода схемы $$х_{7}=0^{*}$$. Из табл. 6.1 критических кубов (методы их построения будут рассмотрены ниже) для
(рис 16.3) Иллюстрация метода критических путей.
Из табл. 6.1 выбираем единственный для
Понятие критических кубов первоначально было введено для
| Функция | $$a$$ | $$b$$ | $$c$$ | Аналитическая запись куба |
|---|---|---|---|---|
| 1 | 2 | 3 | 4 | 5 |
| $$C=ab$$ | $$1^{*}$$ | $$1^{*}$$ | $$1^{*}$$ | $$ c^{1*}=a^{1*}b^{1*}\\ c^{0*}=a^{0*}b^1\vee a^1b^{0*} $$ |
| $$0^{*}$$ | $$1^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | $$0^{*}$$ | $$0^{*}$$ | ||
| $$C=a\vee b$$ | 0 | $$1^{*}$$ | $$1^{*}$$ | $$ c^{1*}=a^{0}b^{1*}\vee a^{1*}b^{0}\\ c^{0*}=a^{0*}b^{0*} $$ |
| $$1^{*}$$ | 0 | $$1^{*}$$ | ||
| $$0^{*}$$ | $$0^{*}$$ | $$0^{*}$$ | ||
| $$C=\overline{a}$$ | $$0^{*}$$ | - | $$1^{*}$$ | $$ c^{1*}=a^{0*}\\ c^{0*}=a^{1*} $$ |
| $$1^{*}$$ | - | $$0^{*}$$ | ||
| $$c=\overline{ab}$$ | $$0^{*}$$ | 1 | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^1\vee a^1b^{0*}\\ c^{0*}=a^{1*}b^{1*} $$ |
| 1 | $$0^{*}$$ | $$1^{*}$$ | ||
| $$1^{*}$$ | $$1^{*}$$ | $$0^{*}$$ | ||
| $$ c=\overline{a\vee b}$$ | $$0^{*}$$ | $$0^{*}$$ | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^{0*}\\ c^{0*}=a^0b^{1*}\vee a^{1*}b^{0} $$ |
| 0 | $$1^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | 0 | $$0^{*}$$ | ||
| $$ c=\overline{a\oplus b}$$ | $$0^{*}$$ | 1 | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^1\vee a^{0}b^{1*}\vee a^{1*}b^0\vee a^{1}b^{0*}$$ |
| 0 | $$1^{*}$$ | $$1^{*}$$ | ||
| $$1^{*}$$ | 0 | $$1^{*}$$ | ||
| 1 | $$0^{*}$$ | $$1^{*}$$ | ||
| $$0^{*}$$ | 0 | $$0^{*}$$ | $$ c^{0*}=a^{0*}b^0\vee a^{0}b^{0*}\vee a^{1*}b^1\vee a^{1}b^{1*}$$ | |
| 0 | $$0^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | 1 | $$0^{*}$$ | ||
| 1 | $$1^{*}$$ | $$0^{*}$$ | ||
| $$C=a\thicksim b$$ | $$0^{*}$$ | 0 | $$1^{*}$$ | $$ c^{1*}=a^{0*}b^0\vee a^{0}b^{0*}\vee a^{1*}b^1\vee a^{1}b^{1*}$$ |
| 0 | $$0^{*}$$ | $$1^{*}$$ | ||
| $$1^{*}$$ | 1 | $$1^{*}$$ | ||
| 1 | $$1^{*}$$ | $$1^{*}$$ | ||
| $$0^{*}$$ | 1 | $$0^{*}$$ | $$ c^{0*}=a^{0*}b^1\vee a^{0}b^{1*}\vee a^{1*}b^0\vee a^{1}b^{0*} $$ | |
| 0 | $$1^{*}$$ | $$0^{*}$$ | ||
| $$1^{*}$$ | 0 | $$0^{*}$$ | ||
| 1 | $$0^{*}$$ | $$0^{*}$$ |
Для комбинационных ДУ основной алгоритм генерации тестов методом
Приведенный алгоритм порождает в лучшем случае по два набора для каждого выхода схемы. Для большей полноты теста можно получить дополнительные
Такова укрупненная общая схема алгоритма для
После выполнения начального этапа генерации теста одним из приведенных методов выполняется моделирование схемы с неисправностями, определяется полнота теста и список непроверяемых неисправностей. Далее для непроверенных неисправностей используются методы генерации тестов для конкретной неисправности, которые применяются на заключительном этапе и рассматриваются ниже.
Проверяющий тест - множество входных воздействий, проверяющее заданное множество неисправностей.
Псевдослучайный метод - основан на псевдослучайной генерации входных воздействий.
Критический куб - определяет зависимость выхода логического от его входов таким образом, что изменение значений на входах ведет к изменению значение сигнала на выходе элемента.
В лекции рассмотрена задача построения проверяющих тестов для
(рис 16.4) Схема для упражнения 15
Для получения официальных документов о завершении программы дополнительного профессионального образования (удостоверения о повышении квалификации, дипломов о профессиональной переподготовке и MBA) необходимо предоставить:
Внимание! Вы можете не заказывать доставку бумажной версии официального документы, а скачать его в электронном виде и распечатать самостоятельно. Информация о выданном документе в течение 1 месяца загружается в Федеральную информационную систему «Федеральный реестр сведений о документах об образовании и (или) о квалификации, документах об обучении» - ФИС ФРДО.
Доступ на новый сайт осуществляется с использованием адреса электронной почты, который был указан вами при регистрации на "старом". Мы постарались перенести все ваши данные с прежнего ресурса, однако не исключена вероятность потери части информации.
При возникновении проблемы со входом, воспользуйтесь функцией сброса пароля
Если вы обнаружите несоответствия, пожалуйста, сообщите нам.