contact@ditcraft.io
0461-79833102
Unsere Services

Funktionale Tests

Software-Testen ist ein breit gefasster Begriff, denn er umfasst unterschiedliche Methoden, Herangehensweisen als auch als auch das Vorwissen über das Testobjekt. Bei den Methoden unterscheidet man zwischen funktionalen und nicht-funktionalen Tests.  Funktionales Testen ist eine Art von Software-Test, bei denen das System anhand der funktionalen Anforderungen/Spezifikationen getestet wird. Funktionen (oder Merkmale) werden getestet, indem ihnen Eingaben zugeführt und die Ausgaben untersucht werden. Nicht-funktionale Tests, wie der Name suggeriert, testet die nicht-funktionalen Eigenschaften der Software. Dazu gehören Sicherheit, Performanz oder Usability.

Bei der Herangehensweise unterscheidet man zwischen manuellem und automatisiertem Testen. Bei automatisierten Testen werden Tools verwendet, um den Test maschinell durchzuführen. Zum Beispiel kann das Klicken in einem Web-Shop sehr gut mit Tools wie Selenium oder Appium automatisiert werden, das Lektorat des Codes, besser bekannt als Code Reviewing, hingegen ist am aussichtsreichsten, wenn es von mehreren Reviewern vollzogen wird. Die Untersuchung des Codes setzt Zugang zum Quellcode voraus. Man spricht in diesem Zusammenhang von white-box testing. Im Beispiel des Web-Shops interagieren die Tester mit der Applikation, ohne Einblicke in die Interna des Systems oder des Codes zu haben. Hier spricht man von black-box testing, weil keine a-priori Informationen über das Testsystem notwendig sind.
Was ist ein Funktionstest?
Beim Software-Testen umfasst das funktionale Testen eine Vielzahl an unterschiedlichen Testmethoden, die dem Entwicklungsprozess enorme Vorteile bringen. Richtig durchgeführt, verbessert es die Kommunikation zwischen Projekt-/Teamleiter, Entwicklern und Testern. Letztendlich erhöht sich die Entwicklungsgeschwindigkeit, weil gut kommunizierte Anforderungen zu weniger Nacharbeit führen. Die Tests führen darüber hinaus zu einem modularen Architektur-Design mit Subkomponenten, die klare Anforderungen erfüllen. Das Hauptziel des Funktionstests ist die Überprüfung der Funktionalitäten des Softwaresystems. Er konzentriert sich hauptsächlich auf
  • Funktionalität: Testen der Hauptfunktionen einer Anwendung
  • Zugänglichkeit:  Überprüft die Zugänglichkeit des Systems für den Benutzer
  • Fehlerbedingungen: Verwendung von Prüftechniken zur Überprüfung auf Fehlerbedingungen.  Es wird geprüft, ob geeignete Fehlermeldungen angezeigt werden.
Welche Methoden gibt es?
Code-Review
Eine Code Review gehört zu der Klasse des white-box Testings, weil Zugang zum Code benötigt wird. Code-Review, manchmal auch als Peer-Review bezeichnet, ist eine Software-Qualitätssicherungsmaßnahme, bei der eine oder mehrere Personen ein Programm überprüfen, indem sie hauptsächlich Teile des Quellcodes lesen, analysieren, und nach Verbesserungsmöglichkeiten Ausschau halten. Obwohl die direkte Entdeckung von Qualitätsproblemen oft das Hauptziel ist, werden Code-Reviews in der Regel durchgeführt, um eine Kombination von Zielen zu erreichen:
  • Bessere Codequalität: Verbesserung der internen Codequalität und Wartbarkeit (Lesbarkeit, Einheitlichkeit, Verständlichkeit, ...)
  • Auffinden von Fehlern: Verbesserung der Qualität hinsichtlich externer Aspekte, insbesondere Korrektheit, aber auch Auffinden von Performance-Problemen, Sicherheitslücken, eingeschleuste Malware, ...
  • Lern-/Wissenstransfer: Hilfe beim Transfer von Wissen über die Codebasis, Lösungsansätze, Qualitätserwartungen, usw.
  • Stärkung des Gefühls der gegenseitigen Verantwortung: Stärkung des Gefühls der kollektiven Code-Eigenverantwortung und Solidarität
  • Bessere Lösungen finden: Ideen für neue und bessere Lösungen und Ideen generieren, die über den existierenden Coding-Richtlinien hinausgehen
  • Einhaltung von QA-Richtlinien: Code-Reviews sind in einigen Applikationen obligatorisch, z.B. bei sicherheitskritischen Applikationen wie  Software für den Flugverkehr, für Banken oder selbstfahrende Autos
