TestComplete - работа на буболечките
По време на работа на скрипта от време на време грешки са длъжни да възникнат, и новодошлия в началото е трудно да се разбере защо е възникнала грешката и как да го поправя. В тази статия ще говорим за общия подход към решаването на такива проблеми в TestComplete и да ви разкажа за най-честите грешки, които могат да причинят проблеми.
Да започнем с един общ въпрос.
Как да се реши проблема?
Да предположим, след началото на теста, можете да получите лог с няколко грешки:
![TestComplete - някои грешки (функционално тестване) TestComplete - работа на буболечките](https://webp.images-on-off.com/25/762/411x177_i4mw6ixe3shxa0t1ornb.webp)
Тук ние виждаме три проблеми, които може да са свързани или не може да бъде. Ето защо, винаги трябва да се започне с първия решаване на проблеми. тъй като определянето тя може автоматично да отстрани останалите. От друга страна, не се опитвайте да се коригират грешките по-късно най-вероятно няма да доведе до нищо, така че ние губи времето.
Сега ние се пристъпи към правилното решение на проблема:
- Ако съобщение за грешка, за това, което не казвам, кликнете върху него, след като с помощта на мишката и погледнете Забележки борда (в TestComplete 8 и по-късно тя се нарича Допълнителна информация). Обикновено има повече информация за проблема.
- Ако на екрана се генерира, когато създавате грешката - да погледнем в него, също (Picture панел).
- Ако до сега причината е ясна - кликнете два пъти върху грешката в дневника, в резултат, ще бъдете пренасочени към линията на код, където е възникнал проблемът. Разгледайте внимателно кода и се опитаме да разберем какво точно този код може да доведе до подобна грешка (препратка към несъществуващ прозорец и да се опитате да използвате една необявена променлива, на изхода на границите на масивите и т.н.).
- Ако причината все още не е ясно - че е време за отстраняване на грешки. Сложете точка на прекъсване на линията, където е възникнала грешката (за това, което трябва да натиснете F9. Преди това слагам в този ред повече) и да започнете теста. Тест изпълнение ще бъде прекратено и ние ще се възможност внимателно да проучи състоянието на всички обекти в момента:
- провери, че всички променливи се инициализират и съдържат истинските стойности (акцент върху ценности като нищожно и неопределено., тъй като често те са свързани с проблеми в работата с променлива)
- проверете дали всички прозорци и контроли, използвани в този ред, има и видими на екрана - свойства скрипт. Съществува. Фокусирани. Видима. VisibleOnScreen (консултирайте се с ръководството на разликата между свойствата Видими и VisibleOnScreen. Ако все още не го знаят)
- проверете дали наречения метод на обект се поддържа (aqObject.IsSupported)
- Ако на този етап не е ясно за вас защо променливите имат следните стойности, и не се очаква да спрете възпроизвеждането и поставете точка на пречупване и преди, след това изпълнете стъпка скрипт по стъпка (изпълни един ред код, можете да използвате клавиша F10 и отидете в самата функция -. С ключ F11).
Какви са грешките?
А сега да разгледаме примери за грешки и техните решения.
Стартирайте теста е спрял, защото спират на грешка (Предупреждение) настройка е активирана
Тази грешка се появява, когато преди това е имало друга грешка и настройките на проекта, определени за спиране на изпълнението на тестове в случай на грешка. Разрешете го съвсем просто:
- Отворете свойствата на проекта (щракнете с десния бутон върху името на проекта, Edit - Properties).
- Open опции група възпроизвеждане.
- Прекъсване на връзката с флагове спирка на грешка / Стоп на предупреждение
Непълно Keyboard Input
- Тази грешка обикновено се появява при неправилна последователност от символи, е била прехвърлена на метода на ключове. Метод за ключове герои !. ^.
Тази грешка се появява, ако по време на тестово приложение на екрана се появи модален прозорец, предотвратяване TestComplete'u. Има 2 начина за решаване на този проблем:
- автоматично: в настройките на проекта в групата за възпроизвеждане TestComplete'u определят варианти за това как да се справят с тези прозорци (близки, кликнете върху фокусиран контрол и т.н.)
- зададете ръчно манипулатор OnUnexpectedWindow събития. които ясно да предпише необходимите действия.
Вторият метод се използва често в определени случаи с нестандартни прозорци.
Има подобен проблем с припокриващи Windows (припокриващи се прозорци). Разликата между тях е, че Припокриването Window не пречи TestComplete. Те могат да бъдат пренебрегнати (всички в едни и същи настройки на проекта) или обработени с помощта OnUnexpectedWindow събития.
Целта, която сценарият се опитва да работи, не съществува. Ето списък на най-често срещаните причини за тази грешка:
- неправилна идентификация на обекта (предварително определен набор от качества и техните стойности не съвпада с истинската обекта)
- променената позиция на обекта в йерархията на обект (по-често при използването на дърво Модел на обекта)
- не е намерен един от обекта родител (или множество обекти отговарят на описанието на предмета майка)
Решението: с помощта на обект Spy (в TestComplete 7 - Свойства на обект), за да разберете пълното име и новите стойности на свойствата и актуализиране на скриптове или NameMapping.
Не може да се намери обекта
Преди да извършите всяко действие, с който и да е обект (прозорец, управление на процеса), TestComplete първо проверява неговото съществуване. Ако обектът не съществува в грешка дънер се случва «Не може да се намери обекта». Най-често това се случва, ако обектът е възложена на една променлива, а след това самия обект престава да съществува, а сценарият се опитва да работи с променлива (което съответства на вече съществуващи обекти).
Решение: ре-инициализиране на променлива с един и същ обект.
не може да получи прозореца.
Прави се опит за достъп до прозореца или контрола, която не съществува. Най-честата причина е в изписването на заглавието, класа или индекс неправилен артикул.
Отстраняване: коригиране на грешно имота. Това може да се дължи на промени в заявлението се изпитва.
Неопределен Признаване на тестваните обекти
Неясно дефиниране на прозорци: описание прозорец или контрол съответства на няколко обекта. Основните причини може да са две:
- неправилно избран набор от свойства, използвани за идентифициране на обект (например, те са твърде малки)
- злоупотреба Група подмяна на знака (заместващи символи, * и?).
Решение: дефиниране на нов набор от качества за уникална идентификация на обекти или да се използва по-малко универсална заместване от символи * и.
Псевдонимът се отнася до картографирани обект, който не е в позиция на NameMapping проект
Alias се отнася до елемент NameMapping несъществуваща. Това може да се случи, ако стоката е била изтрита от NameMapping. но съответния псевдоним остава.
Решението: изтриване на псевдонима и да пренапише скриптове в съответствие с промените.
заключение
Разбира се, всеки проблем трябва да бъде решен по отделно, като причините за всеки отделен случай може да са съвсем различни. Въпреки това, изправени пред няколко пъти с един или друг проблем и да го решите, можете всеки път, когато го направя по-бързо, и в бъдеще ще се напише код, по-малко склонни към такива грешки.
Също така трябва да се отбележи, че в някои случаи, решението може да бъде по-трудно, отколкото в случая, описан тук. Например, ако създадете тестове с помощта на обектно-ориентиран подход с използването на езиковите способности JScript или VBScript. намери причината може да е много по-сложно, тъй като TestComplete не поддържа преходи в метода на кликване в дневника.
Още по-проблематично, може да бъде работа с обекти, които не може да "хване" от обект Spy (например, менюта). В този случай, ще трябва да пиша още малки функции, които ще бъдат в дневника, за да се покаже списък с наличните свойства и методи (като се използват методи и aqObject.GetProperties aqObject.GetMethods).
За да научите повече за TestComplete може да бъде на следващото обучение. където ще разгледа включването на обработка на събития, както и различни параметри TestComplete.
Прочетете повече прочетете за може да се разглежда всички грешки се в официалното ръководство TestComplete (на английски).