Software Testing früher und heute

andagon Team in Software Testing · 30.11.2021 · 23 Min. Lesezeit

Wie alles begann: Kurzer Rückblick in die Geschichte des Software Testings

1. Kurzer Rückblick

*Wie alles begann: Kurzer Rückblick in die Geschichte des Software Testings *

📖 In seinem Werk “The Art of Software Testing” deutet Glenford J. Myers den Begriff Software Testing so: “Software Testing is the process of running a program with the intention of finding errors.”

“Software Testing ist das Ausführen eines Programms mit der Absicht, Fehler [darin] zu finden.” Diese Definition des Begriffs “Software Testing” gab Myers bereits 1979. In unserem ersten Blogbeitrag unserer Reihe "Software Testing früher und heute" geben wir einen kurzen Überblick über das Software Testing und seine Entwicklung seit den 1950er Jahren.

Das Software Testing hat sich natürlich nicht an einem einzigen Tag entwickelt; Viel Zeit und Schweiß brachten das Testing dorthin, wo es heute steht. Testing-Gurus wie Hetzel und Dave Halprin teilen die Entwicklungsgeschichte des Software Testings in fünf bedeutende Epochen ein:

1️⃣ Debugging Phase:

Dieser Zeitabschnitt begann in den frühen 1950er Jahren, als man noch kaum einen Unterschied zwischen dem Testing und Debugging machte. Der Fokus lag ausschließlich auf der Fehlerbehebung. Damals schrieben Entwickler Codes, und beim Auftreten eines Fehlers, analysierten und korrigierten sie einfach an den entsprechenden Stellen. Es gab weder ein Testkonzept noch dedizierten Tester. Dennoch gelang es schließlich Charles L. Baker 1957 in seinem Review zum Werk "Digital Computer Programming" von Dan McCracken das Testen vom Debuggen ein für alle Mal zu trennen.

2️⃣ Demonstration Phase:

Nach Bakers Theorie wusste man also ganz genau, wie sich das Testen vom Debugging unterschied und im Zeitraum von 1957 bis 1978 wurde das Testen schließlich zu einem völlig unabhängigen Prozess. In dieser Zeit bestand das Hauptziel des Software Testings also darin, sicherzustellen, dass alle Softwareanforderungen erfüllt werden. Solche Anforderung lauteten beispielsweise so: „Eine Webanwendung, die eine Liste mit nur 10 Produkten anzeigt“. Tester stellten also sicher, dass nur 10 Produkte angezeigt wurden. Dies scheiterte schnell an der Wahrscheinlichkeit, dass die Funktion einer Software mit zunehmendem Testen abnimmt, d. h. je mehr Sie testen, desto wahrscheinlicher sei es, dass sie einen Fehler fänden. Das Konzept des Negativtests (negative testing) wurde zu dieser Zeit noch nicht praktiziert.

3️⃣ Destruction Phase:

1979 bis 1982 lag der Fokus hauptsächlich darauf, den Code zu knacken und die Bugs darin zu finden. Es war Glenford J. Myers, der 1979 die Trennung des Debuggings vom Testing vornahm und einführte, obwohl sein Hauptaugenmerk auf dem sogenannten Breakage Testing lag. („Ein erfolgreicher Testfall ist der, der einen noch unentdeckten Bug erkennt.“) Das Breakage Testing versuchte den Wunsch der Software-Engineering-Community, grundlegende Entwicklungsaktivitäten wie das Debugging von der Verifizierung zu trennen, wahr werden zu lassen. So würde beispielsweise ein Tester eine Software so testen, um einen Fehler zu verursachen (z. B. Eingabe von Buchstaben in ein Feld, das nur Zahlen akzeptiert). In dieser Phase gab es jedoch noch keinen konkreten Ansatz zur Bugbehebung.

4️⃣ Evaluation Phase:

1983 bis 1987 lag dann der Schwerpunkt auf der Bewertung und Messung der Softwarequalität. Das Testen diente zur Erhöhung des Vertrauens in die Funktionsweise der Software. Man testete, bis man zu einem akzeptablen Punkt kam, an dem die Anzahl der erkannten Fehler reduziert wurde. Dies wurde hauptsächlich durch sehr umfangreiche Softwaretests erreicht.

5️⃣ Prevention Phase:

1988 bis 2000 gab es schließlich einen neuen Ansatz. Tests konzentrierten sich auf den Nachweis, dass die Software ihre fachspezifischen Anforderungen erfüllt, indem die Tests Fehler aufdecken bzw. diese ausschließen. Codes wurden in testable und non-testable geteilt. So hatte ein testable Code deutlich weniger Bugs als ein non-testable. In dieser Phase wurde die Identifizierung der Testtechniken selbst zum Schlüssel des Erfolgs.

In den frühen 2000er kamen neue Testkonzepte wie Test-Driven Development (TDD) und Behavior Driven Development (BDD) auf. Diese werden wir in kommenden Artikeln angehen.

