Перейти к содержимому

Фотография

Вручную Быстрее


  • Авторизуйтесь для ответа в теме
Сообщений в теме: 17

#1 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 15 августа 2007 - 07:17

TestComplete 5.14.523.3
.NET приложение
WinXP SP2 rus
Комп - двухядерный P4 3ГГц, 1 Гб ОЗУ

Зачем он так медленно работает! :crazy:

В настройках тест комплита все задержки (кроме таймаутов) установлены равным нулю.

Посмотрите видео, из него ясно как все это медленно пашет.
Прикрепленный файл  a3.zip   116,4К   98 Количество загрузок:

Тестировал Notebook, все просто летает. Глазом маргнуть не успеваю как окна появляются - исчезают. (только текст все-равно набирается со скоростью примерно 10-20 символов в секунду, хотя что компу стоит набирать 1000 в секунду?!)

Люди добрые, подскажите, плиииз, что за напасть такая... В Object Browsere навигация тоже долго происходит. Нажмешь какой-нибудь объект (окно, к примеру) и ждешь секунды 2-3 (хотя, если погода хорошая, то бывает всего 0,5 секунды ждать приходится). ChildCount процесса 81.
Может ли скорость распознавания объектов зависеть от тестируемого приложения? Может GUI у приложения медленный и поэтому с ним так медленно работает тест?

Вот еще информация, может поможет разобраться.
У главной формы приложения:
Propertyes - около 250 штук
Fields - тоже около 250 штук
Methods - больше 1000 штук
Events - 0.

Кстати, почти у всех окон приложения примерно такое же количество свойств, полей, методов.
Может ли это повлиять на медленность распознавания окон (вновь созданных)? Если да, то что можете посоветовать?

Заранее, всем благодарен.
С уважением, Зиннатуллин Рустам.
  • 0

#2 Rifle

Rifle

    Новый участник

  • Members
  • Pip
  • 37 сообщений
  • ФИО:Vitaliy
  • Город:Kyiv

Отправлено 15 августа 2007 - 08:41

Посмотрел ваше видео, могу сказать у меня работает приблизительно с той же скоростью. Как по мне вполне нормальная скорость, при взаимодействии с приложением через GUI.
  • 0

#3 Bog_dan

Bog_dan

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Богданов Александр

Отправлено 15 августа 2007 - 08:46

По поводу медленного набора текста вопрос на форуме уже поднимался. Вот нашел тему - http://software-test...?showtopic=7958. По-моему, были и еще топики, поищите на форуме.
  • 0

#4 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 15 августа 2007 - 08:52

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


В SilkTestе все работает гораздо быстрее, окна пролетают - видеть не успеваешь.
  • 0

#5 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 15 августа 2007 - 09:18

По поводу медленного набора текста вопрос на форуме уже поднимался. Вот нашел тему - http://software-test...?showtopic=7958. По-моему, были и еще топики, поищите на форуме.


Спасибо за наводку.

Но все-же основной вопрос остается: видели на видео, как происходит навигация по элементам дерева? Из-за чего может так тормозить?
  • 0

#6 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 15 августа 2007 - 10:02

