Quick Navigator
© 2004-2017 by Rocketlab

hand crafted in the beautiful mountains of Switzerland

Testen von Webapplikationen


Das Testen von Webapplikationen kann man in folgende Unterthemen untergliedern:

  1. Funktionales Testen
  2. Usability Testing
  3. Interface Testing
  4. Kompatibilitäts Testing
  5. Performance Testing
  6. Security Testing (auch Penetration Testing)

 

1. Funktionales Testen

Das funktionale Testen stellt das Testset dar, alle vorhandenen Links, die Datenbank Anbindung, Formulare und Eingabefelder zur Übermittlung bzw. Empfang von Informationen/ Daten und nicht zuletzt Cookies zu überprüfen.

 

Testen vorhandener Links

Hierbei werden sämtliche Links überprüft, die aus der Applikation oder Website nach Aussen gehen (externe Links) aber auch interne Links, also innerhalb der Applikation oder Site. Das Ziel ist hier, evtl. Deadlinks ausfindig zu machen, um diese vor dem Going Live zu bereinigen.

Weiterhin werden Links aus z.B. Newslettern an die zu testende Domain überprüft, Zielsites, Landing Pages aus Werbeschaltungen, Teasern usw. Im laufenden Betrieb kann dies durch entsprechende Monitoring- und Analyse Tools stattfinden.

Deutlich schwieriger stellt das Ausfindingmachen von sog. Waisensites (orphan sites) dar. Das sind Sites, die existieren, zu denen es aber (zumindest intern) keinen Link gibt und die auch nicht als Landingpages fungieren. Da diese Site nicht im Bewusstesein der Entwickler und Tester sind, stellen sie potenzielle Gefahrenstellen dar, über die Angreifer evtl. Zugriff auf Applikation, Datenbank oder System erhalten können.

 

Formulartests

Formulare sind integraler Bestandteil der meisten Webapplikationen. Sie dienen als Austauschkomponente von Informationen zwischen Website (Client) und Applikation bzw. Webserver (Server). Formulare können sowohl Informationen aufnehmen als auch annehmen und anzeigen. Hier findet eine Interaktion zwischen Applikation und Benutzer statt.

Ein paar Vorschläge für Tests im Zusammenhang mit Formularen:

  • Werden Eingaben in Formulare validiert?
  •  Gibt es Defaultwerte für alle oder bestimmte Eingabefelder?
  •  Was passiert bei Falscheingaben (z.B: Zahlen im E-Mail Feld, usw.) oder Missbrauch? Wie gehen Entry Mask und Applikation damit um?
  •  Sind interaktive Formulare vorhanden, die sich erweitern je nach Eingabe?

 

Ich möchte dies kurz an dem Beispiel einer Suchmaschine veranschaulichen, welche die Registrierung für sowohl Werbekunden als auch Affiliates anbietet. Der Registrierungsprozess ist mehrstufig für beide Gruppen, allerdings abhängig von den Eingaben, die zuvor eingegeben wurden. Die eine Gruppe hat mehr Standardeingaben, während bei der anderen Gruppe Anbieterabhängige Fragen und damit verbundene Folgeinformationen abgerufen werden.

Die jeweiligen Validierungen und Folgefragen können anhand von Ausfüllstrecken (Flows) gut automatisiert überprüft werden.

 

Cookie Testing

Cookies sind kleine Textdateien, die am Rechner des Benutzers gespeichert werden. Sie dienen vornehmlich dazu, Sessions zu unterstützen. Während der funktionalen Tests sollte die Applikation sowohl mit Cookie Handling durchgetestet werden, als auch ohne (enable/ disable Cookies unter den Internet Optionen). Das Verhalten mit ausgeschalteten Cookies sollte nicht zu Fehlern führen, insbesondere deshalb da eine neue EU Norm den Anwender vor die Wahl stellen soll, ob dieser Cookies akzeptiert oder nicht. D.h. es kann davon ausgegangen werden, dass es eine gewisse Prozentzahl an Benutzern gibt, welche keine Cookies akzeptieren. Die Applikation muss aber trotzdem fehlerfrei und in vorhersehbarer Weise ablaufen.

