УПП + ТестЦентр (Нагрузочное тестирование Базы данных)

Новая тема
Показывать по 10 20 40 сообщений
Собственно говоря, никакого нагрузочного тестирования не получилось потому здесь и пишу.

Дано:
1С 8.1(8.1.12.101) База УПП 1.2 (1.2.19.1) Клиент серверный вариант.
Сервер: Win2003 Server, SQL 2000 SP4.
Железо: Процессоры 2 Xeon 5130 Память 8Gb.
Все стоит на одной машине, народу не много одновременно не более 10 человек. Выбор УПП был связан с тем, что у нас не просто предприятие, а группа компаний 5 организаций, нужно видеть всех сразу и получать отчет по всей группе компаний одновременно.
Вообще все это тестирование было затеяно с целью понять, как будет работать 1С при увеличении количества пользователей в базе, ну скажем до 30 человек, и соответственно аргументировать руководству покупку второго сервера.

Что сделали:
1. Нашли и прогнали тест производительности TPC-1C-GILV (http://www.gilev.ru/1c/tpc/)  получили в среднем 28 балов.
2. Установили 1С Тест Центр 1.0.5.1 и на этом все закончилось.
При попытке воспользоваться Сценарием для 1С Тест Центра Эмуляция работы пользователей по вводу документов с сайта (http://users.v8.1c.ru), выполняя внешнюю обработку, Генерация сценария, как указано в инструкции (http://users.v8.1c.ru/tc_sc_euwd_ug.aspx), получаем ответ: Не удалось получить список документов {ВнешняяОбработка.ГенерацияСценария (489)}: Значение не является значением объектного типа (имя) В выбранном интервале нет добавленных и проведенных документов. Хотя перед этим мы документы специально проводили и журнал у нас включен, как в инструкции написано.

Со вторым тестом Создание документов "Реализация товаров и услуг" для УПП все еще хуже при попытке импортировать сценарий Создание РТУ.xml в базу через Тест Центр / Конструктор сценариев 1С отвечает Ошибка при записи Объекта Инициализация Сценария {ОбщаяФорма.ТЦИмпортСценария(75)}: Ошибка при вызове метода контекста (Запись): Код не уникален! Импорт не выполнен.

Вопрос: С чем связаны данные ошибки. Возможно, кто-нибудь знает, что я сделал не так. Что стоит почитать. Где можно поискать другие тестовые обработки для 1С:Тест Цента. Существуют ли какие-нибудь другие варианты провести тестирование 1С на предмет скорости работы при увеличении количества пользователей.
Сожелею ! Но на форуме технических специалистов-таковых наверно нет.
А тему , ты, затронул ОЧЕНЬ ИНТЕРЕСНУЮ.Копай дальше.Может и раскрутищь.
По первой ошибке - так у вас есть в "выбранном интервале" документы или нет? Или вы их попроводили и потом удалили?
По второй ошибке - посмотрите в отладчике, что там за элемент справочника создается?
"1. Да проведенные документы в базе есть. Специально перед выполнением теста проводим порядка 10-20 документов. Стирать их никто не будет т.к. база специально создана для тестирования (копия рабочей).

2. Вот что видно в отладчике.
// Запись указанного объекта в базу данных
//
// Параметры:
//  Объект - СправочникОбъект, за6писываемый объект
//
// Возвращаемое значение:
//   Булево - Истина, если запись прошла успешно
//
Функция ЗаписатьОбъект(Объект)

ТипОбъекта = ТипЗнч(Объект);

Если ТипОбъекта <> Тип("СправочникОбъект.ТЦТестоваяОбработка") Тогда
ЭтоСценарий = ТипЗнч(Объект) = Тип("СправочникОбъект.ТЦСценарий");

Если Не ЭтоСуществующийОбъект(?(ЭтоСценарий, Объект.Родитель, Объект.Владелец)) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;

Если ЭтоСуществующийОбъект(Объект) Тогда

Если ТипОбъекта <> Тип("СправочникОбъект.ТЦПоказательПроизводительности") Тогда
Объект.УстановитьНовыйКод();
КонецЕсли;

Если Не мПерезаписыватьВсе Тогда
Результат = ВопросОПерезаписиОбъекта(Объект.Наименование);

Если Результат = 0 Тогда
Возврат Истина;
ИначеЕсли Результат = 2 Тогда
мПерезаписыватьВсе = Истина;
КонецЕсли
КонецЕсли;
КонецЕсли;

Попытка
Объект.Записать();
Исключение
Ошибка = ОписаниеОшибки();
ОтменитьТранзакцию();
Сообщение = "Ошибка при записи объекта " + Объект.Наименование + Символы.ПС + Ошибка + Символы.ПС + "Импорт не выполнен";
Предупреждение(Сообщение);
-> Возврат Ложь;
КонецПопытки;

Возврат Истина;
КонецФункции // ЗаписатьОбъект()

Ссылка на Print Scrn экрана
http://narod.ru/disk/4152277000/1C%D0%A2%D0%B5%D1%81%D1%82%D0%A6%D0%B5%D0­%BD%D1%82%D1%80.JPG.html;"
В отладчике посмотрите что за Объект?
"Это все что мне пишет отладчик. Я так понимаю ("Объект - СправочникОбъект, за6писываемый объект") он пытаеться записать именно это?

Перем мФормаВопроса;      // Форма ТЦВопрос
Перем мПерезаписыватьВсе; // Признак перезаписи всех объектов

// Выбрать XML файл сценария
Процедура ВыборФайла(Элемент, СтандартнаяОбработка)

ВводИмениФайла = Новый ДиалогВыбораФайла(РежимДиалогаВыбораФайла.Открытие);
ВводИмениФайла.Фильтр = "Файл XML(*.xml)|*.xml";
Если ВводИмениФайла.Выбрать() Тогда
ФайлСценария = ВводИмениФайла.ПолноеИмяФайла;
КонецЕсли;

КонецПроцедуры


// Вопрос пользователю по поводу
//
// Параметры:
//  Наименование - Строка, наименование перезаписываемого объекта
//
// Возвращаемое значение:
//   Перечислени.ТЦОтветНаВопрос - результат ответа на вопрос
Функция ВопросОПерезаписиОбъекта(Наименование)
Если мФормаВопроса = Неопределено Тогда
мФормаВопроса = ПолучитьОбщуюФорму("ТЦВопрос");
КонецЕсли;

мФормаВопроса.Заголовок = "Тест-центр";
мФормаВопроса.Сообщение = "Импортируемый объект """""
                       + Наименование
                       + """"" уже существует в базе. Перезаписать его?";

Возврат мФормаВопроса.ОткрытьМодально();
КонецФункции


// Запись указанного объекта в базу данных
//
// Параметры:
//  Объект - СправочникОбъект, за6писываемый объект
//
// Возвращаемое значение:
//   Булево - Истина, если запись прошла успешно
//
Функция ЗаписатьОбъект(Объект)

ТипОбъекта = ТипЗнч(Объект);

Если ТипОбъекта <> Тип("СправочникОбъект.ТЦТестоваяОбработка") Тогда
ЭтоСценарий = ТипЗнч(Объект) = Тип("СправочникОбъект.ТЦСценарий");

Если Не ЭтоСуществующийОбъект(?(ЭтоСценарий, Объект.Родитель, Объект.Владелец)) Тогда
Возврат Истина;
КонецЕсли;
КонецЕсли;

Если ЭтоСуществующийОбъект(Объект) Тогда

Если ТипОбъекта <> Тип("СправочникОбъект.ТЦПоказательПроизводительности") Тогда
Объект.УстановитьНовыйКод();
КонецЕсли;

Если Не мПерезаписыватьВсе Тогда
Результат = ВопросОПерезаписиОбъекта(Объект.Наименование);

Если Результат = 0 Тогда
Возврат Истина;
ИначеЕсли Результат = 2 Тогда
мПерезаписыватьВсе = Истина;
КонецЕсли
КонецЕсли;
КонецЕсли;

Попытка
Объект.Записать();
Исключение
Ошибка = ОписаниеОшибки();
ОтменитьТранзакцию();
Сообщение = "Ошибка при записи объекта " + Объект.Наименование + Символы.ПС + Ошибка + Символы.ПС + "Импорт не выполнен";
Предупреждение(Сообщение);
!!!-> Возврат Ложь;
КонецПопытки;

Возврат Истина;
КонецФункции // ЗаписатьОбъект()


// Проверка существования объекта в базе данных
//
// Параметры:
//  Ссылка - СправочникСсылка, ссылка на проверяемый объект
//
// Возвращаемое значение:
//  Булево - Истина, если объект с таким уникальным идентификатором существует в базе данных
//
Функция ЭтоСуществующийОбъект(Объект)
Если Объект = Неопределено Тогда
Возврат Ложь;
КонецЕсли;

Запрос = Новый Запрос;

Справочник = Объект.Метаданные().Имя;

Запрос.Текст = "ВЫБРАТЬ
              | Таблица.Ссылка
              |ИЗ
              | Справочник." + Справочник + " КАК Таблица
              |ГДЕ
              | Таблица.Ссылка = &Объект";

Запрос.УстановитьПараметр("Объект", Объект.Ссылка);
Возврат Не Запрос.Выполнить().Пустой();
КонецФункции

// Импортировать сценарий
Процедура ИмпортСценария(Элемент)

// Открыть XML файл сценария
Чтение = Новый ЧтениеXML();
Попытка
Чтение.ОткрытьФайл(ФайлСценария);
Исключение
Ошибка = ОписаниеОшибки();
Сообщение = "Не могу открыть файл"  + Символы.ПС + ФайлСценария + Символы.ПС + Ошибка;
Предупреждение(Сообщение);
Возврат;
КонецПопытки;

// Прочитать количество объектов
Пока Чтение.Прочитать() Цикл
Если Чтение.ТипУзла = ТипУзлаXML.НачалоЭлемента Тогда
ЭлементыФормы.Индикатор.МаксимальноеЗначение = Чтение.ПолучитьАтрибут("Количество");
КоличествоОбъектовНаПервомУровне = Число(Чтение.ПолучитьАтрибут("КоличествоНаПервомУровне"));
Индикатор = 0;
Прервать;
КонецЕсли;
КонецЦикла;

// Если при ответе на вопрос о перезаписывании существующих объектов выбрать "Да для явсех",
// тогда эта переменная будет иметь значение Истина
мПерезаписыватьВсе = Ложь;

// Признак того, что при экспорте были экспортированны все объекты. Это важно потому, что
// в этом случае родителей придется назначать нескольким элементам, а именно тем, у кого
// родителем является корневой элемент справочника ТЦСценарий.
ИмпортКорня = Ложь;

// Чтение и запись объектов из файла-хранилища
Если Чтение.Прочитать() Тогда
НачатьТранзакцию();

// Чтение остальных объектов их файла-хранилища
Пока ВозможностьЧтенияXML(Чтение) Цикл

Попытка
Объект = ПрочитатьXML(Чтение);
Исключение
Предупреждение("Файл сценария содержит ошибки: " + ОписаниеОшибки());
Возврат;
КонецПопытки;

Если Объект = Неопределено Тогда
Предупреждение("Файл сценария поврежден: Невозможно прочитать объект");
Возврат;
КонецЕсли;

Если КоличествоОбъектовНаПервомУровне > 0 Тогда
Объект.Родитель = Сценарий;
КоличествоОбъектовНаПервомУровне = КоличествоОбъектовНаПервомУровне - 1;
КонецЕсли;;

Если Не ЗаписатьОбъект(Объект) Тогда
Возврат;
КонецЕсли;

Индикатор = Индикатор + 1;
КонецЦикла;

ЗафиксироватьТранзакцию();
КонецЕсли;

Чтение.Закрыть();
Предупреждение("Сценарий успешно импортирован", 3);

КонецПроцедуры

"
"В отладчике вычислите выражение "Объект" и напишите нам что это!
Что то Ваши знания по работе с отладчиком не очень! ;) Может быть лучше пригласить специалиста? Без обид!"
По поводу моих знаний, абсолютно согласен, я вообще отладчик впервые запустил, после того как вы мне сказали в нем посмотреть.
По поводу пригласить кого-нибудь тоже не против, но хотелось бы, чтобы человек, который придет, понимал, что он должен сделать, а не просто сидел свое время (была у нас пара таких случаев). Если сможете подсказать, кто может с моей проблемой справиться, буду благодарен.
Где именно справляться с вашей проблемой? Город какой?
Санкт-Петербург
dallas@composite.ru
Читают тему
(гостей: 1)

Быстрый переход