Das Jahr 2004 brachte eine große Revolution im Testen mit dem Aufkommen von Tools und Frameworks zur Testautomatisierung wie Selenium. Ebenso markierten API-Tests mit Tools wie SoapUI einen weiteren Meilenstein in der Testing Geschichte. Darauf werden wir ebenso in den kommenden Blogs genauer eingehen. Schließlich bewegt sich die aktuelle Testing Ära in Richtung Testing Tools für artificial intelligence (AI), also der künstlichen Intelligenz und browserübergreifendes Testing mit Tools wie SauceLabs, Browserstack usw.

2. 7 Trends im Software Testing 2022

Revolution im Software Testing: 7 Trends, die das Software Testing grundlegend verändern werden.

Bei der QA (Qualitätssicherung), oder Qualitätssicherung geht es schon lange nicht mehr darum, nur Bugs und Fehler zu finden; QA ist zu einer weitaus komplexeren technischen Philosophie geworden, die unter anderem die Bewertung einer Produktidee (evaluation), Verhaltensvorhersagen (behavioral predictions), die Analyse von Chancen (opportunities) und Bedrohungen (threats) umfasst.

2022 verspricht ein dynamisches und spannendes Jahr zu werden. Wir erwarten so einige faszinierende neue Testing Trends, Modelle und Strategien die 2022 in den Umlauf kommen. In diesem Artikel zeigen wir Ihnen kompakt und übersichtlich einige dieser Trends, auf die wir im kommenden Jahr gespannt sein dürfen. Wenn Sie Softwaretester, QS Fachspezialist oder einfach nur großes Interesse am Software Testing haben, sollte dieser Beitrag ganz oben auf Ihrer Reading List stehen.

1️⃣ Testing Internet of Things (IoT):

IoT entwickelt sich als äußerst dynamisches und schnell wachsendes Konzept im Technologiebereich. Es ist eine Integration riesiger Netzwerke: Geräte, Menschen, Prozesse und Technologien, die Daten über das Internet sammeln und teilen. Laut einem Forschungsbericht von Gartner wird es bis Ende 2021 25 Milliarden Geräte mit Internetverbindung geben, verglichen mit noch nahezu der Hälfte dieser Menge im Jahr 2019 mit rund 14 Milliarden Geräten. Deshalb wurde vor einigen Jahren von IPv4 auf IPv6 umgestellt, da IPv4 nur 4,3 Milliarden Geräte mit Adressen versorgen hätte können. Diese Zahlen zeigen deutlich das steigende Interesse am IoT-Bereich, insbesondere im Gesundheitswesen. Eine neue IoT-Strategie wird vor allem im kommenden Jahr äußerst notwendig sein, um sämtliche Schwachstellen der Software vor möglichen Bedrohungen zu schützen und schlussendlich eine stabile Datensicherheit zu gewährleisten. Dementsprechend steigt die Nachfrage nach professionellen und erfahrenen Softwaretestern enorm. Diese führen Testings durch und sorgen für Sicherheit, Datenintegrität, Leistung, Kompatibilität, Benutzerfreundlichkeit und Authentizität, überwachen Verzögerungen usw. Aus diesem Grund ist es für die QA-Teams angesagt, ihr Wissen zu erweitern und ihre Fähigkeit weiter auszubauen, um schon bald zu gefragten Profis im IoT-Testing zu werden.

2️⃣ QAOps (QA & DevOps):

Die immer weiter voranschreitende digitale Welt erfordert heute ein schnelleres Release von Anwendungen mit möglichst geringen Qualitätseinbußen. QAOps ist die Kombination aus QA & DevOps. In der Vergangenheit war die Rolle der QA auf das Testen von Anwendungssoftwares beschränkt. Jetzt spielt sie wiederum in allen Phasen der Softwareentwicklung eine entscheidende Rolle. Bei DevOps geht es um Operations und Development, also Fachspezialisten die zusammenarbeiten, um den gesamten Softwarezyklus instand zu halten. DevOps umfasst eine Reihe von Softwareentwicklungsprozessen, die sich auf das Beheben von Bugs, das Herstellen von Funktionen und den Umgang mit häufigen Updates konzentrieren. QAOps nimmt bei den Softwaretesttrends immer weiter zu, da es eine weitgehende Automatisierung dieser Prozesse ermöglicht und die Arbeitsabläufe zwischen IT-Betrieb, Softwareentwicklung und QA erheblich verbessert. QAOps ermöglicht das Software Testing mithilfe der Continuous Integration (CI)/Continuous Delivery (CD)-Pipeline, anstatt dass das QA-Team separat daran arbeitet. Kurz gesagt folgt QAOps zwei Prinzipien:

🅰️ Durchführung von Testing- und QS-Prozessen mit CI/CD, um eine hohe Qualität und schnelle Softwareauslieferung an den Kunden zu erreichen.

🅱️ QA-Fachspezialisten arbeiten parallel mit dem Entwicklungsteam für eine schnellere Markteinführung.

