Zurück zur Artikelliste Artikel
12 Leseminuten

SQL-Interview-Fragen für Software-Tester

SQL ist eine wichtige Fähigkeit für Software-Tester. Wie sollten sie sonst an die zu testenden Daten kommen? Vorstellungsgespräche für diese Stellen können Ihnen mehrere Fragen zu SQL-Softwaretests stellen. Wenn Sie sich also auf ein Vorstellungsgespräch vorbereiten, müssen Sie wissen, wie Sie diese zehn häufigen SQL-Fragen beantworten können.

Warum enthalten die Fragen in Vorstellungsgesprächen zum Softwaretesten SQL? Nun, Softwaretester verwenden die strukturierte Abfragesprache häufig bei ihren täglichen Aufgaben. Sie verwenden sie zum Beispiel, um:

  • Daten zwischen Anwendungen und Datenbanken zu validieren.
  • Benutzerkonten zu finden, die die zu testenden Kriterien erfüllen.
  • Testdaten aus Datenbanken abzurufen
  • Fehler in den in Datenbanken gespeicherten Daten zu überprüfen.
  • die in der Datenbank implementierte Geschäftslogik zu überprüfen.

Das gemeinsame Wort ist hier "Datenbank", was die Domäne von SQL ist; es wurde entwickelt, um Daten in Datenbanken zu verarbeiten.

Aufgrund seiner Bedeutung für die täglichen Aufgaben des Softwaretests wird SQL auch häufig in Vorstellungsgesprächen zum Thema Softwaretests abgefragt. In den Fragen werden in der Regel sowohl theoretische als auch praktische SQL-Kenntnisse abgefragt. Der beste Weg, sich auf das Vorstellungsgespräch vorzubereiten, besteht darin, sich über die von Software-Testern verwendeten SQL-Konzepte zu informieren und so viele Codierungsaufgaben zu lösen, die diese Themen betreffen wie möglich.

Es ist also sehr empfehlenswert, weitere Artikel wie diesen oder andere Listen mit SQL-Interviewfragen zu finden. Vielleicht möchten Sie auch Kurse besuchen, die sich auf das benötigte Wissen konzentrieren, wie z. B. unseren SQL für Anfänger Kurs. Die Themen reichen vom Abrufen von Daten aus einer Datenbank, dem Erstellen grundlegender Berichte und dem Filtern von Daten mit WHERE bis hin zur Arbeit mit JOINs, GROUP BY, Unterabfragen und Mengenoperationen. Wenn Sie diese Themen noch nicht beherrschen, werden Ihnen die mehr als 100 Programmierübungen dieses Kurses helfen, die erforderlichen Kenntnisse zu erwerben.

Ich werde mich in diesem Artikel auf SQL-Konzepte konzentrieren, die für Softwaretests wichtig sind. Wenn Sie mit SQL noch nicht vertraut sind, empfehle ich Ihnen, unser kostenloses SQL für Anfänger Cheat Sheet zum schnellen Nachschlagen bereitzuhalten.

1. Was ist die Grundstruktur einer SQL-Abfrage?

Antwort: Die grundlegende SQL-Abfrage ist eine SELECT -Anweisung mit einer FROM -Klausel, wie unten dargestellt:

SELECT 
  column_1,
  column_2,
  …
FROM table_name;

Eine SQL-Abfrage kann ohne diese beiden Klauseln nicht funktionieren:

  • SELECT - Listet die Spalte(n) auf, die aus der Tabelle geholt werden soll(en).
  • FROM - Gibt die Tabelle an, aus der die Spalte(n) in SELECT geholt wird/werden.

Eine SQL-Abfrage enthält jedoch sehr oft einige andere (optionale) Klauseln. Eine etwas weniger einfache Abfrage würde wie folgt aussehen:

SELECT 
  column_1,
  column_2,
  …,
  aggregated_column
FROM table_name
WHERE column_1 condition
GROUP BY column_1, column_2, …
HAVING aggregated_column condition
ORDER BY column_1 [ASC|DESC];

