TestComplete - lucru pe bug-uri

În timpul funcționării, script-ul din timp în timp greșeli sunt obligate să apară, iar noul venit la început este greu de înțeles de ce a apărut eroarea și cum să-l corecteze. In acest articol voi vorbi despre abordarea generală pentru rezolvarea acestor probleme în TestComplete și să vă spun despre cele mai frecvente greseli care pot provoca probleme.

Să începem cu o întrebare generală.

Cum de a rezolva problema?

Să presupunem că, după începerea testului, veți obține un jurnal cu câteva erori:

TestComplete - lucru pe bug-uri

Aici vom vedea trei probleme care pot fi legate sau nu. Prin urmare, ar trebui să înceapă întotdeauna cu prima rezolvare de probleme. deoarece fixarea se poate remedia automat restul. Pe de altă parte, încercarea de a corecta greșelile mai târziu, cel mai probabil nu duce la nimic, așa că ne-am irosit timpul.

Acum vom trece la soluția corectă a problemei:

  1. Dacă un mesaj de eroare cu privire la ceea ce nu spun, faceți clic pe ea o dată cu mouse-ul și uita-te la bordul Observații (în TestComplete 8 și mai târziu a numit Informații suplimentare). De obicei, există mai multe informații despre problema.
  2. În cazul în care captura de ecran a fost generat atunci când creați eroarea - să ia o privire la ea, de asemenea (panoul de imagine).
  3. Dacă până acum motivul este clar - dublu click pe eroare în jurnal, ca rezultat va fi redirecționat către linia de cod în cazul în care a apărut problema. Priviți cu atenție la codul și să încerce să înțeleagă exact ceea ce acest cod ar putea duce la o eroare similară (de referință într-o fereastră inexistentă și încearcă să utilizeze o variabilă nedeclarată, ieșirea limitelor matrice etc.).
  4. În cazul în care cauza nu este încă clar - este timpul pentru a depana. Pune un punct de întrerupere pe linia care a apărut eroarea (pentru aceasta trebuie să apăsați F9. Anterior, a pus în această linie peste) și începe testul. Test de execuție va fi oprită și vom avea ocazia de a examina cu atenție starea tuturor obiectelor în acest moment:
  • verifică dacă toate variabilele sunt inițializate și conțin valorile corecte (accent pe valori, cum ar fi nul și nedefinit., deoarece de multe ori acestea sunt asociate cu probleme de lucru cu variabile)
  • verifică dacă toate ferestrele și controalele utilizate în această linie, există, de asemenea, vizibile pe ecran - proprietățile care au activat. Exists. Axat. Vizibil. VisibleOnScreen (consultați manualul de diferența dintre proprietățile vizibile și VisibleOnScreen. În cazul în care încă nu-l cunosc)
  • verificați dacă numita metodă obiect este susținută (aqObject.IsSupported)
  1. Dacă în această etapă nu este clar pentru tine de ce variabilele au următoarele valori, și nu este de așteptat pentru a opri redarea și plasați breakpoint înainte, apoi executați pas script cu pas (executa o linie de cod, puteți utiliza tasta F10 și du-te in interiorul functiei. - Cu tasta F11).

Care sunt erorile?

Acum, ia în considerare exemple de erori și soluțiile lor.

Execuția de încercare a oprit, deoarece Stop pe setarea de eroare (Avertizare) este activată

Această eroare se produce atunci când înainte că a existat o altă eroare și setările de proiect specificate pentru a opri executarea testelor în cazul unei erori. Rezolva-l destul de simplu:

  1. Deschideți proprietățile proiectului (click dreapta pe numele proiectului, Edit - Properties).
  2. Deschideți Opțiuni grup de redare.
  3. Deconectați steaguri opri eroarea / oprire pe avertizare

Intrare Tastatură incompletă

  1. Această eroare apare de obicei atunci când o secvență de caractere incorecte a fost transferat la metoda Keys. Metoda pentru chei de caractere !. ^.

Această eroare apare în cazul în care în timpul unei aplicatii de test pe ecran a apărut o fereastră modal, prevenind TestComplete'u. Există 2 moduri de a rezolva această problemă:

  • în mod automat: în setările de proiect în cadrul grupului de redare TestComplete'u specifica opțiuni cu privire la modul de a face cu aceste ferestre (apropiate, faceți clic pe controlul concentrat, etc.)
  • atribui manual evenimente un handler OnUnexpectedWindow. care prevede în mod clar acțiunile necesare.

