Sobald ein Programm oder eine Internetseite erst einmal produktiv verwendet wird, stellt sich heraus, ob alle Eventualitäten bedacht sind oder ob doch etwas nicht berücksichtigt worden ist. Spätestens wenn sich Kunden oder Nutzer mit Reklamationen oder Klagen melden, wird klar, dass hier und da vielleicht nicht alles zu Ende gedacht wurde oder die automatisierten Tests eben nicht alle Fälle abgedeckt haben. In diesem Beitrag geht es darum, wie man Fehler, Warnungen und anderweitige Probleme früh erkennen kann.
In jedem Programm spielt auch die sogenannte Fehlerbehandlung eine Rolle. Hierbei geht es darum, wie mit aufgetretenen Fehlern umgegangen werden soll. Beispielsweise lassen sich diese in Datenbanken oder Protokolldateien speichern oder der Entwickler lässt sich mit E-Mails oder Push-Nachrichten informieren.
Ein Stück eleganter ist der Einsatz sogenannter Error Tracking Tools. Von denen gibt es eine ganze Reihe, zum Beispiel Rollbar, Raygun, Sentry, OverOps, Airbrake, BugSnag oder StackHunter. Diese werden in das eigene Programm bzw. die eigene Internetseite integriert und sammeln von dort jegliche Fehlermeldungen ein, um diese in einer Datenbank vorzuhalten und in einem Dashboard anzuzeigen. Je nach Funktionsumfang lassen sich diese Dienste mit unterschiedlichen Programmiersprachen und Frameworks verwenden. Außerdem bieten sie zahlreiche Integrationen, sowohl für die Code-Repositories (z. B. auf GitHub) als auch für Benachrichtigungen (z. B. Trello, Slack, HipChat, usw.). Erweiterte Funktionen erlauben es ferner, Informationen über den aktuellen Nutzer mitzuliefern, so dass ersichtlich wird, wer denn mit einem bestimmten Problem konfrontiert worden ist.
Nach einer praktischen Evaluierung verschiedener Kandidaten haben wir uns für Rollbar entschieden und dies kürzlich in diverse Zikula-basierte Seiten eingebunden - und zwar nicht nur auf PHP-Ebene, sondern zusätzlich auch für JavaScript-Funktionen. Alles in allem hat das wunderbar geklappt und wir sind bereits auf einige kleinere Fehlerchen aufmerksam gemacht worden, die wir auf diese Weise zügig beheben konnten. So kann es etwa vorkommen, dass ein jQuery-Skript in allen Tests wunderbar funktioniert, aber in einer bestimmten Konstellation aus Endgerät und Browser (etwa eine veraltete Android-Version) Probleme bereitet. Das Error Tracking hilft hier merklich, solche Unzulänglichkeiten auszumerzen.
Sehr wahrscheinlich werden wir Rollbar auch in ModuleStudio verwenden (es gibt natürlich auch eine Integration für Java), um auch hier Probleme, die dem Nutzer nicht direkt auffallen oder die er einfach nicht auf GitHub meldet, zu erkennen und lösen zu können. Es wird aber auch in den Grundeinstellungen einen Schalter geben, um die Funktion auszuschalten, für den Fall, dass man nicht möchte, dass auftretende Exceptions und Stack Traces ins Netz übermittelt werden.