3️⃣ Scriptless Testautomatisierung:

Die Testautomatisierung ist mit der schnellen Webentwicklung deutlich auf dem Vormarsch. Manuelles Testen allein reicht nicht mehr aus, um die aktuellen Anforderungen der Softwareentwicklung zu erfüllen. Ein neuer Trend in der sogenannten skriptlosen Testautomatisierung wird bereits verbreitet von führenden Software-IT-Unternehmen im Industriesektor praktiziert, um die Skalierbarkeit der Tests zu maximieren. Es hilft Softwaretestern und Entwicklern, ihre Testfälle automatisch durchzuführen, ohne sich große Gedanken über den Code machen zu müssen. Unternehmen die diesem Trend folgen, erzielen mit skriptloser Testautomatisierung schnellere Ergebnisse innerhalb kurzer Zeit. Die meisten IT-Unternehmen streben danach, diese Art der Automatisierung in ihre Testing Prozesse einzuführen.

4️⃣ Customer Experience und Usability Testing:

Die globale Pandemie und ihre Folgen haben sich neben anderen Technologiebereichen auch auf den Softwaretest ausgewirkt. Insbesondere hat es die QA-Fachpezialisten gezwungen, dem Customer Experience mehr Aufmerksamkeit zu schenken. Je größer das Publikum von Softwareprodukten wird, desto vielfältiger wird das Produkt selbst. Immer mehr Menschen verwenden neue Produkte zum ersten Mal, und gerade deshalb ist es wichtig sicherzustellen, dass Benutzer mit unterschiedlichem technischen Know-How verstehen können, wie dieses oder jenes Feature funktioniert.

5️⃣ Big-Data-Testing:

Anwendungen, denen riesige Mengen an Verbraucherdaten zugrunde liegen, sollten regelmäßig analysiert und getestet werden. Das Gesundheitswesen, der Finanzsektor, der Bankensektor, Einzelhandel und der Telekommunikationssektor haben ständig mit Big Data zu tun. Daher wird die Nachfrage nach Big-Data-Tests weiter zunehmen. Die Besonderheit des Big-Data-Testings besteht darin, den Erfolg und die Genauigkeit der Datenverarbeitung zu überprüfen, aber nicht jeder einzelne Teil des Softwareprodukts. QA-Spezialisten verwenden Commodity-Cluster und andere fachbezogene Support Tools, um diese Aufgabe zu bewältigen.

6️⃣ Blockchain-Testing:

Die vielversprechendste unter den Markttechnologien funktioniert als Datenbasis nicht nur für das Bitcoin-System. Die weltweit immer mehr an Ansehen erlangende Blockchain-Technologie wird bereits beispielsweise für das Lieferkettenmanagement, Lebensmittel, Logistiksystem und andere Branchen verwendet. Dessen Mission ist es, das höchste Sicherheitsniveau für jede wirtschaftliche Transaktion zu bieten. Daher benötigt der IT-Markt dringend QS-Spezialisten mit genauem Domänen-Know How, die in der Lage sind, professionelle Testdienstleistungen anzubieten.

Viele Unternehmen wurden dieses Jahr dazu gezwungen, ihre QS-Strategie grundlegend zu überdenken, um im kommenden Jahr 2022 effizienter zu arbeiten und einen Wettbewerbsvorteil zu erzielen. Software Testing ist ein sich ständig weiterentwickelndes Feld. Die Einführung neuer Technologien an der Schwelle zur Transformation dieser Branche wird vielen Unternehmen einen enormen Vorteil gegenüber Ihren Konkurrenten verschaffen, die dies nicht tun. Das heißt aber nicht, dass das Unternehmen das gesamte Risiko der Implementierung der Technologie allein tragen.

✅ Die andagon folgt den Best Practices der Branche und ist deutscher Marktführer bei der Aneignung der neuesten Trends im Bereich Software Testing, die unseren Kunden beispiellose Geschwindigkeit und Flexibilität bieten. Schreiben Sie uns, um zu erfahren, wie wir Sie auf Ihrem Weg unterstützen können. ✅

3.Top-7 der wichtigsten Skills eines angehenden Softwaretesters heute

Den Beruf “Softwaretester” nähergebracht

Glauben Sie mir, wenn ich Ihnen sage, dass es gar nicht so schwierig ist, sich professionelle Skills, die für einen Softwaretester wichtig sind, anzueignen? Heute zeigen wir Ihnen eine Liste der 7 wichtigsten Skills, die Ihnen helfen, sich im Bereich Software Testing weiterzuentwickeln und einen gefragten Job zu erlangen oder womöglich den nächsten Schritt in Ihrer Karriere zu machen.

Nahezu jeder Arbeitgeber erwartet von seinen potenziellen Kandidaten diese 7 Skills, die in zwei Arten unterteilt werden: 🅰️ Technical Skills und 🅱️ Soft Skills.

