Эффективное тестирование и исправление базы 1С 8.3: гарантия надежности и безопасности

Как сделать тестирование и исправление базы 1С:Бухгалтерия (8.3 редакция 3.0)

Уроки по 1С Бухгалтерия 8 >> Администрирование
2017-12-19T18:21:22+00:00

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

Оглавление

Тестируем через конфигуратор

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

2. Теперь, когда резервная копия сделана, запустите базу в режиме конфигуратора:

3. Выберите пункт ‘Администрирование’-‘Тестирование и исправление…’ :

4. Перед нами много вариантов проверок и исправлений, которые нужно выбрать и нажать кнопку ‘Выполнить’. В принципе, можно выбрать их все, но наиболее разумным будет выполнять эти проверки и исправления по-порядку и после каждого исправления проверять — не пропали ли ошибки в базе:

5. Будем тестировать и исправлять сразу (второй вариант):

6. Если база очень большого размера, то можно ограничить выполнение проверок во времени. Не будем этого делать:

7. Реиндексация таблиц информационной базы. Что это такое? Для каждой таблицы (например, справочника) в базе строится индекс для ускорения поиска по определенным полям. Так вот, это исправление заново строит все индексы:

8. Проверка логической целостности информационной базы проверяет и исправляет логические ошибки в структурах таблиц:

9. Проверка ссылочной целостности информационной базы проверяет все ссылки на объекты, которые могут уже не существовать или быть разрушенными:

Поэтому на данной проверке нужно указать, что делать с такими объектами: создавать новые, очищать или ничего не делать.

10. Пересчет итогов. Итоги — грубо говоря, это индексы для регистров, в которых хранится информация, создаваемая документами. Например, наличие итогов по регистру остатков товара позволяет нам быстро получать значение остатков товара на некоторую дату. Эта проверка заново пересчитывает все итоги за все время. Замечу, что обычно это очень долгая по времени проверка.

11. Со временем базы данных сильно увеличиваются в размерах. Это происходит, потому что в базе накапливается много данных, которые мы пометили на удаление, затем удалили, но на самом-то деле в базе они по-прежнему остались (просто мы их больше не видим). Пункт ‘Сжатие таблиц информационной базы’ производит их настоящее удаление и база сокращается в размере:

12. Реструктуризация таблиц информационной базы. Последнее грозное оружие в борьбе с ошибками. Для каждой таблицы — создается новая таблицы с нужной структурой и все данные из старой таблицы переносятся в новую:

13. Выбрав нужный пункт, запускайте проверку (кнопка ‘Выполнить’):

14. После всех проверок откроется окно Служебные сообщения с информацией о результатах тестирования:

Если исправление не помогло и стало только хуже — восстановите базу из резервной копии, которую мы сделали на первом этапе.

Тестируем через обновлятор

Для пользователей моего Обновлятора всё ещё проще.

Отметьте нужную базу в списке, а затем из пункта «Ещё» выберите пункт «6.06 Тестирование и исправление баз»:

Откроется окно с опциями полностью совпадающими с опциями конфигуратора:

Отметьте нужные и нажмите кнопку «ОК».

При этом обновлятор:

  • сам заблокирует базу и выгонит работающих пользователей;
  • сам создаст резервную копию базы;
  • сам запустит конфигуратор для автоматического тестирования в соответствии с отмеченными настройками;
  • сам пустит всех пользователей обратно после тестирования
  • всю информацию о результатах тестирования вы увидите в окне обновлятора на закладке Отчёт.

При этом, если вам потребуется восстановить (откатить) базу на созданную резервную копию перед тестированием — отметьте базу галкой, а затем из пункта «Ещё» выберите вариант «6.01 Восстановить файл данных базы из zip, 7z, rar»:

школы 1С программистовобновлятораУроки по 1С Бухгалтерия 8 >> Администрирование

Подписывайтесь и получайте новые статьи и обработки на почту (не чаще 1 раза в неделю). Вступайте в мою группу , Одноклассниках, или — самые последние обработки, исправления ошибок в 1С, всё выкладываю там в первую очередь.

Как помочь сайту:нет рекламы

Как восстановить из резервной копии базу    оглавление    Использование утилиты chdbfl для тестирования и исправления физической целостности базы

Примечания

Текущая версия конфигурации «Система тестирования 1.1» 1.1.0.1

Минимальные требования: Платформа 1С:Предприятие 8.3 (8.3.10.2639)

Переход с конфигурации «Тренажер для тестирования 1.0» на «Систему тестирования 1.1» производиться путем обновления через сравнение и объединение. Предварительно, обязательно сделайте копию базы данных. После обновления, необходимо отключить от подсистемы «Управление» все объекты и удалить её. При тестирование обновления ошибок не выявил.

