Was der Backend-Tester wissen sollte



Ich werde oft gefragt, was ich lesen soll, bevor ich mich für die Position eines Backend-Testers befrage. Und bei meiner Arbeit stoße ich auf die Tatsache, dass viele Bewerber nicht immer verstehen, was im Interview passieren wird, und unvorbereitet sind. So entstand die Idee, nützliche Informationen in einem Artikel zu sammeln.

FunCorp hat eine Liste von Themen mit Fragen, die wir Kandidaten stellen. Ich habe beschlossen, es zu ergänzen, universeller zu gestalten, jedes Thema in Ebenen aufzuteilen (was Sie wissen müssen und was ein Plus sein wird) und Links zu Artikeln und Büchern hinzuzufügen, die zu diesen Themen gelesen werden können.

Welche Probleme dieser Text zu lösen hilft: Kandidat - Vorbereitung auf ein Interview, jeder Backend-Tester - Aktualisierung des Wissens, Frontend-Tester oder Tester für mobile Apps - Erweiterung seines Horizonts. Arbeitgeber können die Liste verwenden, um Jobanforderungen zu erstellen.

Notwendiges Wissen


Ich mache gleich eine Bemerkung: Die erforderlichen Kenntnisse und Fähigkeiten hängen von den Besonderheiten der offenen Stelle ab. Wenn es bei der offenen Stelle darum geht, die API zu testen, in der HTTP verwendet wird, müssen Sie HTTP sehr gut kennen und die Nuancen des Betriebssystems nicht kennen. Wenn Sie mit Windows arbeiten, müssen Sie bash nicht kennen.

Ich möchte auch Arbeitgeber ansprechen: Fragen Sie nicht nach Speicherverwaltung unter Linux, einem Kandidaten für die Position des Mobile QA Engineer, dies ist für ihn bei seiner Arbeit unwahrscheinlich.
Ich erwähne keine Programmiersprachen, da dies stark vom verwendeten Stack abhängt. Bei Interviews mit Testern werden sie jedoch häufig überhaupt nicht gefragt (andernfalls geben sie in der Stellenbeschreibung den erforderlichen Kenntnisstand der Sprache an).

Zu vielen Themen werde ich Links bereitstellen, auch zu Wikipedia. Ja, obwohl dies nicht die qualitativ hochwertigste Informationsquelle ist, glaube ich, dass sie für eine oberflächliche Untersuchung des Themas oder für erfrischendes Wissen gut geeignet ist und gut ist, da in jedem Artikel viele Links zu anderen Artikeln in einem bestimmten Themenbereich vorhanden sind. In jedem Fall stelle ich Links zu anderen Artikeln und Büchern zur Verfügung, damit jeder die geeignete Informationsquelle für sich selbst auswählen kann.

Testtheorie


Ich beginne vielleicht mit dem offensichtlichsten, aber nicht dem eindeutigsten: Einige Teamleiter können Sie beim Interview in allen Begriffen und Konzepten antreiben, andere werden überhaupt nichts fragen.

Was wird von einem Kandidaten erwartet?


Kenntnisse über grundlegende Begriffe, Testdesign-Techniken und die Fähigkeit, einen Qualitätsfehlerbericht zu schreiben.

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Formal sind dies ISTQB-Zertifikate.

Was zum Thema zu lesen


Es gibt einen guten Artikel über Habré mit allen notwendigen Informationen. Wenn Sie die Testtheorie genauer verstehen möchten, können Sie die ISTQB-Materialien lesen .

Schale


Abhängig vom Betriebssystem müssen Sie entweder Bash (sh, zsh usw., aber die Nuancen spielen wahrscheinlich keine bedeutende Rolle) oder CMD und PowerShell kennen.

Was wird von einem Kandidaten erwartet?


Kenntnis grundlegender Befehle.

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Der Kandidat kennt viele Befehle, verschiedene Optionen für sie, ihre Vor- und Nachteile, verschiedene Verwendungsmöglichkeiten sowie Tools zum Debuggen von Problemen, z. B. strace , tcpdump , gdb und andere.

Was zum Thema zu lesen


Sie können in einem meiner vorherigen Artikel über die Hauptbefehle unter Linux lesen , und es gibt auch ein sehr cooles Repository mit einer Reihe von Beispielen auf GitHub . Aus den Büchern würde ich "UNIX Operating System" von Robachevsky, Nemnyugin und Stesik empfehlen - es geht nicht nur um Teams, sondern um das gesamte System.
Sie können über CMD Befehle lesen hier , aber Powershell hat einige gute Dokumentation .

HTTP (oder die in der Jobbeschreibung angegebenen Protokolle)


Sehr oft wird HTTP als Hauptprotokoll für die Client-Server-Architektur ausgewählt, daher wird häufig nach diesem Protokoll gefragt. Möglicherweise müssen Sie jedoch IMAP, POP3, SMTP (wenn Sie E-Mails testen), Protobuf oder MessagePack oder andere Protokolle kennen. 

Was wird von einem Kandidaten erwartet?