Sie wissen bestimmt, dass Stellenbeschreibungen eines Softwaretesters oft vorzugsweise einen Abschluss, jahrelange einschlägige Berufserfahrung, Vertrautheit mit bestimmten Datenbanken und andere technische Fähigkeiten vorschreiben. Soft Skills erscheinen in der Regel erst im unteren Viertel der Beschreibung oder gar unter der Kategorie „Sonstige Skills“.

🅰️ Technical Skills

Als Softwaretester benötigen Sie zuallererst technische Skills, um die Funktionsweise eines bestimmten Systems oder einer speziellen Technologie zu verstehen, Testtools anzuwenden, am Testing Prozess teilzunehmen und detaillierte Berichte zu schreiben. Hier sind einige der Technical Skills, die man sich bei der Wahl des Berufs Softwaretester in erster Linie aneignen sollte.

⚠️ Hinweis: Die ersten beiden Skills sind eigentlich nichts weiter als technisches Wissen, das man sich leicht selbst aneignen kann.

1️⃣ Systems Development Life Cycle (SDLC)

Systems Development Life Cycle, kurz SDLC, beschreibt die Phasen in der Entwicklung einer qualitativ hochwertigen Software mit optimiertem Design, von der ersten Studie bis zur Wartung der fertigen Software. SDLC definiert alle Aufgaben, die mit der Planung, Erstellung, Prüfung und Bereitstellung eines Software- (oder auch Hardware-)Produkts verbunden sind.

2️⃣ Testing Process

Der Software Testing Prozess meint die Bewertung der Software an sich und aller mit ihr verbundenen Komponenten, um mögliche Fehler aufzudecken und zu beheben.

Grundsätzlich bestehen hier zwei Möglichkeiten, ein solches Software Testing durchzuführen: manuelle Tests und automatisierte Tests. Welche hierbei letztendlich gewählt wird, hängt von den allgemeinen Projektanforderungen, dem Budget und der Fachkompetenzen Ihres Teams ab.

Manuelles Testing:

In diesem Prozess verwenden Tester die Software wie ein Endbenutzer und suchen mögliche Fehler oder Bugs. Ihre Verantwortung besteht darin, alle Testfälle manuell auszuführen, ohne dabei mit automatisierten Tools zu arbeiten.

Automatisiertes Testing:

Hier ist der Name bereits Programm. Man verwendet automatisierte Tools, um den Testprozess durchzuführen. Dies trägt dazu bei, den manuellen Aufwand und damit also den Zeitaufwand für das gesamte Software Testing so gering wie möglich zu halten, sowie die Effizienz und Effektivität des Prozesses zu verbessern.

Es ist nicht einfach, als Neueinsteiger den Testing Prozess sofort zu verstehen. Daher empfehlen wir, vorab einen Grundkurs im Software Testing zu besuchen.

3️⃣ Testing Tools und Testing Technologien

Ein Softwaretester sollte sich grundsätzlich im Umgang mit Testing Tools und Testing Technologien sicher fühlen. Ohne diese Sicherheit wird es schwer, den Wunschjob zu bekommen, besonders wenn ein solcher Fachmann zuvor in einem ganz anderen Berufsfeld gearbeitet haben. Heutzutage gibt es eine Vielzahl an Software-Testtools. Keine Sorge! Sie müssen nicht jedes Einzelne beherrschen. Die am häufigsten verwendeten Tools zumindest einmal zu kennen, kann jedoch durchaus nützlich sein:

📌 Automatisierte Testing Tools (Selenium, Watir und Ranorex):

Diese werden verwendet, um grundsätzlich die einzelnen Funktionen der Software automatisch zu testen, was hilft, viele Tests in kurzer Zeit effizient durchzuführen.

📌 Agile Testing Tools (JIRA):

Diese Tools sollte man kennen, wenn man für ein Unternehmen arbeiten, das im Laufe der Softwareentwicklung die Scrum-Methode anwendet.

📌 Last Testing Tools (jMeter, LoadRunner):

Zur Verwendung für Last- und Stresstests.

📌 Testmanagement Tools (aqua, DrivT):

Diese Arten von Tools benötigt man insbesondere bei der Projektverwaltung, beim Ressourcen Testing, beim Festhalten von Testergebnissen und Berichterstattung.

Ganz abgesehen von der Beherrschung solcher Testing Tools ist es wichtig die verschiedene Testing Technologien an sich zu verstehen. Dazu kann es nützlich sein Themen Blogs zu lesen, Tech-News-Websites zu besuchen oder nach den aktuellen IT-Beiträgen in Foren zu schauen. Die Technologietrends von Google sind dafür schon einmal ein guter Anfang.

Folgen Sie Branchenführern auf sozialen Netzwerken wie LinkedIn und Twitter.

Treten Sie Tech-Communities auf Reddit, Telegram, Slack usw. bei. Diese Communities bieten die Möglichkeit zur Gruppendiskussion an, an denen Sie selbst teilnehmen können, um Neues aus der Branche zu erfahren und Ideen mit Anderen auszutauschen.