Obwohl das Code-Reviewen historisch aus der manuellen Herangehensweise gereift ist, so versucht man einige Aspekte wie die Verbesserung der Codequalität oder Auffindung von Fehlern zu automatisieren. Man unterscheidet dabei zwischen statischer und dynamischer Code-Analyse. Der Unterschied liegt dabei darin, dass im letzteren Fall der Code zur Laufzeit untersucht wird, d.h. abhängig von den Eingaben, welche zu unterschiedlichen Ausgaben führen können.
Unit Test
Unit-Tests stellen sicher, dass jeder Teil des in einer Komponente entwickelten Codes die gewünschte Ausgabe liefert. Bei Unit-Tests betrachten Entwickler nur die Schnittstelle und die Spezifikation für eine Komponente. Es handelt sich um einen black-box Test, auch wenn der Code dafür in der Regel vorhanden ist.

Unit-Tests werden in der Regel von einem Entwickler durchgeführt, der die Code-Einheiten geschrieben hat. Dies beinhaltet in der Regel das Schreiben von Unit-Tests, die die Methoden in jeder Unit aufrufen und diese validieren, wenn die erforderlichen Parameter übergeben werden und der Rückgabewert wie erwartet ist. Die Code-Abdeckung ist ein wichtiger Teil der Unit-Tests, bei denen die Test die wichtigste Fälle abdecken. Dabei unterscheidet man zwischen der Abdeckung des Codes (code coverage), der Code-Pfade (code path coverage) und der Methoden (method coverage). Mit einem guten Unit Test sollte die Abdeckung in den drei Fällen maximiert werden. Um die Maximierung zu erreichen, ist die Automatisierung der Unit Tests von großem Vorteil.
Integrationstest
Integrationstests werden durchgeführt, um einzelne Komponenten daraufhin zu testen, wie sie zusammen funktionieren. Mit anderen Worten, er wird durchgeführt, um die Module zu testen, die einzeln einwandfrei funktionieren und bei der Integration keine Fehler aufweisen. Es ist die häufigste Art des Funktionstests und wird als automatisierter Test durchgeführt.
Im Allgemeinen bauen Entwickler verschiedene Module des Systems/ der Software gleichzeitig und konzentrieren sich nicht auf andere. Sie führen umfangreiche Black- und White-Box-Funktionsprüfungen, wie Code Reviews und Unit-Tests, an den einzelnen Modulen durch. Integrationstests bewirken, dass Daten, die dann zu Ereignissen führen, zwischen den Modulen fließen, was bedeutet, dass sie als Teile eines Gesamtsystems und nicht als einzelne Komponenten agieren müssen. Dabei werden in der Regel Probleme mit UI-Operationen, Datenformaten, Operationstiming, API-Aufrufen sowie Datenbankzugriff und Betrieb der Benutzeroberfläche aufgedeckt.
Regressionstest
Immer wenn Entwickler die Funktionalität ändern oder modifizieren, passiert mit hoher Wahrscheinlichkeit, dass die Aktualisierungen unerwartetes Verhalten verursachen. Regressionstests stellen sicher, dass eine Änderung oder das neue Feature keine der vorhandenen Funktionen beschädigt hat. Ihr Zweck ist es, Fehler zu finden, die möglicherweise versehentlich in den bestehenden Build eingeführt wurden. Regressionstests lassen sich gut automatisieren.
Systemtest
Systemtests sind Tests, die an einem vollständigen, integrierten System durchgeführt werden, um dessen Übereinstimmung mit den festgelegten Anforderungen zu bewerten.Nach Abschluss der Integrationstests wird das Produkt für den Systemtest freigegeben. Systemtests werden von unabhängigen Testern durchgeführt, die bei der Entwicklung des Programms keine Rolle gespielt haben. Diese Tests werden in einer Umgebung durchgeführt, die die Produktion genau widerspiegelt. Systemtests sind sehr wichtig, da sie überprüfen, ob die Anwendung die technischen, funktionalen und geschäftlichen Anforderungen erfüllt, die vom Interessenvertreter festgelegt wurden.
Was ist die Herausforderung bei Funktionalen Tests?
Ein Funktionstest basiert auf der Erkenntnis, was akzeptables Verhalten ist und was nicht. Akzeptables Verhalten wird in einer Funktions- oder Anforderungsspezifikation festgelegt. Es ist ein Dokument, das beschreibt, was ein Benutzer tun darf, so dass er die Konformität der Anwendung oder des Systems damit feststellen kann. Zusätzlich kann dies manchmal auch die tatsächlich zu validierenden Szenarien der Geschäftsseite beinhalten.