Тренажер для тестирования 1.0

Вариант конфигурации «Тренажер для тестирования 1.0» остается доступный для скачивания для однопользовательского использования. Если вам необходимо в корпоративных целях использовать конфигурацию, необходимо скачивать «Систему тестирования 1.1».

Конфигурация не содержит вложенных тестов компании «1С»

Запись действий пользователя

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

К счастью имеется способ серьезно упростить работу — записать журнал действия пользователя. Запуск этого режима производится из конфигуратора:

Запуск записи действий пользователя из конфигуратора

Или из командной строки:

После запуска в правом верхнем углу основного окна приложения появятся кнопки для управления записью действий пользователя:

Управление записью действий пользователя

С помощью этих кнопок запись можно:

  • начать/приостановить/продолжить;
  • прекратить;
  • завершить.

Начав запись, сделав какие-либо действия и завершить запись, мы увидим некий XML-документ, например такой:

Пример записи действий пользователя

На сайте ИТС имеется обработка которая может преобразовать этот XML в код на встроенном языке: .

Выглядит все это вот так:

Преобразование XML в код на встроенном языке

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

Способ набора нагрузки

При наборе нагрузки скрипт следовал определенному алгоритму. Процессы запускались по 3 штуки, скрипт ждал появления ПИД файла в локальном каталоге C:\%HOSTNAME%\%USERNAME%, это считалось знаком, что клиент запустился и стартовал следующий, то есть не более 3 запускающихся процессов в сеансе. После появления ПИД файла процессу назначался наименьший приоритет, а также выставлялось соответствие только самому последнему ядру процессора (в конце набора нагрузки, перед запуском теста, на сервере оказывалось 750 клиентов 1С, с наименьшим приоритетом, привязанных к единственному ядру). Это позволяло компьютеру не загибаться от нагрузки, создаваемой клиентами, а продолжать запуски новых и набрать всю требуемую нагрузку за приемлемое время, между 1,5-2,5 часами (пробный запуск 1000 клиентов на хосте без игры приоритетами длился более суток и ни к чему не привел).

Горизонты развития

В своей работе мы достигли значительных результатов, таких как:

  • Унифицированы и созданы сценарии тестирования наполнения базовой НСИ для трех конфигураций
  • Выполнение тестирования конфигурации переведено из Jenkins в GitLab в рамках подготовительных работ по распараллеливанию тестирования и подготовке проведения тестирования для каждого из запросов на слияние до помещения изменений в продуктивное хранилище
  • Подготовлены специалисты и наработана практика обучения по написанию авто-тестов
  • Активно идет развитие унифицированного ландшафта автоматизированного тестирования конфигураций для проектов 1С-КСУ и ПБЭ.

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

Используемые технологии и инструменты

Vanessa-Automation

Проверка и отладка тестов в среде 1С в нашей компании выполняется с использованием инструмента Vanessa-Automation, которая является продолжением проекта Vanessa-Behavior.

GitLab

Сервис контроля версий для размещения различных цепочек разработки и веток, позволяющий разработчикам проверять код и откатываться к стабильной версии сборки в случае непредвиденных проблем. В данном сервисе размещается множество проектов, каждый из которых отвечает за определенную сборку, где происходит инициализация базы, прогон тестов и получение наполненной Демо-базы. Также разработка тестов может проходить в разных ветках проекта, что позволяет настроить тесты на выполнение различных задач.

Visual Studio Code

Рабочая среда для подготовки и актуализации сценариев автотестирования. Тесты написаны на языке Gherkin — человеко-читаемом языке, служащим для описания поведения системы, который использует отступы для задания структуры документа (пробелы или символы табуляции). Каждая строчка начинается с одного из ключевых слов и описывает один из шагов.

TortoiseGit

Графический интерфейс для системы Git, реализованный как расширение для проводника Windows. Позволяет получать и отправить изменения в Git, переключаться между ветками проекта, создавать новые ветки разработки, осуществлять их слияние и многие другие манипуляции.

Jenkins

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

Результат выполнения тестов можно проанализировать благодаря различным отчетам

Возможности

Конфигурацию можно использовать для аттестации сотрудников, студентов, школьников и в прочих целях, где необходимо провести тестирование.

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

Добавлено ограничение на время прохождения тестирования.

Разделено понятия тестирования, на подготовительные и назначенные тестирования. Подготовительные тестирования пользователь может проводить самостоятельно н-ое количество раз. Назначенные тестирования – возможно пройти пользователю только один раз, назначение тестирования производиться в разрезе курса и пользователей.

Остальные возможности конфигурации унаследованы из «Тренажера для тестирования 1.0»:

  • Три режима для проведения подготовительных тестирований: Вопросы, Интенсив и Тестирование.

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

  

