Kapitel 1. Einführung in das Full Stack Testing
Diese Arbeit wurde mithilfe von KI übersetzt. Wir freuen uns über dein Feedback und deine Kommentare: translation-feedback@oreilly.com
In der heutigen Welt ist die Digitalisierung für den Erhalt und das Wachstum jedes Unternehmens unerlässlich. Viele Unternehmen sind in dieser Hinsicht führend, während andere noch in der Anfangsphase der Modernisierung ihrer bestehenden digitalen Plattformen sind.
Die Digitalisierung ist der Schlüssel, um die Reichweite eines Unternehmens von einer lokalen Gemeinschaft auf eine globale Ebene zu erweitern, was zu mehr Akzeptanz und mehr Umsatz führt. Fast alle kleinen und großen Unternehmen in verschiedenen Branchen wie dem Gesundheitswesen, dem Einzelhandel, der Reisebranche, der Wissenschaft, den sozialen Medien, dem Bankwesen und der Unterhaltungsindustrie planen, ihre digitalen Strategien voranzutreiben, um neue Kundensegmente zu erreichen und höhere Gewinne zu erzielen.
Auf dieser Reise in Richtung Digitalisierung und Modernisierung wird Innovation zu einem entscheidenden Treiber. Die Unternehmen, die ständig innovativ sind, bleiben über viele Jahrzehnte hinweg relevant und florieren. Netflix ist ein klassisches Beispiel: Das Unternehmen begann in den 1990er Jahren als Online-DVD-Verleihportal und wagte 2007 den Einstieg in das Online-Streaming, wodurch es sein eigenes DVD-Verleihgeschäft kannibalisierte. Später begann das Unternehmen mit der Produktion von Originalinhalten, den sogenannten Netflix Originals. Ende 2021 war Netflix der größte Online-Streaming-Dienst mit weit über 200 Millionen Abonnenten weltweit.
Die Technologie hat sich parallel zu diesen innovativen Unternehmen weiterentwickelt, um ihren immer fortschrittlicheren Bedürfnissen gerecht zu werden. Vorbei sind die Zeiten, in denen die Menschen bereit waren, in einer Schlange zu warten, um Kinokarten zu kaufen, zu einem Geschäft in einem abgelegenen Ort zu fahren, um ein spezielles Produkt zu kaufen, oder eine handgeschriebene Einkaufsliste mit sich herumzutragen, um nach bestimmten Dingen zu suchen. Die Technologie erleichtert solche alltäglichen Aufgaben. Wir können zu Hause sitzen und unsere Lieblingsunterhaltungsprogramme auf Knopfdruck streamen, ein neues Kleid virtuell anprobieren, die regelmäßige Lieferung der Artikel auf unserer Einkaufsliste planen, einen Kaffee per Sprachbefehl zubereiten und vieles mehr.
Angesichts der rasanten technologischen Entwicklung müssen Produktstrategien vielseitig sein und auf unterschiedliche Kundenbedürfnisse eingehen, um sich gegen die Konkurrenz in der jeweiligen Branche durchzusetzen. Es reicht nicht mehr aus, nur eine Website zu erstellen; der Horizont muss erweitert werden. Fahrdienstleister wie Uber und Lyft bieten verschiedene Möglichkeiten, auf ihre Dienste zuzugreifen: das Internet, mobile Plattformen für Android und iOS und sogar einen WhatsApp-Chatbot. Diese Art von vielseitiger Produktstrategie hat diesen Unternehmen geholfen, weltweit zu expandieren und ihre Konkurrenten zu überflügeln.
Innovation und Vielseitigkeit helfen Unternehmen dabei, eine kritische Masse an Kunden zu gewinnen. Die Herausforderung besteht dann aber darin, weiter zu wachsen, mehr Umsatz zu machen und mehr Kunden zu gewinnen. Wir haben gesehen, wie Branchenriesen wie Amazon ihren bestehenden Kundenstamm nutzen, um durch Cross-Selling von Dienstleistungen und Produkten zu expandieren. Amazon, das als Online-Buchhandlung begann, verkauft heute Produkte von frischen Speisekammern über Elektronik bis hin zu Kleidung und Schmuck und deckt damit die Nachfrage der Kunden nach Konsumgütern in fast jedem Marktsegment ab.
Warum besprechen wir diese Details in einem Buch über Softwaretests? Weil die heutige Softwareindustrie all diese geschäftlichen Anforderungen erfüllt und die Werkzeuge zur Verfügung stellt, um neue Produktideen zu entwickeln, sie zum Leben zu erwecken und sie zu skalieren, um neue Kundensegmente auf der ganzen Welt zu erreichen. Es steht außer Frage, dass Software-Entwicklungsteams am Rande des Abgrunds stehen, vor allem, wenn das Gebot der Stunde darin besteht, eine hohe Qualität zu liefern! In der Tat ist Softwarequalität auf dem heutigen Wettbewerbsmarkt zu einem nicht verhandelbaren Kriterium geworden. Kompromisse bei der Softwarequalität sind wie ein Rennen, bei dem man weiß, dass man es verlieren wird. Dies wird durch viele Beispiele aus der Praxis untermauert. So lieferten sich die indischen E-Commerce-Giganten Snapdeal und Flipkart im Oktober 2014 nach monatelangem Marketing ein Kopf-an-Kopf-Rennen bei ihrem Saisonschlussverkauf. Leider stürzte die Website von Flipkart während des "Big Billion Day"-Verkaufs aufgrund der überwältigenden Nachfrage mehrfach ab, so dass Snapdeal viele Kunden und einen großen Teil der Einnahmen verlor. Auch Yahoo! hat es versäumt, mit seinen Konkurrenten Schritt zu halten (obwohl es eines der ersten Unternehmen auf dem Markt war), zum einen, weil es nicht auf die Qualität seines Suchprodukts geachtet hat, und zum anderen, weil die Marke durch mangelhafte Sicherheitsvorkehrungen geschädigt wurde, was 2013 zum größten Datenmissbrauch der Geschichte führte, bei dem 3 Milliarden Nutzerkonten offengelegt wurden. So groß ist der Einfluss der Softwarequalität heute!
Es gibt viele ähnliche Beispiele auf der ganzen Welt, die die Beobachtung untermauern, dass es für Unternehmen trotz aller neuartigen Produktideen steil bergab geht, wenn die Qualität beeinträchtigt wird, da die Kunden schnell zu zuverlässigeren Konkurrenten weiterziehen. Manchmal sind Unternehmen gezwungen, die Markteinführungszeit über die Softwarequalität zu stellen, aber sie sollten sich darüber im Klaren sein, dass sie sich damit nur eine Schuld aufgeladen haben, die gelöst werden muss, bevor die Konkurrenz sie zu ihrem Vorteil nutzt. Wir können also mit Fug und Recht behaupten, dass Qualität das A und O ist, um ein Unternehmen langfristig zu erhalten - und hohe Qualität lässt sich nur durch eine Kombination aus geschickter Entwicklung und sorgfältigen Tests erreichen, bei denen jeder Aspekt der Anwendung im gesamten Stack berücksichtigt wird. In diesem Kapitel erfährst du, wie du eine typische Web- oder Mobilanwendung auf Herz und Nieren prüfst, um diesen Weg zu beschreiten.
Full Stack Testing für hohe Qualität
Zu Beginn sollten wir uns auf ein gemeinsames Verständnis von Softwarequalität einigen. Früher wurde Softwarequalität mit einer fehlerfreien Anwendung gleichgesetzt - aber jeder, der heute in der Softwarebranche tätig ist, wird zustimmen, dass es nicht mehr nur darum geht. Wenn du Endnutzer/innen bittest, Qualität zu definieren, wirst du hören, dass sie von Benutzerfreundlichkeit, Aussehen und Bedienung, Datenschutz, schneller Informationsbereitstellung und 24/7-Verfügbarkeit von Diensten sprechen. Fragst du Unternehmen nach der Definition von Qualität, wirst du von Investitionsrendite, Echtzeitanalysen, keine Ausfallzeiten, keine Bindung an einen bestimmten Anbieter, skalierbare Infrastruktur, Datensicherheit, Einhaltung von Gesetzen und vielem mehr hören. All das sind Aspekte, die eine Anwendung heute zu einer hochwertigen Software machen. Wenn einer dieser Bereiche fehlschlägt, wirkt sich das auf die eine oder andere Weise auf die Qualität aus. Deshalb müssen wir sie genauestens prüfen!
Auch wenn die Liste der Qualitätsanforderungen lang ist, haben wir Werkzeuge und Methoden, um die meisten dieser Anforderungen zu erfüllen. Die Brücke zu hoher Qualität besteht also aus der Kenntnis dieser Werkzeuge und, was noch wichtiger ist, aus der Fähigkeit, sie in einem bestimmten Kontext anzuwenden, sowohl aus der Entwicklungs- als auch aus der Testperspektive. Dieses Buch soll dir helfen, diese Brücke zu bauen, indem es dir die Testfähigkeiten vermittelt, die du brauchst, um qualitativ hochwertige Web- und Mobilanwendungen zu entwickeln.
Testen ist, kurz gesagt, eine Praxis, mit der überprüft wird, ob das Verhalten der Anwendung durchgehend den Erwartungen entspricht. Damit das Testen erfolgreich ist, muss es auf der Mikro- und Makroebene durchgeführt werden. Sie müssen sich mit den einzelnen Aspekten der Anwendung befassen, z. B. jede Methode in einer Klasse, jeden Eingabedatenwert, jede Protokollmeldung, jeden Fehlercode usw. testen. Ebenso muss sie sich auf Makroaspekte wie das Testen von Funktionen, Integrationen zwischen Funktionen und End-to-End-Workflows konzentrieren. Aber damit können wir nicht aufhören zu testen! Wir müssen auch die ganzheitlichen Qualitätsaspekte der Anwendung testen - Sicherheit, Leistung, Zugänglichkeit, Benutzerfreundlichkeit und vieles mehr - um das Ziel zu erreichen, eine qualitativ hochwertige Software zu liefern. All das können wir mit dem Begriff " Full Stack Testing" zusammenfassen. Wie in Abbildung 1-1 dargestellt, umfasst das Full-Stack-Testing das Testen verschiedener Qualitätsaspekte der Anwendung in jeder Schicht (Datenbank, Dienste und Benutzeroberfläche) und der Anwendung als Ganzes.
In der Tat sollten Full-Stack-Tests und Entwicklung untrennbar miteinander verbunden sein, wie die beiden Schienen eines Eisenbahngleises. Wir müssen auf beiden Schienen gleichzeitig vorankommen, um Qualität in das Produkt einzubauen, sonst werden wir garantiert entgleisen. Nehmen wir zum Beispiel an, wir schreiben einen kleinen Codeblock, um den Gesamtbetrag der Bestellung für eine E-Commerce-Anwendung zu berechnen. Wir müssen prüfen, ob der Code den richtigen Betrag berechnet und ob er parallel sicher ist. Wenn wir das nicht tun, kann es passieren, dass wir Lücken in der Bahnlinie haben, und wenn wir auf dieser gebrochenen Linie weiter entwickeln, haben wir eine schlechte Integration und suboptimale Funktionalität. Um das Testen auf einer so elementaren Ebene zu verankern, müssen die Teams aufhören, es als eine isolierte Aktivität nach der Entwicklung zu betrachten, wie es traditionell der Fall war. Full-Stack-Tests müssen parallel zur Entwicklung beginnen und während des gesamten Lieferzyklus durchgeführt werden, um schnelleres Feedback zu erhalten. Die Praxis, früh im Entwicklungszyklus mit dem Testen zu beginnen, wird als "shift-left testing" bezeichnet und ist ein wichtiges Prinzip, das befolgt werden muss, damit Full Stack Testing die richtigen Ergebnisse liefert.
Linksverschiebungstest
Wenn wir die Abfolge der Aktivitäten in einem traditionellen Softwareentwicklungszyklus aufschreiben würden, würde sie Anforderungsanalyse, Design, Entwicklung und Testen lauten, wobei das Testen am Ende steht. Wie in Abbildung 1-2 zu sehen ist, schlägt das Shift-Link-Testing vor, die Testaktivitäten an den Anfang des Zyklus zu verlagern, umqualitativ hochwertige Ergebnisse zu erzielen.
Um dieses Konzept besser zu veranschaulichen, lass uns eine Analogie betrachten. Stell dir vor, dein Team baut ein Haus. Erscheint es sinnvoll, den Bau vollständig abzuschließen und erst dann die Qualität zu überprüfen? Was, wenn du feststellst, dass die Räume nicht die richtige Größe haben oder die Innenwände nicht stark genug sind, um die Last zu tragen? Solche Probleme versucht die Linksschieberprüfung zu vermeiden, indem sie bereits in der Planungsphase Qualitätskontrollen durchführt und diese während der gesamten Entwicklungsphase fortsetzt. So wird sichergestellt, dass das Endprodukt die höchstmögliche Qualität aufweist.
Qualitätsprüfungen während der gesamten Entwicklungsphase durchzuführen bedeutet, sie iterativ für jedes kleine Stück Arbeit zu wiederholen, damit die erforderlichen Änderungen reibungslos eingearbeitet werden können. In der Analogie zum Hausbau bedeutet das, dass diese Prüfungen beim Bau jeder Wand durchgeführt werden, damit alle Probleme sofort behoben werden. Um solche umfangreichen Tests durchzuführen, stützt sich das Shift-Link-Testing stark auf automatisierte Tests und CI/CD-Praktiken, bei denen die Qualitätsprüfungen auf der Mikro- und Makroebene automatisiert und kontinuierlich für jedes kleine Stück Arbeit auf dem CI-Server ausgeführt werden. Dadurch wird sichergestellt, dass die Anwendung kontinuierlich getestet wird, und zwar mit minimalen Kosten und geringem Aufwand, verglichen mit der manuellen Prüfung jedes kleinen Teils der Arbeit auf mehrere Qualitätsaspekte.
Um zu sehen, was das im Softwarekontext bedeutet, lass uns das Testen im Schichtbetrieb in alltägliche Aktivitäten aufschlüsseln. Nehmen wir ein Software Team, das einen iterativen Entwicklungszyklus verfolgt, wie z. B. bei der agilen Entwicklung. Einige der Qualitätsprüfungen, die in den verschiedenen Phasen der Entwicklung durchgeführt werden können, um das Testen nach links zu verlagern, sind in Abbildung 1-3 dargestellt.
Wenn du Abbildung 1-3 von links liest, werden zunächst eine Reihe von Qualitätsprüfungen hervorgehoben, die das Team durchführt, bevor eine User Story als entwicklungsreif angesehen wird :
-
In der Analysephase wird eine Zeremonie namens " Drei Amigos-Prozess " durchgeführt . Hier kommen die Vertreter des Unternehmens, die Entwickler und die Tester kurz zusammen, um die Funktion gründlich zu durchdenken. Ziel dieses Prozesses ist es, die Sichtweisen aller drei Rollen zu sammeln, damit Integrationen, Kanten und andere Geschäftsanforderungen nicht übersehen werden. Dies ist der erste Schritt des Shifting Left, bei dem die Anforderungen an ein Feature zunächst validiert werden.
-
Parallel dazu arbeitet der Unternehmensvertreter im Team mit dem User Experience (UX) Designer zusammen, um das Anwendungsdesign zu validieren und zu verbessern.
-
Sobald diese beiden Schritte abgeschlossen sind, wird zu Beginn der Iteration/des Sprints ein Iterationsplanungsmeeting (IPM) durchgeführt, um die User Stories der Iteration im Detail zu besprechen. Dies bietet dem Team die Möglichkeit, die Anforderungen noch einmal gemeinsam zu validieren.
-
Während der Iteration, kurz bevor eine User Story für die Entwicklung ausgewählt wird, findet ein Story Kickoff statt. Der Story-Kickoff ist eine abgespeckte Version des Drei-Amigos-Prozesses, bei dem der Schwerpunkt der Diskussion auf den Anforderungen und Kanten der jeweiligen User Story liegt. Zu diesem Zeitpunkt können wir mit Fug und Recht behaupten, dass das Team die Anforderungen sorgfältig getestet/validiert hat.
Auch bei der Entwicklung einer User Story werden die folgenden Qualitätsprüfungen durchgeführt, um schnelles Feedback zu erhalten:
-
Die Entwickler schreiben Unit-Tests als Teil jeder Story und integrieren sie in die KI. Sie fügen auch Linting-Tools und Plug-ins für die statische Codeanalyse hinzu und integrieren sie in die KI, um kontinuierliches Feedback zu erhalten.
-
In einigen Teams schreiben die Entwickler auch die UI-gesteuerten Funktionstests als Teil der User Story-Entwicklung und integrieren diese in die KI. In anderen Teams schreiben Tester sie nach der Entwicklung; beides ist üblich.
-
Bevor die neuesten Änderungen übertragen werden, führen die Entwickler eine Reihe von automatisierten Tests auf ihren lokalen Rechnern durch, um ein erstes Feedback zu erhalten.
-
Die zweite Ebene des Feedbacks ergibt sich aus den automatisierten Tests (Unit-, Service-, UI-Tests usw.), die während der CI für jeden Commit ausgeführt werden.
-
Die dritte Ebene des Feedbacks ist das sogenannte Dev-Box-Testing, bei dem die Tester/innen und die Unternehmensvertreter/innen eine schnelle Runde manueller Erkundungstests auf dem Rechner eines Entwicklers durchführen, um die neu entwickelte Funktionalität schnell zu überprüfen.
Mit einem solchen rigorosen Fokus auf schnelleres Feedback erhält das Team fast die Hälfte des Feedbacks, das sonst durch manuelle Tests nach der Entwicklung gewonnen worden wäre, bevor die User Story überhaupt in die Testphase gelangt. Mit anderen Worten: Das Team hat das Testen auf die linke Seite verlagert und damit den Testern im Team die Freiheit gegeben, die User Story vollständig auf verschiedene Qualitätsaspekte hin zu untersuchen, anstatt nur die erwarteten funktionalen Verhaltensweisen zu überprüfen.
So ermöglicht das Shift-Links-Testen sowohl die Fehlervermeidung (durch mehrere Validierungsrunden der Anforderungen) als auch das frühzeitige Erkennen von Fehlern, die sich einschleichen, entweder auf dem Rechner eines lokalen Entwicklers oder in der KI. Außerdem wird sichergestellt, dass qualitativ hochwertige Software ausgeliefert wird, da die Tester/innen die Möglichkeit haben, verschiedene Qualitätsaspekte eingehend zu untersuchen.
Hinweis
Extreme Programming (XP) ist eine Variante der agilen Softwareentwicklung, die das Testen nach dem Shift-Links-Prinzip beinhaltet. Wenn du dich eingehender mit den XP-Methoden und -Praktiken befassen möchtest, ist Kent Becks Extreme Programming Explained (Addison-Wesley Professional) eine empfehlenswerte Lektüre.
Das Konzept, Tests früher in den Entwicklungszyklus einzubeziehen, ist nicht auf funktionale Anwendungstests beschränkt. Es kann auf Tests im Allgemeinen angewendet werden, einschließlich Sicherheitstests, Leistungstests und mehr. Eine der vielen Möglichkeiten, Sicherheitstests auf die linke Seite zu verlagern, ist zum Beispiel der Einsatz eines Pre-Commit-Scanning-Tools wie Talisman, das den Commit noch vor dem Einchecken des Codes auf Geheimnisse und Warnungen überprüft. In den folgenden Kapiteln wirst du praktische Ansätze für die Linksverschiebung von Tests kennenlernen.
Insgesamt verkörpert dieser Ansatz den Aphorismus "Qualität liegt in der Verantwortung des Teams", da die Durchführung von Qualitätsprüfungen in jeder Phase des Lebenszyklus der Softwareentwicklung - die Überprüfung von Prototypen des Anwendungsdesigns, der Anforderungen usw., wie bereits erwähnt - von verschiedenen Teammitgliedern übernommen werden muss. Wir können also sagen, dass der Aufbau der entsprechenden Testfähigkeiten zur Durchführung verschiedener Qualitätsprüfungen für alle Rollen in einem Team entscheidend ist, um erfolgreich qualitativ hochwertige Software zu liefern!
Zehn Full Stack Testing-Fähigkeiten
Wenn wir an Testfähigkeiten denken, neigen wir dazu, sie in zwei weit gefassten Fähigkeiten zusammenzufassen - manuelle und automatisierte Tests. Aber die Technologie hat sich in den letzten Jahrzehnten weiterentwickelt, und hinter diesen allgemeinen Begriffen verbergen sich die wesentlichen neuen Fähigkeiten, die man erlernen muss, um verschiedene Qualitätsprüfungen durchzuführen und hochwertige Web- und Mobilanwendungen zu liefern. Abbildung 1-4 zeigt die 10 Full-Stack-Testing-Fähigkeiten, die es uns ermöglichen, Full-Stack-Tests effizient durchzuführen.
Lass uns diese 10 Fähigkeiten erkunden und warum du sie unbedingt lernen solltest:
- Manuelle Erkundungstests
-
Zunächst einmal muss klargestellt werden, dass manuelle explorative Tests sich von manuellen Tests unterscheiden. Beim manuellen Testen geht es darum, eine vorgegebene Liste von Anforderungen zu überprüfen, und es ist nicht unbedingt eine analytische Denkweise erforderlich. Im Gegensatz dazu geht es beim manuellen explorativen Testen darum, in die Details der Anwendung einzutauchen, sich verschiedene reale Szenarien auszudenken, die nicht in den User Stories dokumentiert sind, diese in einer Testumgebung zu simulieren und das Verhalten der Anwendung zu beobachten. Dies erfordert eine logische und analytische Denkweise und ist die erste und wichtigste Fähigkeit, um eine fehlerfreie Anwendung zu erstellen. Es gibt verschiedene Methoden und Ansätze, die man erlernen kann, um diese Explorationssitzungen zu strukturieren, die wir in Kapitel 2 besprechen werden.
- Automatisierte Funktionstests
-
Dies ist eine der zentralen Fähigkeiten für das Testen im Schichtbetrieb, wie bereits erwähnt. Automatisiertes Testen reduziert auch den manuellen Testaufwand erheblich, vor allem, wenn die Anwendung um weitere Funktionen erweitert wird. Einfach ausgedrückt, geht es hier darum, Code zu schreiben, um die Anforderungen der Funktionen automatisch und ohne menschliches Zutun zu testen. Dafür brauchen wir Werkzeuge. Um diese Fähigkeit zu erlangen, müssen wir die verschiedenen Werkzeuge kennen, mit denen wir Tests auf verschiedenen Anwendungsebenen schreiben können. Aber das ist noch nicht alles: Man muss auch wissen, welche Antipatterns bei automatisierten Tests zu beachten sind und wie man sich von ihnen fernhält. Wir werden die verschiedenen Aspekte dieser Fähigkeit in Kapitel 3 besprechen.
- Kontinuierliche Prüfung
-
Continuous Delivery ist eine Praxis , bei der Funktionen in kurzen Zyklen schrittweise an die Endnutzer/innen ausgeliefert werden, anstatt in einem einzigen Big-Bang-Release. Durch die kontinuierliche Bereitstellung erzielt das Unternehmen frühzeitig Gewinne und kann seine Produktstrategie auf der Grundlage des Feedbacks der Endnutzer schnell bewerten und anpassen. Um die kontinuierliche Bereitstellung zu ermöglichen, müssen wir die Anwendung kontinuierlich testen, damit sie immer in einem veröffentlichungsbereiten Zustand ist. So naheliegend das auch sein mag, so klug ist es, Qualitätsprüfungen zu automatisieren und in deine CI/CD-Pipelines zu integrieren und sie häufig auszuführen, um den Testprozess zu erleichtern. Die Kunst des kontinuierlichen Testens besteht darin, zu bestimmen, welche Arten von automatisierten Tests in jeder Phase des Auslieferungszyklus ausgeführt werden sollten, damit das Team schneller Feedback erhält und sie effektiv in die CI/CD-Pipelines integrieren kann. Diese grundlegenden Aspekte werden in Kapitel 4 ausführlich behandelt.
- Datenprüfung
-
Du kennst vielleicht die Sprüche "Daten sind Geld" und "Daten sind das neue Öl". Diese Begriffe machen deutlich, wie wichtig die Prüfung der Datenintegrität heutzutage ist. Wenn die Daten der Benutzer/innen verloren gehen oder die Anwendung den Endbenutzer/innen die falschen Daten anzeigt, verlieren sie das Vertrauen in die Anwendung selbst. Das Testen von Daten erfordert Kenntnisse über die verschiedenen Arten von Datenspeichern und -verarbeitungssystemen, die typischerweise in Web- und mobilen Anwendungen verwendet werden (Datenbanken, Caches, Ereignisströme usw.), und die Fähigkeit, geeignete Testfälle abzuleiten. Kapitel 5 befasst sich mit diesen Themen und damit, wie der Datenfluss zwischen den Anwendungskomponenten neben den funktionalen Abläufen neue Testfälle erzeugt.
- Visuelle Prüfung
-
Das Erscheinungsbild der Anwendung trägt wesentlich zum Markenwert eines Unternehmens bei. Vor allem bei großen Business-to-Customer (B2C)-Produkten, die von Millionen Menschen genutzt werden, kann eine schlechte visuelle Qualität den Markenwert sofort beeinträchtigen. Deshalb ist es wichtig, durch visuelle Tests der Anwendung sicherzustellen, dass die Endnutzer ein harmonisches und angenehmes visuelles Erlebnis haben. Visuelle Tests erfordern ein Verständnis dafür, wie die UI-Komponenten bei Webanwendungen miteinander und mit dem Browser interagieren. Solche Prüfungen können auch automatisiert werden, wobei andere Tools als bei automatisierten Funktionstests zum Einsatz kommen. Wir werden in Kapitel 6 über diese Fähigkeit und die großen Unterschiede zwischen diesen beiden Arten der Automatisierung sprechen.
- Sicherheitstests
-
Sicherheitsverletzungen sind in der heutigen Welt zu weit verbreitet, und selbst Giganten wie Facebook und Twitter sind von solchen Angriffen nicht ausgenommen. Sicherheitsprobleme sind sowohl für die Endnutzer/innen als auch für das Unternehmen mit hohen Kosten verbunden, die sich aus dem Verlust oder der Preisgabe sensibler Daten, rechtlichen Strafen und dem Ruf der Marke ergeben. Bislang galten Sicherheitstests in der Branche als Nischenkompetenz, da qualifizierte Penetrationstester in der Regel erst gegen Ende des Entwicklungszyklus mit der Suche nach Sicherheitsproblemen beauftragt werden. Doch angesichts des Mangels an professionellen Sicherheitstestern und der zunehmenden Zahl von Sicherheitsverstößen sind Softwareteams gut beraten, grundlegende Sicherheitstests in ihre tägliche Arbeit einzubeziehen. In Kapitel 7 werden wir besprechen, wie man wie ein Hacker denkt und nach Sicherheitsproblemen in der Anwendungsfunktionalität sucht, sowie Tools zur Automatisierung von Sicherheitsprüfungen.
- Leistungstests
-
Schon ein geringer Leistungsabfall der Anwendung kann zu enormen finanziellen und Reputationsverlusten für ein Unternehmen führen - denk an das bereits erwähnte Beispiel von Flipkart. Die Kunst des Leistungstestens besteht darin, eine Reihe von wichtigen Leistungsindikatoren auf verschiedenen Anwendungsebenen zu messen. Leistungstests können auch automatisiert und in CI-Pipelines integriert werden, um kontinuierliches Feedback zu erhalten. In Kapitel 8 werden wir eine Shift-Links-Performance-Testing-Strategie und die entsprechenden Tools besprechen.
- Zugänglichkeitsprüfung
-
Web- und mobile Anwendungen sind zu alltäglichen Gebrauchsgegenständen geworden. Sie für Menschen mit dauerhaften oder vorübergehenden Behinderungen zugänglich zu machen, ist in vielen Ländern nicht nur gesetzlich vorgeschrieben, sondern auch ethisch richtig. Um die Fähigkeit zur Prüfung der Barrierefreiheit zu erlangen, müssen wir zunächst die gesetzlich vorgeschriebenen Barrierefreiheitsstandards verstehen. Dann können wir sowohl manuelle als auch automatisierte Hilfsmittel zur Prüfung der Barrierefreiheit einsetzen, um zu überprüfen, ob diese Standards eingehalten werden. In Kapitel 9 werden wir auf diese Fähigkeit eingehen und darauf, warum die Integration von Barrierefreiheit für Unternehmen sogar lukrativ sein kann.
- Funktionsübergreifende Anforderungsprüfung
-
Wir haben gesehen, dass Endnutzer und Unternehmen eine lange Liste von Qualitätsanforderungen haben, wie z. B. Verfügbarkeit, Skalierbarkeit, Wartbarkeit, Beobachtbarkeit usw., abgesehen davon, dass sie nur fehlerfreie Funktionen benötigen. Diese werden als funktionsübergreifende Anforderungen (CFRs) einer Anwendung bezeichnet. Obwohl die funktionalen Anforderungen von in der Regel die meiste Aufmerksamkeit auf sich ziehen, sind es die CFRs, die der Anwendung Qualität verleihen, und wenn diese nicht geprüft werden, führt das zu unzufriedenen Geschäfts- oder Softwareteams, Endnutzern oder beiden. Daher ist das Testen von CFRs eine grundlegende Fähigkeit. In Kapitel 10 werden wir die Prüfmethoden und -werkzeuge für die Validierung der verschiedenen CFRs besprechen.
Hinweis
CFRs werden von vielen in der Branche auch als nicht-funktionale Anforderungen (NFRs) bezeichnet. Wir werden die feinen Unterschiede zwischen diesen beiden Begriffen in Kapitel 10 besprechen.
- Mobile Tests
-
Die schiere Anzahl der Apps, die im Jahr 2021 auf in den führenden App Stores (Google Play und Apple App Store) verfügbar sind, mag überraschen - insgesamt 5,7 Millionen. Die explosionsartige Zunahme der Zahl der mobilen Apps ist vor allem auf die zunehmende Nutzung von Mobilgeräten zurückzuführen. Das Webanalyseunternehmen Global Stats gab 2016 bekannt, dass seine Daten zeigen, dass die Internetnutzung auf Mobilgeräten und Tablets weltweit die Desktopnutzung überholt hat. Daher ist die Fähigkeit, mobile Anwendungen und die Kompatibilität von Websites auf mobilen Geräten zu testen, heute eine wichtige Fähigkeit.
Obwohl alle zuvor erwähnten Fähigkeiten für das Testen mobiler Anwendungen erforderlich sind, erfordert es auch eine neue Denkweise. Außerdem muss man eine ganze Reihe mobilspezifischer Testwerkzeuge erlernen, um verschiedene Qualitätsprüfungen für mobile Anwendungen durchführen zu können. Deshalb wird das Testen mobiler Anwendungen hier als eigenständige Fertigkeit behandelt. In Kapitel 11 werden wir uns mit den Feinheiten der mobilen Landschaft befassen.
Mit diesen 10 Full-Stack-Testing-Fähigkeiten bist du in der Lage, alle ganzheitlichen Qualitätsaspekte von Web- und Mobilanwendungen zu testen. Wie bereits erwähnt, ist es für jede Rolle im Team wichtig, ein gewisses Maß an Kompetenz in jeder dieser Fähigkeiten zu erwerben. Das Buch zeigt dir anhand von praktischen Beispielen, wie du diese Fähigkeiten erwerben kannst.
Die wichtigsten Erkenntnisse
Hier sind die wichtigsten Erkenntnisse aus diesem Kapitel:
-
Softwarequalität ist nicht mehr nur mit fehlerfreier Funktionalität gleichzusetzen. Eine Anwendung kann als suboptimal angesehen werden, wenn ihre ganzheitlichen Qualitätsdimensionen (Sicherheit, Leistung, visuelle Qualität usw.) nicht stimmen.
-
Full Stack Testing bedeutet, alle Qualitätsdimensionen einer Anwendung ganzheitlich auf jeder Ebene zu testen und so qualitativ hochwertige Software zu liefern.
-
Damit das Full-Stack-Testing sein Ziel erreicht, nämlich qualitativ hochwertige Software zu liefern, sollten die Teams das Testen auf die linke Seite verlagern, sodass es parallel zur Analyse beginnt und während des gesamten Lieferzyklus fortgesetzt wird.
-
Das Testen im Schichtbetrieb verkörpert den Aphorismus "Qualität liegt in der Verantwortung des Teams", denn es verlangt, dass jede Rolle im Team die Verantwortung für die Durchführung bestimmter Qualitätsprüfungen in verschiedenen Phasen der Lieferung übernimmt. Dies erfordert, dass sich alle Teammitglieder weiterbilden und relevante Testfähigkeiten auf verschiedenen Kompetenzstufen erwerben.
-
Hinter den beiden klassischen monolithischen Kategorien von Testfähigkeiten - manuell und automatisiert - verbirgt sich eine große Anzahl neuer Testfähigkeiten, die für die effiziente Durchführung von Full-Stack-Tests erforderlich sind. In diesem Kapitel wurden 10 verschiedene Testfähigkeiten vorgestellt, die heute für die Bereitstellung hochwertiger Web- und Mobilanwendungen unerlässlich sind und die wir in den folgenden Kapiteln näher betrachten werden.
Get Full Stack Testing now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.