Heim >Backend-Entwicklung >Python-Tutorial >Häufig gestellte Fragen und Antworten zum Python-Automatisierungstest-Interview

Häufig gestellte Fragen und Antworten zum Python-Automatisierungstest-Interview

王林
王林nach vorne
2023-04-27 15:31:072305Durchsuche

1. Welche Projekte eignen sich für automatisierte Tests?

Schlüsselwörter: unverändert, repetitiv, standardisiert

1) Der Aufgabentest ist klar und die Anforderungen ändern sich nicht häufig

2) Projekt The Der Zyklus sollte lang genug sein

3) Das automatisierte Testskript kann wiederverwendet werden, z. B. für häufigere Regressionstests

4) Die Entwicklung des zu testenden Softwaresystems ist relativ standardisiert und kann die Testbarkeit des Systems sicherstellen 🎜#2. Was ist das PO-Modell?

bezieht sich auf die Konvertierung einer bestimmten Seite in ein Objekt in einer Programmiersprache, auf Seiteneigenschaften in Objekteigenschaften und auf Seitenoperationen in Objektmethoden.

1) Im Allgemeinen wird jede Seite als Objekt betrachtet, und die Seitenebene schreibt Positionierungselementmethoden und Seitenoperationsmethoden.

2) Die Anwendungsfallschicht ruft Operationsmethoden auf von der Seitenebene, geschrieben als Anwendungsfall

3) Es kann Positionierungselemente und Skripte trennen

4) Es wird hauptsächlich verwendet, um eine Trennung von Seitenoperationen und Tests zu erreichen Logik

#🎜 🎜#3. Was sind die Kapselungsprinzipien des PO-Modus?

1) Um die Funktionen oder Dienste auf der Seite zu kapseln, wenn Sie beispielsweise auf das Seitenelement klicken, um eine neue Seite aufzurufen, können Sie die Methode „Neue Seite eingeben“ für diesen Dienst kapseln # 🎜🎜##🎜🎜 #2) Kapseln Sie Details, geben Sie nur Methodennamen oder Schnittstellen an die Außenwelt weiter, versuchen Sie, die Interna der Seite nicht offenzulegen

3) Verwenden Sie keine Assertionen in gekapselten Operationsdetails , Assertionen in separate Module einfügen, #🎜 🎜#

4) Durch Klicken auf eine Schaltfläche wird eine neue Seite geöffnet. Sie können zum Beispiel die Return-Methode verwenden, um zur Startseite zu springen #🎜🎜 #

5) Sie müssen nicht die gesamte PO kapseln. Das Verhalten der gesamten Seite wird entsprechend der verwendeten Logik gekapselt.

6) Eine Aktion kann beispielsweise zu unterschiedlichen Ergebnissen führen. Nach dem Klicken auf eine Schaltfläche können zwei Methoden für die beiden Ergebnisse gekapselt werden: click_success und click_error

4 Was sind die Funktionen von *args und **kwargs in Python?

sind alle Parameter variabler Länge, wodurch das Problem nicht festgelegter Parameter gelöst wird.

args sind Nicht-Schlüsselwortparameter, die für Tupel verwendet werden; kwargs sind Schlüsselwortparameter (Wörterbücher)

Das heißt, args repräsentiert mehrere unbenannte Parameter, während kwags einen darstellt Schlüsselwortparameter mit entsprechenden Beziehungen.

Sie müssen bei der Verwendung darauf achten, dass *args vor **kwags stehen, da sonst ein Syntaxfehler auftritt.

5. Was ist der Garbage-Collection-Mechanismus in Python?

Garbage Collection (Garbage Collection), auch als GC bezeichnet, ist ein Mechanismus, der mit dem Python-Interpreter geliefert wird und speziell für die Garbage Collection verwendet wird.

Beim Definieren einer Variablen wird Speicherplatz beansprucht. Wenn die Variable aufgebraucht ist, sollte auch der von der Variablen belegte Speicherplatz freigegeben werden, und Python wird vom GC-Mechanismus recycelt.

Unabhängig von der Art des Speicherbereinigungsmechanismus ist er im Allgemeinen in zwei Phasen unterteilt: Speicherbereinigung und Speicherbereinigung.

Bei der Müllerkennung wird zwischen „recycelbarem“ und „nicht recycelbarem“ Speicher im zugewiesenen Speicher unterschieden.

Garbage Collection ermöglicht es dem Betriebssystem, die Kontrolle über die wiederverwertbaren Speicherblöcke zurückzugewinnen, die während der Garbage-Erkennungsphase identifiziert wurden.

Die sogenannte Garbage Collection löscht die Daten in diesem Speicher nicht direkt, sondern gibt das Nutzungsrecht an das Betriebssystem zurück, sodass dieser nicht durch Anwendungen belegt wird.