Überprüft werden sollte zudem, ob die Cookie Information verschlüsselt wird bevor diese auf den Clientrechner geschrieben wird. Wenn man mit Session Cookies testet, soll der Cookie Inhalt während und nach einer laufenden Session überprüft werden. Hierzu gehört auch der Eintrag „cookie expires …“, ein Session Cookie muss nach erfolgreichem Logout demnach andere Informationen halten wie während einer aktiven Session.

 

Interessant ist das Verhalten während einer Session, wenn das Cookie (manuell) gelöscht wird. Was passiert? Kommt es zu Fehlermeldungen, insbesondere zu Standardfehlermeldungen? Diese können wertvolle Informationen an potenzielle Angreifer liefern (Dateistruktur, Betriebssystem, usw.).

 

Valides HTML/ CSS

Suchmaschinen lieben validen Code. Deshalb ist es besonders wichtig, hier alle notwendigen Vorkehrungen getroffen zu haben. Zumindest sollten Syntax und Semantik Fehler (z.B. mit Webtools) überprüft werden. Überprüfen Sie zudem ob Links „nofollow“ Tags (rel=“nofollow“) haben, welche Suchmaschinen eigentlich daran hindern sollen, Sites zu crawlen. Dies würde aber zu deutlich schlechteren Suchergebnissen und einem schlechten Ranking führen.

 

Datenbank Testing

Datenkonsistenz ist essentiell bei Webapplikationen. Hierbei wird das Verhalten überprüft, wenn Formularelemente bearbeitet, gelöscht oder hinzugefügt werden. Wie verhält sich weiter die Datenkonsistenz? Werden die Eingaben validiert und überprüft auf Vollständigkeit, Abhängigkeiten usw.? Es gilt zudem zu überprüfen, ob die SQL Abfragen (SQL Queries) korrekt ausgeführt werden. Hierbei findet man evtl. Hinweise in den Logfiles der Applikation und Datenbank. Interessant ist auch das Verhalten bei Hochlast der Datenbank mit Parallelanfragen. Dies gehört aber dann schon in den Bereich Last und Performance Testing.

 

2. Usability Testing

Navigation Tests

Hierbei wird nachgestellt und durchlaufen, wie Benutzer auf der Website navigieren. Es werden sowohl Links, als auch Suchanfragen, Button Klicks usw. berücksichtigt. Im Zusammenhang mit Usability Testing ist hier ebenso wichtig, wie leicht und intuitiv die Nutzerführung ist. Falls Erklärungen notwendig oder (Direkt-)Hilfen angeboten werden, sollten diese leicht ersichtlich und in z.B. einem PopUp Layer aufgehen.

Überprüft wird auch, wie leicht verständlich und kontextbezogen die Hilfe- oder Anleitungstexte sind. Die Hauptnavigation sollte sich über alle Seiten erstrecken und konsistent sein. Der aktuell besuchte Bereich soll markiert (z.B. highlighted) sein.

 

Inhaltsprüfung

Der angebotene Inhalt muss logisch und leicht erfassbar sein. Rechtschreib- oder Grammatikfehler sollten vermieden werden. Die Verwendung dunkler Farben (z.B. weisse Schrift auf schwarzen Hintergrund) stösst bei vielen Usern auf Ablehnung, da es anstrengend ist, wenn eine Site nicht hell und leicht gestaltet wurde. Professionelle Webdesigner befolgen grundsätzlich aber die Regeln des visuellen Designs und der Inhaltsaufbereitung. Stichprobentests nach den eben erwähnten Regeln reichen hier aus, da Design und Contentaufbau fast immer gleich sind innerhalb einer Applikation.

Dies sind natürlich nur ein paar Beispiele von Usability Checks, welche alle durchgeführt werden sollten.

Ein paar Hilfestellungen, die man dem Besucher noch anbieten sollte sind z.B. Suchoptionen (z.B. eine Facettensuche im Online Shop), Direkthilfe („i“-Symbol, wo nach einem Klick ein Layer mit Text oder anderem Inhalt aufpoppt, der dem User Hilfe aufzeigt) oder auch eine Sitemap (aller Haupt- und Unterseiten), die als XML zugleich Suchmaschinen als Indexierungshilfe dient.

 