Hier eine Erläuterung der einzelnen zusätzlichen Klauseln.

  • WHERE: Überprüft die Werte in der/den angegebenen Spalte(n) und gibt Zeilen mit Werten zurück, die die Bedingung erfüllen. Wird zum Filtern von Daten vor
  • GROUP BY: Organisiert Daten nach Werten in den angegebenen Spalten.
  • HAVING: Prüft die Werte in der/den angegebenen aggregierten Spalte(n) und gibt diejenigen zurück, die die Bedingung erfüllen. Wird für das Filtern von Daten nach
  • ORDER BY: Sortiert die Ausgabe nach bestimmten Spalten in aufsteigender (von den niedrigsten zu den höchsten numerischen Werten; alphabetisch für Zeichenkettenwerte; vom ältesten zum neuesten Datum) oder absteigender Reihenfolge (von den höchsten zu den niedrigsten numerischen Werten; umgekehrt alphabetisch für Zeichenkettenwerte; vom neuesten zum ältesten Datum).

2. Wie würden Sie Daten in einer Datenbank ändern?

Antwort: Prüfer ändern manchmal Daten in einer Datenbank, um eine bestimmte Testbedingung zu schaffen. Daher sind Fragen zur Änderung von Daten in Vorstellungsgesprächen von Software-Testern recht häufig.

Sie können Daten mit der Anweisung INSERT in eine Datenbank einfügen. Sie ändern vorhandene Daten in einer Datenbank mit der Anweisung UPDATE. Sie entfernen Daten aus einer Datenbank mit der Anweisung DELETE.

Die Anweisung INSERT fügt mit dieser Syntax eine oder mehrere neue Datenzeilen in eine Tabelle ein:

INSERT INTO table_name (column_1, column_2, column_3, …) 
VALUES (value_1, value_2, value_3, …);

Die UPDATE Anweisung ändert bestehende Werte in einer Spalte einer Datenbanktabelle. Hier ist die Syntax:

UPDATE table_name
SET column_name = value
WHERE condition;

Die Anweisung DELETE löscht eine oder mehrere Zeilen aus der Tabelle unter Verwendung dieser Syntax:

DELETE
FROM table_name
WHERE condition; 

Für weitere beliebte Themen in Softwaretest-Interviews können Sie einige dieser 22 SQL-Befehlspraktiken vor dem Interview üben.

3. Benutzerkonten finden, die bestimmte Kriterien erfüllen

Problembeschreibung: Stellen Sie sich vor, Sie arbeiten mit der app_users Tabelle arbeiten und sie mit einigen ihrer Daten testen wollen. Diese Daten sollen nur enthalten:

  • Aktive Benutzer, die
  • sich im Jahr 2024 registriert haben und
  • mehr als 100 Dollar auf ihrem Konto haben.

Wie würden Sie vorgehen, um eine Abfrage zu schreiben, die diese Benutzer findet? Schauen wir uns zunächst ein Beispiel für die Daten an:

idusernameemailregistration_dateuser_typestatusaccount_balance
1mjohnsonmjohnson@gmail.com2024-02-08adminactive25.00
2sstevenssstevens@gmail.com2023-05-08regular_useractive528.49
3bkingbking@gmail.com2023-09-12regular_userinactive0.00
4adedicadedic@gmail.com2024-07-04adminactive184.22
5blavetteblavette@gmail.com2024-11-03regular_useractive208.50

Lösung: Um das Ihnen gestellte Problem zu lösen, müssen Sie die folgende Abfrage schreiben, die drei Bedingungen in WHERE enthält:

SELECT 
  id,
  username,
  email,
  registration_date,
  user_type,
  status,
  account_balance
FROM app_users
WHERE status = 'Active'
  AND registration_date > '2023-12-31'
  AND account_balance > 100;

Diese Abfrage wählt alle Spalten aus der Tabelle app_users. Dann verwendet sie WHERE und drei Filterbedingungen mit den Vergleichs- und logischen Operatoren.