Es hängt alles von der Verbreitung des Protokolls ab. Es ist unwahrscheinlich, dass sie Ihnen einen binären Datenverkehrsauszug geben und Sie bitten, ihn auf einem Blatt Papier von Protobuf zu deserialisieren. Wenn es sich jedoch um HTTP handelt, müssen Sie ihn auf einer guten Ebene kennen: die Struktur der Anforderung und Antwort, die Hauptheader, Methoden, Antwortcodes, HTTPS.

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Der Kandidat kann Fragen zu Caching, Datenkomprimierung, Cookies und der Verwendung verschiedener Header in HTTP beantworten. Bei anderen Protokollen ist alles subjektiver.

Was zum Thema zu lesen


Über HTTP finden Sie alle erforderlichen Informationen auf Wikipedia . Für andere Protokolle empfehle ich Ihnen, deren Dokumentation und Spezifikationen zu lesen. Vergessen Sie auch nicht HTTPS . Natürlich sollten Sie immer Links zu RFC 2616 und RFC 7540 zur Hand haben (aber es gibt andere Spezifikationen ).

Netzwerkprotokolle der unteren Schicht


Viele Kandidaten haben keine Ahnung, was unter HTTP steht. Ich glaube, dass dies sie nicht sehr gut charakterisiert, da der Tester einen forschenden Verstand und eine moderate Neugier haben muss, daher muss ich allgemein über das OSI-Netzwerkmodell Bescheid wissen.

Was wird von einem Kandidaten erwartet?


Der Kandidat sollte wissen, dass es TCP-, UDP- und IP-Protokolle gibt, und deren Wesen verstehen.

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Der Kandidat versteht den Funktionsmechanismus des TCP-Protokolls (Drei-Wege-Handshake, einige Felder aus dem Header, Flags, ein Schiebefenster) und kann die Nachteile und Vorteile von TCP und UDP, ihre Anwendungsbereiche und allgemeine IP-Kenntnisse benennen. Es ist cool, wenn der Kandidat kurz und bündig über andere Protokolle (z. B. ARP, ICMP, ICMPv6) informiert.

Was zum Thema zu lesen


Grundkenntnisse erhalten Sie in Wikipedia-Artikeln: OSI- , TCP- , UDP- , IP- , IPv6- , ICMP- , ARP- , ICMPv6- Netzwerkmodell . Wenn Sie in dieses Thema eintauchen möchten, können Sie „Computer Networks“ von Tanenbaum lesen .

Datenbank


Was wird von einem Kandidaten erwartet?


Grundlegende SQL-Abfragen (jedermanns Lieblings-JOIN).

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Allgemeinwissen über verschiedene DBMS, Replikation, Sharding, interne Struktur eines DBMS, Allgemeinwissen über nicht relationale Datenbanken.

Was zum Thema zu lesen


Im Allgemeinen finden Sie Informationen zu Datenbanken in der Dokumentation zu einem bestimmten DBMS. Wenn Sie sich ausführlich mit Datenbanken befassen möchten, empfehle ich die entsprechenden Kapitel von Kleppmans „Highly Loaded Applications“ .

OOP


Was wird von einem Kandidaten erwartet?


Kenntnis der Grundprinzipien von OOP.

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Es wird cool sein, wenn der Kandidat einige Muster kennt.

Was zum Thema zu lesen


Sie können über Prinzipien lesen, zum Beispiel hier , über Muster - hier . Es gibt auch ein cooles Buch „Objektorientierte Programmiertechniken. Design Patterns "Viererbande".

Betriebssysteme


Was wird von einem Kandidaten erwartet?


Für die meisten offenen Stellen von Testern ist die Kenntnis der Nuancen von Betriebssystemen nicht relevant.

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Es ist cool, wenn der Kandidat etwas über Speicherverwaltung, Kernel und Stack, die Erstellung neuer Prozesse und deren Sheduling, Dateisysteme und mehr weiß.

Was zum Thema zu lesen


Kurz gesagt, können Sie in dem bereits erwähnten Buch "UNIX Operating System" von Robachevsky, Nemnyugin und Stesik lesen. Wenn das Thema von Interesse ist, können Sie es beispielsweise mit den modernen Betriebssystemen von Tanenbaum untersuchen. Im Allgemeinen können Sie sich mit dem Thema über Wikipedia vertraut machen: Es gibt Artikel über den Linux-Kernel , den virtuellen Speicher , den Kontextwechsel und andere.

Rechnerarchitektur


Was wird von einem Kandidaten erwartet?


Für die meisten offenen Stellen der Tester ist die Kenntnis der Nuancen der Prozessoren, des Speichers und der Peripheriegeräte nicht relevant.

Was darauf hindeutet, dass der Kandidat das Thema gut kennt


Es ist großartig, wenn der Kandidat allgemein über den Prozessor, die Register, die Caches, den Speicher und die Festplatte usw. Bescheid weiß.

Was zum Thema zu lesen