3. Schnittstellen/ Interface Testing

Die Haupt-Schnittstellen sind der Webserver, Schnittstelle zur Applikation und eine Schnittstelle zur Datenbank.

Hier gilt es zu testen, ob das Zusammenspiel der einzelnen Schnittstellen und Protokolle fehlerfrei ablaufen. Falls Fehler auftauchen müssen diese zumindest programmtechnisch abgefangen sein. Die Fehleranzeige mit Fehlercode hilft der Entwicklung, Fehler schneller zu beheben. Hier gibt es eine Vielzahl an Störungen, die der Tester bewusst provozieren kann. Was passiert, wenn bei Web- oder Datenbankserver währen des Laufs ein Reset ausgeführt wird.

 

4. Kompatibilitätstesting

Ein sehr wichtiger Testaspekt im Rahmen des Website Testings ist die Kompatibilität einer Website. Folgende grundlegende Kompatibilitäten müssen berücksichtigt werden:

  • Browser Kompatibilität
  • Kompatibilität des/ der Betriebssysteme
  • Mobile Browsing (Responsive Webdesign!)
  • Druckoption

 

Browser Kompatibilität

Dies stellt den wohl grössten Block innerhalb des Kompatibilität Testings dar. Hier können am meisten ungeplantes Verhalten und nicht vorhersehbare Folgen auftreten. Die meisten Applikationen sind eben vom Browser und dessen Verhalten abhängig. Verschiedene Browser, unterschiedliche Konfigurationen und Sicherheitseinstellungen stellen Applikationen vor Herausforderungen, die es zu meisten gilt. Im Vorfeld muss der Entwickler dies bereits berücksichtigen, insbesondere wenn mit AJAX, HTML5, CSS3, Rest usw. gearbeitet wird. Hier spricht man auch vom Cross-Browser Testing, also Applikationen sollten Browser-unabhängig (und immer gleich) funktionsfähig sein.

Es spielen natürlich auch Dinge wie Sicherheitschecks oder Validierungen rein, weshalb Sie im Bereich Kompatibilität einen Ihrer Schwerpunkte setzen sollen. Ein solides Teststrategie umfasst neben Cross-Device (Desktop, Handheld, Smartphone, …) auch Cross-Browser Testing.

 

Betriebssystem Kompatibilität

Manche Funktionalität könnte an gewissen Betriebssystemen (vergessen in diesem Zusammenhang die Betriebssystem der Smartphone, Tabs usw. nicht) zu Problemen führen oder die Funktionalität gar komplett ausbleiben. Gute und solide Applikationen folgen einer Architektur, die über alle Betriebssysteme lauffähig ist.

Neben der programmtechnischen Elemente sind hier auch Grafiken (z.B. lief auf dem iPhone eine ganze Weile kein Flash), Eingabemasken, Seitenlayout (Stichwort „Responsive“) oder Nutzung nativer Funktionen (z.B. Active X), welche eben nicht auf jedem OS zur Verfügung stehen, zu berücksichtigen. Natürlich sollte dies bereits in der Entwicklung Berücksichtigung finden, aber darauf verlassen kann man sich erst, wenn man selbst alles komplett durch Testszenarien abgedeckt und hinreichend getestet hat.

 

Mobiles Surfen

Wie bereits zuvor erwähnt, gilt es neben Cross-Browser auch Cross-Device Testing durchzuführen. Die Verbreitung wächst immer noch rasant an, einige User verwenden ausschliesslich mobile Geräte, um auf Webinhalte und Applikationen zuzugreifen. Ist Ihre Applikation dafür nicht gerüstet, verlieren Sie einen erheblichen Anteil potenzieller Kunden, insbesondere in der Gruppe „Generation Y“.

 

Druckoptionen

Falls innerhalb der Applikation eine „Drucken“ Funktion angeboten wird, muss sichergestellt sein, dass diese nicht nur durchwegs funktioniert, sondern auch korrekt (ohne Seitenabschnitte) druckt.

 

5. Performance Testing

