ANDROID TESTING. Testautomation und Continuous Integration für Android. Wunderschöne UIs. Android-Fragmentierung. Unterwegs programmieren

Größe: px
Ab Seite anzeigen:

Download "ANDROID TESTING. Testautomation und Continuous Integration für Android. Wunderschöne UIs. Android-Fragmentierung. Unterwegs programmieren"

Transkript

1 Ausgabe 4/2011 Brandneu: Die neuen Features von Android Ice Cream Sandwich! Deutschland 9,80 Österreich 11,70 Schweiz sfr 17,50 Luxemburg 11,90 magazin ANDROID TESTING Testautomation und Continuous Integration für Android Strategien Werkzeuge Tipps Wunderschöne UIs Android und Drawable Ressourcen Android-Fragmentierung Die Vielfalt der Plattform als Chance Unterwegs programmieren Tools für das Coding in Bus und Bahn Warum scheitern mobile Projekte? Die Knackpunkte unter der Lupe

2 testen mit android TiTelThema Teststrategien und -werkzeuge für mobile Anwendungen in Android Tut er s oder tut er s nicht? Das Testen stellt im mobilen Umfeld eine ungleich größere Herausforderung dar als in anderen Bereichen der Softwareentwicklung. Sie entsteht durch die hohe Vielfalt der Geräte und die damit einhergehenden Variationen der Hard- und Softwarekonfi gurationen und -versionen. von arne Limburg Bei der Entwicklung einer Teststrategie für mobile Anwendungen muss auf diese Vielfalt der Geräte eingegangen werden, die gleichzeitig eine Vielfalt von Bildschirmauflösungen, Eingabemethoden (Touchscreen, Multi-Touch, Trackball, externe Tastatur usw.) und Konfigurationsmöglichkeiten mit sich bringt. Benötigt zum Beispiel eine Anwendung Positionsdaten, muss nicht nur überprüft werden, ob das Gerät überhaupt in der Lage ist, diese zu liefern, sondern auch, ob die gelieferten Positionsdaten für den entsprechenden Anwendungsfall präzise genug sind. Die Genauigkeit von Positionsdaten kann erheblich variieren, je nachdem ob sie von einem GPS-Empfänger kommen, aus der Information über die Mobilfunkzelle, in die das Gerät gerade eingeloggt ist, oder aus dem aktuellen IP-Bereich (z. B. über WLAN). Ähnliche Komplexitäten ergeben sich unter anderem bei der Verwendung von Kamera, Kompass- und/oder Lagesensor. Ein weiterer Punkt, der vor allem bei mobilen Anwendungen ins Gewicht fällt, ist die Vielfalt der Umwelteinflüsse. So müssen der aktuelle Standort (im Wald oder in Häuserschluchten funktioniert GPS schlechter als auf dem freien Feld), der Batteriestand, die Netzqualität und viele weitere Faktoren berücksichtigt werden. Auch das Nutzerverhalten stellt bei der mobilen Anwendung eine besondere Herausforderung dar. So kann es passieren, dass der Benutzer während einer Texteingabe auf die Idee kommt, das Handy vom Hoch- ins Querformat zu drehen und damit eine komplette Neuberechnung des Layouts anzustoßen. Weitere Herausforderungen stellen plötzlich eingehende Anrufe dar oder zum Beispiel die Betätigung des Lautstärkereglers oder des Zurück-Knopfes. Wahl der richtigen Teststrategie Die oben aufgeführten Probleme der mobilen Anwendungsentwicklung stellen auch eine besondere Herausforderung an das Testen solcher Anwendungen dar. Es wird niemals möglich sein, alle Kombinationen von Hard- und Software, Umwelteinflüssen und Benutzerverhalten zu testen. Das führt dazu, dass beim Testen Kompromisse eingegangen werden müssen. Es gibt mehrere Testmethoden, mit denen die verschiedenen Bereiche der oben genannten Felder getestet werden können. Diese Testmethoden haben dabei unterschiedliche Vorund Nachteile. Die Erstellung einer Teststrategie besteht darin, die Vor- und Nachteile der einzelnen Methoden gegeneinander abzuwägen und zu gewichten und somit jeder Testmethode den richtigen Platz und Umfang im Entwicklungs- und Testprozess zu geben. Diese Aus- Testkontexte android bietet drei Varianten, um in einem test das Context-objekt zu ersetzen: mockcontext: Keine methode ist implementiert, d. h. alle methoden werfen exceptions. er eignet sich, um von ihm abzuleiten, wenn man einen eigenen testcontext schreiben muss und nur einzelne methoden implementieren möchte. isolatedcontext: damit läuft ein test isoliert vom Gesamtsystem ab. datei- und datenbankoperationen erfolgen in einem separaten testbereich, wodurch dieser Context sehr gut geeignet ist, um diese zu testen. die meisten systemaufrufe liefern stub-antworten. einige aufrufe werfen exceptions. renamingdelegatingcontext: es delegiert alle systemaufrufe an einen echten Context. datei- und datenbankaufrufe erfolgen wie beim isolatedcontext in einem separaten Bereich android

3 Titelthema testen mit android Listing 1 wahl und Gewichtung ist ein wiederkehrender Prozess, in dem auf Basis der individuellen Anforderungen die jeweils richtige Teststrategie entwickelt wird. public class MyProviderTest extends ProviderTestCase2<MyProvider> { public static final String NAME = "test"; public MyProviderTest() { super(myprovider.class, MyProviderMetaData.AUTHORITY); public void testinsert() { //test ContentValues contentvalues = new ContentValues(); contentvalues.put(myprovidermetadata.name, NAME); MockContentResolver contentresolver = getmockcontentresolver(); Uri uri = contentresolver.insert(myprovider.content_uri, contentvalues); //verify String[] projection = new String[] {MyProviderMetaData.NAME; Cursor cursor = getprovider().query(uri, projection, null, null, null); cursor.movetofirst(); assertequals(name, cursor.getstring(0)); asserttrue(cursor.islast()); Listing 2 public class MyNetworkServiceTest extends ServiceTestCase<MyNetworkService> { public MyNetworkServiceTest() { super(mynetworkservice.class); public void testpostrequest() { MyNetworkService.MyNetworkServiceBinder servicebinder = (MyNetworkServiceBinder)bindService(new Intent(getContext(), MyNetworkService.class)); MockHttpClient mockhttpclient = new MockHttpClient(); getservice().sethttpclient(mockhttpclient); servicebinder.postrequest(); asserttrue(mockhttpclient.getrequest() instanceof HttpPost); Priorisierung und Automatisierung Um in den Tests die Vielfalt der Geräte und Konfigurationen annähernd abdecken zu können, gibt es ein paar Punkte, die unbedingt berücksichtigt werden sollten. Es ist nicht möglich, auf allen späteren Endgeräten zu testen. Das ist allein schon durch die Tatsache bedingt, dass bei der Schnelllebigkeit im Handymarkt viele der potenziellen Endgeräte zum Zeitpunkt der Anwendungsentwicklung noch gar nicht auf dem Markt sind. Aus dieser Tatsache sollten zwei Konsequenzen gezogen werden: 1. Man sollte so viele Tests wie möglich mit verschieden konfigurierten AVDs (Android Virtual Devices) ausführen. Das ist dank des mitgelieferten Android- Emulators recht einfach. 2. Man sollte beim Testen auf echten Geräten den Fokus auf eine Auswahl wichtiger Zielgeräte und auf Tests legen, die mit dem Emulator nicht oder nicht in ausreichendem Maße durchgeführt werden können, z. B. die Kommunikation über GPRS mit verschiedenen Telekommunikationsanbietern. Diese Anforderungen lassen sich nur durch ein hohes Maß an Testautomatisierung erfüllen. Das automatische Testen ist daher ein Kernbestandteil mobiler Teststrategien. Unit Tests Die am einfachsten zu automatisierende Testmethode ist das Unit Testing. Hierbei handelt es sich um das Testen kleinstmöglicher Einheiten, also in der Regel das Testen der korrekten Funktion einzelner Klassen und Methoden. Der große Vorteil von Unit Tests ist, dass sie aufgrund ihres geringen Umfangs eine kurze Ausführungsdauer haben und dadurch häufig ausgeführt werden können. Die größte Herausforderung beim Unit Testing ist die Entkopplung der zu testenden Klasse vom Gesamtsystem. Diese Herausforderung wird im mobilen Umfeld umso größer, da hier in der Regel die Abhängigkeit zu der Laufzeitumgebung viel höher ist als in anderen Bereichen der Softwareentwicklung. Um diese Entkopplung zu erreichen, werden alle Abhängigkeiten mit Mock-Objekten (engl. für Attrappe) gefüllt. Das Android-Testframework bringt bereits Mock-Objekte für die üblichen Abhängigkeiten von Android-Anwendungen wie MockApplication, MockContext, MockContentPro vider mit (Kasten: Testkontexte ). Neben den Mock-Objekten liefert Android eine komplette Integration in JUnit, allerdings nur für Version 3. Hier gibt es Oberklassen zum Testen der Android-Komponenten wie ApplicationTestCase, LoaderTestCase, ProviderTestCase2, ServiceTestCase, ActivityUnitTestCase und ActivityInstrumentationTest Case2. Die damit erstellten Testklassen werden zusammen mit der zu testenden Anwendung auf dem Gerät oder dem Emulator installiert und können dann über die Android Debug Bridge (ADB) direkt auf dem Gerät oder Emulator ausgeführt werden. Über adb-parameter kann auch gesteuert werden, welche Tests ausgeführt werden sollen. So ist neben der Ausführung aller Tests des Projekts auch die Beschränkung auf einzelne Tests oder Testgruppen möglich. Testgruppen können gebildet werden, indem die Tests mit einer annotiert werden. Auch die Definition eigener Annotations ist möglich. Um eine Trennung von Anwendung und Tests 46 android

4 testen mit android Titelthema zu erreichen, werden die Tests in ein separates Testprojekt ausgelagert. In Eclipse kann es direkt über New Android Test Project angelegt werden. Im darauf folgenden Wizard wird dann das zu testende Projekt angegeben. Wie bereits erwähnt, gibt es für die verschiedenen Android-Komponenten jeweils eine Testoberklasse, von denen die drei wichtigsten hier vorgestellt werden. Testen eines ContentProviders Zum Testen eines ContentProviders bietet das Android- Testframework die Klasse ProviderTestCase2. An der nachgestellten 2 lässt sich erkennen, dass es sich bereits um die zweite Version dieser Klasse handelt. Android hat das Testframework überarbeitet und einige Testoberklassen ersetzt. Die Klasse ProviderTestCase2 nimmt bei der Testerstellung einige Arbeit ab. So instanziiert sie automatisch den zu testenden ContentProvider und versieht ihn dabei mit einem IsolatedContext (Kasten: Testkontexte ). Dadurch kann es nicht passieren, dass der Unit Test aus Versehen den Rest des Testsystems beeinflusst. Datei- und vor allem Datenbankoperationen sind mit dem IsolatedContext aber möglich, was wichtig ist, weil das die Operationen sind, die bei einem ContentProvider in der Regel (je nach Implementierung) getestet werden müssen. Zugreifen kann man auf den ContentProvider über einen MockContentResolver, der auch von der Testklasse zur Verfügung gestellt wird und über getmockcontentresolver() verwendet werden kann. Die Verwendung dieses MockContentResolvers ist dem direkten Zugriff auf den ContentProvider vorzuziehen, da später der Zugriff der realen Anwendung auf den ContentProvider auch immer über einen ContentResolver erfolgen wird. Zu testen sind natürlich alle zur Verfügung stehenden Operationen des ContentProviders. Sie werden über die Menge der URIs definiert, die der ContentProvider akzeptiert. Das Verhalten des ContentProviders bei ungültigen URIs sollte auch getestet werden. Listing 1 zeigt exemplarisch das Testen der Insert-Operation eines ContentProviders. Testen eines Service Android-Services haben einen klar definierten Lebenszyklus [2]. Die Oberklasse ServiceTestCase sorgt dafür, dass er während des Tests automatisch durchlaufen wird. Dazu bietet die Oberklasse über die Methoden startservice( ) und bindservice( ) genau die Schnittstelle, mit der später im echten Anwendungscode auch der Service gestartet wird. Das Testen der Businesslogik eines Service ist häufig recht schwierig, weil Services in der Regel asynchron ablaufen. Über den von der Methode bindservice( ) zurückgegebenen ServiceBinder können zwar im Test Servicemethoden aufgerufen werden, wenn die aufgerufene Methode aber einen eigenen Thread startet (was bei lang laufenden Operationen zu empfehlen ist), ist es nicht leicht, im Test festzustellen, dass die Ausführung der Servicemethode beendet ist, sodass sich dann auch schwer feststellen lässt, ob sie das getan hat, was man erwartet hat. Listing 2 zeigt den Test eines NetworkServices, der beim Aufruf der Methode postrequest( ) einen Thread startet und asynchron einen HTTP Request absetzt. Beim Testen dieses asynchronen Aufrufs unterstützt uns die Klasse CountDownLatch aus dem java.util.concurrent Package. Über deren Methode countdown() kann der aufgerufene Thread einen Zähler herunterzählen und der Aufrufer kann über die Methode await() warten, bis der Zähler auf 0 ist. Um in unserem Beispiel testen zu können, ob der Aufruf von postrequest( ) tatsächlich zu einem HTTP Request führt, können wir den Http Client, der von dem NetworkService verwendet wird, durch ein Mock-Objekt (Listing 3) ersetzen. Dieser MockHttpClient verwendet den eben genannten Count DownLatch, der beim erwarteten Aufruf der Methode execute( ) heruntergezählt wird. Der Testcode kann nun über getrequest() auf den übergebenen Request zugreifen und überprüfen, ob der NetworkService tatsächlich einen korrekten Request abgesetzt hat. Erfolgt der Aufruf der Methode getrequest() vor dem Aufruf der Methode execute( ), so wartet der MockHttpClient zunächst durch den Aufruf von CountDownLatch. await( ), bis der Aufruf von execute( ) erfolgt ist und den Zähler vermindert hat. Um sicherzugehen, dass der Test nicht ewig wartet (weil der Service nie HttpClient. execute( ) aufruft), wird die Methode await( ) mit einem Timeout versehen. Testen einer Activity Das Testen einer Activity losgelöst vom Gesamtsystem (also als Unit Test) gestaltet sich besonders schwierig, weil Activities automatisch eine Vielzahl von Verbin- Listing 3 public class MockHttpClient implements HttpClient { private HttpUriRequest request; private CountDownLatch latch = new CountDownLatch(1); public HttpUriRequest getrequest() { try { latch.await(10, TimeUnit.SECONDS); catch (InterruptedException e1) { //nothing to do here return request; public HttpResponse execute(httpurirequest request) { this.request = request; latch.countdown(); BasicStatusLine line = new BasicStatusLine(HttpVersion.HTTP_1_1, 200, "OK"); return new BasicHttpResponse(line); //other mock methods omitted android

5 Titelthema testen mit android Listing 4 dungen mit der Anwendungsinfrastruktur haben. Die Oberklasse ActivityUnitTestCase kapselt die zu testende Activity dennoch recht gut vom Gesamtsystem ab. Das hat aber zur Folge, dass einige Methodenaufrufe der Activity zu Exceptions führen und daher nicht in einem Unit Test getestet werden können. Hierbei handelt es sich vor allem um Methoden zur Interaktion zwischen verschiedenen Activities wie startactivity FromChild( ) oder creatependingresult( ). Einige Dinge lassen sich dennoch isoliert testen, zum Beispiel der einfache Aufruf einer Folge-Activity. Der Trick ist public class MyListActivityUnitTest extends ActivityUnitTestCase<MyListActivity> { private static final long ENTRY_ID = 42; public MyListActivityUnitTest() { super(mylistactivity.class); public void testonlistitemclick() { //test Intent listintent = new Intent(getInstrumentation().getTargetContext(), MyListActivity.class); startactivity(listintent, null, null); getactivity().onlistitemclick(null, null, 0, ENTRY_ID); //verify Intent startedintent = getstartedactivityintent(); assertnotnull(startedintent); assertequals(mydetailactivity.class.getname(), startedintent.getcomponent().getclassname()); long entryid = (Long)startedIntent.getSerializableExtra("ENTRY_ID"); assertequals(entry_id, entryid); Testen von Seiteneffekten wie Telefonanruf oder niedriger Batteriestand Detaillierten Zugriff auf den Emulator bietet die DDMS-Perspektive von Eclipse. Hier hat man die Möglichkeit, den Eingang eines Telefonanrufs oder einer SMS am Emulator zu simulieren. Des Weiteren lässt sich die Netzgeschwindigkeit steuern und die GPS-Koordinaten des Emulators setzen. Wem die Möglichkeiten der Perspektive nicht ausreichen, der kann sich über telnet localhost <Port> mit dem Emulator verbinden (den Port des Emulators findet man in der Titelzeile des Emulatorfensters). Hier stehen weitere Möglichkeiten der Steuerung des Emulators zur Verfügung, zum Beispiel das Setzen des Batteriestandes. Die Eingabe von help listet alle Befehle auf. Theoretisch könnten über die Telnet- Schnittstelle des Emulators diese Seiteneffekte zwar auch automatisiert getestet werden, in der Praxis ist das aber recht kompliziert. Es empfiehlt sich daher, diese Seiteneffekte manuell auszulösen, während gerade ein automatisierter Funktionstest läuft, um so die Reaktion der Anwendung auf die Seiteneffekte zu testen. hier, dass die Folge-Activity nicht tatsächlich gestartet wird (dann wäre es kein Unit Test mehr), man aber später überprüfen kann, ob der Aufruf zum Start (nämlich startactivity( ) oder startactivityforresult( )) tatsächlich erfolgt ist. Das ist über die Methoden getstartedactivityintent() und getstartedactivityrequest() möglich, die von der Oberklasse ActivityUnitTest zur Verfügung gestellt werden. Listing 4 zeigt den Unit Test einer ListActivity, die beim Klick auf einen Listeneintrag in eine Detailansicht springt und dabei eine ID in dem Intent übergeben soll. Nach dem Aufruf der Methode der Activity wird dann über getstartedactivity Intent() überprüft, ob die korrekten Werte im Intent tatsächlich enthalten sind. Funktionale Tests Neben den reinen Unit Tests ist es mit dem Android- Testframework auch möglich, komplette Funktionstests zu erzeugen, die das gesamte UI-Verhalten (vom Klick bis zum Ergebnis der ausgelösten Aktion) oder sogar ganze Klickpfade und damit ganze Use Cases testen. Betrachtet man das obige Beispiel von der ListActivity, wäre es beispielsweise wünschenswert, dass nicht nur die korrekte Funktion der Activity getestet werden könnte, sondern der gesamte Flow vom tatsächlichen Klick auf das UI-Element (in diesem Fall eine Liste) bis zum Start der Detailansicht. Das ist tatsächlich möglich, wenn man als Oberklasse den ActivityInstrumentationTestCase2 verwendet. Die Kommunikation mit der Android-Infrastruktur ermöglicht dabei die Klasse Instrumentation, die innerhalb des Tests über getinstrumentation() zur Verfügung steht. Mit ihr ist es möglich, direkt mit dem Emulator oder dem Device in Interaktion zu treten und zum Beispiel Activities zu starten oder Tastatureingaben zu simulieren. Wer Texteingaben (oder andere Attribute) lieber auf dem View direkt setzen will, indem er ihn über findviewbyid( ) holt und den entsprechenden Wert dann über set setzt, muss das im UI Thread von Android tun. Hierzu gibt es zwei Möglichkeiten: Entweder man verwendet die Methode runonuithread( ) der Activity oder man versieht den gesamten Test mit der Listing 5 zeigt einen Test, der die aus dem Test aus Listing 3 bekannte Listenansicht testet und hierzu die Instrumentation verwendet. Damit wird nicht nur die korrekte Funktion der Activity getestet, sondern tatsächlich über die Simulation eines Fingerdrucks auf die Liste, der über die Klasse TouchUtils erzeugt werden kann, der gesamte Programmfluss bis zum Start der DetailActivity. Über die Instrumentation ist es möglich, einen Monitor für die DetailActivity zu erzeugen und damit auf deren Aufruf zu warten. Eine andere Möglichkeit wäre es, ein sleep( ) in den Test einzubauen. Das beinhaltet aber das Risiko, dass die Anwendung zu langsam reagiert und der Test deshalb fehlschlägt. Um dieses Risiko zu minimieren, gibt es die Hiermit kann für einen Test angegeben werden, dass der Test bei einem einmaligen Fehlschlag wiederholt werden soll, 48 android

6 testen mit android Titelthema und erst wenn der Test mehrmals nicht erfolgreich ausgeführt werden kann, gilt er als fehlgeschlagen. Wie oft er wiederholt werden soll, kann dabei durch die Angabe eines Wertes für das tolerance-attribut in der Annotation festgelegt werden. In Listing 5 enthält die Detail Activity einen TextView. Hier wird zum Schluss über die Klasse ViewAsserts getestet, ob dieser sichtbar ist. Danach wird anhand des Inhalts überprüft, ob die DetailActivity mit den korrekten Daten aufgerufen wurde. Eine weitere Vereinfachung von funktionalen Tests bietet die Zusatzbibliothek Robotium [3] (siehe auch Artikel auf Seite 58). Mit ihr ist es möglich, funktionale Tests als Blackboxtests durchzuführen, das heißt dass es nicht nötig ist zu wissen, aus welchen Views eine Activity aufgebaut ist. Mit der Klasse Solo kann direkt der Klick auf eine Koordinate auf dem Bildschirm simuliert werden oder sogar der Klick auf einen bestimmten Text, der auf dem aktuellen Bildschirm zu sehen ist. Listing 6 zeigt ein Beispiel für einen Robotium-Test der bereits bekannten ListActivity. Continuous Integration Betrachtet man den Funktionstest unserer ListActivity, stellt sich die Frage, wozu überhaupt Unit Tests benötigt werden, wenn sich doch die ganze Anwendung über komplette Funktionstests testen lässt. Eine erste schnelle Antwort kommt sofort in den Sinn, wenn man die Activity Unit Test vs. Activity-Funktionstest In einem Unit Test wird nur die Funktionalität der Activity selbst getestet, das heißt es wird getestet, was passiert, wenn die entsprechende Methode (in Listing 4 die Methode onlistitemclick( )) aufgerufen wird. Auch wird die nachfolgende Activity nicht tatsächlich gestartet, sondern der Aufruf von startactivity( ) wird nur aufgenommen und es kann später über getstartedactivityintent() überprüft werden, ob er tatsächlich stattgefunden hat. Durch Auslesen der Extra-Informationen aus dem Intent wird überprüft, ob die Activity den Intent auch mit den richtigen Parametern erzeugt hat. Im Gegensatz dazu wird bei dem Funktionstest tatsächlich der Klick auf das UI-Element simuliert. Dann wird überprüft, ob tatsächlich die DetailActivity gestartet wird. Ob die Activity mit den richtigen Parametern gestartet wurde, wird hier getestet, indem die UI- Elemente der DetailActivity untersucht werden. beiden Tests im Vergleich betrachtet: Der Funktionstest ist deutlich komplexer als der Unit Test und ein Unit Test daher offensichtlich deutlich leichter zu schreiben. Eine weitergehende Antwort ist im Entwicklungsprozess begründet. Das Ziel von Unit Tests ist es zum einen, durch Testen kleiner Einheiten einen möglichen Fehler schnell eingrenzen zu können, und zum anderen durch häufige Testausführung einen Fehler im Laufe des Entwicklungsprozesses früh zu erkennen. Diese frühe Erkennung von Fehlern gewährleistet der Einsatz eines Anzeige

7 Titelthema testen mit android Listing 5 public class MyListActivityUiTest extends ActivityInstrumentationTestCase2<MyListActivity> { private MyListActivity activity; private ListView view; public MyListActivityUiTest() { super("de.mypackage", MyListActivity.class); public void setup() { Intent intent = new Intent(Intent.ACTION_MAIN); intent.setflags(intent.flag_activity_new_task); intent.setclassname(getinstrumentation().gettargetcontext(), MainActivity.class.getName()); getinstrumentation().startactivitysync(intent); activity = getactivity(); view = (ListView)activity.findViewById(android.R.id.list); public void testclickonlist() { //test String classname = MyDetailActivity.class.getName(); ActivityMonitor monitor = getinstrumentation().addmonitor(classname, null, false); TouchUtils.clickView(this, view.getchildat(0)); MyDetailActivity detailactivity = (MyDetailActivity)monitor.waitForActivity(); //verify assertnotnull(detailactivity); TextView idview = (TextView) detailactivity.findviewbyid(r.id.txt_id); ViewAsserts.assertOnScreen(detailActivity.getWindow().getDecorView(), idview); assertequals("42", idview.gettext().tostring()); Listing 6 public class MyListActivityRobotiumTest extends ActivityInstrumentationTestCase2<MyListActivity> { public MyListActivityRobotiumTest() { super("de.mypackage", MyListActivity.class); public void testclick() { Solo solo = new Solo(getInstrumentation(), getactivity()); solo.assertcurrentactivity("expected MyListActivity", MyListActivity.class); solo.clickonscreen(100, 200); solo.assertcurrentactivity("expected MyDetailActivity", MyDetailActivity.class); asserttrue(solo.searchtext("42")); Continuous-Integration-Servers. Für die Server Hudson beziehungsweise Jenkins gibt es ein Android-Plug-in, das dafür sorgt, dass vor der Ausführung der Tests ein Android-Emulator gestartet wird, der nach dem Beenden der Tests automatisch wieder gestoppt wird. Soll ein anderer Continuous-Integration-Server verwendet werden, muss das Starten und Stoppen des Emulators in das Build Script integriert werden. Durch die Verwendung von Continuous Integration ist es möglich, alle Unit Tests regelmäßig sofort nach dem Einchecken der Codeänderung auszuführen und den Entwickler dadurch umgehend automatisiert per zu informieren, wenn seine Codeänderung einen Programmfehler beinhaltet oder einen unerwünschten Seiteneffekt auf andere Codeteile hat. Es empfiehlt sich dabei, den Continuous-Integration-Server so zu konfigurieren, dass alle Unit Tests unmittelbar nach Codeänderungen (also nach dem Commit eines Entwicklers) durchgeführt werden. Die Funktionstests, deren Ausführung deutlich länger dauert, sollten hingegen maximal einmal täglich ausgeführt werden. Auf diese Art und Weise kann bereits während des Entwicklungsprozesses sichergestellt werden, dass die bereits umgesetzten Teile der Anwendung fehlerfrei funktionieren. Dadurch wird gewährleistet, dass nach Umsetzung aller Features bereits eine qualitativ hochwertige Software an die Testabteilung übergeben werden kann. Abnahme- und Regressionstests Alle bisher vorgestellten Testmethoden basieren auf JUnit und damit auf dem Schreiben von Testcode in Java. Diese Tatsache führt dazu, dass die obigen Tests in der Regel nicht dazu geeignet sind, von Testabteilungen erstellt zu werden, weil deren Java-Kenntnisse meistens begrenzt oder gar nicht vorhanden sind. Um den Anforderungen des Testens durch Testabteilungen gerecht zu werden, liefert Android ein Tool, das die Definition der Tests über eine Skriptsprache (in diesem Fall das Python-Derivat Jython) ermöglicht. Das Tool heißt Monkeyrunner. Mit ihm kann man Android- Emulatoren oder Devices ohne die Verwendung von Java-Code steuern. Möglich wird das durch die Klassen MonkeyRunner, MonkeyDevice und MonkeyImage. Mit der Klasse MonkeyRunner ist es über die Methode waitforconnection möglich, sich mit einem Device oder Emulator zu verbinden. Als Parameter kann neben einem Timeout die Seriennummer des Geräts angegeben werden, wie sie von der Android Debug Bridge (ADB) vergeben wird. Wenn nur ein Gerät an den Computer angeschlossen beziehungsweise eine Emulator-Instanz gestartet ist, kann die Seriennummer auch weggelassen werden. Ansonsten lassen sich die Seriennummern der angeschlossenen Geräte und gestarteten Emulatoren über den Kommandozeilenbefehl adb devices ausgeben. Die Methode waitforconnection liefert bei erfolgreicher Verbindung zu einem Gerät oder Emulator ein Objekt vom Typ MonkeyDevice zurück. Mit ihm ist es möglich, zunächst die zu testende Anwendung zu instal- 50 android

8 testen mit android Titelthema lieren, zu starten und dann skriptgesteuert Tests durchzuführen. Ein Beispiel-Script kann unter [4] eingesehen werden. Um das Ergebnis mit dem erwarteten Ergebnis vergleichen zu können, bietet die Klasse MonkeyDevice über die Methode takesnapshot die Möglichkeit, ein Bildschirmfoto zu erstellen. Der Rückgabewert ist vom Typ MonkeyImage, das dann mit früher erstellten Bildschirmfotos über die Methode sameas( ) verglichen werden kann. Leider ist es momentan noch nicht möglich, auch Bilder von der Festplatte zu laden. Das soll aber in einem späteren Release des MonkeyRunners hinzugefügt werden. Da es sich bei dem Bildschirmfoto tatsächlich um ein Foto des kompletten Bildschirms handelt, muss man bei dem Vergleich berücksichtigen, dass auch Uhrzeit und Batteriestatus enthalten sind. Ein 1:1-Vergleich mit einem vorher erstellten Screenshot wird also in der Regel fehlschlagen. Um das zu umgehen, gibt es zwei Möglichkeiten. Entweder man gibt beim Bildvergleich über sameas( ) als zweiten Parameter einen Prozentwert an, zu dem sich die Bilder ähneln müssen, oder man wählt über die Methode getsubimage( ) den Bildbereich aus, den man tatsächlich vergleichen möchte. Über diesen Bildvergleich kann überprüft werden, ob der Test bestanden wurde oder nicht. Legt man nun für jede zu testende Android-Version und für verschiedene Hardwarekonfigurationen ein AVD (Android Virtual Device) an und startet für jedes AVD eine Emulator-Instanz, lassen sich die so erstellten Abnahmetests hervorragend (auch automatisiert) parallel auf den verschiedenen Emulator-Instanzen ausführen und es kann ein breites Spektrum an Hard- und Softwarekonfigurationen und -version parallel getestet werden, indem man jeweils dem Jython Script die Seriennummer der zu testenden Emulator-Instanz als Parameter übergibt. Auf die gleiche Weise können die Tests auch auf echten Geräten durchgeführt werden. Außerdem lassen sich diese Abnahmetests für spätere Versionen der Software auch hervorragend als Regressionstests verwenden. Stresstests Ziel eines Stresstests ist es, dass sich die Anwendung stabil verhält, egal was die Endbenutzer mit ihren Geräten anstellen. Man würde sein Handy sicher keinem Affen in die Finger geben, aber in Anspielung auf dessen mögliches Vorgehen in einer solchen Situation liefert Android neben dem MonkeyRunner ein weiteres Affentool : das Tool Monkey [5]. Mit diesem ist es möglich, zufälliges Benutzerverhalten zu simulieren, also eine (pseudo-)zufällige Folge von Touch-Events, Gesten, Tastatureingaben, Handytastendruck (Zurück-Taste, Home-Taste, Lautstärkeregelung etc.) und weitere Ereignisse wie die Bildschirmrotation usw. anzustoßen. Dabei sind die Anzahl der Events und der Abstand zwischen den einzelnen Events konfigurierbar. Mit dem Monkey lassen sich auf diese Weise Tests Mit dem Tool Monkey ist es möglich, zufälliges Benutzerverhalten zu simulieren, also eine (pseudo-) zufällige Folge z. B. von Gesten. durchführen, bei denen man feststellen kann, wie stabil sich die Anwendung unter Stress verhält. Ein weiteres Feature dieses Tools ist es, dass man es über die Einschränkung des Tests auf bestimmte Packages auch so konfigurieren kann, dass nur Teile der Anwendung getestet werden. Das ist vor allem dann sinnvoll, wenn von Endkunden immer wieder ein bestimmter Fehler gemeldet wird, der aber nicht reproduziert werden kann. Er kann dann eventuell mit Monkey nachgestellt werden. Für diese Situation ist es auch sinnvoll, dass man den seed, also den Startwert der Zufallszahlenfolge, angeben und so die Reihenfolge der zufällig erzeugten Events reproduzieren kann. Fazit Testen von mobilen Geräten ist eine Herausforderung, aber mit den hier vorgestellten Methoden und Tools ist es möglich, eine individuell auf Anwendungen und Unternehmen zugeschnittene Teststrategie zu entwickeln, mit deren Hilfe über Unit Tests, funktionale Entwicklertests, Abnahme- und Regressionstests und Stresstests die korrekte und zuverlässige Funktion der Anwendung weitestgehend sichergestellt werden kann. Arne Limburg ist Softwarearchitekt bei der open knowledge GmbH in Oldenburg. Er verfügt über langjährige Erfahrung als Entwickler, Architekt und Consultant im Java-Umfeld und ist auch seit der ersten Stunde im Android-Umfeld aktiv. Links & Literatur [1] [2] [3] [4] [5] android

Arne Limburg open knowledge GmbH. Mobile Testing mit Android

Arne Limburg open knowledge GmbH. Mobile Testing mit Android Arne Limburg open knowledge GmbH Mobile Testing mit Android Meine Person Arne Limburg Enterprise Architeckt open knowledge GmbH @ArneLimburg @_openknowledge www.openknowledge.de Herausforderungen Vielfalt

Mehr

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch

Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen. Alexander Schunk Marcel Teuber Henry Trobisch Softwaretests in Visual Studio 2010 Ultimate Vergleich mit Java-Testwerkzeugen Alexander Schunk Henry Trobisch Inhalt 1. Vergleich der Unit-Tests... 2 2. Vergleich der Codeabdeckungs-Tests... 2 3. Vergleich

Mehr

Lizenzen auschecken. Was ist zu tun?

Lizenzen auschecken. Was ist zu tun? Use case Lizenzen auschecken Ihr Unternehmen hat eine Netzwerk-Commuterlizenz mit beispielsweise 4 Lizenzen. Am Freitag wollen Sie Ihren Laptop mit nach Hause nehmen, um dort am Wochenende weiter zu arbeiten.

Mehr

Java: Vererbung. Teil 3: super() www.informatikzentrale.de

Java: Vererbung. Teil 3: super() www.informatikzentrale.de Java: Vererbung Teil 3: super() Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und IMMER zuerst den Konstruktor der Elternklasse auf! Konstruktor und Vererbung Kindklasse ruft SELBSTSTÄNDIG und

Mehr

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank

mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank mysql - Clients MySQL - Abfragen eine serverbasierenden Datenbank In den ersten beiden Abschnitten (rbanken1.pdf und rbanken2.pdf) haben wir uns mit am Ende mysql beschäftigt und kennengelernt, wie man

Mehr

Professionelle Seminare im Bereich MS-Office

Professionelle Seminare im Bereich MS-Office Der Name BEREICH.VERSCHIEBEN() ist etwas unglücklich gewählt. Man kann mit der Funktion Bereiche zwar verschieben, man kann Bereiche aber auch verkleinern oder vergrößern. Besser wäre es, die Funktion

Mehr

Artikel Schnittstelle über CSV

Artikel Schnittstelle über CSV Artikel Schnittstelle über CSV Sie können Artikeldaten aus Ihrem EDV System in das NCFOX importieren, dies geschieht durch eine CSV Schnittstelle. Dies hat mehrere Vorteile: Zeitersparnis, die Karteikarte

Mehr

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen

BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen BüroWARE Exchange Synchronisation Grundlagen und Voraussetzungen Stand: 13.12.2010 Die BüroWARE SoftENGINE ist ab Version 5.42.000-060 in der Lage mit einem Microsoft Exchange Server ab Version 2007 SP1

Mehr

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7

Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Einrichtung des Cisco VPN Clients (IPSEC) in Windows7 Diese Verbindung muss einmalig eingerichtet werden und wird benötigt, um den Zugriff vom privaten Rechner oder der Workstation im Home Office über

Mehr

Zwischenablage (Bilder, Texte,...)

Zwischenablage (Bilder, Texte,...) Zwischenablage was ist das? Informationen über. die Bedeutung der Windows-Zwischenablage Kopieren und Einfügen mit der Zwischenablage Vermeiden von Fehlern beim Arbeiten mit der Zwischenablage Bei diesen

Mehr

Objektorientierte Programmierung

Objektorientierte Programmierung Objektorientierte Programmierung 1 Geschichte Dahl, Nygaard: Simula 67 (Algol 60 + Objektorientierung) Kay et al.: Smalltalk (erste rein-objektorientierte Sprache) Object Pascal, Objective C, C++ (wiederum

Mehr

Die integrierte Zeiterfassung. Das innovative Softwarekonzept

Die integrierte Zeiterfassung. Das innovative Softwarekonzept Die integrierte Zeiterfassung Das innovative Softwarekonzept projekt - ein komplexes Programm mit Zusatzmodulen, die einzeln oder in ihrer individuellen Zusammenstellung, die gesamte Abwicklung in Ihrem

Mehr

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein

2. Die eigenen Benutzerdaten aus orgamax müssen bekannt sein Einrichtung von orgamax-mobil Um die App orgamax Heute auf Ihrem Smartphone nutzen zu können, ist eine einmalige Einrichtung auf Ihrem orgamax Rechner (bei Einzelplatz) oder Ihrem orgamax Server (Mehrplatz)

Mehr

Backup der Progress Datenbank

Backup der Progress Datenbank Backup der Progress Datenbank Zeitplandienst (AT): Beachten Sie bitte: Die folgenden Aktionen können nur direkt am Server, vollzogen werden. Mit Progress 9.1 gibt es keine Möglichkeit über die Clients,

Mehr

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung

Projektmanagement. Vorlesung von Thomas Patzelt 10. Vorlesung Projektmanagement Vorlesung von Thomas Patzelt 10. Vorlesung 1 Test...(4) Oberflächentests testen die Benutzerschnittstelle des Systems, nicht nur auf Fehlerfreiheit sondern z.b. auch auf Konformität mit

Mehr

4.1 Download der App über den Play Store

4.1 Download der App über den Play Store 4 4.1 Download der App über den Play Store Die App TopSec Phone kann über den Play Store auf dem Smartphone oder über das Internet an Ihrem Computer heruntergeladen werden. Um Inhalte laden zu können,

Mehr

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware

Datenübernahme von HKO 5.9 zur. Advolux Kanzleisoftware Datenübernahme von HKO 5.9 zur Advolux Kanzleisoftware Die Datenübernahme (DÜ) von HKO 5.9 zu Advolux Kanzleisoftware ist aufgrund der von Update zu Update veränderten Datenbank (DB)-Strukturen in HKO

Mehr

OP-LOG www.op-log.de

OP-LOG www.op-log.de Verwendung von Microsoft SQL Server, Seite 1/18 OP-LOG www.op-log.de Anleitung: Verwendung von Microsoft SQL Server 2005 Stand Mai 2010 1 Ich-lese-keine-Anleitungen 'Verwendung von Microsoft SQL Server

Mehr

Dokumentation IBIS Monitor

Dokumentation IBIS Monitor Dokumentation IBIS Monitor Seite 1 von 16 11.01.06 Inhaltsverzeichnis 1. Allgemein 2. Installation und Programm starten 3. Programmkonfiguration 4. Aufzeichnung 4.1 Aufzeichnung mitschneiden 4.1.1 Inhalt

Mehr

GeoPilot (Android) die App

GeoPilot (Android) die App GeoPilot (Android) die App Mit der neuen Rademacher GeoPilot App machen Sie Ihr Android Smartphone zum Sensor und steuern beliebige Szenen über den HomePilot. Die App beinhaltet zwei Funktionen, zum einen

Mehr

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt

Er musste so eingerichtet werden, dass das D-Laufwerk auf das E-Laufwerk gespiegelt Inhaltsverzeichnis Aufgabe... 1 Allgemein... 1 Active Directory... 1 Konfiguration... 2 Benutzer erstellen... 3 Eigenes Verzeichnis erstellen... 3 Benutzerkonto erstellen... 3 Profil einrichten... 5 Berechtigungen

Mehr

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1):

Version smarter mobile(zu finden unter Einstellungen, Siehe Bild) : Gerät/Typ(z.B. Panasonic Toughbook, Ipad Air, Handy Samsung S1): Supportanfrage ESN Bitte füllen Sie zu jeder Supportanfrage diese Vorlage aus. Sie helfen uns damit, Ihre Anfrage kompetent und schnell beantworten zu können. Verwenden Sie für jedes einzelne Thema jeweils

Mehr

Datensicherung. Beschreibung der Datensicherung

Datensicherung. Beschreibung der Datensicherung Datensicherung Mit dem Datensicherungsprogramm können Sie Ihre persönlichen Daten problemlos Sichern. Es ist möglich eine komplette Datensicherung durchzuführen, aber auch nur die neuen und geänderten

Mehr

Terminabgleich mit Mobiltelefonen

Terminabgleich mit Mobiltelefonen Terminabgleich mit Mobiltelefonen Sie können Termine- und Aufgaben aus unserem Kalender, sowie die Adressdaten aus dem Hauptprogramm mit Ihrem Mobiltelefon abgleichen. MS Outlook dient dabei als Schnittstelle

Mehr

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern

Anti-Botnet-Beratungszentrum. Windows XP in fünf Schritten absichern Windows XP in fünf Schritten absichern Inhalt: 1. Firewall Aktivierung 2. Anwendung eines Anti-Virus Scanner 3. Aktivierung der automatischen Updates 4. Erstellen eines Backup 5. Setzen von sicheren Passwörtern

Mehr

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE

2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2. ERSTELLEN VON APPS MIT DEM ADT PLUGIN VON ECLIPSE 2.1 Die Einrichtung der Benutzeroberfläche Das Einrichten einer Android-Eclipse-Entwicklungsumgebung zur Android-Entwicklung ist grundsätzlich nicht

Mehr

FastViewer Remote Edition 2.X

FastViewer Remote Edition 2.X FastViewer Remote Edition 2.X Mit der FastViewer Remote Edition ist es möglich beliebige Rechner, unabhängig vom Standort, fernzusteuern. Die Eingabe einer Sessionnummer entfällt. Dazu muß auf dem zu steuernden

Mehr

ICS-Addin. Benutzerhandbuch. Version: 1.0

ICS-Addin. Benutzerhandbuch. Version: 1.0 ICS-Addin Benutzerhandbuch Version: 1.0 SecureGUARD GmbH, 2011 Inhalt: 1. Was ist ICS?... 3 2. ICS-Addin im Dashboard... 3 3. ICS einrichten... 4 4. ICS deaktivieren... 5 5. Adapter-Details am Server speichern...

Mehr

Objektorientierte Programmierung für Anfänger am Beispiel PHP

Objektorientierte Programmierung für Anfänger am Beispiel PHP Objektorientierte Programmierung für Anfänger am Beispiel PHP Johannes Mittendorfer http://jmittendorfer.hostingsociety.com 19. August 2012 Abstract Dieses Dokument soll die Vorteile der objektorientierten

Mehr

Anleitung zum ebanking KOMPLETT - Computercheck So aktualisieren Sie Ihr Microsoft-Betriebssystem

Anleitung zum ebanking KOMPLETT - Computercheck So aktualisieren Sie Ihr Microsoft-Betriebssystem Anleitung zum ebanking KOMPLETT - Computercheck So aktualisieren Sie Ihr Microsoft-Betriebssystem Information Ob in Internet-Auktionshäusern, sozialen Netzwerken oder Online-Geschäften, das Stöbern im

Mehr

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser

Seite 1 von 14. Cookie-Einstellungen verschiedener Browser Seite 1 von 14 Cookie-Einstellungen verschiedener Browser Cookie-Einstellungen verschiedener Browser, 7. Dezember 2015 Inhaltsverzeichnis 1.Aktivierung von Cookies... 3 2.Cookies... 3 2.1.Wofu r braucht

Mehr

Virtual Channel installieren

Virtual Channel installieren Virtual Channel installieren Inhaltsverzeichnis 1. Voreinstellungen... 3 2. Virtual Channel herunterladen... 3 3. Virtual Channel konfigurieren... 4 4. Ausdruck... 6 5. Tipps und Tricks... 7 Sorba EDV

Mehr

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter "Wartung".

Die Backup-Voreinstellungen finden Sie in M-System Server unter dem Reiter Wartung. TechNote Backup Protrixx Software GmbH, 2013-09-23 Im Folgenden finden Sie die von uns empfohlenen Einstellungen des automatischen Backups in M-System. Der Zugriff auf die Backup-Einstellungen ist nur

Mehr

Installationsanleitungen

Installationsanleitungen Installationsanleitungen INPA SGBD-Entwicklungsumgebung (EDIABAS) INPA für Entwickler Bevor Sie EDIABAS / INPA installieren können, müssen Sie sich für den Ordner sgref auf smuc0900 freischalten lassen.

Mehr

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen. Millennium SMS Service Schnellübersicht Seite 1 von 6 1. Tägliche Arbeiten mit der SMS Bestätigung Dieser Ablauf soll eine Hilfe für die tägliche Arbeit mit der SMS Bestätigung im Millennium darstellen.

Mehr

Anleitung zum Computercheck Windows Firewall aktivieren oder eine kostenlose Firewall installieren

Anleitung zum Computercheck Windows Firewall aktivieren oder eine kostenlose Firewall installieren Anleitung zum Computercheck Windows Firewall aktivieren oder eine kostenlose Firewall installieren Ziel der Anleitung Sie möchten ein modernes Firewallprogramm für Ihren Computer installieren, um gegen

Mehr

Installation von Malwarebytes

Installation von Malwarebytes Installation von Malwarebytes Ziel der Anleitung Diese Anleitung zeigt Ihnen, wie Sie das Programm Malwarebytes auf Ihrem Computer installieren können. Das kostenlose Programm Malwarebytes findet und entfernt

Mehr

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung

Anleitung zur Daten zur Datensicherung und Datenrücksicherung. Datensicherung Anleitung zur Daten zur Datensicherung und Datenrücksicherung Datensicherung Es gibt drei Möglichkeiten der Datensicherung. Zwei davon sind in Ges eingebaut, die dritte ist eine manuelle Möglichkeit. In

Mehr

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank

Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Advoware mit VPN Zugriff lokaler Server / PC auf externe Datenbank Die Entscheidung Advoware über VPN direkt auf dem lokalen PC / Netzwerk mit Zugriff auf die Datenbank des zentralen Servers am anderen

Mehr

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen

Handbuch. timecard Connector 1.0.0. Version: 1.0.0. REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Handbuch timecard Connector 1.0.0 Version: 1.0.0 REINER SCT Kartengeräte GmbH & Co. KG Goethestr. 14 78120 Furtwangen Furtwangen, den 18.11.2011 Inhaltsverzeichnis Seite 1 Einführung... 3 2 Systemvoraussetzungen...

Mehr

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten.

Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten. ewon - Technical Note Nr. 001 Version 1.3 Umgang mit der Software ebuddy Ändern von IP Adresse, Firmware und erstellen von Backups von ewon Geräten. 19.10.2006/SI Übersicht: 1. Thema 2. Benötigte Komponenten

Mehr

Programmierkurs Java

Programmierkurs Java Programmierkurs Java Dr. Dietrich Boles Aufgaben zu UE16-Rekursion (Stand 09.12.2011) Aufgabe 1: Implementieren Sie in Java ein Programm, das solange einzelne Zeichen vom Terminal einliest, bis ein #-Zeichen

Mehr

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten

Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten Version 1.0 Wordpress: Blogbeiträge richtig löschen, archivieren und weiterleiten In unserer Anleitung zeigen wir Dir, wie Du Blogbeiträge

Mehr

Durchführung der Datenübernahme nach Reisekosten 2011

Durchführung der Datenübernahme nach Reisekosten 2011 Durchführung der Datenübernahme nach Reisekosten 2011 1. Starten Sie QuickSteuer Deluxe 2010. Rufen Sie anschließend über den Menüpunkt /Extras/Reisekosten Rechner den QuickSteuer Deluxe 2010 Reisekosten-Rechner,

Mehr

Installationsleitfaden kabelsafe backup professional unter MS Windows

Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsleitfaden kabelsafe backup professional unter MS Windows Installationsanleitung und Schnelleinstieg kabelsafe backup professional (kabelnet-obm) unter MS Windows Als PDF herunterladen Diese

Mehr

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang

Outlook. sysplus.ch outlook - mail-grundlagen Seite 1/8. Mail-Grundlagen. Posteingang sysplus.ch outlook - mail-grundlagen Seite 1/8 Outlook Mail-Grundlagen Posteingang Es gibt verschiedene Möglichkeiten, um zum Posteingang zu gelangen. Man kann links im Outlook-Fenster auf die Schaltfläche

Mehr

How to install freesshd

How to install freesshd Enthaltene Funktionen - Installation - Benutzer anlegen - Verbindung testen How to install freesshd 1. Installation von freesshd - Falls noch nicht vorhanden, können Sie das Freeware Programm unter folgendem

Mehr

Anleitungen zum KMG-Email-Konto

Anleitungen zum KMG-Email-Konto In dieser Anleitung erfahren Sie, wie Sie mit einem Browser (Firefox etc.) auf das Email-Konto zugreifen; Ihr Kennwort ändern; eine Weiterleitung zu einer privaten Email-Adresse einrichten; Ihr Email-Konto

Mehr

Mediator 9 - Lernprogramm

Mediator 9 - Lernprogramm Mediator 9 - Lernprogramm Ein Lernprogramm mit Mediator erstellen Mediator 9 bietet viele Möglichkeiten, CBT-Module (Computer Based Training = Computerunterstütztes Lernen) zu erstellen, z. B. Drag & Drop

Mehr

Überprüfung der digital signierten E-Rechnung

Überprüfung der digital signierten E-Rechnung Überprüfung der digital signierten E-Rechnung Aufgrund des BMF-Erlasses vom Juli 2005 (BMF-010219/0183-IV/9/2005) gelten ab 01.01.2006 nur noch jene elektronischen Rechnungen als vorsteuerabzugspflichtig,

Mehr

Arbeiten mit UMLed und Delphi

Arbeiten mit UMLed und Delphi Arbeiten mit UMLed und Delphi Diese Anleitung soll zeigen, wie man Klassen mit dem UML ( Unified Modeling Language ) Editor UMLed erstellt, in Delphi exportiert und dort so einbindet, dass diese (bis auf

Mehr

Datensicherung EBV für Mehrplatz Installationen

Datensicherung EBV für Mehrplatz Installationen Datensicherung EBV für Mehrplatz Installationen Bitte beachten Sie EBV 3.4 bietet Ihnen die Möglichkeit eine regelmäßige Sicherung der Daten vorzunehmen. Wir möchten Sie darauf hinweisen, dass Sie für

Mehr

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage

.htaccess HOWTO. zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage .htaccess HOWTO zum Schutz von Dateien und Verzeichnissen mittels Passwortabfrage Stand: 21.06.2015 Inhaltsverzeichnis 1. Vorwort...3 2. Verwendung...4 2.1 Allgemeines...4 2.1 Das Aussehen der.htaccess

Mehr

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung

The ToolChain.com. Grafisches Debugging mit der QtCreator Entwicklungsumgebung The ToolChain Grafisches Debugging mit der QtCreator Entwicklungsumgebung geschrieben von Gregor Rebel 2014-2015 Hintergrund Neben dem textuellen Debuggen in der Textkonsole bieten moderene Entwicklungsumgebungen

Mehr

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung

Projektmanagement. Vorlesung von Thomas Patzelt 9. Vorlesung Projektmanagement Vorlesung von Thomas Patzelt 9. Vorlesung 1 Pläne Kein Plan überlebt die erste Feindberührung - Feldmarschall Helmuth von Moltke Prognosen sind schwierig, besonders wenn sie die Zukunft

Mehr

Firmware-Update, CAPI Update

Firmware-Update, CAPI Update Produkt: Modul: Kurzbeschreibung: Teldat Bintec Router RT-Serie Firmware-Update, CAPI Update Diese Anleitung hilft Ihnen, das nachfolgend geschilderte Problem zu beheben. Dazu sollten Sie über gute bis

Mehr

Suche schlecht beschriftete Bilder mit Eigenen Abfragen

Suche schlecht beschriftete Bilder mit Eigenen Abfragen Suche schlecht beschriftete Bilder mit Eigenen Abfragen Ist die Bilderdatenbank über einen längeren Zeitraum in Benutzung, so steigt die Wahrscheinlichkeit für schlecht beschriftete Bilder 1. Insbesondere

Mehr

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014

Konfiguration VLAN's. Konfiguration VLAN's IACBOX.COM. Version 2.0.1 Deutsch 01.07.2014 Konfiguration VLAN's Version 2.0.1 Deutsch 01.07.2014 In diesem HOWTO wird die Konfiguration der VLAN's für das Surf-LAN der IAC-BOX beschrieben. Konfiguration VLAN's TITEL Inhaltsverzeichnis Inhaltsverzeichnis...

Mehr

2. Hintergrundverarbeitung in Android: Services und Notifications

2. Hintergrundverarbeitung in Android: Services und Notifications 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht 2. Hintergrundverarbeitung in Android: Services und Notifications Übersicht: In Mobis 1: Threads; hier genauerer Blick auf Services

Mehr

etermin Einbindung in Outlook

etermin Einbindung in Outlook etermin Einbindung in Outlook 1. Einführung Über etermin gebuchte Termine können bei Bedarf auch mit externen Terminkalendern, wie zum Beispiel Outlook, ical oder Google synchronisiert werden. Dieses Dokument

Mehr

Anleitung Captain Logfex 2013

Anleitung Captain Logfex 2013 Anleitung Captain Logfex 2013 Inhalt: 1. Installationshinweise 2. Erste Schritte 3. Client-Installation 4. Arbeiten mit Logfex 5. Gruppenrichtlinien-Einstellungen für die Windows-Firewall 1. Installationshinweis:

Mehr

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter

Web-Kürzel. Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter Krishna Tateneni Yves Arrouye Deutsche Übersetzung: Stefan Winter 2 Inhaltsverzeichnis 1 Web-Kürzel 4 1.1 Einführung.......................................... 4 1.2 Web-Kürzel.........................................

Mehr

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11

Kurzanleitung. MEYTON Aufbau einer Internetverbindung. 1 Von 11 Kurzanleitung MEYTON Aufbau einer Internetverbindung 1 Von 11 Inhaltsverzeichnis Installation eines Internetzugangs...3 Ist mein Router bereits im MEYTON Netzwerk?...3 Start des YAST Programms...4 Auswahl

Mehr

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen

Menü Macro. WinIBW2-Macros unter Windows7? Macros aufnehmen Menü Macro WinIBW2-Macros unter Windows7?... 1 Macros aufnehmen... 1 Menübefehle und Schaltflächen in Macros verwenden... 4 Macros bearbeiten... 4 Macros löschen... 5 Macro-Dateien... 5 Macros importieren...

Mehr

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten

Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten Virtueller Seminarordner Anleitung für die Dozentinnen und Dozenten In dem Virtuellen Seminarordner werden für die Teilnehmerinnen und Teilnehmer des Seminars alle für das Seminar wichtigen Informationen,

Mehr

System-Update Addendum

System-Update Addendum System-Update Addendum System-Update ist ein Druckserverdienst, der die Systemsoftware auf dem Druckserver mit den neuesten Sicherheitsupdates von Microsoft aktuell hält. Er wird auf dem Druckserver im

Mehr

Die YouTube-Anmeldung

Die YouTube-Anmeldung Die YouTube-Anmeldung Schön, dass Sie sich anmelden wollen, um den Ortsverein Kirchrode-Bemerode-Wülferode zu abonnieren, d.h. regelmäßig Bescheid zu bekommen, wenn der Ortsverein etwas Neues an Videos

Mehr

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren

Lineargleichungssysteme: Additions-/ Subtraktionsverfahren Lineargleichungssysteme: Additions-/ Subtraktionsverfahren W. Kippels 22. Februar 2014 Inhaltsverzeichnis 1 Einleitung 2 2 Lineargleichungssysteme zweiten Grades 2 3 Lineargleichungssysteme höheren als

Mehr

Speicher in der Cloud

Speicher in der Cloud Speicher in der Cloud Kostenbremse, Sicherheitsrisiko oder Basis für die unternehmensweite Kollaboration? von Cornelius Höchel-Winter 2013 ComConsult Research GmbH, Aachen 3 SYNCHRONISATION TEUFELSZEUG

Mehr

Leitfaden zur Installation von Bitbyters.WinShutdown

Leitfaden zur Installation von Bitbyters.WinShutdown Leitfaden zur Installation von Bitbyters.WinShutdown für Windows 32 Bit 98/NT/2000/XP/2003/2008 Der BitByters.WinShutDown ist ein Tool mit dem Sie Programme beim Herunterfahren Ihres Systems ausführen

Mehr

TeamSpeak3 Einrichten

TeamSpeak3 Einrichten TeamSpeak3 Einrichten Version 1.0.3 24. April 2012 StreamPlus UG Es ist untersagt dieses Dokument ohne eine schriftliche Genehmigung der StreamPlus UG vollständig oder auszugsweise zu reproduzieren, vervielfältigen

Mehr

EasyWk DAS Schwimmwettkampfprogramm

EasyWk DAS Schwimmwettkampfprogramm EasyWk DAS Schwimmwettkampfprogramm Arbeiten mit OMEGA ARES 21 EasyWk - DAS Schwimmwettkampfprogramm 1 Einleitung Diese Präsentation dient zur Darstellung der Zusammenarbeit zwischen EasyWk und der Zeitmessanlage

Mehr

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 -

Matrix42. Use Case - Sicherung und Rücksicherung persönlicher Einstellungen über Personal Backup. Version 1.0.0. 23. September 2015 - 1 - Matrix42 Use Case - Sicherung und Rücksicherung persönlicher Version 1.0.0 23. September 2015-1 - Inhaltsverzeichnis 1 Einleitung 3 1.1 Beschreibung 3 1.2 Vorbereitung 3 1.3 Ziel 3 2 Use Case 4-2 - 1 Einleitung

Mehr

! " # $ " % & Nicki Wruck worldwidewruck 08.02.2006

!  # $  % & Nicki Wruck worldwidewruck 08.02.2006 !"# $ " %& Nicki Wruck worldwidewruck 08.02.2006 Wer kennt die Problematik nicht? Die.pst Datei von Outlook wird unübersichtlich groß, das Starten und Beenden dauert immer länger. Hat man dann noch die.pst

Mehr

Anleitung über den Umgang mit Schildern

Anleitung über den Umgang mit Schildern Anleitung über den Umgang mit Schildern -Vorwort -Wo bekommt man Schilder? -Wo und wie speichert man die Schilder? -Wie füge ich die Schilder in meinen Track ein? -Welche Bauteile kann man noch für Schilder

Mehr

XPubInDesign CS2-PlugIn

XPubInDesign CS2-PlugIn XPubInDesign CS2-PlugIn Das professionelle Werkzeug zur Automatisierung von Dokumenterstellung und Druckvorbereitung in InDesign CS2 1. Philosophie Mit Hinblick auf die vielen Möglichkeiten, die im Adobe

Mehr

Guide DynDNS und Portforwarding

Guide DynDNS und Portforwarding Guide DynDNS und Portforwarding Allgemein Um Geräte im lokalen Netzwerk von überall aus über das Internet erreichen zu können, kommt man um die Themen Dynamik DNS (kurz DynDNS) und Portweiterleitung(auch

Mehr

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b

AGROPLUS Buchhaltung. Daten-Server und Sicherheitskopie. Version vom 21.10.2013b AGROPLUS Buchhaltung Daten-Server und Sicherheitskopie Version vom 21.10.2013b 3a) Der Daten-Server Modus und der Tresor Der Daten-Server ist eine Betriebsart welche dem Nutzer eine grosse Flexibilität

Mehr

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009

Komponententest. Testen von Software Systemen. Übung 02 SS 2009 Version: 1.0 09.06.2009 Testen von Software Systemen Übung 02 SS 2009 Version: 1.0 09.06.2009 Komponententest Kunde: Dr. Reinhold Plösch Dr. Johannes Sametinger Kundenreferenz: 259.019 Team 19 Mitarbeiter: Christian Märzinger

Mehr

Installation von NetBeans inkl. Glassfish Anwendungs-Server

Installation von NetBeans inkl. Glassfish Anwendungs-Server Installation von NetBeans inkl. Glassfish Anwendungs-Server Diese Anleitung führt Sie Schritt für Schritt durch die Einrichtung der Entwicklungsumgebung NetBeans, angefangen beim Download der benötigten

Mehr

GS-Programme 2015 Allgemeines Zentralupdate

GS-Programme 2015 Allgemeines Zentralupdate GS-Programme 2015 Allgemeines Zentralupdate Impressum Business Software GmbH Primoschgasse 3 9020 Klagenfurt Copyright 2014 Business Software GmbH Die Inhalte und Themen in dieser Unterlage wurden mit

Mehr

Anleitung zur Inbetriebnahme einer FHZ2000 mit der homeputer CL-Software

Anleitung zur Inbetriebnahme einer FHZ2000 mit der homeputer CL-Software Anleitung zur Inbetriebnahme einer FHZ2000 mit der homeputer CL-Software Bei Verwendung eines PCs als Zentrale muss bei der Konfiguration der FHZ2000 die IP-Adresse des PCs angeben werden. Das ist in der

Mehr

Anbieter auf dem Foto-Marktplatz werden

Anbieter auf dem Foto-Marktplatz werden Wie kann ich meine Fotos auf dem Marktplatz anbieten? Anbieter auf dem Foto-Marktplatz werden Um Ihre Bilder auf dem Marktplatz präsentieren zu können benötigen Sie persönliche Zugangsdaten, damit Sie

Mehr

Step by Step Webserver unter Windows Server 2003. von Christian Bartl

Step by Step Webserver unter Windows Server 2003. von Christian Bartl Step by Step Webserver unter Windows Server 2003 von Webserver unter Windows Server 2003 Um den WWW-Server-Dienst IIS (Internet Information Service) zu nutzen muss dieser zunächst installiert werden (wird

Mehr

SharePoint Demonstration

SharePoint Demonstration SharePoint Demonstration Was zeigt die Demonstration? Diese Demonstration soll den modernen Zugriff auf Daten und Informationen veranschaulichen und zeigen welche Vorteile sich dadurch in der Zusammenarbeit

Mehr

Online Newsletter III

Online Newsletter III Online Newsletter III Hallo zusammen! Aus aktuellem Anlass wurde ein neuer Newsletter fällig. Die wichtigste Neuerung betrifft unseren Webshop mit dem Namen ehbshop! Am Montag 17.10.11 wurde die Testphase

Mehr

Installationsleitfaden kabelsafe backup home unter MS Windows

Installationsleitfaden kabelsafe backup home unter MS Windows Installationsleitfaden kabelsafe backup home unter MS Windows Installationsanleitung und Schnelleinstieg kabelsafe backup home (kabelnet-acb) unter MS Windows Als PDF herunterladen Diese Anleitung können

Mehr

Übung: Verwendung von Java-Threads

Übung: Verwendung von Java-Threads Übung: Verwendung von Java-Threads Ziel der Übung: Diese Übung dient dazu, den Umgang mit Threads in der Programmiersprache Java kennenzulernen. Ein einfaches Java-Programm, das Threads nutzt, soll zum

Mehr

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole

Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der IBOConsole Lavid-F.I.S. Ablaufbeschreibung für das neu Aufsetzen von Firebird und Interbase Datenbanken mit der Lavid Software GmbH Dauner Straße 12, D-41236 Mönchengladbach http://www.lavid-software.net Support:

Mehr

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster

Stellen Sie bitte den Cursor in die Spalte B2 und rufen die Funktion Sverweis auf. Es öffnet sich folgendes Dialogfenster Es gibt in Excel unter anderem die so genannten Suchfunktionen / Matrixfunktionen Damit können Sie Werte innerhalb eines bestimmten Bereichs suchen. Als Beispiel möchte ich die Funktion Sverweis zeigen.

Mehr

Anleitung zum Computercheck So aktualisieren Sie Ihr Microsoft- Betriebssystem

Anleitung zum Computercheck So aktualisieren Sie Ihr Microsoft- Betriebssystem Anleitung zum Computercheck So aktualisieren Sie Ihr Microsoft- Betriebssystem Information Ob in Internet-Auktionshäusern, sozialen Netzwerken oder Online-Geschäften, das Stöbern im Internet zählt für

Mehr

Lizenzierung von System Center 2012

Lizenzierung von System Center 2012 Lizenzierung von System Center 2012 Mit den Microsoft System Center-Produkten lassen sich Endgeräte wie Server, Clients und mobile Geräte mit unterschiedlichen Betriebssystemen verwalten. Verwalten im

Mehr

Adminer: Installationsanleitung

Adminer: Installationsanleitung Adminer: Installationsanleitung phpmyadmin ist bei uns mit dem Kundenmenüpasswort geschützt. Wer einer dritten Person Zugriff auf die Datenbankverwaltung, aber nicht auf das Kundenmenü geben möchte, kann

Mehr

10.3.1.10 Übung - Konfigurieren einer Windows-XP-Firewall

10.3.1.10 Übung - Konfigurieren einer Windows-XP-Firewall 5.0 10.3.1.10 Übung - Konfigurieren einer Windows-XP-Firewall Drucken Sie diese Übung aus und führen Sie sie durch. In dieser Übung werden Sie erfahren, wie man die Windows XP-Firewall konfiguriert und

Mehr

Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss

Anleitung: Einrichtung der Fritz!Box 7272 mit VoIP Telefonanschluss Schließen Sie die AVM Fritz!Box, wie auf dem der Fritz!Box beiliegenden Schaubild beschrieben, an. Starten Sie den Internet Explorer oder einen beliebigen Browser (Mozilla Firefox, Google Chrome, Safari)

Mehr

SharePoint Workspace 2010 Installieren & Konfigurieren

SharePoint Workspace 2010 Installieren & Konfigurieren [Geben Sie Text ein] SharePoint Workspace 2010 Installieren & Konfigurieren SharePoint Workspace 2010 Installieren & Konfigurieren Inhalt SharePoint Workspace 2010 Installieren... 2 SharePoint Workspace

Mehr

Task: Nmap Skripte ausführen

Task: Nmap Skripte ausführen Task: Nmap Skripte ausführen Inhalt Einfache Netzwerkscans mit NSE Ausführen des Scans Anpassung der Parameter Einleitung Copyright 2009-2015 Greenbone Networks GmbH Herkunft und aktuellste Version dieses

Mehr