Technisches Hiring

QA-Testergebnisse interpretieren: Testdaten wie ein Ingenieur lesen

ClarityHire Team(Editorial)7 min read

Die Metrik-Falle

Wenn Sie eine QA-Bewertung durchführen, erhalten Sie Daten. Geschriebene Codezeilen. Testfälle pro Stunde. Anzahl der Assertions. Abdeckungsquote. False-Positive-Rate. Ihr Instinkt ist, diese Metriken zu optimieren.

Das ist eine Falle.

Metriken sind Ergebnisse, keine Signale. Ein Kandidat, der Tests mit hoher Abdeckung in 90 Minuten schreibt, könnte gut in Speed-Testing sein. Ein Kandidat, der in 2,5 Stunden 3 solide Tests schreibt, könnte besser im Aufbau wartbaren Codes sein. Rohe Metriken zeigen dir nicht, welcher von beiden besser ist.

Du musst das Muster hinter den Metriken lesen.

Was man im Testfall-Design messen sollte

Wenn du eine eingereichte Testfall-Submission bewertest, zähle nicht nur die Fälle. Bewerte anhand dieser Kriterien:

1. Abdeckungstiefe (nicht Breite)

Ein Kandidat, der 5 Testfälle schreibt, jeder mit 3–4 gut durchdachten Schritten und klaren Assertions, ist stärker als einer, der 20 vage Fälle schreibt.

Achte auf:

  • Testen sie Happy Path, Fehlerfall, Grenzfall und Zustandsübergänge?
  • Konzentrieren sie sich auf Verhalten oder Implementierungsdetails?
  • Berücksichtigen sie Einschränkungen ("angenommen, die Datenbank hat 100.000 Benutzer, wir testen mit 50.000")?

Rotes Flagge: "Test, dass der Button existiert." Das ist kein Testfall. Das ist ein Schritt in einem Test.

Gutes Signal: "Test, dass der Massenimport das Dateiformat vor der Verarbeitung validiert. Stellen Sie eine CSV mit ungültigen Kopfzeilen bereit und überprüfen Sie, dass die Fehlermeldung den Benutzer anleitet, es zu beheben."

2. Urteilsvermögen bei der Priorisierung

Kennzeichnen sie Tests als kritisch, hoch, niedrig? Unterscheiden sie zwischen "Dingen, die kaputt gehen könnten" und "Dingen, die wir überprüfen möchten"?

Ein Kandidat, der 12 Fälle schreibt, 3–4 als kritisch markiert und erklärt, warum, zeigt Urteilsvermögen. Ein Kandidat mit 12 gleichberechtigten Fällen unterschätzt entweder die Bedeutung oder überlegt nicht.

Worauf du achten solltest: "Dieser Test ist kritisch, weil er die Zahlungsabwicklung beeinflusst." oder "Das ist niedrige Priorität, weil es eine kosmetische Validierung ist."

3. Umgebungsbewusstsein

Erwähnen sie Einrichtung? Fragen sie nach Daten? Berücksichtigen sie Voraussetzungen?

Schwach: "Test die Export-Funktion."

Stark: "Angenommen, der Benutzer hat 500 Datensätze zum Exportieren, überprüfe, dass die CSV alle Zeilen mit korrekter Feldzuordnung enthält. Hinweis: Wir benötigen produktionsähnliche Daten oder ein Seed-Skript dafür."

Was man im Automatisierungscode messen sollte

Wenn du Code erhältst, schaue nicht nur auf Bestanden/Nicht bestanden. Führe ihn aus, lies ihn und bewerte nach:

1. Selektor-Robustheit

Wie halten sich ihre Selektoren, wenn sich die Benutzeroberfläche ändert?

Anfälliger Selektor:

driver.findElement(By.cssSelector("body > div > div > div > button")).click();

Das bricht bei jeder Layout-Änderung. Sie sind entweder neu in der Automatisierung oder nehmen Abkürzungen.

Robuster Selektor:

driver.findElement(By.cssSelector("[aria-label='Import CSV']")).click();

Das prüft Barrierefreiheit und bleibt bei Umgestaltungen stabil.

Bewertung: Können ihre Selektoren kleinere UI-Änderungen überstehen? Falls nicht, sind das -2 auf einer 10er-Skala.

2. Wait-Strategie

Verwenden sie explizite Waits, implizite Waits oder (schlimmstenfalls) keine?

Keine Waits:

driver.findElement(By.id("submit")).click();
driver.findElement(By.id("success-message")).getText(); // Race Condition

Implizite Waits (OK, nicht ideal):

driver.manage().setTimeouts({implicit: 10000});

Explizite Waits (beste Lösung):

WebDriverWait(driver, 10).until(EC.presence_of_element_located((By.id, "success-message")));

Falls sie explizite Waits verwenden, verstehen sie Asynchronität. Falls nicht, haben sie instabile Tests in der Produktion.

Bewertung: Keine Waits = -3. Nur Implizit = -1. Explizit = 0.

3. Assertion-Qualität

Prüfen sie Verhalten oder nur das DOM?

Schwache Assertions:

assert(screen.getByText("Success"));

Das prüft nur, dass eine Nachricht erschien, nicht dass die Operation erfolgreich war.

Starke Assertions:

expect(await screen.findByText("5 rows imported successfully")).toBeInTheDocument();
expect(await screen.findByDisplayValue("import_status = completed")).toBeInTheDocument();

Das prüft sowohl die Nachricht ALS AUCH den zugrunde liegenden Zustand.

Bewertung: Assertions, die echtes Verhalten prüfen = +2. Assertions, die nur UI prüfen = 0. Fehlende Assertions = -2.

4. Code-Struktur und Wartbarkeit

Ist der Code DRY? Verwenden sie Page Objects, Fixtures oder Hilfsfunktionen?

Keine Struktur:

test("import csv", async () => {
  await page.goto(...);
  await page.fill('#email', '[email protected]');
  await page.fill('#password', 'password');
  await page.click('#login');
  // ... noch 40 weitere Zeilen für einen einzigen Test
});

Strukturiert:

const page = new ImportPage();
test("import csv with invalid headers", async () => {
  await page.login();
  await page.uploadCsv('invalid.csv');
  await page.expectError('Invalid CSV format');
});

Der zweite ist viel wartbarer. Wenn sich Login ändert, behebst du es an einer Stelle, nicht an drei.

Bewertung: Erhebliche Duplikation oder magische Zahlen = -2. Annehmbare Struktur = 0. Starke DRY mit Hilfsfunktionen = +1.

5. Abdeckung versus Über-Assertion

Haben sie den richtigen Umfang getestet oder alles?

Ein Test, der 15 Dinge behauptet, ist anfällig. Er schlägt fehl, wenn sich eine Sache ändert, was das Debuggen erschwert. Ein Test, der 2–3 wichtige Verhalten behauptet, ist fokussiert.

Zähle Assertions pro Test. Falls der Durchschnitt >4 ist, übertreiben sie. Falls <1, testen sie nicht genug.

Was man in Live-Interviews messen sollte

Das ist schwerer zu quantifizieren, aber achte auf folgende Signale:

1. Klarheit des Denkens

Wenn du fragst "Deine Regressionstestsuite dauert 3 Stunden, reduziere auf 1 Stunde", springen sie zu Lösungen oder stellen sie zunächst Fragen?

Schwach: "Führe weniger Tests aus."

Gut: "Wie oft deployen wir? Welcher Test ist am langsamsten? Welche Features sind für uns am kritischsten?" Sie grenzen das Problem ein, bevor sie Lösungen vorschlagen.

Score: Stellen sie 2–3 Klärungsfragen, bevor sie Lösungen vorschlagen? Falls ja, +2 beim Urteilsvermögen.

2. Artikulation von Trade-offs

Können sie erklären, was geopfert wird?

Schwach: "Wir überspringen einfach die langsameren Tests."