Die erste Bedingung ist, dass der Status aktiv ist, so dass die Werte in der Spalte status gleich dem Wert 'active' sein müssen (=; der Vergleichsoperator). Hinweis: Da hier Textdaten gefiltert werden, muss der Wert in einfache Anführungszeichen gesetzt werden (').

Die zweite Filterbedingung ist, dass das Registrierungsdatum nach dem Wert 2023-12-31 liegen muss ( der Vergleichsoperator > ), d.h. der Benutzer hat sich im Jahr 2024 registriert. Hinweis: Damit werden Datumsangaben gefiltert, die ebenfalls in einfache Anführungszeichen gesetzt werden müssen.

Die dritte Bedingung schließlich prüft, ob der Kontostand des Benutzers über 100 liegt. Auch hier wird der Vergleichsoperator größer als (>) verwendet. Hier wird der Wert ohne einfache Anführungszeichen geschrieben, da es sich um einen numerischen Wert handelt.

Da alle drei Bedingungen gleichzeitig erfüllt sein müssen, werden sie in WHERE mit zwei logischen Operatoren AND "verkettet".

Dies ist eine häufige Frage in einem Vorstellungsgespräch, daher empfehle ich Ihnen, dieses Thema mit diesen 20 SQL WHERE-Übungen für Anfänger zu üben.

Ausgabe: Die Ausgabe zeigt zwei Benutzer, die alle drei Kriterien erfüllen.

idusernameemailregistration_dateuser_typestatusaccount_balance
4adedicadedic@gmail.com2024-07-04adminactive184.22
5blavetteblavette@gmail.com2024-11-03regular_useractive208.50

4. Sortieren Sie die Ausgabewerte

Problembeschreibung: Der Interviewer könnte Sie bitten, die Ausgabe, die Sie in der vorherigen Frage erhalten haben, nach dem jüngsten und dem ältesten Registrierungsdatum zu sortieren.

Lösung: Hierfür benötigen Sie eine ORDER BY Klausel am Ende der Abfrage.

SELECT id,
       username,
       email,
       registration_date,
       user_type,
       status,
       account_balance
FROM app_users
WHERE status = 'active'
  AND registration_date > '2023-12-31'
  AND account_balance > 100
ORDER BY registration_date DESC;

Um die Ausgabe nach Registrierungsdatum zu sortieren, fügen Sie einfach eine ORDER BY -Klausel mit der Spalte registration_date am Ende der vorherigen Abfrage hinzu. Sie müssen von den neuesten zu den ältesten Registrierungsdaten sortieren - d. h. in absteigender Reihenfolge - vergessen Sie also nicht, DESC nach dem Spaltennamen zu schreiben.

Ausgabe: Hier ist die sortierte Ausgabe:

idusernameemailregistration_dateuser_typestatusaccount_balance
5blavetteblavette@gmail.com2024-11-03regular_useractive208.50
4adedicadedic@gmail.com2024-07-04adminactive184.22

5. Finden Sie die höchsten und niedrigsten Werte

Problembeschreibung: Eine sehr häufige SQL-Interviewfrage für QA-Tester besteht darin, die höchsten und niedrigsten Werte in einem Datensatz zu finden.

Angenommen, Sie sollen den niedrigsten und den höchsten Betrag für alle Benutzerkonten ermitteln, indem Sie dieselbe Tabelle wie zuvor abfragen. Wenn Sie diese Werte haben, können Sie die Daten in der Anwendung überprüfen, um zu sehen, ob es einige Konten gibt, die niedriger oder höher sind als diese.

Die Lösung: Um dieses Problem zu lösen, benötigen Sie zwei Aggregatfunktionen: MIN() und MAX(). Ihre Syntax ist einfach: Schreiben Sie einfach den Namen der Spalte, für die Sie den Minimal-/Maximalwert erhalten möchten, in die Klammern der Funktion.

SELECT 
  MIN(account_balance) AS minimum_account_balance,
  MAX(account_balance) AS maximum_account_balance
FROM app_users;

Um die Ausgabe lesbarer zu machen, können wir Aliase für die aggregierten Spalten erstellen, indem wir das Schlüsselwort AS gefolgt von dem Spaltenalias schreiben.

Ausgabe: Hier ist die Ausgabe:

minimum_account_balancemaximum_account_balance
0528.49

6. Was ist ein JOIN in SQL, und welche SQL-JOINs sind Ihnen bekannt?

Antwort: JOIN ist eine Klausel, mit der zwei oder mehr Tabellen in SQL kombiniert werden können.

Die Syntax ist unten dargestellt:

SELECT 
  table_1.column_1,
  table_2.column_2,
  …
FROM table_1
JOIN table_2
ON table_1.common_column = table_2.common_column;

Die erste verknüpfte Tabelle ist in FROM aufgeführt, die zweite in JOIN. Die Tabellen werden über eine gemeinsame Spalte verbunden, und diese Verbindungsbedingung wird in der Klausel ON angegeben.

In SQL gibt es fünf JOINs:

  • (INNER) JOIN
  • LEFT (OUTER) JOIN
  • RIGHT (OUTER) JOIN
  • FULL (OUTER) JOIN
  • CROSS JOIN

INNER JOIN gibt nur die übereinstimmenden Zeilen aus den verbundenen Tabellen zurück.

LEFT JOIN gibt alle Zeilen aus der ersten (linken) Tabelle und die passenden Zeilen aus der zweiten (rechten) Tabelle zurück. Die nicht übereinstimmenden Werte aus der rechten Tabelle werden als NULL angezeigt.

RIGHT JOIN ist das Spiegelbild von LEFT JOIN. Er gibt alle Zeilen aus der zweiten (rechten) Tabelle und die passenden Zeilen aus der ersten (linken) Tabelle zurück. Die nicht übereinstimmenden Werte aus der linken Tabelle werden als NULL angezeigt.

FULL JOIN ist eine Kombination aus LEFT JOIN und RIGHT JOIN; er gibt alle Zeilen aus der linken und rechten Tabelle zurück. Die nicht übereinstimmenden Werte aus beiden Tabellen werden als NULL angezeigt.

CROSS JOIN kombiniert jede Zeile der einen Tabelle mit allen Zeilen der anderen Tabelle, was zu einem kartesischen Produkt führt (d. h. jede mögliche Kombination von Zeilen).

All dies ist entscheidendes SQL-Wissen; mit diesen 10 SQL JOIN-Interview-Fragen und -Antworten können Sie mehr darüber lernen.

7. Ausgabe übereinstimmender Daten aus zwei Tabellen

Beschreibung der Aufgabe: Auch hier erhalten Sie die app_users Tabelle. Sie haben auch die session_data Tabelle, die Informationen über jede Sitzung in der Anwendung enthält. Ein Ausschnitt aus dieser Tabelle ist unten abgebildet:

idapp_user_idsession_startsession_end
112024-10-30 6:05:282024-10-30 6:25:52
222024-10-30 12:58:492024-10-30 14:07:07
312024-10-31 4:22:122024-10-31 5:12:43
422024-10-31 9:51:122024-10-31 9:58:24
552024-11-03 21:36:392024-11-03 23:18:25

Ihre Aufgabe ist es, die IDs der Benutzer, die Benutzernamen und die Start- und Endzeiten der Sitzungen aufzulisten, damit Sie diese Daten testen können. Nehmen Sie die Benutzernamen, die keine Sitzungen in der App hatten, nicht auf.

Lösung: Das Problem erfordert die Verwendung von Daten aus beiden Tabellen, also müssen Sie sie verknüpfen. Welchen Verknüpfungstyp sollten Sie jedoch verwenden? Die Antwort lautet INNER JOIN. Und warum? Weil nur übereinstimmende Zeilen zurückgegeben werden, d. h. nur die Benutzer, die in beiden Tabellen gefunden werden können. Wenn sie in beiden Tabellen gefunden werden können, bedeutet das, dass sie mindestens eine Sitzung in der Tabelle session_data.

SELECT 
  au.id AS user_id,
  au.username,
  sd.session_start,
  sd.session_end
FROM app_users au
JOIN session_data sd
ON au.id = sd.app_user_id;

Die erste verbundene Tabelle wird in FROM referenziert und erhält den Alias au. (Aliasnamen sind nicht zwingend erforderlich, aber es hilft, den Tabellennamen zu verkürzen, wenn Sie ihn wieder verwenden müssen). Um die zweite Tabelle zu verknüpfen, fügen Sie das Schlüsselwort JOIN (oder INNER JOIN; sie bedeuten dasselbe in SQL) hinzu und schreiben den Namen der Tabelle.

Die Tabellen werden über eine gemeinsame Spalte verbunden. In diesem Fall ist es id aus der ersten Tabelle und app_user_id aus der zweiten Tabelle.

Jetzt können Sie alle erforderlichen Spalten aus beiden Tabellen auswählen. Um leicht zu erkennen, welche Spalte aus welcher Tabelle stammt, stellen Sie dem Spaltennamen den Tabellennamen (oder Tabellenalias) gefolgt von einem Punkt voran: table_name.row_name.

Ausgabe: Die Ausgabe zeigt fünf Sitzungen für drei Benutzer:

user_idusernamesession_startsession_end
1mjohnson2024-10-30 6:05:282024-10-30 6:25:52
2sstevens2024-10-30 12:58:492024-10-30 14:07:07
1mjohnson2024-10-31 4:22:122024-10-31 5:12:43
2sstevens2024-10-31 9:51:122024-10-31 9:58:24
5blavette2024-11-03 21:36:392024-11-03 23:18:25

8. Kategorien mit Bestand über 100

Problembeschreibung: Sie erhalten die Tabelle products um diese Interviewfrage zum Thema Softwaretests zu lösen. Hier ist eine Momentaufnahme davon:

idproduct_nameproduct_categorystock_quantity
1Wireless earbudsElectronics518
2Vacuum cleanerAppliances208
3TreadmillSports12
4USB-C cableElectronics121
5DishwasherAppliances80
6Exercise bikeSports17
7Wireless boomboxElectronics94
8Washing machineAppliances103
9Yoga matSports54

Sie möchten die Produktkategorien und ihre Gesamtbestandsmenge ausgeben, aber nur für Kategorien mit einem Gesamtbestand über 100. Sie benötigen dies, um zu überprüfen, ob die Daten in der Inventar-App korrekt erfasst wurden.

Die Lösung: Die Lösung verwendet die Aggregatfunktion SUM(), um die Gesamtbestandsmenge zu summieren. Um diese Berechnung nach Produktkategorie zu erhalten, wählen Sie die Spalte product_category und gruppieren Sie die Ausgabe nach derselben Spalte in GROUP BY.

Um Kategorien mit einem Gesamtbestand über 100 anzuzeigen, muss die Filterung nach der Aggregation erfolgen. Aus diesem Grund müssen Sie HAVING für die Filterung verwenden. (Zur Erinnerung: WHERE ist nur für die Filterung vor der Aggregation gedacht). In HAVING schreiben Sie wieder die Aggregatspalte, die die Gesamtbestandsmenge berechnet, mit der Bedingung, dass nur Werte über 100 in die Ausgabe aufgenommen werden.

Ausgabe: Es gibt zwei Produktkategorien, die die Bedingung HAVING erfüllen:

product_categorytotal_stock_quantity
Appliances391
Electronics733

9. Was ist ein Primärschlüssel in einer Datenbank?

Antwort: Ein Primärschlüssel ist eine Einschränkung, die für die Spalte erstellt wird, die jede Zeile in der Tabelle eindeutig identifiziert, indem keine doppelten Werte akzeptiert werden und NULLs.

Er hat mehrere wichtige Funktionen:

  • Sicherstellen, dass es keine doppelten oder fehlenden Daten in dieser Spalte gibt.
  • Bereitstellung einer Möglichkeit zur eindeutigen Identifizierung jeder Zeile in der Tabelle.
  • Herstellen einer Beziehung zu einer anderen Tabelle über einen Fremdschlüssel.
  • Sicherstellung des Zugriffs auf Zeilenebene auf die Daten einer Tabelle.

Weitere Informationen über Schlüssel finden Sie in unserem Artikel Warum Primärschlüssel und Fremdschlüssel in Datenbanken?

10. Mit welchen Datenbank-Engines arbeiten Sie?

Problembeschreibung: Man könnte Sie fragen, mit welchen Datenbank-Engines Sie gearbeitet haben. Diese etwas seltsame und einfache Frage kann Sie überraschen, wenn Sie nie darüber nachgedacht haben.

Die Antwort: Nicht alle SQL-Datenbank-Engines sind gleich. Es ist durchaus von Bedeutung, welche Datenbank-Engine(s) Sie verwenden, vor allem, wenn es sich dabei um die Engines handelt, die Sie bei einer künftigen Stelle einsetzen werden. Vergewissern Sie sich, dass Sie die gängigsten Datenbank-Engines kennen. Dies ist nicht nur wegen der technischen Unterschiede zwischen den Tools wichtig, sondern auch wegen der Unterschiede in den SQL-Dialekten, die diese Engines verwenden.

Am wichtigsten ist, dass Sie wissen, welche dieser Engines Sie in Ihren früheren Projekten oder Funktionen verwendet haben. Der Interviewer möchte vielleicht wissen, mit welchen Datenbank-Engines Sie vertraut sind.

Sind Sie bereit, diese Fragen zum SQL-Softwaretest zu meistern?

Diese zehn Fragen haben Ihnen einen guten Eindruck davon vermittelt, wie SQL-Interview-Fragen für Softwaretester aussehen. Rechnen Sie damit, dass Sie eine Mischung aus theoretischen Fragen und praktischen SQL-Aufgaben erhalten.

Die Themen, die wir besprochen haben, sind grundlegende SQL-Kenntnisse. Wenn Sie in Ihrem SQL-Vorstellungsgespräch gut abschneiden wollen, sollten Sie sicherstellen, dass Sie mit allem, was ich in diesem Artikel erwähnt habe, vertraut sind. Um Ihr grundlegendes SQL-Wissen zu festigen, empfehle ich Ihnen dringend, unsere SQL für Anfänger und Wie man Daten in einer Datenbank in SQL ändert Kurse auszuprobieren und dann alles im SQL-Praxis Track zu wiederholen.