A doua metodă este frecvent utilizată în cazuri specifice, cu ferestre non-standard.

Există o problemă similară cu Suprapunere pentru Windows (ferestre suprapuse). Diferența dintre ele este că Suprapunerea Window nu interferează cu TestComplete. Ele pot fi ignorate (toate în aceleași setări ale proiectului) sau prelucrate folosind OnUnexpectedWindow evenimente.

Obiectul, care script-ul încearcă să lucreze, nu există. Aici este o listă cu cele mai frecvente cauze ale acestei erori:

  • identificarea incorectă a obiectului (un set predeterminat de proprietăți și valorile lor nu coincid cu obiectul real)
  • Poziția modificată a obiectului în ierarhia obiectului (cel mai adesea atunci când se utilizează copac Object Model)
  • nu a fost găsit unul dintre obiectul părinte (sau mai multe obiecte intră sub descrierea obiectului părinte)

Solutia: folosind obiect Spy (în TestComplete 7 - Object Properties) pentru a afla numele complet și noile valori ale proprietăților și actualizare script-uri sau NameMapping.

Nu se poate găsi obiectul

Înainte de a efectua orice acțiune cu orice obiect (fereastră, de control al procesului), TestComplete verifică mai întâi existența sa. În cazul în care obiectul nu există în eroare jurnal apare «Nu se poate găsi obiectul». Cel mai adesea acest lucru se întâmplă în cazul în care obiectul a fost atribuit unei variabile, atunci obiectul în sine a încetat să mai existe, iar script-ul încearcă să lucreze cu o variabilă (care corespunde obiectelor deja existente).

Soluție: re-inițializa o variabilă cu același obiect.

Nu se poate obține fereastra.

Încercarea de a accesa fereastra sau controlul pe care nu există. Cel mai frecvent motiv este o greșeală de scriere a titlului, clasa sau un indice de element incorect.

Remediu: corecta o proprietate greșită. Acest lucru se poate datora modificărilor cererii de testare.

Recunoașterea Ambiguă a obiectului testat

definirea ambigua a ferestrelor: Descriere fereastră sau de control corespunde mai multor obiecte. Principalele motive pot fi două:

  • incorect selectate set de proprietăți utilizate pentru identificarea obiectului (de exemplu, acestea sunt prea mici)
  • Grupul de abuz de înlocuire de caractere (metacaractere, * și?).

Soluție: să definească un nou set de proprietăți pentru a identifica în mod unic de obiecte sau de a folosi un înlocuitor mai puțin universal, prin simboluri * și.

Alias-ul se referă la un obiect care nu este mapat în elementul de proiect NameMapping

Alias ​​se referă la un element NameMapping inexistent. Aceasta se poate întâmpla în cazul în care elementul a fost șters din NameMapping. dar alias-ul corespunzător a rămas.

Solutia: sterge alias-ul și rescrie script-uri, în conformitate cu modificările.

concluzie

Desigur, fiecare problemă trebuie abordată separat, deoarece motivele care în fiecare caz poate fi complet diferit. Cu toate acestea, confruntat de mai multe ori cu una sau alta problema si rezolvarea ei, te de fiecare dată când o faci mai repede, și în viitor se va scrie codul, mai puțin predispuse la astfel de erori.

De asemenea, trebuie menționat faptul că, în unele cazuri, soluția poate fi mai dificilă decât în ​​cazul descris aici. De exemplu, dacă creați teste folosind abordarea orientată către obiect cu utilizarea capacităților lingvistice JScript sau VBScript. găsi cauza poate fi mult mai complicată, deoarece TestComplete nu acceptă tranzițiile în metoda clic în jurnal.

Chiar și mai problematică poate fi de lucru cu obiecte care nu se poate „prinde“ de obiectul Spy (de exemplu, meniuri). În acest caz, va trebui să scrie o caracteristici suplimentare mici, care vor fi în jurnalul pentru a afișa o listă de proprietăți și metode disponibile (folosind metode și aqObject.GetProperties aqObject.GetMethods).

Pentru a afla mai multe despre TestComplete poate fi la următoarea sesiune de instruire. în cazul în care vom lua în considerare inclusiv procesarea evenimentelor, precum și diverși parametri TestComplete.

Cititi mai multe despre citit toate erorile pot fi luate în considerare în ghidul oficial TestComplete (în limba engleză).