4️⃣ Dokumentation und Berichterstattung

Die Hauptaufgabe eines Softwaretesters besteht kurz gefasst darin, timeboxed die Software zu analysieren und nach Bugs zu suchen. Danach erstellen Sie als Software Tester Berichte und Dokumente mit Stakeholdern, um vorzustellen, welche Bugs Sie aufgedeckt haben und wie Sie grundsätzlich die Softwarefunktionen bewerten. Aus diesem Grund profitiert ein Softwaretester in jedem Fall von guten Fähigkeiten in der Dokumentation und Berichterstattung.

Es interessiert faktisch niemanden, wie viele Testfälle ein Software Tester den ganzen Tag über durchgeführt hat. Was am Ende zählt ist das Endergebnis. Der Bericht sollte also so präzise und prägnant wie möglich sein. Dabei hilft einem Softwaretester ganz klar aqua.

🅱️ Soft Skills

Beim Lesen einer Stellenbeschreibung für einen Softwaretester wird Ihnen eines sehr schnell auffallen: eine lange Liste von technischen Anforderungen und gewünschten Erfahrungen in der IT Branche. Soft Skills scheinen hier wohl zu kurz zu kommen, wobei sie eigentlich genauso wichtig sind, wie die Technical Skills. Ab der ersten Minute eines Vorstellungsgesprächs, wird man genau an diesen Softskills gemessen, egal ob man sich für einen manuellen Softwaretester bewirbt oder sich den Weg als Testautomatisierer bahnt.

Die nächsten Teile dieses Beitrags führen Sie durch die wichtigsten Soft Skills für einen angehenden Softwaretester.

5️⃣ Kommunikation

Tester müssen in der Lage sein, mit Teammitgliedern, Entwicklern und anderen Stakeholdern zu kommunizieren. Unterschiedliche Projekte bedeuten unterschiedliche Menschen mit unterschiedlichen Persönlichkeiten, Perspektiven und Anforderungen. Egal wer man ist, man sollte über ausgezeichnete Kommunikationsfähigkeiten und zwischenmenschliche Fähigkeiten verfügen, um seine Meinung effektiv zu äußern und dadurch schwierige Situationen zu meistern. Besonders hervorzuheben sind hier folgende Softskills:

📌 Die Fähigkeit Fragen zu stellen:

Die richtigen Fragen zu stellen und zu wissen, wann man eine Frage stellen sollte und wann lieber nicht, ist eine wahre Kunst, die jahrelange Erfahrungen benötigen. Es gilt also: Im Zweifelsfall immer nachfragen.

📌 Die Fähigkeit, zuzuhören:

Man sollte darüber hinaus aktiv zuhören, um Besonderheiten aufzudecken, die man möglicherweise sonst übersehen hätte. Es gibt immer Luft nach oben und Potential zum Wachsen.

📌 Überzeugungskraft:

Sie zu entwickeln ist besonders schwer, denn auch dieser Skill erfordert vor allem viel Lebenserfahrung. Sie ist deshalb so wichtig, um Produktbesitzern und Softwareentwicklern Fehler klar zu demonstrieren. Man stellt so sicher, dass Fehler rechtzeitig erkannt und behoben werden können, und entsprechend Risiken gemindert werden.

6️⃣ Kritisches Denken

Kritisches Denken hilft einem angehenden Softwaretester dabei, die eigene Denkqualität beispielsweise bei der Ideenbewertung und sämtlichen Entscheidungsfindungen, zu verbessern.

__❗Software Testing bedeutet im Grunde kritisch über die Software zu denken❗ __

Man nennt es kritisches Denken, wenn man systematisch an etwas zweifelt, obwohl alle „Zeichen“ dafürsprechen, dass alles in bester Ordnung ist. Wenn man mithilfe des kritischen Denkens an die Arbeit geht, festigt man umso mehr die eigene Überzeugung.

Bugs tauchen schließlich nicht auf und sagen „Hier bin ich“ – sie verstecken sich sehr gerne. So sollte man sich also bei jedem Testing überlegen, welche Fragen die eigene Bewertungsstrategie bestimmen: Teste ich innerhalb des Geltungsbereichs? Was teste ich nicht? Worauf sollte ich mich mehr konzentrieren? Wenn Sie zu einem ausgezeichneten Tester werden möchten, lernen Sie, wie einer zu denken.

7️⃣ Organisationsfähigkeiten

Als Tester muss man seine Kollegen von einem Fehler im Code überzeugen, die Anwendung überwachen und Engpässe feststellen. Der Tag hat einfach nicht genug Stunden, um all das zu erledigen, ganz zu schweigen von der Woche, wenn man mit so vielen Projekten festgefahren ist, dadurch lange aufbleibt und früh aufstehen muss, um die Arbeit nachzuholen.