На счет навигации по дереву: навигация становится тем медленее, чем дальше узел от своего родительского узла (становится заметно, когда родительский узел содержит много (более сотни) подузлов). Не знаю, можно ли с этим что-нибудь поделать :((
  • 0

#7 Bog_dan

Bog_dan

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Богданов Александр

Отправлено 15 августа 2007 - 12:50

Да, на видео видел, я бы не сказал, что тормозит так, что невозможно тестить. Так как у многих все работает быстрее(и у меня ТС работает с приложением так быстро, что я не всегда успеваю увидеть что нажимается) я думаю, это связано с особенностью вашего приложения(ну и от части работы ТС). Например, с деревом - на сколько я знаю, дерево - это динамический объект, т.е. при раскрытии какой либо ветки, она создается динамически и, если у вас огромное количество подузлов, то не удивительно, что при работе с таким деревом ТС задумывается. Что с этим делать, подсказать не могу, как мне кажется ничего, ТС работает так, как его сделали =(. Тестите на SilkTest'е раз там не тормозит
  • 0

#8 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 16 августа 2007 - 04:29

Да, на видео видел, я бы не сказал, что тормозит так, что невозможно тестить. Так как у многих все работает быстрее(и у меня ТС работает с приложением так быстро, что я не всегда успеваю увидеть что нажимается) я думаю, это связано с особенностью вашего приложения(ну и от части работы ТС). Например, с деревом - на сколько я знаю, дерево - это динамический объект, т.е. при раскрытии какой либо ветки, она создается динамически и, если у вас огромное количество подузлов, то не удивительно, что при работе с таким деревом ТС задумывается. Что с этим делать, подсказать не могу, как мне кажется ничего, ТС работает так, как его сделали =(. Тестите на SilkTest'е раз там не тормозит



SilkTest страшно глючит. У него .net extention иногда не хочет работать.

Кстати, Bog_dan, ты же предлогал методом Win32API.keybd_event вводить текст быстрее?!
Так вот я воспользовался этим методом:

// ----------------------------------------------------------------------------- 
// Процедура TypeKeys эмулирует нажатие клавиш, заданных в Text
procedure TypeKeys(Text: string);
var i: integer;
begin
  for i := 1 to Length(Text) do
  begin
	Win32API.keybd_event(VkKeyScan(Text[i]),0,0,0);
	Sleep(1);   // Нужна небольшая задержка, иначе иногда символы пропускаются
  end  
end;

Так вот, этот метод не понимает разницы, например, между : и ;
Т.е. если в тексте 'd:\aaa', то напечатается 'd;\aaa'
или если '!@#$%', то напечатается '12345'

Не подскажешь как можно апгрейдить этот код? :victory:
  • 0

#9 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 16 августа 2007 - 05:28

... Не подскажешь как можно апгрейдить этот код? :victory:


Уже сам допёр!

// ----------------------------------------------------------------------------- 
// Процедура TypeKeys эмулирует нажатие клавиш, заданных в Text
procedure TypeKeys(Text: string);
var i: integer;
	c: short;
	shift: bool; 
begin
  for i := 1 to Length(Text) do
  begin
	shift := false;
	c := VkKeyScan(Text[i]); 
	if (c shr 8 mod 2 = 1) then
	begin
	  Win32API.keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY, 0);
	  shift := true;
	end;	 
	Win32API.keybd_event(VkKeyScan(Text[i]) and 255,0,0,0);
	if (shift = true) then
	  Win32API.keybd_event(VK_SHIFT, 0, KEYEVENTF_EXTENDEDKEY or KEYEVENTF_KEYUP, 0);	
	Sleep(1);   // Нужна небольшая задержка, иначе иногда символы пропускаются
  end  
end;

Можно еще и на ALT и CTRL доделать, но, кажется, это не имеет смысла.
  • 0

#10 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 16 августа 2007 - 07:03

Блин, эта функция не понимает русских символов... :victory: вот гемор.. помогите, люди добрые, я уже в KeyboardLayout полез...
  • 0

#11 Bog_dan

Bog_dan

    Новый участник

  • Members
  • Pip
  • 39 сообщений
  • ФИО:Богданов Александр

Отправлено 16 августа 2007 - 09:45

Еще один способ эмуляции ввода через клавиатуру - использование WSH (скорость мгновенная)
Пример на VBScript'е
[codebox]Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys("test")[/codebox]
На счет русских символов не знаю и не могу проверить.
  • 0

#12 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 16 августа 2007 - 12:13

Еще один способ эмуляции ввода через клавиатуру - использование WSH (скорость мгновенная)
Пример на VBScript'е

Set WshShell = CreateObject("WScript.Shell")WshShell.SendKeys("test")
На счет русских символов не знаю и не могу проверить.


Проверил, русские символы не посылаются :(
  • 0

#13 cool_rus_killer

cool_rus_killer

    Новый участник

  • Members
  • Pip
  • 17 сообщений

Отправлено 17 августа 2007 - 05:03

Всё! Целый день потратил, но добил!

Написал dll-ку. Теперь и руссий, и английский текст, и скорость. Рай!

Кому интересно, качайте dll-ку.

Прикрепленный файл  UserUtils.zip   24,86К   81 Количество загрузок:

На DelphiScript вот как юзать:

var UserUtils;
procedure InitUserUtilsUnit();
var dllka;
begin
  dllka := Dll.DefineDll('UserUtils');
  dllka.DefineProc('TypeKeys', vt_lpstr, vt_i4, vt_i4); // text, DelayTime, result
  dllka.DefineProc('SetEngLayout', vt_i4);
  dllka.DefineProc('SetRusLayout', vt_i4);
  UserUtils := Dll.Load(Project.Path+'UserUtils.dll', 'UserUtils');   // <<--- Пропишите путь к dll-ке, или скиньте dll-ку в папку с проектом
end;

procedure TypeKeys(Text: string);
var txt;
begin
  txt := Dll.New('LPSTR', Length(Text)+1);
  txt.Text := Text;
  UserUtils.TypeKeys(txt, 10); 
end;
				
procedure Main;
begin
  InitUserUtilsUnit();
  try
	TypeKeys('Cool shit! Вот круто, да?! Асть!! ёёёоу!  ЁЁЁООУУУ yahoo...');
  except
	Log.Error('Exception', ExceptionMessage)
  end;
end;

Еще сделал доступным функции активации русской (UserUtils.SetRusLayout) и английской (UserUtils.SetEngLayout) раскладки. Функции изменяют раскладку того приложения, которое на данный момент активно (foreground window).
Если есть более рациональное предложение, пишите!

Всем удачи!
  • 0

#14 mefisto

mefisto

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 03 сентября 2007 - 08:23

Добрый день. У меня появился вопрос близкий к этой теме, поэтому не создавая новую тут и создам.
Проблема состоит в следующем: по меню мы передвигаемся с помощью гарячих клавишь,и в TC5 переход с одной закладки меню на другую ємуляцией нажатия просто "Right" происходим где-то секунду, потому при полном проходе до нужного мне пункта меню проходит 5-10 секунд, что есть не хорошо для тестировани
Первоначально проект по тестированию был разработан на TC3 и там такой проблемы со скростью небыло,а при переходе к 5-ой версии тест комплита появилась, хотя в меню я все задержки на нажатие клавишь поставил 0.
В чём может быть проблемма? и может можно ли её решить таким же красивым способом как со вводом просто текста?
Хотя могу сказать что просто ввод текста в поля проходить быстро, быстрее даже чем тест комплите 3-ем
  • 0

#15 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 04 сентября 2007 - 09:33

Здравствуйте.

А на чём написано тестируемое приложение?
  • 0
С уважением,
Дмитрий

#16 mefisto

mefisto

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 04 сентября 2007 - 09:44

Все формы приложения пишуться на Borland Development Studia 2006, вообщем Delphi
  • 0

#17 Dmitry N

Dmitry N

    Профессионал

  • Members
  • PipPipPipPipPipPip
  • 1 742 сообщений
  • ФИО:Николаев Дмитрий
  • Город:Где-то в России

Отправлено 05 сентября 2007 - 08:13

Здравствуйте.

Можете реализовать свои методы для нажатия клавиш:
procedure PressRight;
begin
  Win32API.keybd_event(VK_RIGHT, 0, 0, 0);
  Win32API.keybd_event(VK_RIGHT, 0, KEYEVENTF_KEYUP, 0);
end;

  • 0
С уважением,
Дмитрий

#18 mefisto

mefisto

    Новый участник

  • Members
  • Pip
  • 12 сообщений

Отправлено 05 сентября 2007 - 12:34

Большое спасибо, теперь по менюшке просто летает, не успеваю замечать)))) хотя в коде придёться много переделать, но єто не проблема. Спасибо огромное вобщем!)
  • 0


Количество пользователей, читающих эту тему: 0

0 пользователей, 0 гостей, 0 анонимных