Applikationen sind grösseren Zugriffen und Anstürmen ausgesetzt. Dies ist auch die sogenannte Zugriffslast. Während des Last- und Performance Testings wird simuliert, wie eine grosse Anzahl an Benutzern eine gewisse Anzahl an Aktionen (pro Sekunde oder Zeiteinheit) durchführt. Je nach Applikation, Popularität, Wichtigkeit, ist ein Realszenario zu simulieren und die Reaktionen sowohl des Servers als auch der Applikation und weiterer Komponenten zu überprüfen.

Grundsätzlich unterscheidet man das Performance Testing in

  • Web Load Testing
  • Web Stress Testing

Beim Loadtesting werden eine bestimmte Anzahl (z.B. 1000) User schrittweise auf die Webapplikation geleitet, so dass im Ende alle 1000 User parallel darauf zugreifen und eine gewisse (eingestellte) Zeit darauf bleiben und Aktionen durchführen. Hierbei gewinnt man Erfahrung darüber, wie Applikation und Server mit Peaks (Stosszeiten) umgehen, wie hoch die Fehler- uns Ausfallquoten sind usw. Eine Applikation muss mit Parallelen und synchronen Zugriffen bis zu einer bestimmten Anzahl auskommen und Fehler- und Ausfallquote sollte sich unterhalb eines definierten Wertes bewegen.

Neben der Applikation gehören hier auch der Austausch von Daten (Queries, Formulareingaben, Ausgabe von z.B. PDF Dateien usw.), API- und Schnittstellen Kommunikation, Speicher (RAM) usw. Professionelle Tools wie der HP Load Runner bieten diese Indices an.

 

Beim Stresstesting wird Applikation und Server bis zum Maximum ausgereizt und so die Endlichkeit ausgelotet. Hierbei gewinnt man Erkenntnisse über Erweiterungsbedarfe und der grundsätzlichen Performance der Site. Das Ziel ist, die Applikation langsam zum Totalausfall zu bringen, um hierbei zu sehen, wie die Applikation reagiert und welches Verhalten auftreten kann. Hierbei ist auch zu beobachten, wie sich das System wieder komplett von selbst herstellt und danach reagiert und läuft. Der konkrete „Stress“ wird hauptsächlich auf Eingabefelder, An-/ Abmeldefeatures usw. angewandt.

Performance Tests werden sowohl auf verschiedenen Betriebssystemen, verschiedener Hardware (falls nötig und verfügbar) durchgeführt mit unterschiedlichen Konfigurationen, um auch Memory Fehler und Ausfälle auszutesten.

 

6. Security Testing – Sicherheitstests

Das Theme Security oder auch Penetration Testing ist ein eigenes ganz grosses Thema, das nur von erfahrenen Spezialisten fachkundig durchgeführt und beurteilt werden kann. Hier gibt es darauf spezialisierte Firmen, die sicherheitskritische Anwendungen (z.B. Banking, eCommerce usw.) auf Herz und Nieren testen.

Einige (leicht verständliche) Beispiele sind hier u.a.

  • Das Kopieren einer URL eines Passwort geschützten Bereichs und einfügen im nicht eingeloggten Zustand. Geschütze Bereiche dürfen ohne Zugang (Login) nicht erreichbar sein
  • Das Manipulieren der URL im angemeldeten Zustand. Zum Beispiel das Ändern der Site ID oder ähnlich Parameter, die z.B. über einen Query String in der URL mitgereicht werden.
  • Missbrauch der Login Maske, d.h. bewusste Falscheingaben und die Beobachtung wie das System darauf reagiert.
  • Auflistung von Ordnerinhalten auf dem Webserver sind nicht zulässig (Options –indexes)
  • Ist ein Captcha Feld vorhanden und kann dieses über Automatisierung benutzt werden?
  • Wird SSL stringent für informationskritische Inhalte verwendet?
  • Alle Transaktionen, Fehlermeldungen, Aussetzer, Warnungen usw. sollten in Logfiles abgelegt und für den Serveradmin oder Betriebsverantwortlichen einsichtbar sein

 


Launch the rocket!


Wir freuen uns auf neue Partner, die mit uns gemeinsam
außergewöhliche Dinge erschaffen möchten.
Schreiben Sie uns, wenn Sie mit uns zusammenarbeiten möchten.