Анализ результатов электронного тестирования.

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

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

Система электронного тестирования позволяет анализировать качество тестов на основании ряда параметров: количество и качество верных/неверных ответов на вопросы по итогам проведения тестирования, затраченное на ответы время и другие параметры.

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

Проведение тестирования

Журнал документов проведения тестирования в программе «1С:Экзаменатор»

Программа «1С:Электронное обучение. Экзаменатор» позволяет проводить тестирование как в локальной сети, так и через Интернет. Для проведения дистанционного тестирования могут быть использованы наиболее распространенные браузеры, что позволяет избежать установки на рабочем месте пользователя дополнительного программного обеспечения.

В системе электронного тестирования возможна работа по низкоскоростным каналам связи.

Окно документа настройки проведения тестирования. Состав тестируемых в «1С:Экзаменатор»

Программа электронного тестирования предоставляет тестируемому возможности:

  • Работать с любого компьютера, включенного в локальную сеть или имеющего Интернет-соединение;
  • Проходить учебные курсы в удобное время и в комфортном для себя режиме;
  • Оперативно контролировать усвоение материала, выполняя тесты и сразу знакомясь с результатами их выполнения;
  • Пользоваться подсказками и комментариями при прохождении тестов, если они предусмотрены преподавателем;
  • Изучать учебные материалы необходимое количество раз (если иное не установлено преподавателем или администратором) для их качественного усвоения.

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

Настройка подборки вопросов для проведения тестирования в «1С:Экзаменатор»

Динамически добавленные элементы¶

  1. Поля должны иметь воспроизводимые имена. Если открыть одну и ту же форму, ничего не меняя в системе — то все имена полей должны быть такими же. Не должно быть полей с именем на основе уникального идентификатора.
  2. Поля, которые строятся на основе дат — должны содержать эти даты в имени.

    В дереве есть колонки по датам

  3. Поля, которые строятся по справочникам — должны содержать код справочника в имени. При создании такого справочника нужно принудительно устанавливать код на что-то уникальное.

    Пример из ценообразования

    Если в вид цен устанавливать код = 2 — может возникнуть ситуация, когда какие-то тесты до нашего так же создавали виды цен и код «2» уже занят. Поэтому код нужно устанавливать сильно с запасом.

    Установка кода Использование в дереве

Лицензирование 1С

Для проведения такого крупного нагрузочного теста требуются лицензии уровня КОРП, так как ПРОФ не дает возможности запускать более 500 сеансов к одной базе, а также была необходимость в увеличении числа соединений на рабочий процесс, которая тоже отсутствует у ПРОФ лицензий. Временные лицензии в количестве 11000 пользовательских и 2 серверных были предоставлены фирмой 1С для проведения теста и размещены в системе на выделенном сервере лицензирования.

Этот тест можно также частично рассмотреть как нагрузочный тест сервиса лицензирования — одна выделенная машина без проблем справляется с распределением лицензий между 2 серверами и 10500 клиентами.

Значения¶

  1. Учитывайте, что тест может выполнятся как один, так и в рамках прогона всех тестов по конфигурации. Тест может выполнятся на границе дня ночью. Может выполнятся повторно.
  2. Не используйте в качестве значений для выбора/подстановки автогенерируемые системой значения — номер и дата документа, код справочника и аналоги. Заменяйте эти значения на * и используйте сравнение по шаблону
  3. Символ интерпретируется как произвольный набор символов в шагах. Некоторые шаги сразу поддерживают символ , например:

    Некоторые шаги сразу поддерживают символ * Для некоторых используется сигнатура «по шаблону»

  4. Для работы с локальными переменными используются шаги в которых переменная оборачивается в символ $:

  5. Для работы с глобальными переменными используются шаги в которых переменная оборачивается в символы $$:

  6. Для сохранения в переменную произвольного выражения используется шаг:

Сценарное и исследовательское тестирование

Также существуют и другие классификации тестирования: сценарное (scripted) и исследовательское (exploratory).

Основная особенность сценарного тестирования в том, что вы начинаете с того, что делите задачу на этапы (подготовка, выполнение, завершение и пр.) и затем стараетесь производить все действия согласно этим этапам. То есть этот подход можно охарактеризовать как «я думаю на этим заранее и затем выполняю».

Исследовательское тестирование подразумевает совершенно иной подход – разработка процесса тестирования происходит непосредственно во время работы

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

Некоторые люди полностью полагаются на сценарное тестирование и считают исследовательское тестирование опасным. Другие, наоборот, используют исследовательское тестирование и считают сценарное чем-то из прошлого. Я думаю, правы и неправы и те, и другие. Оба подхода могут иметь ценность, но это зависит от ситуации.