Was ist Müll

1) Wenn eine Variable aufgerufen wird und nicht mehr benötigt wird, ist sie Müll.

2) Wenn der Variablenname, der auf die Variablenadresse zeigt, auf eine andere Adresse zeigt, kann nicht auf die ursprüngliche Variablenspeicheradresse zugegriffen werden und die Variable ist ebenfalls Müll.

6. Wie findet man versteckte Elemente in Selen?

Erstens kann Selenium keine versteckten Elemente bedienen (aber es kann normal positioniert werden). Wenn Sie versteckte Elemente bedienen müssen, verwenden Sie zum Betrieb die js-Methode Bietet Es gibt einen Eingang zum Ausführen von JS-Skripten.

Das Ausblenden und Anzeigen von Elementen wird hauptsächlich durch die Attribute type="hidden" und style="display: none;" gesteuert.

7. Der Unterschied zwischen Beenden und Schließen beim Schließen des Browsers

Vereinfacht gesagt können beide die Funktion zum Beenden der Browsersitzung realisieren.

Schließen schließt nur den Browser, während durch Beenden alle Browser geschlossen und auch der Treiberprozess beendet wird

8 Nennen Sie Beispiele für Ausnahmen, auf die Sie gestoßen sind#🎜 🎜##🎜 🎜#Häufig gestellte Fragen und Antworten zum Python-Automatisierungstest-Interview

ElementNotSelectableException: Das Element kann nicht ausgewählt werden.

ElementNotVisibleException: Das Element ist nicht sichtbar #NoSuchAttributeException: Keine solche Attributausnahme

NoSuchElementException: Keine solche Elementausnahme 🎜#NoSuchFrameException: Keine Frame-Ausnahme: Das Element ist am aktuellen Punkt unsichtbar

