Вручную Быстрее
#1
Отправлено 15 августа 2007 - 07:17
.NET приложение
WinXP SP2 rus
Комп - двухядерный P4 3ГГц, 1 Гб ОЗУ
Зачем он так медленно работает!
В настройках тест комплита все задержки (кроме таймаутов) установлены равным нулю.
Посмотрите видео, из него ясно как все это медленно пашет.
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.
Кстати, почти у всех окон приложения примерно такое же количество свойств, полей, методов.
Может ли это повлиять на медленность распознавания окон (вновь созданных)? Если да, то что можете посоветовать?
Заранее, всем благодарен.
С уважением, Зиннатуллин Рустам.
#2
Отправлено 15 августа 2007 - 08:41
#3
Отправлено 15 августа 2007 - 08:46
#4
Отправлено 15 августа 2007 - 08:52
Посмотрел ваше видео, могу сказать у меня работает приблизительно с той же скоростью. Как по мне вполне нормальная скорость, при взаимодействии с приложением через GUI.
В SilkTestе все работает гораздо быстрее, окна пролетают - видеть не успеваешь.
#5
Отправлено 15 августа 2007 - 09:18
По поводу медленного набора текста вопрос на форуме уже поднимался. Вот нашел тему - http://software-test...?showtopic=7958. По-моему, были и еще топики, поищите на форуме.
Спасибо за наводку.
Но все-же основной вопрос остается: видели на видео, как происходит навигация по элементам дерева? Из-за чего может так тормозить?
#6
Отправлено 15 августа 2007 - 10:02
#7
Отправлено 15 августа 2007 - 12:50
#8
Отправлено 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'
Не подскажешь как можно апгрейдить этот код?
#9
Отправлено 16 августа 2007 - 05:28
... Не подскажешь как можно апгрейдить этот код?
Уже сам допёр!
// ----------------------------------------------------------------------------- // Процедура 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 доделать, но, кажется, это не имеет смысла.
#10
Отправлено 16 августа 2007 - 07:03
#11
Отправлено 16 августа 2007 - 09:45
Пример на VBScript'е
[codebox]Set WshShell = CreateObject("WScript.Shell")
WshShell.SendKeys("test")[/codebox]
На счет русских символов не знаю и не могу проверить.
#12
Отправлено 16 августа 2007 - 12:13
Еще один способ эмуляции ввода через клавиатуру - использование WSH (скорость мгновенная)
Пример на VBScript'еSet WshShell = CreateObject("WScript.Shell")WshShell.SendKeys("test")На счет русских символов не знаю и не могу проверить.
Проверил, русские символы не посылаются :(
#13
Отправлено 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).
Если есть более рациональное предложение, пишите!
Всем удачи!
#14
Отправлено 03 сентября 2007 - 08:23
Проблема состоит в следующем: по меню мы передвигаемся с помощью гарячих клавишь,и в TC5 переход с одной закладки меню на другую ємуляцией нажатия просто "Right" происходим где-то секунду, потому при полном проходе до нужного мне пункта меню проходит 5-10 секунд, что есть не хорошо для тестировани
Первоначально проект по тестированию был разработан на TC3 и там такой проблемы со скростью небыло,а при переходе к 5-ой версии тест комплита появилась, хотя в меню я все задержки на нажатие клавишь поставил 0.
В чём может быть проблемма? и может можно ли её решить таким же красивым способом как со вводом просто текста?
Хотя могу сказать что просто ввод текста в поля проходить быстро, быстрее даже чем тест комплите 3-ем
#15
Отправлено 04 сентября 2007 - 09:33
А на чём написано тестируемое приложение?
Дмитрий
#16
Отправлено 04 сентября 2007 - 09:44
#17
Отправлено 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;
Дмитрий
#18
Отправлено 05 сентября 2007 - 12:34
Количество пользователей, читающих эту тему: 0
0 пользователей, 0 гостей, 0 анонимных