Release
Mit einem Release liefern wir die vereinbarte Funktionalität an unsere Kunden aus. Über Tests ist der Nachweis der Fehlerfreiheit eines Release nicht möglich, jedoch können wir über Testing die Wahrscheinlichkeit des Vorhandenseins von Fehlern drastisch reduzieren. Wir wollen erreichen, dass ein Release folgende Eigenschaften hat: Neue vereinbarte Funktionalität soll nachweislich enthalten, Funktionalität aus dem Vorgänger-Release soll nachweislich immer noch vorhanden sein, die Wahrscheinlichkeit für technische und fachliche Fehler in jeglicher enthaltener Funktionalität soll minimiert werden. Um dieses Ziel zu erreichen, stehen eine Reihe von bewährten Vorgehensweisen zur Verfügung. Die Grundlage legen wir mit der Qualifikation und dem Mindset unserer MitarbeiterInnen, die bereits während der Implementierung auf eine saubere Umsetzung der Aufgaben achten und ihre eigenen Beiträge verifizieren.
Automatisiertes Testen
Sind wir selbst für die Implementierung des Gesamtsystems oder eines Teils davon verantwortlich, dann verwenden wir automatisierte Tests, um Codebestandteile schnell und nachvollziehbar auf die Korrektheit der von ihnen produzierten Ergebnisse oder auf fehlerhafte Umgebungsbedingungen während der Ergebnisproduktion zu prüfen, wie z.B. übersehene Änderungen an Schnittstellen oder Datenbankmodellen. Wir geben hierbei automatisierten Integrationstests den Vorzug gegenüber Unit Tests, insbesondere unter zeitkritischen Rahmenbedingen. Erfolgreiche Units Tests sind keine Garantie für erfolgreiche Integrationstests, während fehlschlagende Integrationstests mit hoher Wahrscheinlichkeit sowieso fehlschlagende Unit Tests zur Folge haben. Insofern haben aus unserer Erfahrung Integrationstests eine höhere Durchschlagskraft und Effizienz und wir erstellen Tests je nach Situation und Anforderung a priori (Test-driven Development) oder klassisch nach Abschluss der eigentlichen Umsetzung der Funktion.
Manuelles Testen
Optional flankiert oder falls durch Zertifizierungsvorschriften eingefordert, werden die automatisierten Tests durch manuelle Tests auf Applikationsebene ergänzt – das ist das Tagesgeschäft unserer Tester. Wir haben technisch versiertes Personal, das in der Lage ist, eine ihnen übergebene Anwendung auf Herz und Nieren zu prüfen. Üblicherweise auf Basis der Anforderungen erstellen und dokumentieren wir Testfälle, sorgen für die nötige Testumgebung (wie z.B. vorbefüllte Testdatenbanken, verbundene Sensoren oder aufgebaute Netzverkverbindungen) und führen die für jeden Testfall hinterlegten Schritte für jeden Build aus. Anhand der konsolidierten Testergebnisse entscheiden wir dann in Abstimmung mit Ihnen, ob ein Release Kandidat herausgegeben werden kann, ggf. mit Limitierungen/Known Issues, oder ob die Probleme vor dem Release noch behoben werden müssen.
Unabhängig davon, ob Sie uns mit einer spezifischen Aufgabe aus dem Bereich Testing je nach Erfordernis und Projektabschnitt für Ihr eigenes Projekt betrauen oder ob Sie eine komplette Systementwicklung in unsere Hände geben – wir sorgen dafür, dass das realisierte System nachweislich Ihren Vorgaben entspricht und Sie sich auf Ihr System verlassen können.