Eine eigene Native Mobile App entwickeln – Teil 4: App- und Usability-Testing

Sobald Sie Ihre App fertiggestellt haben, folgt als nächster Schritt das App-Testing. Die App wird dabei auf ihre Funktionstüchtigkeit, Benutzerfreundlichkeit (Usability) sowie ihre Kompatibilität mit unterschiedlichen Geräten und Betriebssystemen geprüft.

Die meisten Entwickler wollen nach Entwicklung ihrer Applikation und dem Festlegen des finalen App-Designs die Anwendung natürlich schnellstmöglich veröffentlichen – doch bevor Sie Ihre Software im App-Store anbieten, sollte Sie unbedingt die Tauglichkeit der App in verschiedenen Bereichen kontrollieren. Gängige Methoden hierfür sind beispielsweise Performance-, Compatibility- und Usability-Tests. Diese und andere Testverfahren werden unter dem Begriff „Mobile-Application-Testing“ (kurz „Mobile-App-Testing“) zusammengefasst. Verschiedene App-Testing-Tools unterstützen Sie hierbei.

Warum ist Mobile-App-Testing wichtig?

Damit eine App erfolgreich ist, muss sie nicht nur überzeugende Inhalte bieten und gut vermarktet werden, sondern vor allem auch einwandfrei funktionieren und benutzerfreundlich gestaltet sein. Deshalb sind grundlegende Tests vor dem Release einer Applikation unverzichtbar – egal, ob es sich dabei um eine Mobile App oder eine Desktopanwendung handelt.

Beim Testen von Apps kommt aber noch ein Faktor erschwerend hinzu: Die Anpassung an die verschiedene Endgeräte gestaltet sich bei (Native) Mobile Apps meist aufwendiger als bei anderer Software. In den Anfangsjahren der App-Entwicklung war diese Anpassung noch leichter durchzuführen, da es erst eine relativ kleine Auswahl an Smartphones gab. Inzwischen existiert jedoch eine große Vielzahl an Mobilgeräten mit ganz unterschiedlicher Ausstattung. Die jeweilige Hardware unterscheidet sich so gut wie bei jedem Smartphone- und Tablet-Modell. Bezüglich der verbauten Komponenten sind vor allem Aspekte wie der Prozessor (CPU), der Arbeitsspeicher (RAM) sowie die Bildschirmgröße und Bildschirmauflösung ausschlaggebend für die Wiedergabe einer Applikation.

Neben der Hardware spielt aber auch die Software eines mobilen Geräts eine Rolle. Hier sind es in erster Linie die verschiedenen Betriebssysteme einer Plattform, die Einfluss auf die App-Wiedergabe haben. Ältere Betriebssysteme können aufgrund fehlender Aktualisierung die App-Nutzung erschweren – und die Verbreitung älterer Versionen von Android und iOS darf man nicht unterschätzen. Deutlich wird die Vielfalt der verwendeten Betriebssysteme besonders dann, wenn man sich die Nutzung verschiedener Android-Ausführungen anschaut: Insgesamt werden die älteren Versionen von Googles Betriebssystem stärker genutzt als die aktuelle Fassung. Dies hat auch damit zu tun, dass bei Android viele Hersteller Updates nicht oder nur spät ausliefern. Bei iOS gelangt zwar die neue Version des Betriebssystems typischerweise schneller auf die iPhones und iPads der Nutzer, doch sehr alte Geräte bekommen von Apple keine Updates mehr, wodurch man auch auf einigen Apple-Geräten ältere iOS-Versionen finden kann.

Die Vielfalt an Hardware und Software mobiler Endgeräte wird mit dem Begriff der Fragmentierung bezeichnet – sie stellt die App-Qualitätssicherung vor viele Herausforderungen. An dieser Stelle kommt das Mobile-App-Testing ins Spiel: Dadurch wird überprüft, ob eine Applikation unter unterschiedlichen Voraussetzungen überhaupt lauffähig ist, und – falls ja – ob sich Schwierigkeiten bei der Wiedergabe der Anwendungen ergeben. Das Aufdecken und Beheben solcher Missstände soll ein optimales Nutzungserlebnis für möglichst viele User gewährleisten. Denn nur, wenn eine App auf so vielen Mobilgeräten wie möglich eine gute Performance und Benutzerfreundlichkeit bietet, hat die Anwendung die größtmögliche Reichweite.

Wie testet man eine App?

App-Testing ist nicht gleich App-Testing: Generell gibt es für die Qualitätssicherung verschiedene Ansätze. Die beiden zentralen Fragen hierbei sind, wer die Qualität der Anwendung überprüfen soll (manuelle oder automatisierte Tests) und wie dies geschehen soll (Tests auf dem jeweiligen Gerät oder via Simulator bzw. Emulator).

Manuelle vs. automatisierte App-Tests

Manuelle App-Tests (durchgeführt von Nutzern)

Das manuelle Testen stellt die klassische Variante des Mobile-App-Testings dar – hierbei prüfen Menschen die jeweilige Anwendung. Da das Testen von Applikationen sehr umfangreich sein kann (insbesondere bei Android-Apps), kann das Entwicklerteam dies meist nicht selbst leisten. Dementsprechend häufig werden Probanden eingesetzt. Hierbei wird eine (im besten Fall repräsentativ große) Gruppe zusammengestellt, die die App gemäß vorgegebener Testszenarien nutzt und anschließend bewertet. Externe Testpersonen haben den Vorteil, dass sie über kein Vorwissen hinsichtlich der Funktionsweise der Anwendung verfügen und somit bei der Bewertung einer Applikation dem Urteil potenzieller Nutzer am nächsten kommen.

Beim manuellen Mobile-App-Testing stellt neben dieser klassischen Vorgehensweise auch das Crowdtesting eine Option dar. Crowdtesting-Dienstleister bieten einen Pool an Testern an. So können Sie sich zielgruppengerechte Testpersonen aussuchen, die Ihre App auf ihren persönlichen Geräten testen. Das Crowdtesting findet also nicht in einer speziellen Testumgebung statt, sondern im natürlichen Umfeld der Nutzer, was die Aussagekraft der Testergebnisse durchaus erhöhen kann. Für iOS-Apps (und ebenso für watchOS sowie tvOS-Apps) kann man über das sogenannte TestFlight-Beta-Testing bis zu 2000 Teilnehmer zum Testen der Anwendung einladen und so Crowdtests selber organisieren. Auch Google bietet Softwareentwicklern verschiedene Optionen für geschlossene und öffentliche Betatests von Android-Apps an.

Automatisierte App-Tests (durchgeführt von App-Testing-Tools)

Im Gegensatz zu manuellen Tests setzt man automatisierte Kontrollen vor allem in Bereichen ein, in denen bestimmte Prozesse kontinuierlich unter verschiedenen Bedingungen geprüft werden. Für automatisierte App-Tests verwendet man eine spezielle Software. Der große Vorteil liegt hierbei in der Zeitersparnis – Testvorgänge können Programme innerhalb eines Bruchteils der Zeit durchführen, die ein menschlicher Nutzer hierfür bräuchte. Allerdings bietet sich die Automatisierung nicht für alle Testfelder an.

Physische Mobilgeräte vs. Simulator/Emulator

Test auf physischen Mobilgeräten

Das Testen der App auf den jeweiligen Mobilgeräten ist die ideale Lösung, um die Funktionsweise einer App in Kombination mit einer speziellen Soft- und Hardware nachzuvollziehen. Jedoch ist dies recht kosten- und zeitintensiv, da Sie für umfassende Tests eine große Menge an Smartphones und Tablets benötigen und auf jedem einzelnen der Geräte das Verhalten der App stets neu überprüfen müssten. Am einfachsten lässt sich dies über verschiedene Mobile-App-Testing-Anbieter realisieren – bei diesen erhalten Sie Zugang zu einem Bestand an verschiedenen Mobilgeräten (häufig „Device Lab“ oder „Test Lab“ genannt), mit denen Sie Ihre App testen können.

Test via Emulator/Simulator

Emulatoren und Simulatoren sind Programme, die bestimmte Geräte imitieren. Auf Ihnen lassen sich Applikation virtuell testen. Die dabei erzielten Ergebnisse sind jedoch nicht immer hundertprozentig verlässlich, da nicht alle Nutzerinterkationen authentisch simuliert werden können. Zudem sollten manche Testformen unbedingt auf den physischen Geräten erfolgen, da die Gerätesimulation in einigen Bereichen an ihre Grenzen stößt.

Simulatoren und Emulatoren können zwar die Tests auf den physischen Endgeräten nicht ersetzen, jedoch stellen sie eine gute Ergänzung zu diesen dar – sie bieten sich vor allem für automatisierte App-Tests an. Mit ihrer Hilfe ist es möglich, schnell die Funktionstüchtigkeit einer Anwendung mit unterschiedlicher Soft- und Hardware zu prüfen. Viele Emulatoren und Simulatoren sind zudem kostenlos erhältlich – so beinhalten beispielsweise das Android Studio und Apples Xcode entsprechende Programme.

Verschiedene Testfelder

Neben den verschiedenen Vorgehensweisen beim Testen einer Anwendung gibt es auch diverse Testbereiche. Die vier folgenden App-Testing-Formen stellen nur eine Auswahl dar, sind für die Überprüfung einer mobilen App jedoch nahezu unverzichtbar. Neben den in diesem Abschnitt genannten Tests gibt es zusätzlich noch Sicherheitstest/Security Testing, Localization Testing sowie weitere Testarten und -bereiche.

Functional Testing/Funktionstest

Anhand des Funktionstests kontrollieren Sie, ob die App wirklich so arbeitet, wie Sie es sich wünschen. Letztlich prüft man hier alle App-Inhalte auf ihre korrekte Arbeitsweise – jede Funktion, jeder Screen und jeder Button werden inspiziert. Mit sogenannten Modultests bzw. Unit-Tests kann man dabei einzelne Komponenten der App testen.

Functional Testing dreht sich um folgende zentrale Fragen:

  • Lässt sich die App problemlos installieren und wieder deinstallieren?
  • Funktionieren alle App-Inhalte wie vorgesehen?
  • Kann die App störungsfrei fortgesetzt werden, wenn man sie minimiert hat?
  • Kommt es zu Abstürzen der App?
  • Erhält der User eine angemessene Fehlermeldung, wenn es zu Fehlern kommt?

Neben der App an sich sollten Sie auch das Verhalten der Anwendung in bestimmten Szenarien überprüfen:

  • Können weitere Anwendungen und Funktionen des Geräts problemlos ausgeführt werden, wenn die App minimiert wurde?
  • Minimiert sich die App automatisch, wenn ein Anruf eingeht?
  • Werden SMS und andere Benachrichtigungen während der App-Nutzung angenommen und gespeichert?

Usability-Test

Wie bei der Web-Usability spielt auch bei der App-Usabiliy das Testen eine wichtige Rolle. Mit dem App-Usability-Testing prüft man, wie benutzerfreundlich die Bedienung der App ist. Ein automatisierter Test ist somit keine Option – schließlich können nur die Nutzer einschätzen, inwiefern sich eine Anwendung gut oder schlecht bedienen lässt. Auch die Verwendung eines Emulators oder Simulators ist in vielen Bereichen des Usability-Tests wenig sinnvoll: So lässt sich die App-Bedienung nur über die Anwendungsnutzung auf einem Mobilgerät bewerten; erst dadurch wird ersichtlich, wie sich Bedienvorgänge wie das Wischen, Scrollen und Betätigen von Buttons anfühlt und wie sich die Reaktionszeit solcher Befehle verhält. Weitere Aspekte, die beim Usability-Testing geprüft werden, sind folgende:

  • Ist die Bedienung der App größtenteils selbsterklärend? Werden bei komplizierteren Funktionen Erklärungen angeboten?
  • Sind die App-Inhalte so platziert, dass die Nutzer unkompliziert auf die wichtigsten Funktionen zugreifen können?
  • Folgen die Platzierung der App-Inhalte und das Layout der Benutzeroberfläche einem roten Faden, der sich durch die gesamte App zieht und intuitiv verständlich ist?
  • Sind die Buttons optimal positioniert und groß genug? Denken Sie daran, dass es auch Nutzer mit breiteren Fingern gibt.
  • Sind Textpassagen prägnant geschrieben und ist deren Formatierung gut leserlich und weder zu groß noch zu klein?

Das Usability-Testing soll Probleme bei der Bedienung der App und Versäumnisse in der benutzerfreundlichen Darstellung des Layouts aufdecken. Damit die Ergebnisse auch aussagekräftig sind, sollten Sie beim Usability-Test darauf achten, dass ihn genügend Probanden durchführen. Ferner ist es von Vorteil, wenn sich die Test-Nutzer (zumindest größtenteils) aus Personen Ihrer Zielgruppe zusammensetzen – so können die Bedienung und die Struktur des Layouts direkt zielgruppengerecht optimiert werden. Durch die hieraus resultierenden Verbesserungen kann man den Usern das bestmögliche Nutzungserlebnis bieten.

Compatibility-Test

Die Kompatibilität einer App sollte hinsichtlich der Hardware und Software von mobilen Geräten überprüft werden. Was die Hardware betrifft, muss man beispielsweise die Darstellung der Anwendung auf verschiedenen Displays testen. Da es unterschiedliche Bildschirmgrößen und -auflösungen gibt, kann es relativ schnell zu Darstellungs- und Anpassungsfehlern kommen – insbesondere, wenn nicht mehrere Layouts der Applikation für verschiedene Bildschirmformate erstellt wurden. Neben dem Displayformat variieren vor allem CPU und RAM von Gerät zu Gerät. Bedenken Sie hierbei, dass ältere mobile Endgeräte keine Seltenheit sind. Wenn Ihre App nicht nur für aktuelle Modelle ausgelegt ist, sondern auch auf älteren Smartphones und Tablets akzeptabel läuft, vergrößern Sie damit automatisch die Reichweite Ihrer App.

Hinsichtlich der Geräte-Software wird die reibungslose App-Wiedergabe mit unterschiedlichen Betriebssystemversionen kontrolliert – insbesondere bei einer Android-App ist ein Test der Anwendung auf diversen Versionen des Android-Betriebssystems wichtig, da auf dieser Plattform deutlich mehr verschiedenen Versionen verbreitet und genutzt werden als bei Apples iOS.

Via Compatibility-Testing lässt sich nachprüfen, ab welcher Hardware- und Software-Ausstattung die ersten Probleme mit der flüssigen Wiedergabe der App auftreten. Wenn die Anforderungen an die Gerätekomponenten sehr hoch sind, sollten Sie über eine Reduktion bestimmter Systemvoraussetzungen nachdenken, da sich ansonsten Ihre Zielgruppe merklich verkleinert.

Performance-Test

Hier prüft man, wie viele Systemressourcen die App bei intensiver Nutzung verbraucht. Läuft die Anwendung in Dauernutzung auch noch flüssig oder kommt es zu Aussetzern? Weiterhin prüft man, ob der Akku nicht übermäßig belastet wird oder ob das Gerät nach einer gewissen Nutzungszeit überhitzt. Wie beim Kompatibilitätstest wird auch die Leistungsfähigkeit der Applikation unter bestimmten Bedingungen kontrolliert – z. B. ob sich die Wiedergabe der Anwendung ändert, wenn auf der Festplatte des Geräts kaum noch Speicherplatz verfügbar oder der Akku fast leer ist. Das Performance-Testing soll aufdecken, inwieweit sich bestimmte Situationen negativ auf das Verhalten der App auswirken.

Wenn man gezielt eine oder mehrere Komponenten unter eine hohe Auslastung setzt, spricht man von einem Lasttest (englisch: Load Testing) bzw. Stresstest. Ein Beispiel hierfür ist der Server-Stresstest, bei dem das App-Verhalten bei hohen Zugriffstahlen auf den Server der Applikation geprüft wird. Bei einer Anwendung, deren Funktionen eine Internetverbindung benötigt, soll ein Netzwerk-Lasttest herausfinden, wie sich eine schwache Internetverbindung auf die App-Funktionalität auswirkt. Stresstests sollen zeigen, wieviel Belastung gewisse Komponenten aushalten, bevor sie in ihrer Funktionstüchtigkeit eingeschränkt sind.

Mobile-App-Testing-Tools

Die oben genannten Tests müssen nicht allesamt manuell durchgeführt werden. Diverse Testing-Tools erleichtern in vielen Bereichen des App-Testings die Arbeit erheblich. Da sich unser Mehrteiler über die App-Entwicklung mit Native Mobile Apps für iOS und Android auseinandersetzt, eignen sich die nachstehend vorgestellten App-Testing-Tools durchweg für diese Plattformen.

Appium

Bei Appium handelt es sich um ein plattformübergreifendes Open-Source-Programm zur Testautomation, das kostenlos zum Download bereit steht. Mit dem Tool lassen sich nicht nur native Android- und iOS-Apps testen – es unterstützt für diese beiden Plattformen auch die Testautomatisierung von Hybrid-Apps und Web-Apps.

Bei Appium verwendet man ein und dieselbe Programmierschnittstelle für sowohl iOS als auch Android – so kann man geschriebenen Code ganz einfach wiederverwenden. Die hierüber erstellten Tests können auf physischen Geräten, Emulatoren und Simulatoren durchgeführt werden. Appium ist eine sehr hilfreiche Software für die Durchführung automatisierter App-Tests; das Programm setzt aber auch ein entsprechendes Know-how voraus.

Calabash

Ein weiteres Programm für die Testautomatisierung ist Calabash, das ebenfalls gratis erhältlich ist. Im Gegensatz zu Appium kann es aber auch von Usern ohne Programmierkenntnisse genutzt werden – dafür ist der Funktionsumfang wesentlich kleiner: Calabash bietet sich vor allem für App-Funktionstests an, die Sie sowohl auf physischen Geräten als auch auf einem Simulator durchführen können. Das Testing-Framework wurde von der Software-Firma Xamarin entwickelt, die mit der Xamarin Test Cloud eine noch weitaus professionellere, aber auch kostenpflichtige App-Testing-Plattform anbietet.

TestFairy

Auf der Website von TestFairy können Sie Ihre App hochladen und Personen für den App-Test einladen. Diese können die Anwendung daraufhin downloaden und nutzen – mit TestFairy lässt sich sozusagen das Crowdtesting selbst organisieren. Das Tool verfügt über eine Fehler-Reporting-Funktion und kann eine Videoaufnahme der App-Testnutzung erstellen. TestFairy gibt es als kostenlose Version und in einer gebührenpflichtigen Enterprise-Variante.

Ubertesters

Ubertesters ist eine Plattform, die Ihnen beim Beta-Testing Ihrer App hilft. Sie haben die gesamte Kontrolle über die Tests und erhalten ausführliche Reporte. Auf der Plattform können Sie problemlos im Team zusammenarbeiten, Programmfehler mit diversen Tools relativ einfach aufspüren, verschiedene Testversionen einer App erstellen und prüfen sowie Crowdtests durchführen (beispielsweise in Form von Functional- und Usability-Tests). Ubertesters wird in verschiedenen Paketen mit jeweils unterschiedlich großem Funktionsumfang angeboten – die Variante mit den wenigsten Features ist kostenlos.

Aufgedeckte Fehler der App beheben

Wenn ein Emulator Fehler aufdeckt, sollten Sie diese noch einmal mit dem entsprechenden physischen Gerät überprüfen, bevor Sie sich mit der Fehlerbehebung beschäftigen. Nicht alle Probleme, die bei der Emulation einer App festgestellt werden, treten auch bei der realen Nutzung der Applikation auf. Sollten während der App-Nutzung auf dem mobilen Endgerät immer noch Ungereimtheiten auftreten, ist es an der Zeit zu handeln. Doch woran erkennt man, was der Auslöser einer Fehlfunktion ist? Eine exakte Fehlerdiagnose liefert das Testen von Apps nicht. Einige App-Testing-Tools können hier zwar weiterhelfen, jedoch müssen Sie die Probleme und Aussetzer der App häufig selbst analysieren. In der Regel fußen diese entweder auf einer fehlerhaften Programmierung oder darauf, dass bestimmte Gerätekomponenten nicht hundertprozentig kompatibel mit der Anwendung sind.

Wenn Sie den Grund für eine fehlerhafte Funktion der Anwendung schließlich gefunden haben, müssen Sie einschätzen, wie wichtig die Behebung des Problems ist; und inwiefern dies überhaupt im Rahmen des Möglichen liegt, ohne dass die Funktionalität der Anwendung darunter leidet. Generelle Programmfehler darf die App in Ihrer finalen Version selbstverständlich nicht mehr aufweisen – alle fundamentalen Features (wie die Navigation oder die Abbildung der Anwendungsinhalte) müssen zu jeder Zeit funktionsfähig sein.

Schwieriger wird die Entscheidung für oder gegen eine Fehlerbehebung, wenn die Ursache nicht auf eine mangelhafte Programmierung der App, sondern auf ein Problem mit bestimmter Soft- oder Hardware zurückzuführen ist. Das betrifft meist überholte Betriebssysteme oder alte bzw. leistungsschwache Mobilgerätkomponenten, die die Ausführung einer oder mehrerer App-Funktionen verlangsamen oder ganz vereiteln. In so einem Fall sollten Sie am Ende des App-Testings die Ergebnisse genau analysieren: Welches Hard- oder Software-Element könnte dafür verantwortlich sein, dass die Funktion nicht regulär ausgeführt wird? Hier hilft oft nur das Trial-and-Error-Prinzip.

Wie hoch dürfen die App-Ansprüche an die Hard- und Software sein?

Sicherlich vergrößern Sie die Reichweite Ihrer App, wenn Sie diese so gestalten, dass die Anwendung auch auf vielen älteren Geräten lauffähig ist. Die Anpassung einer App an eine größtmögliche Anzahl von Endgeräten hat aber selbstverständlich auch seine Grenzen. Rechenintensive Applikationen etwa, deren Funktion notwendigerweise einen stärkeren Prozessor und/oder viel Arbeitsspeicher benötigen, können manchmal nicht optimal für ältere Hardware aufbereitet werden. Ein weiteres Beispiel: Wenn eine Anwendung eine leistungsstarke Internetverbindung benötigt, sollte man die App nicht um jeden Preis an eine Nutzungssituation anzupassen, in der nur eine schwache Internetverbindung vorhanden ist.

Manche Applikationen brauchen schlichtweg gewisse technische Voraussetzungen. So benötigen manche Anwendungen eine bestimmte Bildschirmgröße, um ausgeführt zu werden. Ein anderes Beispiel ist die YouTube-App, die nur dann funktioniert, wenn man auf eine ausreichend schnelle Datenübertragungsrate zurückgreifen kann; und dennoch ist sie eine der meist heruntergeladenen Applikationen überhaupt. Anpassungen und Verkleinerungen des Funktionsumfangs sollten Sie zugunsten einer größeren App-Reichweite nur dann durchführen, wenn dadurch die App-Funktionalität nicht stärker als gewollt reduziert wird.

Fazit: App-Testing ist unverzichtbar für die Qualitätssicherung

Das ausgiebige Testen Ihrer Applikation bildet den letzten Schritt der App-Entwicklung. Sicherlich ist er mit viel Arbeit verbunden, jedoch lohnt sich diese in jeder Hinsicht: Das Mobile-App-Testing trägt im Idealfall dazu bei, dass so viele User wie möglich Ihre Anwendung optimal nutzen können. Achten Sie bei den Tests auf ein ausgewogenes Verhältnis zwischen der Nutzung von physischen Geräten und von Emulatoren und/oder Simulatoren.

Wenn Sie Ihre App gewissenhaft getestet und keine gravierenden Fehler oder Ungereimtheiten festgestellt bzw. diese bestmöglich behoben haben, ist es geschafft: Sie haben Ihre App-Idee erfolgreich umgesetzt und die Anwendung kann nun endlich im App-Store veröffentlicht werden. Allerdings warten auch nun noch einige Aufgaben auf Sie:

Einerseits sollten Sie einige der bereits durchgeführten Tests in regelmäßigen Abständen wiederholen. Eine ständige Kontrolle gewährleistet, dass die App auch in Zukunft reibungslos läuft und die User bestmöglich die Anwendung nutzen können – vor allem die Compatibility- und Performance-Tests der App sollten immer wieder durchgeführt werden.

Andererseits ist das Einstellen der Applikation in die App-Stores von Apple und Google auch mit einem gewissen Aufwand verbunden. Zuerst einmal müssen Sie sich für den Vertrieb Ihrer Anwendung in den Stores anmelden, womit wir unsere Artikelreihe über den Weg zur eigenen App fortführen: Den fünfte Teil des Mehrteilers haben wir in die Anmeldung in Apples App Store und die Registrierung beim Google Play Store untergliedert. Außerdem können Sie hier nach der Veröffentlichung Ihrer App auch noch das Ranking der Applikation im Google Play Store und im Apple App Store optimieren – die abschließenden Teile unserer Artikelreihe beinhalten alles Wichtige über den Umgang mit den App-Stores von Google und Apple.