Home QA & Testing soorten Funktionale Tests

Funktionale Tests

Was sind funktionale Tests?

  • Smoke Tests
  • Regressionstests
  • Integrationstests
  • Akzeptanztests

Was sind funktionale Tests?

Funktionale Tests  basieren auf der Funktionsbeschreibung der Software. Hauptzielsetzung ist die Qualität der Funktionsumsetzung zu bewerten und mögliche Fehler frühzeitig zu erkennen. Bei funktionalen Tests geht es darum zuvor beschriebene Funktionen auf Richtigkeit zu testen. Es wird also das Ergebnis der Entwicklung getestet im Vergleich zu dem, was in der Anforderungsspezifikation als User Story hinterlegt wurde.

Funktionale Tests liefern unter anderem Antworten auf folgende Fragen:

  • Welche Funktionen werden von der Software erwartet?
  • Mit welchen Ausgangskriterien werden die beschriebenen Funktionen getestet und auf welche Weise?
  • Was wird als Output aus diesen Daten erwartet?
  • Wie werden Tests durchgeführt?
  • Wie wird das tatsächliche Ergebnis mit dem erwarteten Ergebnis verglichen, um herauszustellen, ob die Anwendung den Erwartungen entspricht?

Testszenario ⇒  Testcase ⇒  Testausführung ⇒  Testresultat

Arten von funktionalen Tests

Es gibt eine Reihe von unterschiedlichen funktionalen Tests, die während des Entwicklungsprozesses eingesetzt werden, um die Qualität des gelieferten Produkts zu überprüfen und auf das gewünschte Niveau zu bringen. Es reicht nicht aus, den Entwickler selbst testen zu lassen. Ein erfahrener Entwickler schreibt schliesslich Unit Tests und führt zudem Regressionstests für seinen Quellcode  auch ohne zusätzliche Anweisung durch. Funktionale Tests hingegen sollten im gesamten Entwicklungszyklus einer Anwendung festgeankert und als eigenständige Aufgabe von einem erfahrenen professionellen Tester durchgeführt werden.

Die am häufigsten eingesetzten Testarten sind:

  • Unit Tests. Diese Tests werden normalerweise von den Softwareentwicklern selbst durchgeführt. Sie testen den von ihnen erstellten Code kontinuierlich auf Vollständigkeit und Methode. Im Zusammenhang mit Funktionstests ist es wichtig, dass der Code korrekt geschrieben ist und fehlerfrei funktioniert.
  • Smoke Tests.  Dies ist ein erster Test, der zeigen muss, ob die Basisfunktionalitäten in Ordnung sind. Anhand einer Reihe von Testfällen wird so festgestellt, ob diese Version der Software stabil arbeitet und zur weiteren Entwicklung und zum Testen bereit ist.
  • Sanity Tests. Diese werden in der Regel nach dem Smoke Test ausgeführt, weil damit festgestellt wird ob alle wichtigen Funktionen des Codes funktionieren.
  • Regressionstests. Ein Regressionstest überprüft, ob alle Systemkomponenten nach Änderungen an der Software weiterhin miteinander kommunizieren. Der Fokus wird auf die Teile gelegt, die möglicherweise durch Änderungen an der Software betroffen wurden oder an denen Fehler in der Software gefunden wurden.
  • Integrationstests. Wenn verschiedene Teile der Software Daten austauschen müssen, wird geprüft, ob der Datenaustausch ordnungsgemäß funktioniert. Mit anderen Worten: Sind sie gut miteinander integriert?
  • Abnahmetests. Ein Abnahmetest wird auch als Betatest oder Usability-Test bezeichnet. Diese Testmethode soll feststellen, ob die Software die Funktionen erfüllt, die erwartet werden. Aus der Kundenperspektive ist die Abnahme ein Prozess, der prüft und dokumentiert, ob die Software auf Grund der definierten funktionalen Anforderungen entwickelt wurde. Bei der agilen Entwicklung richtet man sich dabei an die im Vorfeld erstellten User Stories.

Funktionale und nicht-funktionale Tests

Was sind die Unterschiede zwischen funktionalen und nicht-funktionalen Tests? Der funktionale Test konzentriert sich auf den Vergleich zwischen den vordefinierten Funktionen einer Anwendung. Der nicht-funktionale Test richtet sich hingegen auf die Anwendung als Ganzes: Wie gut funktioniert die Anwendung in bestimmten Fällen? Wie wirkt sich dies auf die gewünschte Verwendung aus?

Bei funktionalen Tests geht es also um Anforderungen und Funktionalitäten, bei nicht-funktionalen Tests um Erwartungen und Leistung unter gewissen Umständen. Funktionale Tests können oft manuell durchgeführt werden, während nicht-funktionale Tests oft simuliert werden müssen.

Bei der Erstellung von Wünschen und Anforderungen wird häufig die Ausführung von nicht-funktionalen Tests unterlassen. Von den Funktionalitäten kann man schon einiges vorweg erwarten, aber wie sich die gesamte Software in bestimmten Situationen verhalten wird, ist es schwieriger, Aussagen zu treffen.

Ist es möglich funktionale Tests auszulagern?