🗓 Auch wenn man einen noch so genialen Masterarbeitsplan erstellt und versucht, seine Zeit effektiv zu planen, bringt jeder Tag neue Herausforderungen mit sich und damit alles wieder durcheinander. Vor diesem Hintergrund gilt es an seinem Organisationstalent zu feilen, in Erfahrung zu bringen, wie man seine Aufgaben priorisiert, Nein zu Unwichtigem sagt und dabei auch noch seine Emotionen unter Kontrolle behält. Wenn ein Softwaretester also organisiert bleibt, kann er während des gesamten Projektprozesses viel Zeit sparen.

5️⃣ Test-driven development 🆚 Behavioral-driven development

TDD und BDD leicht erklärt und was ein Front-Ender darüber wissen sollte

Die meisten Entwickler sind mit dem sogenannten Test-driven development (TDD) vertraut, doch Behavior-driven development (BDD) wird wiederum oft missverstanden, dabei ist es lediglich die Weiterentwicklung von test-driven development. Tatsache ist, dass beide Ansätze Vor- und Nachteile aufweisen, die es klar zu berücksichtigen gilt.

In diesem Artikel werden wir TDD und BDD genauer unter die Lupe nehmen, die Unterschiede untersuchen und uns ansehen, wie sie zusammenarbeiten können.

BDD ist eigentlich bloß eine Erweiterung des TDD-Ansatzes. Sie sind jedoch für unterschiedliche Zwecke konzipiert und es werden je nach Ansatz unterschiedliche Tools verwendet, um sie zu implementieren. Verschiedene Teams können diese Konzepte durchaus unterschiedlich interpretieren, und es kommt dabei oft zu Verwechslungen.

❓Was ist denn nun der Unterschied ❓

TDD ist gut geeignet für Unit-Tests, d.h. die Funktion einzelner Module selbst zu testen. BDD - für Integrationen (d.h. um zu überprüfen, wie einzelne Module miteinander arbeiten) und e2e-Testing (d.h. um das System als Ganzes zu testen).

TDD: Bei TDD Tests werden sofort in Codes implementiert, bei BDD werden die Schritte meistens in einer Sprache beschrieben, die für alle verständlich ist, nicht nur für Entwickler.

TDD: Bei TDD werden Tests von den Entwicklern selbst geschrieben. BDD erfordert die Kompetenzen verschiedener Teammitglieder. Typischerweise werden Test-Cases (Schritte) von einem manuellen Tester oder Analysten beschrieben und von einem Testautomatisierer in den Code implementiert. Üblicherweise beschreiben die Frontend-Entwickler zusammen mit den Testern die Schritte und der Testcode wird vom Frontend-Team geschrieben.

Fazit: TDD überprüft die Funktionsfähigkeit einzelner Features, BDD hingegen überprüft Benutzerskripte.

❓Und ​​wie sieht das an einem Beispiel aus ❓

Nehmen wir ein einfaches Problem. Wir erstellen ein Formular, in welches das Alter und Gewicht eines Haustiers (z.B. eines Hundes) eingetragen wird, und als Antwort die tägliche Futtermenge (in g) angegeben wird.

🔍 Lösungsansatz nach TDD:
  • Wir schreiben einen Test, in dem wir überprüfen, ob die Funktion getCatFood() in verschiedenen Situationen die gewünschten Werte herausgibt. Der Unit-Test wird hierbei vor Implementierung der Logik geschrieben.
  • Checken, ob die Tests fehlgeschlagen sind (Der Test schlägt zunächst fehl, da der Code nicht vorhanden ist.)
  • Schreiben den Funktionscode ganz einfach - damit die Tests aufgehen
  • Checken, ob die Tests einwandfrei waren
  • In diesem Schritt können wir am Code selbst und seiner Effektivität arbeiten. Der Code kann nach Belieben umgestalten und geändert werden, da wir nun Tests haben, die uns mit großer Sicherheit verraten, dass wir uns irgendwo geirrt haben. Wichtig ist hier zu verstehen, dass das sogenannte Refactoring ohne die Unit-Tests sehr Risikobehaftet wäre, da ein Code, der einmal funktioniert ggf. nach dem Refactoring einen Fehler enthält. Neben der Effizienz ist, laut Experten, ein viel wichtiger Aspekt beim Refactoring, dass Ziel den Code einfacher und verständlicher zu schreiben. Denn das sorgt dafür, dass im Laufe der Entwicklung weniger Code mit Fehlern geschrieben wird.
  • Wiederholen alle oben genannten Schritte noch einmal

🔍 Lösungsansatz nach BDD:

  • Vorgang beginnt damit, dass der Benutzer das Formular öffnet.
  • Wir testen die Zahlen, die das Formular liefert
  • Wir geben verschiedene Werte ein, bspw. 10-20
  • Checken (in diesem Fall, auf die Schaltfläche Senden klicken und den Wert überprüfen)
  • Der Test war einwandfrei, wenn das Ergebnis auf dem Formular mit den „richtigen“ Werten übereinstimmt
  • Danach beschreiben wir diesen Verlauf mit einer speziellen Syntax (abhängig vom verwendeten Tool).