Daher können Funktionstests mit zwei gängigen Techniken durchgeführt werden:
  • Testen auf der Grundlage von Anforderungen: Enthält alle funktionalen Spezifikationen, die eine Grundlage für alle durchzuführenden Tests bilden.
  • Testen auf der Grundlage von Geschäftsszenarien: Enthält alle Funktionsspezifikationen, die die Grundlage für alle durchzuführenden Tests bilden: Enthält die Informationen darüber, wie das System aus der Geschäftsprozessperspektive wahrgenommen wird.
Die Anforderungen zu erarbeiten ist eine wirklich anspruchsvolle Aufgabe, weil sie nicht nur das Handwerkszeug eines Test Engineers voraussetzt, wie zum Beispiel die Programmierung der Testautomatisierung, sondern vor allem auch die fachliche Kenntnis über das zu testende Software-Produkt, was in der Regel nur mit dem richtigen Domänenwissen, dem Verständnis für die Kundenanforderungen und der Kultur der Industrie, in der der Kunde agiert, als auch seinem Geschäftsmodell funktioniert. Anders formuliert, man kann nur testen, was man auch versteht.
Warum ditCraft?
Unsere Experten kennen sich mit Funktionstests aus und wählen die richtigen Methoden, um eine effiziente QA-Strategie zugeschnitten auf ihre Software umzusetzen. Ein großes Augenmerk werfen wir auf die Automatisierung der Funktionstests, so dass auch kleine Entwicklerteams den hohen Kundenanforderungen an qualitativ guter Software gerecht werden. Wir entwerfen zusammen mit dem Kunden und implementieren Funktionstest innerhalb CI/CD Pipelines, um die Vorzüge von kontinuierlicher Integration, schnellem Release und automatisierbaren kontinuierlichen Tests zu kombinieren.

Sollten Sie ein Interesse an Funktionstests haben, möchten Sie sich einen Überblick über die Möglichkeiten für Ihr IT-Unternehmen verschaffen, so kontaktieren Sie uns doch über unser Kontaktformular oder vereinbaren sie gleich ein Beratungsgespräch über unseren Kalender.
Testimonials

Warum Kunden uns vertrauen

"Software Testing as a Service ist eine perfekte Lösung für Teams, die immer zwischen Feature-Entwicklung und 100%iger Code-Qualität jonglieren. ditCraft ermöglicht es unseren Entwicklern, sich auf den geschäftlichen Mehrwert zu konzentrieren, ohne Kompromisse bei der Code-Qualität einzugehen."
Nitin Maslekar, PhD
Beets&Roots, CTO
"Unsere Lösungen für Fintech- und Versicherungskunden erfordern aufgrund der Rechts- und Sicherheitsvorschriften der Branchen die Gewährleistung einer hohen Softwarequalität. ditCraft's Kompetenz im On-Demand-Software-Testing half uns, die Qualitätsanforderungen unserer Kunden problemlos zu erfüllen."
Florian Eismann
techdepartment ACS GmbH, Partner
"Code-Reviews und Merge-Requests sind ein wichtiger Teil unserer Software-Entwicklung, um eine gute Code-Qualität zu gewährleisten. Mit ditCraft haben wir einen professionellen Sparring-Partner gefunden, um Code-Review-Prozess zu implementieren, der uns hilft, neue Funktionen schneller auszuliefern und trotzdem die hohen Anforderungen zu erfüllen, die wir an unsere produktive Code-Basis stellen."
David Weber
Nooxit, CEO
”Das Team ditCraft ist äußerst professionell, clever und freundlich! Wir hatten ein ausführliches Einführungsgespräch, bei dem wir die vielen subtilen Nuancen unserer Smart Contracts erläuterten. ditCraft hat das Ziel unseres Systems leicht erfasst und war in der Lage, ein ausgezeichnetes high-level Review unseres Protokolls zu liefern. Wir waren so beeindruckt, dass wir ditCraft jetzt auf monatlicher Basis  einsetzen.”
Jonathan Clark
Wildcards, Founder
“Ich könnte nicht glücklicher mit ditCraft sein. Der Audit war umfassend und professionell. Es war klar, dass sie sich wirklich die Zeit genommen hatten, das Projekt gründlich zu verstehen. Sie haben Fehler gefunden, die mir nach sechs Monaten Arbeit nicht in den Sinn gekommen waren. Es ist ein Vergnügen, mit ihnen zusammenzuarbeiten und ich empfehle sie gern weiter."
Andrew Stanger
Realitycards, Founder
Jetzt unverbindlich testen

Optimieren Sie Ihr Software-Testing

Gehen Sie auf Augenhöhe mit Branchenführern wie Google, Netflix und Facebook. Unsere Experten unterstützen Sie beim Testen Ihrer Software und helfen Ihnen, Ihr Unternehmen auf das nächste Level zu bringen.