Diese Frage ergibt sich häufig aus der Vorstellung, dass nur der Auftraggeber (der Kunde, der Product Owner) die funktionalen Anforderungen einer Anwendung gut kennt. Teilweise ist es tatsächlich so, weil das Wissen, das nicht übertragen wird, nicht bei einer externen Partei vorhanden ist. Die Fremdvergabe von funktionalen Tests macht jedoch Sinn, da die Informationen an einen externen Dienstleister weitergegeben werden. Dieser achtet darauf, die funktionalen Anforderungen so gut wie möglich zu definieren. Dadurch kann die Software besser getestet werden, was dem Endergebnis zugute kommt. Wenn funktionale Anforderungen von Anfang an richtig formuliert werden und während der Entwicklung die erforderliche Aufmerksamkeit erhalten, können funktionale Tests ohne Bedenken ausgelagert werden und der Entwicklung einen Mehrwert verleihen.

Und Agiles Testen?

Bei der agilen Entwicklungsmethode ist es nicht erforderlich, alle Funktionen im Voraus zu beschreiben. Die Entwicklung wird auf Basis der User Stories gestartet. Wenn der agile Prozess professionell eingerichtet ist, wird der funktionale Aufbau während der Sprints sorgfältig dokumentiert. Durch die Integration von Tests in diesen Prozess wird ständig daran gearbeitet:

  • Funktionalitäten zu beschreiben
  • Testfälle zu erstellen
  • Tests durchzuführen
  • Ergebnisse auszuwerten

Funktionstests stellen somit nicht Schritte nach der Entwicklung, sondern eine kontinuierliche Abfolge von Beschreiben, Testen, Bewerten und Verbessern dar. Wenn dafür professionelle Tester eingesetzt werden, ist es durchaus möglich (und oft besser), die funktionalen Tests auszulagern. Denn Testing sollte als eigenständiger Prozess durchgeführt werden, ohne die Entwicklung zu beeinträchtigen.

  • verbesserte Testabdeckung
  • schnellere Testdurchläufe
  • einfach skalierbare Testabläufe
  • sichere Releases
  • Steigerung der Entwicklungsproduktivität

Egor Gucinsky - QA manager

Wie wählt man das passende Tool zur Unterstützung der Testplanung und -organisation?

Da die Bedeutung von Testing für moderne Softwareentwicklungsunternehmen immer weiter zunimmt, hat sich die Industrie auf den Bedarf der QA-Manager und Testingenieure ausgerichtet und eine Reihe von Tools geschaffen, die nicht nur die Produktivität der Stakeholder steigern sollen, sondern auch die Transparenz der QA-Prozesse in Entwicklungsprojekten verbessern können.

Da die reinbungslose Kommunikation zwischen den Projektbeteiligten ein wichtiger Aspekt für den Erfolg jedes Entwicklungsprojekts ist, sollte man möglichst versuchen, die Kommunikation zwischen Testern, Entwicklern und Projektleitern an übergeordneten Stellen zu standardisieren. Um das für Ihr Unternehmen passende Tool für die Testplanung und -organisation auswählen zu können, zählen wir hiermit einige Anforderungen auf, die Sie auf jeden Fall berücksichtigen sollten:

  • Requirements-Spezifikation. Ein Testtool sollte in der Lage sein, die Anforderungen an das zu testende System zu erfassen, um damit bestimmte Testfälle verknüpfen zu können. Alternativ kann auch mittels Kommunikationsschnittstellen zu Entwicklungstools der Datenaustausch hergestellt werden, um die Anforderungen dort einzusehen.
  • Testfall-Spezifikation. Jeder Testfall wird aus Testszenarien zusammengestellt, die man einzeln oder komplett im Testsystem durchlaufen kann. Diese sollten möglichst ausführlich beschrieben und dokumentiert werden, um das erwartete Ergebnis auf Vollständigkeit einschätzen zu können.
  • Defect Management. Die Registrierung und Verwaltung von Defects spielt eine große Rolle im Entwicklungs- und Testprozess. Besonders bei größeren Teams sollte die Möglichkeit jederzeit gegeben sein, erfasste Defects rechtzeitig zu signalisieren und zur Behebung weiterzugeben.
  • Kommunikationsschnittstellen. Ein wichtiger Aspekt bei der Anschaffung von Planungstools ist die Erweiterbarkeit und Verfügbarkeit von Schnittstellen zu anderen Tools, die der Testingenieur für die Durchführung seiner Arbeit einsetzt. Dazu zählen z.B. Schnittstellen zu Automation, Test execution, Continuos Integration und Reporting Tools u.a.

Gerne beraten wir Sie bei der Auswahl des passenden Tools für Ihre spezifische Umgebung und Ihr Organisationsmodell!

Welche funktionalen Tests passen zu meinem Projekt?

Gerne beraten wir Sie kostenlos über die empfohlene funktionalen Testarten für Ihr Softwareprojekt! Unser Leiter QA steht Ihnen noch am gleichen Tag zur Verfügung.

Siehe die Entwicklung von Technosoft

1977 Heute
1998
Projektmanagementsoftware
1983
Markenregistrierung Technosoft
1984
Start der Entwicklung CAD Software
2000
Übernahme der Tätigkeiten von Brunel und Niederlassung in Deventer
2007
Technosoft Deutschland
2009
Technosoft Moldawien
2015
Technosoft Rumänien
1993
Von DOS zur Windows-Plattform
2001
Start Verkauf AxisVM Software
2014
Einführung 3Muri Erdbebensoftware + erste KOMO Zertifizierung
2013
Start Business Unit Qualitätssicherung & Testing
2011
Übergang zu Eurocodes
2012
Start von Nearshoring unter dem Markennamen In-shore
2006
Technosoft von Brunel verkauft durch ein Management Buy Out
2016
Integrationsstart de Internationalen Belegschaft
2017
Zusammenfügung aller Aktivitäten unter dem Namen Technosoft
2018
Technosoft aktiv in 6 Europäische Länder