Zum Beispiel: Funktion: Berechnung der Futtermenge Szenario: Bei der Eingabe gültiger Parameter wird die richtige Antwort angezeigt

Wenn ich im Formular… das Alter 5 Jahre und das Gewicht 5 kg eingebe, *dann wird mir die Futtermenge 500 g angezeigt *

Zum Schluss werden diese Schritte im Code implementiert.

❓ Ich bin ein Frontend-Entwickler, wozu brauche ich das❓

Die Möglichkeit, Codes zu testen, ist ein unheimlicher Vorteil für einen Front-End-Entwickler, denn …

📌 man denkt schon vor der Umsetzung über alle Details nach, das hilft, sich gedanklich vom Code abzulenken und unverständliche Dinge innerhalb der technischen Aufgabenstellung frühzeitig zu erkennen.

📌 Die Ansätze helfen ebenso, die Kommunikation zwischen verschiedenen Teammitgliedern herzustellen: Entwickler, Tester, Manager usw.

📌 Bugs im Code werden früher abgefangen, und je früher ein Bug erkannt wird, desto billiger ist es, ihn zu beheben.

📌 Darüber hinaus gibt es deutlich weniger Round-Trip-Übergänge vom Entwickler zum Tester, was bedeutet, dass Aufgaben schneller zum Verkauf gelangen und weniger zwischen Aufgaben gewechselt werden muss

📌 Die manuellen Tester werden entlastet, denn Regressionstests sind ein sehr mühsamer Prozess. Wenn alles mit Automatisierten Tests abgedeckt ist, reicht es im Grunde, einfach die Testcases zu beschreiben, der Code kann von einem Testautomatisierer oder einem Entwickler geschrieben werden.

📌 Es ist leichter ein Refactoring durchzuführen.

6. Die 4 besten Tools für die Testautomatisierung

Überblick über die 4 effektivsten Tools, die jeder professionelle Tester kennen sollte

Es gibt eine Vielzahl an Testautomatisierungstools auf dem Markt, die genutzt werden, um verschiedene Aspekte im Zusammenhang mit einer Anwendung oder Software zu testen. Automatisierungstools werden nicht nur genutzt, um den Testprozess zu vereinfachen, sondern auch, um den Testing Mechanismus selbst effizienter zu gestalten. Unternehmen entscheiden sich im Allgemeinen oft für ein bestimmtes Tool, das gemäß ihren Test- und Geschäftszielen, dem Budget und Fähigkeiten der Testteams entspricht. Die Entscheidung kann also je nach diesen Kriterien entweder zu einem lizenzierten Tool oder zu einem Open-Source-Tool führen.

Dennoch gibt es einige gefragte Tools auf dem Markt, die jeder Tester und Entwickler für die Testautomatisierung im Kopf behalten sollte. Obwohl die Liste noch viel länger ist, sind hier unserer Meinung nach die 4 wichtigsten (sowohl Open Source als auch lizenzierte Tools) darunter.

1️⃣ EggPlant

EggPlant ist ein Testautomatisierungstool und unter Testern für seine breite Palette an Funktionen bekannt, die es ihnen ermöglichen, die Funktionalität und Leistung einer entwickelten Anwendung geräte- und betriebssystemübergreifend zu testen. Das Tool funktioniert in jeder Programmiersprache mit einem oder mehreren Skripten, bei denen Benutzer Testszenarien auf mehreren Geräten und Betriebssystemen erstellen.

Darüber hinaus kann es in den Betriebssystemen Linux, macOS X und Windows implementiert und ausgeführt werden und bietet eine Integration mit der Application Lifecycle Management-Software wie etwa HPE Quality Center, IBM Rational Quality Manager und Jenkins.

Eggplant ist bei Testern unheimlich beliebt, da es Entwicklern und Testern, Softwares zum Erstellen, Planen, Programmieren und Ausführen automatisierter Tests auf verschiedenen mobilen Plattformen zur Verfügung stellt.

2️⃣ Selenium

Selenium erfreut sich bei der Testing Community großer Beliebtheit und ist eines der beliebtesten Open-Source-Tools zur Testautomatisierung. Dieses Tool wird hauptsächlich zum Testen von Web- und mobilen Anwendungen implementiert. Selenium ist aus verschiedenen Gründen sehr beliebt: Zunächst verursacht es als Open-Source Tool keine Vorlaufkosten und kann mit allen seinen Funktionen absolut kostenfrei heruntergeladen werden. Der Support für das Tool ist kostenlos, und besteht aus einer Community von Testern und Entwicklern.

