Testfibel
Du bist angehender Tester und dir fehlt die Orientierung? Du fragst Dich, wie Du sinnvolle Testfälle aufbauen kannst? Und was ist eigentlich Black-Box-Testing? Unser kleines 1x1 des Softwaretests hilft dir bei diesen und vielen weiteren Fragen. Die Testfibel – powered by syracom!
Du bist angehender Tester und dir fehlt die Orientierung? Du fragst Dich, wie Du sinnvolle Testfälle aufbauen kannst? Und was ist eigentlich Black-Box-Testing? Unser kleines 1x1 des Softwaretests hilft dir bei diesen und vielen weiteren Fragen. Die Testfibel – powered by syracom!
Sie wollen auch ein ePaper? Erhöhen Sie die Reichweite Ihrer Titel.
YUMPU macht aus Druck-PDFs automatisch weboptimierte ePaper, die Google liebt.
From BU-WI-12
with
v1.0
GRUNDLAGEN SOFTWARETEST
WARUM TESTEN WIR?
Das Testen von Software dient durch die Identifizierung
von „Defekten“ und deren anschließender Beseitigung zur
Steigerung der Softwarequalität. Dazu wird die zu testende
Software ausgeführt, um festzustellen, ob sie die gestellten
Anforderungen erfüllt oder nicht.
ZIELE DES TESTENS
• Ausführung des Programms mit dem Ziel, Fehlerwirkungen
nachzuweisen
• Ausführung des Programms mit dem Ziel, die Qualität zu
bestimmen
• Ausführung des Programms mit dem Ziel, Vertrauen in das Programm
zu erhöhen
• Analysieren des Programms oder der Dokumente, um Fehlerwirkungen
vorzubeugen
Durch Testen verringern sich also Risiken beim Einsatz der
Software, da mögliche Fehler bzw. Fehlerwirkungen bereits
frühzeitig aufgedeckt werden. Dem Testen kommt daher eine
extrem wichtige Aufgabe im Rahmen des Entwicklungsprozesses
zu, denn unentdeckte Fehler können der Software, der
Hardware und im schlimmsten Falle sogar dem Menschen
gefährlich werden.
Berühmte Beispiele für Softwarefehler und deren mögliche
Auswirkungen findest du auf der Karte „Wirkung von Fehlern“.
GRUNDLAGEN SOFTWARETEST
WIRKUNG VON FEHLERN
Software ist nie fehlerfrei – eine der grundlegendsten Aussagen im
ISTQB. Oftmals ist uns jedoch nicht bewusst, welche Auswirkungen
Fehler in Software haben können. Hier ein paar Beispiele:
Ein internationaler Finanzdienstleister muss 25 Mio. $
Strafe zahlen, weil er einen Softwarefehler in einer Anwendung
für Investmentfonds vertuscht hatte.
Zusätzlich bekamen geprellte Anleger den entstandenen
Schaden von 217 Mio. $ zurückerstattet.
In Japan fielen durch einen Softwarefehler bei einer der
größten Banken 24 Stunden alle Geldautomaten aus.
Onlinebanking war mehrere Tage nicht möglich. Dadurch
wurden Lohnüberweisungen im Wert von 1,5 Mrd. $ erst
nach zehn Tagen verarbeitet.
Massenrückruf von einer Million Autos eines japanischen
Herstellers. Ein Fehler in der Programmierung des Motormanagementsystems
sorgte dafür, dass die Autos wie
von Geisterhand vor- und zurückfuhren. Die Aktie des
Unternehmens fiel um 5 %.
GRUNDLAGEN SOFTWARETEST
FEHLERKETTE
FEHLHANDLUNG (ERROR)
Handlung durch Entwickler bzw. Anwender, die zu einem Fehlerzustand
in der Software führt bzw. eine Fehlerwirkung zur Folge hat oder unwissentlich,
versehentlich oder absichtlich ausgeführte Handlung oder
Unterlassung, die unter gegebenen Umständen (Aufgabenstellung,
Umfeld) dazu führt, dass eine geforderte Funktion eines Produkts beeinträchtigt
ist.
FEHLERZUSTAND/DEFEKT (FAULT)
Zustand eines (Software-)Produkts oder einer seiner Komponenten (z.B.
Teilprogramm mit inkorrekter Anweisung oder Datendefinition), der
unter spezifischen Bedingungen (z.B. bei einer hohen Belastung) eine
geforderte Funktion des Produkts beeinträchtigen kann bzw. zu einer
Fehlerwirkung führt.
FEHLERWIRKUNG (FAILURE)
Wirkung eines Fehlerzustands, die bei der Ausführung eines Programms
(Testobjekt) nach außen in Erscheinung tritt, z.B. Abweichungen
zwischen (spezifizierten) Soll-Wert und (beobachtetem) Ist-Wert (bzw.
Soll- und Ist-Verhalten). Fehlerwirkungen können (selten) auch durch
Strahlung, elektromagnetische Felder oder Hardwarefehler
hervorgerufen werden.
TESTARTEN
FUNKTIONALER TEST
Ein funktionaler Test hat die Aufgabe, den Erfüllungsgrad von funktionalen
Anforderungen zu überprüfen. Funktionale Anforderungen beschreiben
die vom Anwender erwarteten Fähigkeiten eines Systems zur
Lösung eines oder mehrerer fachlicher Probleme.
Der Funktionstest beinhaltet somit das Testen einzelner Funktionen
und soll den Nachweis erbringen, dass alle fachlichen Anforderungen
korrekt umgesetzt wurden.
Der Test wird als Blackbox-Test durchgeführt, d. h., der Anwender
testet, ohne den Code kennen zu müssen.
Die Vollständigkeit der Prüfung (Überdeckungsgrad) kann anhand der
funktionalen Spezifikation bewertet werden. Mögliche Testaufgaben
können die Prüfung einer korrekten Verarbeitung von fachlich richtigen
und fachlich bzw. formal falschen Eingaben zum Gegenstand haben.
Neben dem Testen des Positivfalls werden ergänzend Negativtests
durchgeführt. Hierbei wird durch Eingabe unzuverlässiger Werte (laut
Spezifikation) oder fälschliche Bedienung geprüft, ob das System die
Werte zum Beispiel durch eine Fehlermeldung abweist.
TESTARTEN
NICHT-FUNKTIONALER TEST
Nicht-funktionale Testarten zielen auf die Überprüfung
weiterer allgemeiner Qualitätsmerkmale von Software
ab, außer der reinen Funktionalität. Diese sind entlang der
Qualitätsmerkmale in der DIN-ISO 9126 definiert.
EFFIZIENZ
Wird durch Performancetests (betreffend Antwortzeiten und
Verarbeitungsgeschwindigkeit) und Lasttests (betreffend
Systemlast) geprüft.
ZUVERLÄSSIGKEIT
Zuverlässigkeitstests prüfen, ob das Testobjekt ein bestimmtes
Leistungsniveau unter bestimmten Bedingungen über
einen bestimmten Zeitraum aufrechterhalten kann.
BENUTZBARKEIT
Benutzbarkeitstests (auch: Usability-Tests) prüfen typischerweise,
wie gut und wie einfach ein System für die Benutzer
zu bedienen ist.
ÄNDERBARKEIT / WARTBARKEIT
Wird typischerweise durch Reviews und werkzeuggestützte
statische Analyse geprüft (Wartbarkeitstests).
ÜBERTRAGBARKEIT
Wird durch Portabilitätstests geprüft. Fokus dabei ist, wie
leicht sich die Software in eine andere Umgebung
übertragen lässt.
TESTDESIGN
SCHREIBEN VON TESTFÄLLEN
Eine der wichtigsten Aufgaben des Testers ist das Schreiben von Testfällen.
Damit dir dies gelingt, sind hier die die wichtigsten Tipps zum
erfolgreichen Schreiben von Testfällen.
Sammeln aller nötigen Informationen
Als Grundlage für den Testfall dienen meist die Fachanforderungen,
welche in schriftlicher Form vorliegen
sollten. Zudem können ergänzende Dokumente existieren,
die zum Schreiben des Testfalls beitragen können.
Wichtiger Hinweis: Sorge dafür, dass alle Akzeptanzkriterien
der Anforderung durch einen oder mehrere Testfälle
abgedeckt sind.
Definieren des Namens des Testfalls
Verwende einen Namen für den Testfall, sodass ein Bezug
zu dem Testobjekt hergestellt werden kann. Oft gibt
es auch Namenskonventionen, an die es sich zu halten
gilt.
Ermitteln von Vorbedingungen
Sollten Vorbedingungen nötig sein, damit der Testfall
ausgeführt werden kann, dann notiere diese.
Benennung des Testobjektes
Schreibe auf, welche Komponente oder welches System
getestet werden soll.
Erstellung der nötigen Testschritte
Ein Testfall kann n Testschritte beinhalten. Jeder Testschritt
besteht aus einer Aktion und dem erwarteten
Ergebnis. Am Ende des Testfalls kann es zusätzlich nötig
sein, eine Nachbedingung zu definieren.
TESTDESIGN
FEHLERFALL DOKUMENTIEREN
Bist du beim Testen auf einen Fehler gestoßen, dann sorge dafür, dass
er vernünftig dokumentiert wird. Der Entwickler wird es dir danken.
INHALT DES FEHLERFALLS
Umgebung und Version
Auf welcher Umgebung und Softwareversion ist der Fehler aufgetreten?
Priorität des Fehlers
Welche Priorität hat der Fehler? Verhindert der Fehler ein Weiterkommen
im Test, handelt es sich meist um einen Blocker. Ist nur die Farbe
eines Buttons falsch, handelt es sich meist um einen Fehler mittlerer
Priorität.
Zeitpunkt des Fehlerauftritts
Zu welcher Uhrzeit und an welchem Datum ist der Fehler aufgetreten?
Sinnvoller Name des Fehlerfalls
Angabe eines sprechenden Namens für den Fehlerfall, damit auf einen
Blick ersichtlich ist, welchem Bereich der Fehler zuzuordnen ist.
Notwendige Schritte um den Fehlerfall nachzustellen
Beschreibung der notwendigen Schritte um den Fehlerfall in der
Anwendung nachstellen zu können.
IST-Verhalten
Aktuelles Verhalten der Anwendung, welches den Fehlerfall darstellt.
SOLL-Verhalten
Gewünschtes Verhalten der Anwendung abgeleitet aus den
Anforderungen.
TESTENTWURFSVERFAHREN
WHITEBOX-VERFAHREN
Das Whitebox-Verfahren ist ein strukturbasiertes
Testverfahren. Als Grundlage dient der Quellcode.
Dementsprechend wird das Whitebox-Verfahren auch
codebasiertes Testverfahren genannt.
Ziel ist es, möglichst alle Codeteile eines Testobjektes
mindestens einmal zur Ausführung zu bringen. Demzufolge
sollte der Quellcode für die Tests vorliegen.
Das Testen aller Anweisungen ist meist nicht möglich.
Daher ist eine sinnvolle Auswahl möglicher Testfälle
zu treffen.
VERFAHREN ZUR AUSWAHL VON TESTFÄLLEN
• Anweisungstest
• Entscheidungstest
• Bedingungstest
• Mehrfachbedingungstest
• Definierter Bedingungstest
• Pfadtest
TESTENTWURFSVERFAHREN
BLACKBOX-VERFAHREN
Das Blackbox-Verfahren ist ein spezifikationsorientiertes
Testverfahren. Die Testfälle werden aus der
Spezifikation des Testobjektes abgeleitet. Code wird
dabei nicht berücksichtigt.
Ziel ist es, die Übereinstimmung von Spezifikationen
und System zu prüfen. Dabei wird das zu testende
System als Ganzes betrachtet. Zur Bewertung der
Testergebnisse wird das Außenverhalten des Systems
betrachtet.
Das Testen aller möglichen Eingabewerte ist meist
nicht möglich. Daher ist eine sinnvolle Auswahl möglicher
Testfälle zu treffen.
VERFAHREN ZUR AUSWAHL VON TESTFÄLLEN
• Äquivalenzklassenbildung
• Grenzwertanalyse
• Entscheidungstabelle
• Zustandsbezogener Test
• Ursachen-Wirkungs-Graph-Analyse
• Anwendungsfallbasierter Test
TESTENTWURFSVERFAHREN
ENTSCHEIDUNGSTABELLEN
Entscheidungstabellen dienen dazu, komplexe Regelwerke
in übersichtlicher Weise darzustellen. Entscheidungstabellen
werden eingesetzt, um mehrere Bedingungen und die
jeweils auszuführenden Aktionen übersichtlich, vollständig
und widerspruchsfrei zu veranschaulichen.
Eine Entscheidungstabelle besteht aus vier Teilbereichen:
einer Auflistung der zu berücksichtigenden Bedingungen
einer Auflistung der möglichen Aktionen
einem Bereich, in dem die möglichen Bedingungskombinationen
zusammengestellt sind
einem Bereich, in dem jeder Bedingungskombination die
jeweils durchzuführende Aktivität zugeordnet ist
TESTENTWURFSVERFAHREN
GRENZWERTANALYSE
Die Grenzwertanalyse ist ein dynamisches Softwaretestverfahren,
welches aus der Beobachtung entstanden ist,
dass Fehler besonders häufig an den „Rändern“ auftreten.
Daher werden hier nicht beliebige Werte getestet, sondern
sog. Randwerte oder Grenzwerte.
EIN BEISPIEL
Für ein Feld ist definiert, dass Eingabewerte zwischen 1,00 und 9.999,99
gültig sein sollen. Die entsprechenden Grenzwerte, die es zu testen gilt,
wären somit:
0,99 = ungültige Eingabe
1,00 = gültige Eingabe
9.999,99 = gültige Eingabe
10.000 = ungültige Eingabe
UNGÜLTIGE WERTE GÜLTIGE WERTE UNGÜLTIGE WERTE
≤ 0,99 1,00 bis 9.999,99 ≥ 10.000,00
TESTVERFAHREN
ÄQUIVALENZKLASSENBILDUNG
Stell dir folgendes Szenario vor: Deine Software prüft, ob du
dein Kind schon in den Kindergarten bringen darfst. Ab Erreichen
des 2. Lebensjahres bis zum vollendeten 6. Lebensjahr
kann dein Kind dort eine schöne Zeit verbringen.
Wenn du dir viel Arbeit machen möchtest und auch ansonsten
zu wenig zu tun hast, könntest du jedes Lebensjahr ab Geburt
bis ins Unendliche testen – oder schlau sein und für diesen
Anwendungsfall die Äquivalenzklassen bilden.
Die Äquivalenzklasse ist eine Menge möglicher Eingaben. Die
Idee dahinter ist, dass sich das Testobjekt bei allen Elementen
einer Äquivalenzklasse gleich verhält. Somit muss der Test
nur noch mit jeweils einem Repräsentanten jeder Äquivalenzklasse
durchgeführt werden.
Folgende Ä-Klassen gibt es im Beispiel:
1. Klasse: 0 ≤ Alter < 2
2. Klasse: 2 ≤ Alter ≤ 6
3. Klasse: Alter > 6
Pro Klasse könnte ein Repräsentant wie folgt aussehen:
1. Klasse: 1
2. Klasse: 3
3. Klasse: 10
Somit sollte ein Testfall geschrieben werden, in dem die Eingaben von
1, 3 und 10 verwendet werden.
TESTMANAGEMENT
AUFGABEN DES TESTMANAGERS
Die Aufgaben eines Testmanagers sind vielseitig. In der
Regel ist er Teilprojektleiter des Teilprojektes Test und
verfügt somit sowohl über Management- als auch über
Fachexpertise.
Typische fachbezogene Aufgaben des Testmanagers:
• Erstellung und Abstimmung des Testkonzepts
• Beschaffung der notwendigen Ressourcen
• Auswahl und Einführung von Testwerkzeugen
• Einführung/Optimierung unterstützender Prozesse
• Einführung und Anwendung von definierten Metriken
• Steuerung und Überwachung der Tests
• Erstellung und Kommunikation des Testabschlussberichts
Darüber hinaus sind gewisse Soft Skills und Fertigkeiten
für den Testmanager essenziell, um im Tagesgeschäft
zusammen mit seinem Testteam bestehen zu können.
Soft Skills des Testmanagers:
• Geschickte Verhandlungsführung mit Stakeholdern
• Einnahme eines klaren und vermittelnden Standpunktes bei
Differenzen
• Aufbauen von Vertrauen und Empathie
• Erfahrungsbasiertes Abstraktionsvermögen
• Beeinträchtigungen der Leistungsbereitschaft des Teams frühzeitig
erkennen
TESTMANAGEMENT
TESTFALLPRIORISIERUNG
Hast du unendlich Zeit und Budget in deinem Projekt? Wenn ja, dann
kannst du diese Karte getrost überspringen. Wenn du zu den restlichen
99,99999999998 % der Testmanager/Tester in Projekten gehörst, solltest
du weiterlesen. Hier lernst du, anhand welcher Kriterien ein Testfall
priorisiert werden könnte/sollte.
PRIORISIEREN HILFT
Priorisieren anhand der Anforderungen
Welche Anforderungen sind am wichtigsten für die Software?
Priorisieren anhand der Häufigkeit der Nutzung
Welche Teile der Software werden am häufigsten von Anwendern
genutzt?
Priorisieren anhand des Schadensmaßes bei Fehlern
Welche Teile der Software führen zum größten Schaden für den
Kunden?
Priorisieren anhand der Komplexität der Softwarekomponente
In welchen Teilen der Software werden z. B. komplexe Berechnungen
durchgeführt?
HALTE DICH NICHT MIT
UNWICHTIGEN TESTS AUF
TESTMANAGEMENT
TESTKONZEPT
Die umfangreiche Aufgabe des Softwaretestens erfordert
ein Konzept, um eine möglichst reibungslose Umsetzung
zu gewährleisten. Das Testkonzept wird vom Testmanager
erarbeitet und umfasst u. a. die Teststrategie, die Testmethoden,
die zu testenden Objekte und deren Leistungsmerkmale
sowie Angaben über Ressourcen, Infrastruktur
und Verantwortlichkeiten.
Eine Orientierung gibt hierbei die Norm IEEE 829-2008.
Im Allgemeinen soll die Vorbereitung und Planung der
Tests im Projekt so früh wie möglich beginnen.
TIPPS FÜR DAS TESTKONZEPT
• Durchdenke Themen schrittweise und im Dialog mit Experten und
Stakeholdern.
• Orientiere dich an den Teststufen/Testquadranten.
• Überlege, was genau getestet werden soll, und nutze das Qualitätsmodell
ISO 25010 als Ideengeber außerhalb der funktionalen
Eigenschaften.
• Effektivität: Setze Prioritäten und entwickle/nutze die passende
Strategie.
• Organisiere und beantrage rechtzeitig die passende Testumgebung
sowie die benötigten Testdaten und Werkzeuge.
• Skizziere die Zusammenarbeit, lege Verantwortlichkeiten fest und
schätze vorsichtig (Aufwand).
• Was kann schiefgehen? Habe einen Plan B in der Hinterhand.
• Erfinde das Rad nicht neu, halte dein Wissen als Best Practice fest,
teile es und mache es für andere nutzbar.
TESTWERKZEUGE
ARTEN VON TESTWERKZEUGEN
Werkzeuge für Testmanagement und Teststeuerung ...
unterstützen dich bei der Erfassung, Priorisierung, Planung, Verwaltung
und Überwachung von Testfällen. Des Weiteren ermöglichen sie dir die
Auswertung von Problem- und Fehlermeldungen.
Werkzeuge zur Testspezifikation ...
sind beispielsweise sog. Testdatengeneratoren und helfen dir, Testdaten
auf Grundlage von Datenbanken, Codes, Schnittstellen oder Spezifikationen
des Testobjektes abzuleiten und festzulegen.
Werkzeuge für statische Tests ...
sind dir im Rahmen von Reviews und statischer Analyse von Quellcodes
oder Spezifikationen behilflich und werden vorwiegend in frühen Phasen
des Entwicklungszyklus eingesetzt.
Werkzeuge für dynamische Tests ...
versorgen das Testobjekt mit Eingabedaten und protokollieren den
Testverlauf. Sie können ebenfalls Testtreiber & Stubs bereitstellen,
Produktivumgebungen simulieren, Kennzahlen liefern oder mittels Testrobotern
aufgezeichnete Bedienschritte automatisch wiederholen. Somit
entlasten sie dich von ansonsten notwendigen manuellen Arbeitsschritten.
Werkzeuge für nicht funktionale Tests ...
bieten dir insbesondere bei Last- und Performancetests Unterstützung,
indem sie synthetische Last generieren und umfangreiche Analysemittel
zur Verfügung stellen. Ebenso können die Daten- und Zugriffssicherheit
sowie die Datenqualität überprüft werden.
TESTFALLERSTELLUNG
TESTFALL-GLOSSAR
Testfall-ID
Priorität
Umgebung
Software-Version
Testfall-Titel
Testfall-Beschreibung
Vorbedingung
Testdaten
Testschritte
Nachbedingungen
Eindeutiger Identifier aus dem Testmanagement-Tool.
Priorität des Testfalls. Oftmals auch Vorgabe
für Reihenfolge der Testdurchführung.
Auf welcher Umgebung wurde der Testfall
durchgeführt?
Welche Version hatte die getestete Software?
Angabe eines eindeutigen und sprechenden
Titels für den Testfall.
Kurze Beschreibung des Testfalls, um einen
allgemeinen Überblick zu erhalten.
Welche Voraussetzungen müssen für den
Testfall gegeben sein (Betriebssystem, Zugänge,
angeschlossene ext. Systeme)?
Angabe notwendiger Testdaten, um den
Testfall durchführen zu können.
Testschritte beschreiben kurz und verständlich,
was zu tun ist und welches Ergebnis
erwartet wird.
Erwartete Nachbedingungen, welche nach
Beendigung des Testfalls erzielt werden
sollen.
TESTFALLERSTELLUNG
INFORMATIONSQUELLEN
Du möchtest den besten Testfall der Welt schreiben,
weißt aber nicht, woher du Informationen zum Testobjekt
bekommst?
Schau dir die User Story und ihre Akzeptanzkriterien an.
Diese musst du auf jeden Fall testen.
Vielleicht ist bereits ein Lösungsdesign der Entwickler zu
deinem Thema vorhanden. Darin können auch Hinweise
auf einen Testfall enthalten sein.
Gibt es weitere Dokumente, die dir bei der Erstellung des
Testfalls helfen könnten? Frag die verschiedenen Stakeholder,
Projektleiter, Product Owner etc. in deinem Projekt.
TESTFALLDURCHFÜHRUNG
DOKUMENTATION
Sei schlau, dokumentiere die Durchführung deiner Testfälle.
Mithilfe von Screenshots, Log-Einträgen oder Datenbank-Abzügen
zeigst du, dass dir dein Testfall wichtig ist.
Stell dir vor, der Kunde möchte wissen, welche Ergebnisse
deine Tests hervorgebracht haben. Hast du richtig
dokumentiert, kannst du jetzt vor dem Kunden glänzen.
Im besten Fall hast du ein Testmanagement-Tool zur
Hand, in dem die Testdurchführung dokumentieren
werden kann (Silk, Sephyr usw.). Wenn es schlecht läuft,
musst du dir mit Word oder Excel behelfen.
Dein Ziel sollte es immer sein, hohe Qualität abzuliefern.
Mit richtiger Dokumentation kannst du sogar den Beweis
dafür erbringen. Vergiss also nie, deine Ergebnisse zu
dokumentieren, übertreibe es aber auch nicht.
TESTFALLDURCHFÜHRUNG
LINUX SHELL CHEATSHEET
clear
Löscht den Inhalt der aktuell in der Shell angezeigt wird
ls
Listet alle Dateien des aktuellen Verzeichnisses auf
tail <Dateiname>
Listet die letzten 10 Zeilen einer Datei auf
cp <Dateiname> <Ziel>
Kopiert eine Datei in ein Zielverzeichnis
rm <Dateiname>
Löscht eine Datei
chmod -options <Dateiname>
Lese-, Schreib- und Ausführrechte einer Datei verändern
grep <Pattern> <Dateiname>
Suche nach Zeichenkette in Datei
mkdir <Verzeichnisname>
Erstellen eines neuen Verzeichnisses
cd <Verzeichnisname>
In Verzeichnis wechseln
cd ..
Eine Verzeichnisebene zurück gehen
pwd
Aktuellen Ort auf Verzeichnisebene anzeigen
less
Tool zum Anzeigen von Textdateien in der Linux Shell
TESTFALLDURCHFÜHRUNG
SQL CHEATSHEET TEIL 1
DATEN EINER TABELLE ABFRAGEN
Alle Daten der Spalten c1, c2 einer Tabelle abfragen
SELECT c1, c2 FROM t;
Alle Daten der Tabelle abfragen
SELECT * FROM t;
Alle Daten einer Tabelle mit Bedingung abfragen
SELECT c1, c2 FROM t WHERE condition;
Ergebnis einer Abfrage aufsteigend [ASC] oder absteigend [DESC]
sortieren
SELECT c1, c2 FROM t ORDER BY c1 ASC [DESC];
Zeilen anhand einer Aggregatfunktion gruppieren
SELECT c1, aggregate(c2) FROM t GROUP BY c1;
Gruppen anhand HAVING Klausel filtern
SELECT c1, aggregate(c2) FROM t GROUP BY c1 HAVING condition;