Однако эти два подхода к тестированию – не единственные. Кроме них существуют другие подходы, которые находятся где-то между ними.

Почему я расположил их в таком порядке? Исследовательское тестирование практически не требует подготовки, а к сценарному тестированию нужно серьезно готовиться. А, например, сессионное находится где-то посередине – оно требует подготовки, но не столь большой.

Профессиональный тестировщик должен знать о каждом из этих подходов и понимать, какой из них лучше всего подойдет в каждом конкретном случае.

Методы и подходы к разработке тестов

Для ранее разработанной функциональности используется следующий подход:

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

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

В результате прогона тестов мы получаем наполненную демо базу.

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

Выполнение

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

Спустя 15 минут задержки включался контроль обновления ПИД файлов, те клиенты, которые не обновили его в течение 5 минут считались мертвыми и скрипт выполнял их терминирование и перезапуск с тем же параметром, который был использован в неудачный раз. Клиент уже не изменял приоритеты, а просто заново запускался и выполнял операцию.

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

Если конфигуратор не открывается: утилита chdbfl.exe

Если база повреждена настолько, что вы не можете зайти в конфигуратор, можно воспользоваться утилитой от 1С chdbfl.exe. Утилита устанавливается вместе с платформой 1С и найти ее можно в папке Bin каталога установки:

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

После того как нажали копировать, нажимаем правой кнопкой на пустом месте окна папки и нажимаем “Вставить”. Копия сделана, запускаем утилиту:

Появляется главное окно утилиты. Нам нужно указать имя файла базы данных. Нажимаем на три точки. Открывается окно выбора файла БД. Ищем каталог вашей базы и в нем указываем на файл 1Cv8.1CD. Нажимаем “Открыть”.

Ставим галочку “Исправлять обнаруженные ошибки” и нажимаем “Выполнить”.

Ждем окончания операции. Она может занять продолжительное время, в зависимости от размера базы.

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

Общая информация

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

Автоматизированное тестирование выполняется при помощи двух клиентских приложений и сценария тестирования.

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

Менеджер тестирования — это клиентское приложение (толстый или тонкий клиент) запущенное в соответствующем режиме. В этом приложении исполняется сценарий тестирования и производится оценка результатов (если нужно).

Клиент тестирования — это клиентское приложение (толстый, тонкий или веб-клиент). Это приложение получает от менеджера команды, воспроизводит их и возвращает результат.

Все вышеописанное отлично иллюстрирует изображение с сайта «1С»:

Схема автоматизированного тестирования в «1С»

Автоматизированное тестирование программных продуктов

Наша компания уделяет особое внимание качеству разработки и финального
программного продукта. Это не только решения линейки 1С:Производственная безопасность, но и построенные на ее основе корпоративные информационно-аналитические системы для наших Заказчиков

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

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

В связи с динамичным развитием наших программных продуктов и расширением состава конфигураций остро встала задача тестирования готовой функциональности и вносимых изменений. Так как ручное тестирование достаточно трудоемко и занимает много времени было принято решение внедрить автоматизированное тестирование программных продуктов.

Шаги¶

  1. Шаг начинается с ключевого слова:

    1. , , — шаг устанавливает начальные настройки
    2. , , , — шаг выполняет действие
    3. , , — шаг проверяет результат

    В начале шага можно использовать любое ключевое слово и это не будет синтаксической ошибкой. Различные шаги позволяют — более удобно читать текст и различать поведения: и . Первое легко ловится и правится, т.к. выскакивает ошибка. Второе может годами оставаться в системе и никак себя не выдавать, поэтому это ошибки более серьезные.

  2. Шаги можно сгруппировать. Написать любой текст, а следующие шаги в группировке писать с отступом.

    Пример

  3. Для правильной работы группировок нужно весь фиче-файл форматировать либо табами, либо пробелами. Правильнее табами. VA поругается, если в фиче-файле есть и табы и пробелы.

  4. Группировку нужно начинать со «*», чтобы было понятно, что это группировка
  5. Любую повторяющуюся операцию нужно выносить или в экспортные фичи (должно лежать в этом же каталоге или в подкаталогах текущей папки, иначе не найдет) или в библиотеку. Это позволяет потом править в одном месте изменение теста и такой сценарий проще найти.
  6. Вместо пауз лучше использовать асинхронные шаги. Асинхронными называются шаги, которые выполняются в течение какого-то времени. Например, проверка значения поля с использованием асинхронного шага будет выглядеть следующим образом:

    Значение в таблице Закрытие окна Открытие окна Доступность элемента Ожидание формирования отчета Сообщение пользователю

Понравилась статья? Поделиться с друзьями: