Die Antike war der Beginn von Betriebssystem und Software

Einen Computer kann man einfach als elektronische Maschine, die zur Verarbeitung von Informationen in digitaler Form bzw. in Signalform dient, beschreiben. Die Menschen in der Antike, die um das Jahr 440 vor unserer Zeitrechnung lebten, erstellten den Prototypen des Rechenbretts, jedoch ahnten sie wahrscheinlich nicht, dass wir uns heute Computer bedienen werden, die eine Schnittstelle besitzen, die angenehm für das Auge ist. Ähnlich war es später im Fall des englischen Kryptologen und Mathematikers Adam Turing, der wahrscheinlich nicht vermutete, dass Computer Programme besitzen werden.

Die Turingmaschine wird als eines der ersten abstrakten Computermodelle angesehen. Der Wissenschaftler entwickelte dessen Funktion zwischen den dreißiger und vierziger Jahren des XX. Jahrhunderts. Zur Zeit der größten Entwicklung des Computers, in den siebziger und achtziger Jahren des vergangenen Jahrhunderts, sahen Programmierer schnell ein, dass die Gesellschaft nur mit großer Mühe die Bedienung des zu der damaligen Zeit gewaltigen Geräte. Einer seiner Elemente war ein Monitor, der einfach gesagt weiße Buchstaben auf einem schwarzen Hintergrund abbildete. Man entschied sich, ein Betriebssystem zu entwickeln, dessen Bedienung deutlich einfacherer und intuitiver wäre. Mit Sicherheit eroberten die Computer genau deshalb die ganze Welt und befinden sich heute in praktisch jedem Haus.

Eines der beliebtesten Betriebssysteme ist Microsoft Windows, das durch das Microsoft Unternehmen geschaffen wurde. Im Jahr 2012 befand es sich auf 83% aller Computer auf der Welt. Gleich nach ihm folgt Linux, danach Chrome OS sowie Android und am Schluss befindet sich Apple iOS. Das Ziel von Programmen ist die Umwandlung von Daten. Die Grenzen dieser Umwandlung bestimmt der Entwickler des jeweiligen Produktes. Oft wird der Begriff synonym zum Computerprogramm bzw. zur Applikation verwendet. Zum Schreiben von Programmen werden viele Programmiersprachen und -algorithmen eingesetzt. Programme lassen sich am besten aufgrund ihrer Bestimmung unterscheiden:

  • Anwendungssoftware – besitzt direkten Kontakt mit dem Nutzer und führt seine Befehle aus
  • Programmiersoftware – wird durch andere Programme verwendet
  • Systemsoftware – führt Tätigkeiten aus, die das Funktionieren von Betriebssystemen ermöglichen
  • Software zum Erstellen von Software

Beispiele von Software sind:

  • Texteditoren,
  • grafische Editoren,
  • Computerspiele,
  • Computerviren,
  • Programme zum Verwalten von Datenbanken.
testing

Mobile Apps – eine Branche mit Potential

Die Untersuchungen der Firma IDC im Jahr 2013 ergaben, dass im XXI. Jahrhundert deutlich mehr Smartphones gekauft werden als Handys. Zwischen den Jahren 2012-2013 wurden insgesamt 216,2 Millionen Exemplare verkauft. Im Jahr 2016 war diese Zahl um 1/3 größer. Einen interessanten Vergleich stellen auch die Jahre 2010 und 2011 dar, in welchen der Verkauf an Smartphones um 175% anstieg. Im Jahr 2013 wurden die meisten von Samsung verkauft, danach folgten der Reihe nach: Apple, LG, Huawei und ZTE.

Shwan DuBravac, ein Publizist, der die Technologie-Branche in den Vereinigten Staaten beschreibt, kommentierte die Entwicklung der Smartphones wie folgt:

„Die unaufhörliche Evolution von Smartphones und Tablets generiert neue Möglichkeiten für ihre Nutzung und erhöht damit ihre Verwendbarkeit und ihren Wert, wobei sie jedoch andere Geräte wie z.B. digitale Fotoapparate verdrängen“.

Smartphones begannen Leuten allmählich den Computer bei vielen Tätigkeiten zu ersetzen. Sie besitzen ausgebaute Kalender, Wecker, Uhren, Lampen, Zugang zum Internet, Fotoapparate und sogar Texteditoren.

Ein wichtiger Bestandteil eines jeden Smartphones ist das Betriebssystem, mit welchem es arbeitet. Die beliebtesten sind:

  • Android,
  • iOS,
  • Windows 10 Mobile,
  • BlackBerry OS,
  • Sailfish OS,
  • Firefox OS.

Es kommt häufig vor, dass ein Unternehmen Smartphones mit zwei Betriebssystemen produziert. So ein Beispiel ist Nokia, das Lumie mit Windows Phone (den Vorgänger von Windows 10) sowie Android schuf. Zu Beginn wurden die Apps, die man auf jedem Smartphone installieren konnte, in der Programmiersprache JAVA geschrieben. Derzeit tut dies nur noch Android. Die Aufteilung von mobilen Apps unterscheidet vier Arten:

  1. Eigenständige Apps – diese Apps benötigen kein Internet, um zu funktionieren. Ein Beispiel dafür ist Firechat, das Geräte mittels Bluetooth verbindet,
  2. Online-Apps – das sind z.B. mobile Seiten bzw. Apps, die nur mit einer Internetverbindung funktionieren,
  3. Apps nach Auftrag – sie dienen gewöhnlich zur Verbindung über das Internet mit einem entsprechenden Server,
  4. Computerspiele – B. Minecraft, Clash of Clans.

Automatische Tests – Was ist das?

Das Testen von Apps steht mit der Erstellung von Software in Verbindung. Das ist einer der Prozesse, der die Qualität der App sicherstellt. Die grundlegende Aufgabe dieser Tätigkeit ist die Analyse, Prüfung und die eventuelle Verifizierung dessen, ob das jeweilige Projekt seinem Plan und seinen Richtlinien entspricht. Das Testen ermöglicht eine frühere Erkennung von Instabilität bzw. potentiellen Funktionsgefahren der in der Erstellung befindlichen App und ermöglicht dessen Beseitigung bzw. die Einleitung von Gegenmaßnahmen, die ihr Auftreten vermeiden. Es sollte angemerkt werden, dass das Testen nur das Problem anzeigt und nicht direkt beseitigt.

Das Testen lässt sich zu einer beliebigen Entwicklungsphase der App-Entwicklung einleiten. Das hängt von der zur Anwendung kommenden Methode ab. Es wird jedoch empfohlen, dass dies bereits zum frühesten Zeitpunkt stattfindet. Denn wenn von Beginn an ein Fehler gemacht wird, der nicht entdeckt wird, dann kann das gesamte Projekt auf ihm basieren. Die weitreichenden Folgen können das Erschweren unserer Arbeit sein, diese verlangsamen und schwer zu beheben sein. Natürlich ist das Testen nicht in der Lage alle Ungereimtheiten bzw. Fehler zu beseitigen. Jedoch erhöht es die Wahrscheinlichkeit eine stabilere Software zu erstellen. Vor allem aber erhält der Entwickler Informationen darüber, was verbessert werden könnte und welche Elemente richtig arbeiten. Das Testen selbst lässt sich auf die Verifizierung der angenommenen Anforderungen sowie auf die statische Analyse reduzieren. Es gibt viele Testeinteilungen, von denen man einige wichtige Begriffe hervorheben kann:

  • White-Box-Test, der den Quellcode analysiert,
  • Black-Box-Test, der die Schnittstelle der App analysiert.

Die Vorteile von automatischen Tests sind:

  • deren Ergänzung durch manuelle Tests (zwei Testvarianten helfen, das jeweilige Projekt besser zu analysieren),
  • Wiederholbarkeit (ein Mensch ist nicht in der Lage, jedes Mal genau dieselben Schritte auszuführen. Ein Computer bzw. Programm ist dazu in der Lage.),
  • Systematik (zyklische Tests können programmiert werden).

Die Automatisierung von Tests hängt mit einer Reihe zusätzlicher Umsetzungskosten zusammen. Trotz dessen bringt sie eine positive Wirkung mit sich und vereinfacht die Arbeit von Testern.

Die ersten finanziellen Aufwendungen, die getragen werden müssen, hängen mit der Implementierung zusammen. Sie stehen mit den Vorbereitungen für die Durchführung von Tests zusammen. Das sind einmalige Ausgaben, die nur beim Übergang vom manuellen zum automatisierten Testen getätigt werden. Die Betriebskosten hängen mit der Nutzung der Tests sowie der Tatsache zusammen, dass trotz der Automatisierung des gesamten Systems, die Schlussanalyse immer durch eine für diesen Arbeitsschritt verantwortliche Person durchgeführt werden muss. Zum Schluss bleiben noch die Instandhaltungskosten. Diese beziehen sich auf jegliche Modifizierungen, die während der Erstellung von Apps unternommen werden.

Wieso testen?

Es bestehen viele Arten von Tests, die ab und zu schwer voneinander zu unterscheiden sind. Der Unterschied kann z.B. darin liegen, dass ein Test mit einer HTML-Schnittstelle durchgeführt wird, ein anderer wiederum nur mit einer REST API bzw. der Analyse einer kleineren Anzahl an Benutzeraktionen oder auch aller Tätigkeiten. Die Unterschiede sind oft nur minimal und die verwendeten Begriffe leiten häufig fehl oder sind unklar.

Es können einige Gründe für die Automatisierung von Tests unterschieden werden. Das sind u.a.:

  • die Funktionsprüfung einzelner Elemente eines Gesamtprogramms und eine evtl. Isolierung der Fehler,
  • die Funktionsanalyse des Projektes als Ganzes „von außen“,
  • der Verbindungstest der App mit anderen Ressourcen,
  • die Erfüllung der Nutzererwartungen,
  • die Einfachheit späterer Modifikationen.

Der Automatisierungsprozess von Tests kann in 4 Etappen aufgeteilt werden:

ETAPPE 1 – Erhalt der Quellcodes

ETAPPE 2 – Erstellung der Projektdatenbanken

ETAPPE 3 – Starten der automatischen Tests

ETAPPE 4 – Erstellung von Analysen und Statistiken und die Benachrichtigung über diese

3 der wichtigsten Typen von Tests

Als erstes beseitigen sie Fehler, auf der anderen Seite ermöglichen sie ein einfacheres Modifizieren der App. Um ersteres zu erreichen muss die erstellte App vollständig mit Tests versehen sein. Es muss die Funktion aller Elemente einzeln geprüft werden sowie aller zusammen. Das einfache Modifizieren einer App hängt von einigen Unterpunkten ab:

  • die Tests müssen schnell sein,
  • die Tests müssen einfach zu debuggen sein,
  • die getätigten Änderungen dürfen keine Nebeneffekte verursachen und die Funktion der gesamten App stören.

Diese Tests konzentrieren sich hauptsächlich auf das Ergebnis der Arbeiten und der Erfüllung der Anforderungen von App-Nutzern. Selbst wenn das Produkt effektiv funktioniert, muss dies nicht mit der Kundenzufriedenheit und einer guten Bewertung gleichbedeutend sein. In diesem Fall muss man sich auf die Automatisierung von Tests der Schnittstellen von Endeinrichtungen konzentrieren und nicht unbedingt „das Innere“ der App analysieren. Unser Programm stellt eine sog. Black-Box dar.

Fehler wurden beseitigt, die App wurde für spätere Modifikationen vorbereitet, es wurde sich um das Endergebnis und die Nutzerzufriedenheit gekümmert. Doch mit diesen Etappen ist das Testen von mobilen Apps noch nicht abgeschlossen. Eine große Wichtigkeit im gesamten Prozess der Automatisierung von Tests kommt Integrationstests zu, sprich den sog. Hilfstests. Sie lösen die Probleme der Tests von Verbindungspunkten mit den Ressourcen und verbinden in sich die Anwendung von End-To-End-Tests und Komponententests. Hierbei werden, bzw. sollten zumindest, die entsprechenden, einzelnen Integrationspunkte gleichzeitig geprüft werden.

Die Qualitätssicherung von getesteten Apps

Falls man anstrebt, dass das herausgegebene Produkt in Form einer App bzw. eines Programms, in hohem Maße die Quelle von großen Gewinnen und nicht von finanziellen Verlusten wird, sowie deren Nutzer mit dem Ergebnis zufrieden sein sollen, dann muss man die Qualität der getesteten Apps sicherstellen. Dadurch wird man ein einfach zu modifizierendes und gemäß der Clean-Code-Grundsätze geschriebenes System besitzen. Die Qualität der getesteten Apps bezieht sich auf die langfristige Planung und die systematischen Schritte, die für die Erfüllung der Anforderungen des Endprodukts während seiner Herstellung erforderlich sind.

Der Clean-Code-Grundsatz sollte die Devise jedes guten Programmierers sein. Ein ungepflegter bzw. unsachgemäßer Code erschwert in der Zukunft die Arbeit bzw. eine Abänderung. Es gibt keine Regeln bzw. hilfreiche Ratschläge, die das Schreiben des sog. sauberen Codes erleichtern. Die Basis der Arbeit sollte eine genaue und gründliche Analyse des gestellten Problems, das Erstellen des Projektes und schließlich seiner Implementierung sein. Dabei können Muster, die durch Experten bzw. erfahrene Programmierer ausgearbeitet wurden, oder aber schematische Lösungen der gegebenen Probleme hilfreich sein.

Zu Beginn der App-Tests müssen die entsprechenden Qualitätsgrade festgelegt werden. Was ist zulässig und unter welchen Bedingungen kann ein Produkt auf den Markt gebracht werden. Die Sicherstellung der Qualität der getesteten Informationen kann man sehr einfach mit dem System im Hochschulwesen vergleichen. In beiden Fällen erfolgt ein ständiges Evaluieren und Bewerten, Kontrollieren, Führen und Verbessern.

QA (Qualitätssicherung) kann in den meisten Fällen auf zwei Wegen umgesetzt werden:

  • Intern – bezieht sich auf die Kontrolle und Erhöhung des Qualitätsniveaus der App selbst,
  • Extern – wird oft durch sog. Tester umgesetzt, die in vielen Fällen die späteren Nutzer der App sind. Sie sehen das Projekt als Ganzes an. Ein Beispiel hierfür ist das Testen der Beta-App „Jak dojadę“, wobei die Nutzer im Gegenzug für den Zugang zur neuen Version, den Entwicklern Mitteilungen zukommen ließen, die Bewertungen, Fehler bzw. Verbesserungen und Ratschläge enthielten.

Beispiele für verschiedene Methoden der Qualitätssicherung sind:

  • Programme die über Fehler informieren – alle Ungereimtheiten bei der Automatisierung von Tests werden häufig per E-Mail an die für das jeweilige Element der App verantwortlichen Personen versendet
  • Qualitätsabteilung – sie analysiert alle Funktionen und deren weitreichende Folgen
  • Registrierungssystem für Fehler- und Warnmitteilungen
  • Testszenarien – Beschreibung und Dokumentation aller Tests sowie Schritte, die im Fehlerfall unternommen werden müssen
  • Einbau in die Qualitätssicherungssoftware – Codes für automatische Tests

Die sieben Todsünden beim Testing und der Automatisierung von Tests

Das Testen von Apps, Software oder anderen Elementen der IT-Welt ist erforderlich und unglaublich hilfreich. Deshalb sollte man allgemeine Fehler, die man unbewusst begeht, vermeiden.

Erste Sünde – Ein Test und fertig!

Wenn man eine neue App auf den Mobilgerätemarkt herausbringt, führt man eine Reihe von Tests durch, an denen oftmals die späteren Nutzer teilnehmen, was zudem einen sehr guten Marketingtrick darstellt und der Gemeinschaft das Gefühl gibt, das Produkt mitzuentwickeln. Leider endet das Testen von Apps in vielen Fällen nach der Veröffentlichung bzw. nach dem Wechsel von der Beta zur offiziellen Produktversion.

Man muss bedenken, dass das Testen von Apps ein fortwährender, langfristiger und unglaublich arbeitsintensiver Prozess ist. Er verlangt außerordentliche Wachsamkeit und bringt für gewöhnlich erst nach längerer Zeit Ergebnisse mit sich. Im Zeitalter des schnellen technologischen Fortschritts ist ein ständiges Verbessern selbst bei den besten Apps erforderlich.

Man sollte auch an einer Regel festhalten – kleine Anzahl visueller Erfolge, dafür aber eine minimale Anzahl an Misserfolgen.

Zweite Sünde – Automatisierung ist die Medizin

Bei der Diagnose einer Software bzw. einer App durch automatische Tests, wird man mit Gewissheit wissen, was funktioniert, jedoch ist das erst der erste Schritt bei der Lösung unserer Probleme.

Die Test ermöglichen uns festzulegen, was verbessert werden sollte. Unsere Aufgabe liegt vor allem in der Wahl des Vorgehens, das uns ein stabileres Funktionieren des Back-Office ermöglicht.

Vierte Sünde – Ein Code für alles

Die Regel, der ein guter Programmierer folgen sollte, ist Clean-Code, sprich sauberer Code. Die im Projekt befindlichen Muster sollten eingehalten werden und es muss bedacht werden, dass der Code, den wir bei der Erstellung der Tests verwenden, verändert werden könnte. Falls er also schlecht geschrieben wurde, kann er die spätere Arbeit erschweren.

Dritte Sünde – Lasst uns eine Abkürzung nehmen

Es ist einfach und verlockend frühere Tests aufzuspielen und durchzuführen und zuvor geschriebene Skripte zu kopieren. Etwas schwieriger wird es später mit der Aufrechterhaltung und bei der Änderung der Funktionalitäten unserer App, wird es einfacher sein die Tests neu zu erstellen, anstatt die bereits bestehenden anzupassen.

Fünfte Sünde – End-to-End reicht aus

End-to-End ist definitiv zu wenig! Die Automatisierung von Tests sollte auf allen Arbeitsstufen stattfinden. Eine späte Analyse während Akzeptanztests führen zu Störungen und Destabilisierung des geführten Projekts.

qa Software-Tests - SII

Sechste Sünde – Automatisierung des Universums

Die Tests sollten logisch geplant sein, damit sie potentiell gefährdete Projektelemente prüfen und überwachen. Im Grunde lässt sich alles testen, jedoch ist dies im Nachhinein sehr kostspielig sowie äußerst zeitintensiv. Die Elemente, die ein automatisierter Test umfassen sollte, sind kritische Funktionalitäten und die Programmteile bzw. App-Teile, die häufig geändert werden.

Siebte Sünde – Der Programmierer ist unwichtig

Programmierer sollten von keiner Etappe der durchgeführten Tests ausgeschlossen werden. Die Bewertung oder Diagnose eines Systems kann nicht allein dem Tester überlassen werden. Ein Programmierer kann beim Erkennen eines Problems mit seinem Wissen und seiner Erfahrung behilflich sein. Zuletzt lässt sich ein Trend in Unternehmen verzeichnen, bei dem zunehmend auf getrennte Testabteilungen verzichtet wird. Diese werden mit IT-Abteilungen verbunden, was die Effektivität und Funktionalität der Mitarbeiter verbessert.

Heute fordert der Kapitalismus und der technologische Fortschritt, dass jeder schneller, besser und effektiver arbeitet. Die Automatisierung von Test erfüllt vor allem die erste der genannten Bedingungen. Sie ist weniger Fehleranfällig, besitzt weitere Möglichkeiten, ist nicht an 8 Arbeitsstunden täglich gebunden und ihre Abläufe sind wiederholbar. In der Verbindung mit manuellem Testen gibt dies genauere Ergebnisse und professionellere Datenanalysen, die bei der Verbesserung jedes Produktes helfen.