Mit Selenium kann man Software Tests in mehreren Browsern gleichzeitig ausführen, was es eindeutig zum Favoriten für viele Tester Teams macht. Zwar besitzt dieses Tool ein eigenes Skript, doch das sollte einen nicht daran hindern, es in anderen Sprachen zu verwenden. Entwickler/Tester können Selenium mit jeder anderen Sprache verwenden, mit der sie vertraut sind – C#, Java, JavaScript, PHP, Python und andere. Unter anderem lässt es sich effektiv in beliebte Tools wie Hudson, SauceLabs, Selenium-Grid, QMetry und andere integrieren. Diese und viele weitere solcher Vorteile machen Selenium zu einem der von Testern bevorzugten Testautomatisierungstools.

3️⃣ Ranorex

Abgesehen davon, dass Ranorex kostengünstig ist, ermöglicht seine Lizenz auch noch effektives Testen über Desktop-, Web- und mobile Anwendungen, da es nahtlos in die aktuellen Testumgebungen integriert und über eine Vielzahl von Standardprogrammiersprachen angepasst werden kann. Besonders die einfache Implementierung und Verwendung des Tools macht es bei Testern beliebt.

Ranorex testet außerdem die Funktionalität der Anwendung mit den erforderlichen Eingaben sowohl vom Tester als auch vom Entwickler und fördert das verteilte Testen, um Fehler zu identifizieren. Ranorex wurde sowohl in größeren als auch in kleineren Unternehmen implementiert und unterstützt auch Technologien wie .NET, Winforms, WPF, Java, SAP, HTML5, Flash, Flex, Silverlight, iOS, Android, Windows Apps (Native/Hybrid) und viele mehr.

Die wichtigsten Vorteile von Ranorex sind:

✔️ dass es die Integration von Selenium WebDriver in Ranorex Studio ermöglicht,

✔ Mit Selenium können keine Client-Anwendungen getestet werden, mit Ranorex jedoch schon

✔️ die Möglichkeit bietet, mit den Ranorex-Tools auf Selenium zuzugreifen,

✔️ es bietet Plug-in-freie Webtests für alle wichtigen Plattformen und Browser,

✔️ es bietet eine schlankere Testsuite-Struktur und bietet JUnit-kompatible Berichte mit verbessertem WPF-Plug-in.

4️⃣ LeanFT

Das HPE Lean Functional Tool – LeanFT wurde während der HP Discover im Juni 2015 in Las Vegas der Öffentlichkeit präsentiert. Es ist ein leistungsstarkes und benutzerfreundliches Tool zur funktionalen Testautomatisierung mit zusätzlichen Funktionen, um effektive Ergebnisse in der Continuous Delivery und Testautomatisierung für die Agile Projektimplementierung und DevOps zu liefern. Es ist eine robuste und gleichzeitig breite Lösung für Funktionstests, die speziell für Continuous Testing und Continuous Integration entwickelt wurde.

Das Tool ist in Funktions-, Regressions- und Servicetests anwendbar und hilft Entwicklern und Testern bei der effektiven Zusammenarbeit während des Entwicklungsprozesses hochwertiger Softwares und Anwendungen. Das Tool automatisiert Testing Prozesse mit einer integrierten, visuellen Benutzererfahrung (User experience), die manuelles, automatisiertes und Framework-basiertes Testen in einer IDE vereint.

HPE LeanFT hilft dabei, Benutzeraktionen in web- oder clientbasierten Anwendungen zu automatisieren. Darüber hinaus erstellt und führt dieses Tool Tests auf Mac-, Linux- oder Windows-Plattformen durch. Es gilt als entwicklerfreundliches Framework, das mit seinen Tools – Object Identification Center und Objects Locators und Dienstprogrammen – dazu beiträgt, robuste und wiederverwendbare Selenium-Tests zu erstellen. Bei richtiger Umsetzung kann das Tool dazu beitragen das Qualitätsniveau zu steigern und Kosten zu sparen.

Testautomatisierung oder Testing Automation muss sorgfältig geplant und implementiert werden. Diese Liste unserer 4 beliebtesten Automatisierungstools beinhaltet natürlich weitaus nicht alle möglichen Tools.

ℹ️ andagon ist führend in der Software Testautomatisierung und hat über Jahrzehnte hinweg nicht nur bundesweit sondern auch weltweit einen soliden und loyalen Kundenstamm aufgebaut. Wir, das andagonaten-Team bilden strategische Partnerschaften und erweitern die möglichen Vorteile für unsere Kunden, um die Testing- und Kosteneffizienz zu optimieren. Schreiben Sie uns und lassen Sie uns in Ihrem nächsten Projekt im Bereich Testautomatisierung zusammenarbeiten. ➡️ http://andagon.de/

Weitere Artikel

Um unsere Website für Sie optimal gestalten zu können, verwenden wir Cookies. Durch die weitere Nutzung dieser Website stimmen Sie der Verwendung von Cookies zu. Die Speicherung Ihrer Daten aus bisherigen und zukünftigen Besuchen, sowie deren Verwendung, erfolgt im Rahmen unserer Datenschutzbestimmungen. Weitere Informationen