Gut: "Wenn wir uns auf die kritischen User Journeys konzentrieren—Login, Einkauf, Export—reduzieren wir die Zeit von 3 Stunden auf 45 Minuten. Wir opfern die Abdeckung von Edge Cases und internen Tools. Das Risiko ist, dass wir seltene Bugs übersehen. Akzeptabel, falls wir Monitoring und einen schnellen Hotfix-Prozess haben."

Der zweite zeigt, dass sie die Kosten jeder Entscheidung verstehen.

Score: Können sie artikulieren, was durch ihren Trade-off kaputt gehen könnte? +3 beim Urteilsvermögen.

3. Beweis von Erfahrung

Beziehen sie sich auf echte Situationen oder theoretisches Wissen?

Theoretisch: "In einer idealen Welt hätten wir umfassende Testabdeckung."

Aus Erfahrung: "Bei meinem letzten Unternehmen hatten wir 50 UI-Tests, die 4 Stunden dauerten. Wir reduzierten auf 15 kritische Tests—20 Minuten—und Incidents nahmen nicht zu, weil unsere Staging-Umgebung gut war. Daher würde ich vorschlagen, das hier zu investieren."

Echte Erfahrung ist wertvoller als Theorie. Nicht weil Theorie schlecht ist, sondern weil sie zeigt, was in der Praxis funktioniert hat.

Score: Beziehen sie sich auf eine echte Situation aus ihrem Hintergrund? +2.

Worauf du ignorieren solltest

  • Geschriebene Codezeilen: Mehr Code ≠ besserer Ingenieur. Prägnanter Code, der funktioniert, ist stärker.
  • Ausführungsgeschwindigkeit: Ein langsamer Test, der zuverlässig ist, ist besser als ein schneller Test, der instabil ist.
  • Ausgefallene Muster: Falls sie ein ausgefallenes Design-Pattern verwenden, aber es ist nicht nötig, ist das über-engineering, keine Fähigkeit.
  • Sprachpräferenz: Es spielt keine Rolle, ob sie Python oder JavaScript für Test-Utilities verwenden. Was zählt, ist Lesbarkeit.

Alles zusammen: Ein Bewertungs-Rahmen

Erstelle eine einfache Rubrik:

KategorieSchwach (1)Akzeptabel (2)Stark (3)
Test-DesignVage Fälle, keine PrioritätKlare Fälle, einige PrioritätGründliche Fälle, klare Priorität, Umgebungsbewusstsein
Code-QualitätAnfällig, keine Waits, magischAnnehmbare Struktur, Waits, klarDRY, robust, wartbar, gut asserted
UrteilsvermögenKeine Begründung, eine IdeeBerücksichtigt Trade-offsStellt Fragen, artikuliert Risiko, evidenzbasiert
Framework-WissenSyntax-Fehler, falsche MusterGültiger Code, grundlegende MusterIdiomatischer Code, handhabt Edge Cases

Bewerte jeden Kandidaten in jeder Kategorie. Eine 3 über alle Kategorien ist eine starke Einstellung. Eine Mischung aus 2ern und 3ern ist in Ordnung (jeder hat Schwächen). Eine 1 irgendwo ist ein rotes Flagge.

Zähle deine Bewertungen zusammen. Obsediere nicht über die Zahl. Nutze sie, um Kandidaten konsistent zu vergleichen.

Das Muster, das du suchst

Das beste Ergebnis einer QA-Bewertung sieht so aus:

  • Starkes Test-Design (klares Denken)
  • Annehmbare Code-Qualität (praktische Erfahrung)
  • Gutes Urteilsvermögen im Interview (Entscheidungsfähigkeit)
  • Eine Sache, bei der sie außergewöhnlich sind (vielleicht Selektoren, vielleicht Framework-Wissen, vielleicht Prozess-Denken)

Diese Person wird lernen, wachsen und Test-Suites über Jahre hinweg warten. Das ist die Einstellung.

qatest-automationassessment metricshiring data

Verwandte Artikel