Mit Wikipedia können Sie sich oberflächlich mit Hardware vertraut machen: CPU , Prozessormodus , Mikroarchitektur (in diesem Artikel gibt es viele Links zu anderen verwandten Artikeln), Cache , ALU , Pipeline , Verzweigungsprädiktor , Superskalarität usw. Dieses Thema kann beispielsweise mit dem Buch „ Computer Architecture“ von Tanenbaum ganzheitlicher und tiefer untersucht werden .

Algorithmen und Datenstrukturen


Höchstwahrscheinlich stellen sie keine Fragen zu Algorithmen und Datenstrukturen (insbesondere wenn sich die Position nicht auf der Ebene der Praktikanten oder Junioren befindet), aber Sie müssen noch einige allgemeine Dinge wissen. Persönlich wurde ich bei einem Interview nur einmal nach dem binären Haufen gefragt, und ich selbst bin auch kein Fan davon, Kandidaten danach zu fragen. Daher werde ich keine Kriterien einführen und nur einen Artikel mit guten Bildern anhängen , Sie können sie ausdrucken und an prominenter Stelle platzieren. Wenn Sie mit Ihrem Kopf in Algorithmen und Datenstrukturen eintauchen möchten, können Sie mit dem Lesen von „Algorithmen. Entwicklungshandbuch “ Skien oder “ Algorithmen. Konstruktion und Analyse “ Cormen.

Andere


  1. Viele, in denen Docker verwendet wird .
  2. (« »).
  3. REST SOAP.
  4. JSON XML.
  5. Protocol Buffers, MessagePack BSON.
  6. TLS.
  7. Git ( VCS).
  8. Nginx Apache.
  9. .
  10. TeamCity Jenkins ( CI-).



, google.com Enter?


Eine klassische Aufgabe, mit der Sie überprüfen können, wie gut ein Kandidat Webtechnologien im Allgemeinen versteht. Es gibt eine detaillierte Analyse dieser Aufgabe bei Habré, aber ich empfehle nicht, in die Nuancen des Typs "Eine kleine Strommenge wird durch den Schaltplan der Tastatur gesendet" zu lesen.

Testen eines Formulars mit einer Schaltfläche


Ja, diese Aufgabe wird häufig beim Interview mit Backend-Testern gestellt. Die Aufgabe ist klassisch, daher ist es cool, wenn der Kandidat ein bisschen phantasiert und sich mit einem Knopf vorstellt, was sich hinter diesem Knopf befindet. Beispielsweise können wir davon ausgehen, dass die Daten vom Formular zum Backend gehen, das aus mehreren Servern und der Datenbank besteht, dass das Backend Protokolle schreibt und über eine Konfiguration verfügt. Dadurch werden sofort viele Testfälle hinzugefügt, die tiefer liegen als „Geben Sie einen zu langen Wert in das Eingabefeld ein“. . Sie können beispielsweise tcpdump verwenden, um festzustellen , ob der Datenverkehr genau an alle Back-End-Server gesendet wird. Sie können versuchen, SQL-Injection oder defektes JSON zu senden (natürlich, wenn sich JSON plötzlich im Kontext der Aufgabe befindet). Sie können überprüfen, was passiert, wenn die Protokolle den gesamten freien Speicherplatz auf der Festplatte belegen. Sie können das System überprüfen, wennein sicheres Backend , die Richtigkeit des Hinzufügens von Daten zur Datenbank usw. So wird der Kandidat seinen weiten Horizont zeigen, was ihm zweifellos zugute kommen wird.

Servicetests


Eine Variation der vorherigen Aufgabe: Beispielsweise gibt es einen Dienst, der den Port überwacht und JSON als Eingabe empfängt und im selben Format antwortet. Alles ist ähnlich, nur gibt es keinen Ausstecher, also brauchen Sie keine Angst davor zu haben. Wir stellen über Telnet eine Verbindung zum Port her , und dann ist alles gleich.

Testen des REST-API-Endpunkts


Und wieder ist alles gleich, nur mit HTTP (höchstwahrscheinlich). Hier können Sie Kenntnisse über das HTTP-Protokoll demonstrieren: Überprüfen Sie beispielsweise den Betrieb des Dienstes, wenn die Anforderung verschiedene Header enthält.

Natürlich können Sie kein universelles Schulungshandbuch für die Vorbereitung eines Backend-Testers von Grund auf neu erstellen: Alles hängt von den Besonderheiten des Unternehmens, den Besonderheiten der Abteilung und dem Teamleiter ab. Und die Technologie steht nicht still: Bis vor kurzem wurde Docker nicht aktiv genutzt, und jetzt kann die Erfahrung damit ein großes Plus sein. Ich habe jedoch versucht, grundlegende Dinge an einem Ort zu sammeln. Wenn dies dazu beiträgt, Arbeit für mindestens eine Person vorzubereiten und zu finden, habe ich diesen Artikel aus gutem Grund geschrieben.

PS Ich empfehle auch , den Artikel meines Kollegen „Das Bild eines modernen Testers. Was Sie wissen und können müssen “Es werden verschiedene Entwicklungsrichtungen für Tester beschrieben.

All Articles