# 🎜🎜#

    9. Wie gehe ich mit dem Alarm-Popup-Fenster um?
  • 1) Verwenden Sie zunächst die Methode switch_to_alert(), um zum Alarm-Popup-Feld zu wechseln.

  • 2) Sie können die Textmethode verwenden, um die Popup-Textinformationen abzurufen
  • 3 ) Klicken Sie auf die Schaltfläche „Bestätigen“ über „accept()“

  • 4) Klicken Sie auf die Schaltfläche „Abbrechen“ über „dismiss()“, um das Popup-Fenster abzubrechen
  • #🎜🎜 #5) Holen Sie sich den Text des Popup-Fensters über text()#🎜 🎜#

    10 Wie gehe ich mit mehreren Fenstern in Selen um?

  • Handle: die eindeutige Kennung des Fensters
  • 1) Rufen Sie zuerst das Handle des aktuellen Fensters ab. drivers.current_window_handle

    2) Rufen Sie dann alle Fensterhandles ab. drivers.window_handle

    3) Schleife, um festzustellen, ob Sie möchten: Wenn es sich um das zu bedienende Fenster handelt, können Sie das Fenster bedienen. Wenn dies nicht der Fall ist, verwenden Sie die Methode „driver.switch_to_window“, um zu einem neuen Fenster zu springen.

    11. Wie kann man feststellen, ob ein Element in Selen vorhanden ist?

    Selenium bietet keine native Methode, um festzustellen, ob ein Element vorhanden ist. Im Allgemeinen können wir dies durch Positionierung des Elements + Ausnahmeerfassung feststellen.

    Häufig gestellte Fragen und Antworten zum Python-Automatisierungstest-Interview

    12. Welche drei Arten des Wartens gibt es in der Automatisierung? Was sind ihre Eigenschaften?

    1) Thread-Warten (erzwungenes Warten) wie time.sleep(2): Der Thread wird für 2 Sekunden in den Ruhezustand versetzt. Nach 2 Sekunden wird der nachfolgende Code ausgeführt. Es wird empfohlen, sparsam zu verwenden.

    2) imlicitlyWait (implizites Warten) sucht weiterhin nach Elementen innerhalb des angegebenen Zeitbereichs, bis das Element gefunden wird oder eine Zeitüberschreitung auftritt. Das Merkmal ist, dass Sie warten müssen, bis die gesamte Seite geladen ist.

    3) WebDriverWait (explizites Warten) ist normalerweise ein Funktionscode, den wir anpassen. Dieser Code wird verwendet, um auf das Laden eines Elements zu warten, bevor mit der Ausführung von nachfolgendem Code fortgefahren wird.

    13. Wie kann die Erfolgsquote von Betriebselementen in Selen sichergestellt werden? Mit anderen Worten: Wie kann sichergestellt werden, dass das angeklickte Element anklickbar sein muss?

    1) Verwenden Sie WebDriverWait(), um explizit zu warten, auf das Laden des Elements zu warten und dann Elementoperationen auszuführen.

    2) Versuchen Sie, unnötige Vorgänge zu reduzieren: Wenn Sie direkt auf die Seite zugreifen können, greifen Sie nicht darauf zu, indem Sie auf

    3) Das Laden einiger Seiten dauert zu lange Erwägen Sie, den Ladevorgang zu unterbrechen. # 🎜🎜#

    4) Entwickler sollten Entwicklungsgewohnheiten standardisieren, z. B. das Hinzufügen eindeutiger Namen, IDs usw. zu Seitenelementen.

    14. Wie kann die Ausführungsgeschwindigkeit von Selenium-Skripten verbessert werden?

    1) Verwenden Sie explizites Warten, um den Einsatz von erzwungenem oder implizitem Warten zu reduzieren.

    2) Reduzieren Sie unnötige Schritte.

    3) Wenn die Seite zu viel Inhalt lädt, legen Sie ein Timeout fest, um das Laden der Seite zu unterbrechen.

    15. Anwendungsfälle werden während des Betriebs oft instabil. Das heißt, wenn sie dieses Mal bestehen können, werden sie beim nächsten Mal nicht bestehen.

    1) Versuchen Sie, eine explizite Wartezeit hinzuzufügen, bevor die Elemente, die häufig nicht erkannt werden, und warten Sie, bis das zu bedienende Element angezeigt wird, bevor Sie die folgenden Vorgänge ausführen.

    2) Versuchen Sie, Ausnahmen abzufangen und zu behandeln.

    3) Versuchen Sie, eine dedizierte Testumgebung zu verwenden, um zu vermeiden, dass andere Arten von Tests gleichzeitig ausgeführt werden und Störungen verursachen die Daten

    #🎜 🎜#16 Was ist die Ausführungsstrategie für Ihre Automatisierungsanwendungsfälle?

    Die Ausführungsstrategie automatisierter Testfälle hängt vom Zweck des automatisierten Testens ab. Es gibt normalerweise die folgenden Strategien:

    1) Automatisierte Testfälle werden hier unten verwendet Zu diesem Zweck kann der automatisierte Testfall so eingestellt werden, dass er regelmäßig ausgeführt wird. Wenn er alle fünf Minuten oder eine Stunde ausgeführt wird, erstellen Sie einfach eine geplante Aufgabe auf Jenkins.

    2) Anwendungsfälle, die zurückgegeben werden müssen. Stellen Sie den Testfall auf getriggerte Ausführung ein und binden Sie die automatisierte Testaufgabe an die Entwicklungs-Build-Aufgabe auf Jenkins. Wenn Entwickler in der Simulationsumgebung programmieren, werden automatisierte Testfälle ausgelöst und ausgeführt.

    3) Testfälle, die nicht häufig ausgeführt werden müssen. Wie bei vollständigen Testfällen ist es nicht erforderlich, ständig zur Ausführung zurückzukehren, und einige nicht zum Hauptgeschäft gehörende Geschäftsbereiche müssen nicht von Zeit zu Zeit zurückkehren. Diese Art von Testfall wird manuell ausgeführt. Erstellen Sie eine Aufgabe in Jenkins und erstellen Sie sie manuell, wenn sie ausgeführt werden muss.

    17. Was ist kontinuierliche Integration?

    Kontinuierliche Integration ist eine Softwareentwicklungspraxis, bei der Teamentwicklungsmitglieder häufig Code in den Stamm integrieren, was bedeutet, dass jeden Tag mehrere Integrationen stattfinden können.

    Es hat zwei Hauptvorteile:

    1) Fehler schnell erkennen. Jedes Mal, wenn ein Update abgeschlossen ist, wird es in den Backbone integriert. Fehler können so schnell entdeckt werden und es ist einfacher, Fehler zu lokalisieren.

    2) Verhindern Sie, dass Äste stark vom Stamm abweichen. Wenn die Integration nicht häufig erfolgt und das Backbone ständig aktualisiert wird, wird die Integration in Zukunft schwieriger oder sogar schwieriger.

    Zweck:

    Der Zweck der kontinuierlichen Integration besteht darin, eine schnelle Iteration von Produkten bei gleichzeitiger Beibehaltung einer hohen Qualität zu ermöglichen. Seine Kernmaßnahme besteht darin, dass der Code, bevor er in den Trunk integriert wird, automatisierte Tests bestehen muss. Solange ein Testfall fehlschlägt, kann er nicht integriert werden.

    18. Müssen Sie zur Datenüberprüfung während automatisierter Tests eine Verbindung zur Datenbank herstellen?

    Erforderlich für Schnittstellentests, nicht erforderlich für UI-Automatisierung

    19 Welche häufig verwendeten Positionierungsmethoden für Elemente gibt es? Welches bevorzugen Sie am meisten und warum?

    8 Typen, nämlich: ID, Name, Klassenname, Tag-Name, Linktext, teilweiser Linktext, xpath, css

    Der Typ, den ich am häufigsten verwende, ist xpath (bzw CssSelector)

    Da die Attribute von HTML-Tags in vielen Fällen nicht standardisiert genug sind und nicht durch ein einzelnes Attribut positioniert werden können, kann xpath derzeit nur verwendet werden, um die Positionierung des eindeutigen Elements zu erreichen#. 🎜🎜##🎜🎜 #Tatsächlich ist die ID die schnellste Positionierung, da die ID eindeutig ist, die meisten Entwickler jedoch keine ID festlegen.

    20. Wie finde ich dynamisch geladene Elemente auf der Seite?

    Dynamische Attributänderungen bedeuten, dass das Element keinen festen Attributwert hat, sodass es nur durch relative Positionierung, z. B. durch die xpath-Achse, positioniert werden kann, um den übergeordneten oder untergeordneten Knoten des Elements zu finden

    21 Wartet Selen nach dem Klicken auf den Link automatisch auf das Laden der Seite?

    Auf keinen Fall.

    Wenn Selenium den Ladevorgang einer Seite noch nicht abgeschlossen hat und Seitenressourcen anfordert, wird daher manchmal fälschlicherweise gemeldet, dass dieses Element nicht vorhanden ist.
    Also sollten wir zunächst darüber nachdenken, ob Selenium mit dem Laden dieser Seite fertig ist. Zweitens finden Sie das Element über die Funktion. (Verwenden Sie „Display Wait“, um zu warten, bis die Seite geladen ist, bevor Sie Elemente bedienen.)

    22. Was ist das Prinzip des Webdriver-Clients?

    Nachdem Selenium gestartet wurde, fungiert der Treiber als Server und kommuniziert mit dem Client und dem Browser. Der Client sendet Anfragen an den Treiber gemäß dem Webdriver-Protokoll. Der Treiber analysiert die Anfrage, führt entsprechende Vorgänge im Browser aus und gibt die Ausführungsergebnisse an den Client zurück.

    23. Was ist das Protokoll von Webdriver?

    Das WebDriver Wire Protocol

    24. Welches WebDriver-Protokoll wird beim Starten des Browsers verwendet?

    http-Protokoll

    25. Wie wähle ich eine Option mit dem Wert=xx in einem Dropdown-Feld aus?

    1) Die in der Select-Klasse bereitgestellte Methode: select_by_value ("xxx")
    2) Die Syntax von xpath kann auch gefunden werden

    26 Was sind die gängigen variablen Parametertypen und unveränderlichen Parametertypen in Python?

    Zu den unveränderlichen Datentypen gehören: Ganzzahlen, Gleitkommazahlen, negative Zahlen, Boolesche Werte, Zeichenfolgen, Tupel.

    Variable Parametertypen umfassen: Wörterbücher, Listen, Mengen

    27. So markieren Sie Elemente nach der Positionierung (zu Debugging-Zwecken). ?

    Elementattribute zurücksetzen und Hintergrund und Rahmen zu positionierten Elementen hinzufügen

    28. Was ist eine Behauptung?

    Behauptung, um festzustellen, ob die Testergebnisse mit den erwarteten Ergebnissen übereinstimmen.

    Der Zweck besteht darin, die von Softwareentwicklern erwarteten Ergebnisse auszudrücken und zu überprüfen. Wenn das Programm bis zur Behauptungsposition ausgeführt wird, sollte die entsprechende Behauptung wahr sein. Wenn die Behauptung nicht wahr ist, bricht das Programm die Ausführung ab und gibt eine Fehlermeldung aus.

    29/Auf welche Probleme sind Sie während des automatisierten Testprozesses gestoßen und wie haben Sie diese gelöst?

    1) Häufige Seitenänderungen, oft Änderung des Codes in der Seitenobjektklasse

    2) Automatisierte Tests führen gelegentlich zu falsch positiven Ergebnissen

    3) Automatisierte Testergebnisse werden überschrieben: Jenkins erstellt Ordner basierend auf der Zeit

    4 ) Automatisierter Testcode Die Wartung ist aufwändiger drivers.navigate().back() //Zurück

    driver.navigate0.efresh() //Aktualisieren

Das obige ist der detaillierte Inhalt vonHäufig gestellte Fragen und Antworten zum Python-Automatisierungstest-Interview. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen