<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Beiträge von Lukas Glaser - Mobile USTP MKL</title>
	<atom:link href="https://mobile.fhstp.ac.at/author/dm171522/feed/" rel="self" type="application/rss+xml" />
	<link>https://mobile.fhstp.ac.at/author/dm171522/</link>
	<description>Die &#34;Mobile Forschungsgruppe&#34; der USTP, sie  sammelt hier alles zu den Themen Design, UX und Entwicklung mobiler Applikationen</description>
	<lastBuildDate>Sat, 22 Feb 2020 11:35:57 +0000</lastBuildDate>
	<language>en-US</language>
	<sy:updatePeriod>
	hourly	</sy:updatePeriod>
	<sy:updateFrequency>
	1	</sy:updateFrequency>
	

<image>
	<url>https://mobile.fhstp.ac.at/wp-content/uploads/2025/03/icon-120x120.webp</url>
	<title>Beiträge von Lukas Glaser - Mobile USTP MKL</title>
	<link>https://mobile.fhstp.ac.at/author/dm171522/</link>
	<width>32</width>
	<height>32</height>
</image> 
	<item>
		<title>Diplomarbeit: Atemschutzmanagement</title>
		<link>https://mobile.fhstp.ac.at/allgemein/konzeption-umsetzung-und-evaluierung-einer-android-app-zur-atemschutzueberwachung-im-feuerwehrwesen/</link>
		
		<dc:creator><![CDATA[Lukas Glaser]]></dc:creator>
		<pubDate>Fri, 21 Feb 2020 14:43:43 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Native Development]]></category>
		<category><![CDATA[Projekte]]></category>
		<category><![CDATA[Publikationen]]></category>
		<category><![CDATA[Wissenschaftliche Arbeit]]></category>
		<category><![CDATA[ASM]]></category>
		<category><![CDATA[Atemschutz]]></category>
		<category><![CDATA[Atemschutzüberwachung]]></category>
		<category><![CDATA[Feuerwehr]]></category>
		<category><![CDATA[Mobile Atemschutzüberwachung]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8399</guid>

					<description><![CDATA[<p>Konzeption, Umsetzung und Evaluierung einer Android-App zur Atemschutzüberwachung im Feuerwehrwesen Allgemein Im Zeitalter des digitalen Wandels und des zunehmenden Vorstoßes mobiler Technologien ergeben sich laufend neue Anwendungsfelder bei denen ganze Geschäftsprozesse von mobilen Applikationen abgewickelt werden. Auch im Einsatzwesen, wo ein rascher Datenaustausch von besonders hoher Wichtigkeit ist, können mobile Dienste zu einer entscheidenden Wertsteigerung <a class="read-more" href="https://mobile.fhstp.ac.at/allgemein/konzeption-umsetzung-und-evaluierung-einer-android-app-zur-atemschutzueberwachung-im-feuerwehrwesen/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/konzeption-umsetzung-und-evaluierung-einer-android-app-zur-atemschutzueberwachung-im-feuerwehrwesen/">Diplomarbeit: Atemschutzmanagement</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h3 class="wp-block-heading">Konzeption, Umsetzung und Evaluierung einer Android-App zur Atemschutzüberwachung im Feuerwehrwesen</h3>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">Allgemein</h1>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p><strong>Im Zeitalter des digitalen Wandels und des zunehmenden Vorstoßes mobiler Technologien ergeben sich laufend neue Anwendungsfelder bei denen ganze Geschäftsprozesse von mobilen Applikationen abgewickelt werden. Auch im Einsatzwesen, wo ein rascher Datenaustausch von besonders hoher Wichtigkeit ist, können mobile Dienste zu einer entscheidenden Wertsteigerung führen, indem Koordination und Kommunikation verbessert werden.</strong></p>



<p>Meine Diplomarbeit befasst sich mit der Fragestellung, <strong>inwieweit mobile Anwendungen im  Einsatzwesen, speziell im Anwendungsbereich von Feuerwehren, einen Nutzen bringen können. </strong>Dabei konzentriert sich die Forschung vorwiegend auf das Atemschutzwesen. </p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Die Bedeutung des Atemschutzes im Feuerwehrwesen</h2>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img fetchpriority="high" decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2020/01/WhatsApp-Image-2018-05-27-at-19.52.49-6-750x500.jpg" alt="" class="wp-image-8405" width="563" height="375"/><figcaption>Innenangriff beim Brand einer Scheune durch einen Atemschutztrupp (Quelle: <a href="http://www.ff-sandl.info/atemschutzuebung-in-stadlberg/" target="_blank" rel="noreferrer noopener" aria-label="FF-Sandl (öffnet in neuem Tab)">FF-Sandl</a>)</figcaption></figure></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p>Dem Atemschutzwesen wird in der Feuerwehr künftig eine immer wichtiger werdende Bedeutung beigemessen. Zudem wird der Einsatz von schwerem Atemschutzgerät auch immer unabdingbarer, da bei fast allen Brandeinsätzen hochgiftige Brandfolgeprodukte, wie Gase, Dämpfe oder Ruß entstehen. Ganz allgemein zählt das Atemschutzwesen zu den gefährlichsten Tätigkeiten während eines Einsatzes. Aus diesem Grund unterliegt der Einsatz von Atemschutzkräften auch besonders strengen Sicherheitsvorkehrungen. Dazu gehört unter anderem eine kontinuierliche Atemschutzüberwachung (kurz: ASÜ), die einen klareren Überblick sowie eine genaue Koordination der eingesetzten Kräfte und ihrer vorhandene Atemluft ermöglicht. Konkret versteht man darunter die zeitliche Überwachung der eingesetzten Kräfte während eines Atemschutzeinsatzes.</p>



<p>In den vergangenen Jahrzehnten hat sich in Österreich eine Vielzahl an unterschiedlichen Systemen hinsichtlich der ASÜ etabliert. So reicht heute die Produktpalette von der simplen Methode mittels Stift und Papier bis hin zu modernen Softwarelösungen.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<div class="wp-block-image"><figure class="aligncenter is-resized"><img decoding="async" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2020/01/5_0.jpg" alt="" class="wp-image-8413" width="300" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2020/01/5_0.jpg 500w, https://mobile.fhstp.ac.at/wp-content/uploads/2020/01/5_0-150x150.jpg 150w" sizes="(max-width: 500px) 100vw, 500px" /><figcaption>Analoge Atemschutzüberwachungstafel der Firma rescuetec (Quelle: <a href="https://www.rescue-tec.de/rescue-tec-Atemschutzueberwachungstafel-Giessen.html">rescue-tec</a>)</figcaption></figure></div>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<p style="text-align:left">Der klassische Vorgang der Atemschutzüberwachung findet in Österreich meist noch immer analog, also mit Stift und Papier, oder anhand einfacher elektronischer Hilfsmittel statt (siehe Abbildung oberhalb). Dabei werden zu Einsatzbeginn alle notwendigen Einsatzparameter wie die Flaschenfülldrücke oder die Einsatzzeiten handschriftlich erfasst. Häufig wird auch eine Stoppuhr gestellt, um jederzeit einen Überblick über die restliche Einsatzzeit zu haben. Diese Vorgehensweise ist meist mit sehr viel Schreibarbeit verbunden und daher nicht nur zeitraubend, sondern auch sehr fehleranfällig, vor allem bei der Überwachung mehrerer Trupps.  <br>Es gibt derzeit nur wenige elektronische Überwachungssysteme bei denen bestimmte Daten automatisch berechnet, aktualisiert und dementsprechend visualisiert werden.  <br>Nach dem bis zum jetzigen Zeitpunkt, zumindest im deutschsprachigem Raum, noch keine mobile Smartphone-App für die Atemschutzüberwachung existiert, hab ich mir das Ziel gesetzt, eine zu entwickeln, um  diese Lücke zu schließen.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h1 class="wp-block-heading">Methodik</h1>



<h2 class="wp-block-heading">Recherche</h2>



<p>Um vorerst einen genaueren Einblick über den aktuellen Stand der Technik zu erlangen, und gleichzeitig eine weitere Grundlage für den empirischen Teil dieser Diplomarbeit zu schaffen, wurde eine Recherche getätigt um Einsicht darüber zu erlangen, welche unterschiedlichen Geräte und Methoden für die ASÜ bereits existieren.<br>Wie schon erwähnt, gibt es eine Vielzahl an derartigen Systemen. Die Grundfunktionalität jedoch, ist bei allen Systemen die gleiche. </p>



<p>Ein ASÜ-System besteht somit aus folgender Grundfunktionalität</p>



<ul class="wp-block-list"><li><strong>Vor- und Nachname </strong>der eingesetzten Atemschutzträger müssen festgehalten werden können. </li><li>Die <strong>aktuelle Uhrzeit</strong> muss ablesbar sein. Bei den meisten Systemen ist für diesen Zweck eine kleine digitale Uhr integriert.</li><li><strong>Flaschendruck zu Einsatzbeginn: </strong>Zu Beginn des Einsatzes wird der niedrigste Flaschendruck der drei Atemschutzträger notiert. </li><li><strong>Messung der Einsatzzeit pro eingesetzten Trupp: </strong>Zu Einsatzbeginn wird begonnen, die Einsatzzeit zu stoppen. Auf diese Weise soll in Echtzeit ein grober Überblick darüber entstehen, wie viel Restzeit dem jeweiligen Trupp noch zur Verfügung steht.</li><li>Festhalten der<strong> Bezeichnung </strong>bzw.<strong> des Funkrufnamens</strong> (= eindeutige Bezeichnung für einen Trupp)<strong> </strong>des jeweiligen Trupps: Jeder eingesetzte Atemschutztrupp muss mit einem eindeutigem Namen versehen werden.</li></ul>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Anforderungsanalyse</h2>



<p>Die anhand der Recherche gewonnenen Erkenntnisse in Bezug auf die Grundfunktionalität waren mir im Vorfeld der technischen Implementierung noch nicht ausreichend, sodass ich mich entschied eine Anforderungsanalyse in der Form von Expertengesprächen durchzuführen.</p>



<p>Das Ziel dieser Experteninterviews war die Verfassung eines möglichst umfangreichen Anforderungsdokumentes als fundamentale Grundlage für die nachfolgende technische Umsetzung der mobilen Anwendung.<br>Konkret ergaben sich so eine Reihe funktionaler Anforderungen sowie unterschiedliche Bedarfe an die Usability.</p>



<div style="height:20px" aria-hidden="true" class="wp-block-spacer"></div>



<h2 class="wp-block-heading">Technische Implementation</h2>



<p>Im Anschluss wurde eine native Android-App konzipiert und technisch umgesetzt. Die wichtigsten Funktionen werden nachfolgend erläutert.</p>



<p>In der Listenansicht kann die Benutzerin/ der Benutzer die bereits angelegten Atemschutzträger samt allen gespeicherten Parametern. Das &#8220;Personen-Symbol&#8221; soll in einer künftigeren Version durch ein Profilbild ersetzt werden.</p>



<figure class="wp-block-image"><img decoding="async" width="2512" height="2517" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2020/02/Atemschutztraeger.png" alt="" class="wp-image-8458" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/Atemschutztraeger.png 2512w, https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/Atemschutztraeger-150x150.png 150w" sizes="(max-width: 2512px) 100vw, 2512px" /></figure>



<p>Am unteren Bildschirmrand befindet sich ein Plus-Symbol. Klickt man darauf, so gelangt man auf eine neue Ansicht, in der man schließlich ein neues Profil anlegen kann.</p>



<figure class="wp-block-image"><img decoding="async" width="2517" height="2512" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2020/02/NeuesProfilAnlegen_Validierung.png" alt="" class="wp-image-8459" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/NeuesProfilAnlegen_Validierung.png 2517w, https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/NeuesProfilAnlegen_Validierung-150x150.png 150w" sizes="(max-width: 2517px) 100vw, 2517px" /></figure>



<p>Natürlich kann man auch Trupps anlegen und diesem die Atemschutzträger  zuordnen, wie die nachstehenden beiden Abbildungen veranschaulichen.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="2512" height="2517" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2020/02/NeuenTruppAnlegenAusgewaehlteEinheiten-2.png" alt="" class="wp-image-8476" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/NeuenTruppAnlegenAusgewaehlteEinheiten-2.png 2512w, https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/NeuenTruppAnlegenAusgewaehlteEinheiten-2-150x150.png 150w" sizes="auto, (max-width: 2512px) 100vw, 2512px" /></figure>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="2517" height="2512" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2020/02/ProfileAuswaehlen-1.png" alt="" class="wp-image-8475" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/ProfileAuswaehlen-1.png 2517w, https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/ProfileAuswaehlen-1-150x150.png 150w" sizes="auto, (max-width: 2517px) 100vw, 2517px" /></figure>



<p>Das eigentliche  „Herzstück“  der App ist die Truppdetailansicht. Hier wird die aktuell verfügbare Atemluft anhand eines Balkendiagrammes visualisierst.</p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="2512" height="2517" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2020/02/AtemschutztruppInfo.png" alt="" class="wp-image-8481" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/AtemschutztruppInfo.png 2512w, https://mobile.fhstp.ac.at/wp-content/uploads/2020/02/AtemschutztruppInfo-150x150.png 150w" sizes="auto, (max-width: 2512px) 100vw, 2512px" /></figure>



<p>Drückt die Benutzerin/ der Benutzer nun auf die Schaltfläche „Einsatz starten“, so wird die Einsatzzeit anhand der zuvor eingegebenen Atemluftmenge berechnet und in Echtzeit aktualisiert, wie der blaue Balken auch.&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>Die Einsatzzeit wird dabei wie folgt berechnet:&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>Der Luftverbrauch bei körperlich mittelmäßig anstrengender Arbeit in einem Feuerwehreinsatz wird vom österreichischen Bundesfeuerwehrverband mit 50 Liter Atemluft pro Minute kalkuliert – das entspricht exakt 6,25 Bar pro Minute. <br>Sinkt die Menge der Atemluft unter 60 Bar, so gibt die App einen Alarmton aus (Restdruckwarnung).&nbsp;<br>Selbstverständlich kann der Flaschenfülldruck auch während einem laufendem Einsatz nachkorrigiert werden.</p>



<h2 class="wp-block-heading">Usability Tests</h2>



<p>Um die Einsatztauglichkeit der App zu testen, wurden zehn Usabilitytest mit  Vertretern unterschiedlicher Feuerwehren durchgeführt. Dabei wurden einige Optimierungspotentiale für eine künftige Weiterentwicklung gefunden. Außerdem ergab sich ein SUS-Score von 82 Punkten (maximal 100) und eine durchschnittlicher Task-Success von 1,36 (Wertungsskala von 1 bis 4, 1 = beste Note).</p>



<h1 class="wp-block-heading">Fazit</h1>



<p>Der Einsatz von mobilen Endgeräten wird in Wirtschaft und Industrie immer alltäglicher. So ist es auch denkbar, dass sich auch Feuerwehren künftig immer häufiger mit Tablets und Smartphones ausstatten, um Einsätze besser bewältigen zu können. In diesem Zusammenhang ist es auch sehr naheliegend, dass die Atemschutzüberwachung künftig über eine mobile Anwendung erfolgt. Der wesentliche Teil der App konnte bereits im Rahmen dieser Arbeit realisiert werden, sodass diese Version bereits einsatzfähig ist. Unabhängig davon lässt sie aber zum jetzigen Zeitpunkt noch einen großen Spielraum für mögliche Erweiterungen. </p>
<p>The post <a href="https://mobile.fhstp.ac.at/allgemein/konzeption-umsetzung-und-evaluierung-einer-android-app-zur-atemschutzueberwachung-im-feuerwehrwesen/">Diplomarbeit: Atemschutzmanagement</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>REST APIs dokumentieren – Einführung in Swagger</title>
		<link>https://mobile.fhstp.ac.at/development/rest-apis-dokumentieren-einfuehrung-in-swagger/</link>
		
		<dc:creator><![CDATA[Lukas Glaser]]></dc:creator>
		<pubDate>Thu, 31 Jan 2019 12:55:57 +0000</pubDate>
				<category><![CDATA[Development]]></category>
		<category><![CDATA[Dokumentation]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8175</guid>

					<description><![CDATA[<p>Warum benötigen REST-APIs eine Dokumentation? Eine gut gelungene REST-API zeichnet sich durch unterschiedliche Qualitätsmerkmale aus. Hierzu gehören: Konsistenz, einfache Benutzbarkeit und geeignete Abstraktion. Aber auch eine ordentliche Dokumentation darf dabei nicht fehlen. Schließlich soll die API ja auch für andere Entwickler verständlich und benutzbar sein. Bevor man mit der Implementierung einer App beginnt, ist es <a class="read-more" href="https://mobile.fhstp.ac.at/development/rest-apis-dokumentieren-einfuehrung-in-swagger/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/rest-apis-dokumentieren-einfuehrung-in-swagger/">REST APIs dokumentieren – Einführung in Swagger</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Warum benötigen REST-APIs eine Dokumentation?</strong></h2>



<p>Eine gut gelungene REST-API zeichnet sich durch unterschiedliche Qualitätsmerkmale aus. Hierzu gehören: Konsistenz, einfache Benutzbarkeit und geeignete Abstraktion. Aber auch eine ordentliche Dokumentation darf dabei nicht fehlen. Schließlich soll die API ja auch für andere Entwickler verständlich und benutzbar sein.</p>



<p>Bevor man mit der Implementierung einer App beginnt, ist es also ratsam, sich über den Aufbau der API Gedanken zu machen. Nur so lassen sich Schwachstellen frühzeitig erkennen und beheben.</p>



<div class="wp-block-image"><figure class="alignleft"><img loading="lazy" decoding="async" width="200" height="200" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/Swagger-logo.png" alt="Swagger Logo" class="wp-image-8171" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2019/01/Swagger-logo.png 200w, https://mobile.fhstp.ac.at/wp-content/uploads/2019/01/Swagger-logo-150x150.png 150w" sizes="auto, (max-width: 200px) 100vw, 200px" /><figcaption>Swagger Logo</figcaption></figure></div>



<p>Mittlerweile
gibt es diesbezüglich eine ganze Reihe verschiedener Formate und Tools, die das
Planen, Entwerfen und Dokumentieren von Tools erleichtern bzw. unterstützen.
Die bekanntesten sind: RESTful API Modeling language (kurz: RAML), API
Blueprint, Open API (auch bekannt als Swagger) und APIDOC.</p>



<p>Dieser Blogbeitrag widmet sich dem Open-Source-Framework „Swagger“. Nach einer kurzen theoretischen Einführung und einen Einblick in die Entstehungsgeschichte, werden wir anhand einer Demospezifikation schrittweise erörtern, wie Swagger in der Praxis funktioniert.</p>



<h2 class="wp-block-heading"><strong>Allgemein</strong></h2>



<p>Swagger (<a href="http://swagger.io">http://swagger.io</a>) gehört neben RAML und API-Blueprint zu den meist verwendeten Formate zur Spezifikation von REST-APIs. Swagger bietet ein sprachneutrales und maschinenlesbares Format und wird von vielen Tools erkannt und unterstützt. Das Toolset von Swagger bietet einige praktische Features wie beispielsweise: automatisiertes Dokumentieren, Code-Generierung und Testfallgenerierung. Als Auszeichnungssprache können sowohl YAML aus auch JSON verwendet werden. </p>



<h2 class="wp-block-heading"><strong>YAML</strong></h2>



<p>YAML ist eine Auszeichnungssprache zur Serialisierung großer Mengen von JSON-Daten. Das Akronym YAML steht für „YAML Ain’t Markup Language“. YAML ist leichter von Menschen zu lesen und zu schreiben als beispielsweise JSON oder XML.</p>



<h2 class="wp-block-heading"><strong>Geschichte</strong></h2>



<p>Das Swagger-API-Projekt wurde
2011 von Tony Tam in’s Leben gerufen. Im Rahmen seiner Tätigkeit als
Software-Architekt erkannte er die Notwendigkeit einer automatisierten
API-Dokumentation. Denn eine reine Sammlung von URLs reichte als Dokumentation
nicht aus und ein einfaches, unkompliziertes Beschreibungsformat existierte bis
dato noch nicht. Vor allem aber die Verwendung unterschiedlicher Technologien
und Programmiersprachen in Kombination mit WSDL (Web Service Descriotion
Language) und WADL (Web Application Description Language) erwies sich als
äußerst schwierig. &nbsp;Daraufhin wurde
Swagger entwickelt: eine IDL (Interface Definition Language) für REST-APIs und
als Open Source Projekt veröffentlicht. &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; </p>



<h2 class="wp-block-heading"><strong>Die Demospezifikation „Petstore“</strong></h2>



<p>Eine fertige Demonstration einer API-Dokumentation ist der
sogenannte <strong>Petstore</strong>. Diesen finden
wir unter: <a href="http://petstore.swagger.io/#/">http://petstore.swagger.io/#/</a></p>



<p>Noch besser ist allerdings die Verwendung des Online Editors. Unter <a href="http://editor.swagger.io">http://editor.swagger.io</a> können APIs mithilfe eines „Live-Editors“ entworfen werden. Der Vorteil dieses Editors ist, dass parallel zum YAML-Code eine interaktive Swagger-HTML-Dokumentation entsteht, wie in folgender Abbildung ersichtlich.</p>



<ul class="wp-block-gallery columns-1 is-cropped wp-block-gallery-1 is-layout-flex wp-block-gallery-is-layout-flex"><li class="blocks-gallery-item"><figure><img loading="lazy" decoding="async" width="625" height="302" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/petstore.png" alt="Im linken Frame befindet sich der eigentliche Editor, im rechten hingegen die dazugehörige HTML-Visualisierung." data-id="8187" data-link="https://akirchknopf-21110.php.fhstp.cc/development/rest-apis-dokumentieren-einfuehrung-in-swagger/attachment/petstore/" class="wp-image-8187"/><figcaption>Im linken Frame befindet sich der eigentliche Editor, im rechten hingegen die dazugehörige HTML-Visualisierung.</figcaption></figure></li></ul>



<p>Eine
Swagger-Spezifikation beginnt immer mit <strong>Metainformationen</strong>
wie: <strong>Spezifikationsversion</strong>, gefolgt
von <strong>generellen</strong> <strong>Informationen</strong> zur API im Abschnitt <strong>Info</strong>. <strong>Host</strong>, <strong>Pfad</strong> und das <strong>URL-Schema</strong> werden in eigenen Variablen darunter angegeben. </p>



<pre class="wp-block-code"><code>swagger: "2.0"
info:
  description: "This is a sample server Petstore server.  You can find out more about     Swagger at [http://swagger.io](http://swagger.io) or on [irc.freenode.net, #swagger](http://swagger.io/irc/).      For this sample, you can use the api key `special-key` to test the authorization     filters."
  version: "1.0.0"
  title: "Swagger Petstore"
  termsOfService: "http://swagger.io/terms/"
  contact:
    email: "apiteam@swagger.io"
  license:
    name: "Apache 2.0"
    url: "http://www.apache.org/licenses/LICENSE-2.0.html"
host: "petstore.swagger.io"
basePath: "/v2"
tags:
- name: "pet"
  description: "Everything about your Pets"
  externalDocs:
    description: "Find out more"
    url: "http://swagger.io"
- name: "store"
  description: "Access to Petstore orders"
- name: "user"
  description: "Operations about user"
  externalDocs:
    description: "Find out more about our store"
    url: "http://swagger.io"
schemes:
- "https"
- "http"
</code></pre>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1540" height="633" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/tags-1-1540x633.png" alt="Gruppierung der Ressourcen mit Tags" class="wp-image-8196"/><figcaption>Gruppierung der Ressourcen mit Tags</figcaption></figure>



<p>Ebenso hier zu finden ist auch die Sektion „<strong>Tags</strong>“. Damit können wir eine Liste mit allen implementierten Ressourcen und dazugehörigen Operationen erstellen. In unserem Fall beginnt diese Sektion mit der Ressource „pet“. Ein kurzer Blick darauf verät uns, was mit dieser Ressource alles geschehen kann: Sie kann gespeichert (<strong>POST</strong>), aktualisiert (<strong>PUT</strong>), abgerufen (<strong>GET</strong>) und natürlich auch gelöscht werden (<strong>DELTE</strong>).</p>



<p>Der eigentliche Teil der Dokumentation beginnt jedoch erst mit dem Abschnitt ,,paths“. Hier werden die eigentlichen Inhalte dargestellt: <strong>Pfade</strong>, <strong>Operationen</strong>, <strong>Parameter</strong> sowie die <strong>dazugehörigen</strong> <strong>Antworten</strong> einschließlich ihrer <strong>Beschreibung</strong>. Datentypen werden wiederverwendbar in einem Abschnitt definitions verwaltet. Ebenso wird für die gesamte API der Mediatyp <strong>(produces/consumers)</strong> festgelegt.</p>



<pre class="wp-block-code"><code>paths:
  /pet:
    post:
      tags:
      - "pet"
      summary: "Add a new pet to the store"
      description: "Here we can add a pet"
      operationId: "addPet"
      consumes:
      - "application/json"
      - "application/xml"
      produces:
      - "application/xml"
      - "application/json"
      parameters:
      - in: "body"
        name: "body"
        description: "Pet object that needs to be added to the store"
        required: true
        schema:
          $ref: "#/definitions/Pet"
      responses:
        405:
          description: "Invalid input"
      security:
      - petstore_auth:
        - "write:pets"
        - "read:pets"
</code></pre>



<p>Sehen wir uns nun obigen Code, also den Pfad „<strong>pet</strong>“ mit der Operation „<strong>post</strong>“ etwas genauer an, um zu verstehen, was die einzelnen Elemente bedeuten. Schon am ersten Blick sehen wir sehr gut die hierarchische Abbildung durch die Einrückungen.</p>



<ul class="wp-block-list"><li>Das Snippet beginnt mit der „<strong>post</strong>&#8211;<strong>Deklaration</strong>“ also jener http-Operation die zum Speichern, Erstellen
und Weiterverarbeiten von Daten verwendet wird. Der gesamte folgende Code der
sich durch die Einrückung hierarchisch darunter gliedert, betrifft
logischerweise diesen Befehl.</li><li>Danach wird diese Operation dem Tag „<strong>pet</strong>“ zugeordnet. Durch diese Zuweisung
werden wir den nachfolgenden Code auch in unseren Tags (wir vorhin erläutert)
finden.</li><li>Danach finden wir eine Zusammenfassung (<strong>summary</strong>) und eine Beschreibung (<strong>description</strong>) über jene Operation vor.</li><li>Die <strong>operationId</strong>
dient zur eindeutigen Adressierung und als mögliche Referenz für lokale Links. </li><li><strong>consumes</strong>
und <strong>produces</strong> dienen zum Festlegen
sogenannter MIME-Types. Eine API kann Daten in verschiedenen Formaten annehmen
und zurückgeben. Die häufigsten sind JSON und XML, wie auch in diesem Fall.</li><li><strong>Parameter:
</strong>Das Parameterobjekt beschreibt die einzelnen Parameter, die in einer
Operation gesendet werden sollen, und bildet somit das Operationsobjekt ab.</li><li><strong>Responses</strong>:
Hier werden die Rückgabewerte nebst Fehlercode festgelegt.</li><li>Im Abschnitt <strong>security </strong>werden Berechtigungen definiert.</li></ul>



<p>Das sind jetzt nur einige wichtige Funktionen von Swagger. Natürlich umfasst die Swagger-Spezifikation noch viel mehr Funktionen, auf die aber hier nicht bis ins Detail eingegangen werden soll. Dafür bietet sich die Dokumentation an: <a href="https://swagger.io/docs/specification/about/">https://swagger.io/docs/specification/about/</a> </p>



<h2 class="wp-block-heading">API-Endpunkte</h2>



<p>Wer künftig seine APIs mit Swagger dokumentieren will, benötigt ein Verständnis dafür wie man sogenannte <strong>Endpunkte</strong> definiert. Sie bilden schließlich das Herzstück einer Dokumentation. Ein Endpunkt ist eigentlich nichts anderes als eine Operation die von einem Benutzer ausgeführt wird.</p>



<p>Auch in unserem Petstore finden wir eine Reihe verschiedener Benutzeroperationen in Form von Pfaden.</p>



<p><strong>Dazu einige Beispiele:</strong></p>



<table class="wp-block-table"><tbody><tr><td><strong>/pets/{petId}/(get)</strong></td><td>Ermöglicht es, die Ressource Pet über eine Id zu finden</td></tr><tr><td><strong>/pet/findByStatus/(get)</strong></td><td>Ermöglicht es, ein Pet über einen Status zu finden</td></tr><tr><td><strong>/pet(post)</strong></td><td>Fügt dem Store ein neues Pet hinzu</td></tr><tr><td><strong>/pet(put)</strong></td><td>Ermöglicht es, ein bestehendes Pet zu aktualisieren</td></tr><tr><td><strong>/pet(delete)</strong></td><td>Löscht ein vorhandenes Pet</td></tr></tbody></table>



<p>Innerhalb dieser Endpunkte werden mögliche Antwortnachrichten spezifiziert. Die Antwortnachricht mit einem Statuscode von beispielsweise 404 referenziert die globale Definition für das Pet-Datenmodell das die Fehlermeldung „Pet not found“ zurückliefert. Eine Antwortnachricht mit dem Code 200 hingegen, referenziert die die globale Definition, die ein bestimmtes Pet zurückliefert. (siehe nachfolgendes Listing)</p>



<pre class="wp-block-code"><code>paths:
  /pets/{petId}:
    get:
      tags:
        - pet
      summary: Find pet by ID
      description: Returns a pet
      produces:
        - application/json
      parameters:
        - in: path
          name: petId
          description: ID of pet that needs to be fetched
          required: true
          type: integer
          format: int64
      responses:
        "200":
          description: successful operation
          schema:
            $ref: "#/definitions/Pet"
        "400":
          description: Invalid ID supplied
        "404":
          description: Pet not found</code></pre>



<p>So lassen sich mit Swagger httpbasierte APIs sehr gut abbilden. </p>



<h2 class="wp-block-heading"><strong>Die interaktive Swagger-HTML-Dokumentation</strong></h2>



<p>Der nachfolgende Screenshot zeigt einen Ausschnitt der
interaktiven Swagger-HTML-Dokumentation. Was auf den ersten Blick sehr
übersichtlich und anschaulich aussieht, birgt noch große
Verbesserungspotentiale. So liegt beispielsweise der Schwerpunkt dieser
Visualisierung auf den API-Endpoints, nicht aber auf einer
Funktionsbeschreibung, die jedoch von großem Nutzen wär. Wenn nun also ein
Benutzer die API noch nicht kennt, und nach einer bestimmten Funktion sucht,
wie bspw. <em>deletePetById()</em>, würde er
nicht nach dem passendem Endpoint suchen, sondern nach der gewünschten
Funktionalität. </p>



<p>Ein weiteres Manko ist der fehlende PDF-Export. In vielen
Fällen wird man die Doku auch im PDF-Format benötigen – beispielsweise bei
Projektabnahme oder für den Fall dass bei einer Ausschreibung auch eine Doku
mitgeliefert wird. </p>



<p>Nichtsdestotrotz: Swagger ist noch immer ein relativ junges Framework, das laufend weiterentwickelt wird. Swagger UI und alle anderen Swagger-Tools sind kostenfrei und Open Source. Zudem hat sich Swagger auch sicher nicht zufällig zu einem der Marktführer gekämpft. Ich bin zuversichtlich, dass Swagger auch in den kommenden Jahren eine wichtige Rolle im Bereich der Software-Dokumentation spielen wird. </p>



<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1540" height="800" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/petstore-Overview-1540x800.png" alt="" class="wp-image-8208" srcset="https://mobile.fhstp.ac.at/wp-content/uploads/2019/01/petstore-Overview-1540x800.png 1540w, https://mobile.fhstp.ac.at/wp-content/uploads/2019/01/petstore-Overview-770x400.png 770w" sizes="auto, (max-width: 1540px) 100vw, 1540px" /></figure>
<p>The post <a href="https://mobile.fhstp.ac.at/development/rest-apis-dokumentieren-einfuehrung-in-swagger/">REST APIs dokumentieren – Einführung in Swagger</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JMeter Tutorial 4: Stepping Thread Group</title>
		<link>https://mobile.fhstp.ac.at/tests/jmeter-tutorial-4-stepping-thread-group/</link>
		
		<dc:creator><![CDATA[Lukas Glaser]]></dc:creator>
		<pubDate>Mon, 14 Jan 2019 21:59:41 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Workshop]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8083</guid>

					<description><![CDATA[<p>Bis jetzt haben wir zum Simulieren virtueller Benutzer immer nur eine normale Thread-Group verwendet, die bereits die Core-Version von JMeter mitliefert. So konnten wir die Anzahl der Zugriffe, (also die Anzahl der Benutzer), die Anzahl der Durchläufe (Loops) sowie die Ramp-Up-Period (Maximalser Belastung) anhand eines Zeitwertes definieren. Es gibt aber auch die Möglichkeit, weitere Parameter <a class="read-more" href="https://mobile.fhstp.ac.at/tests/jmeter-tutorial-4-stepping-thread-group/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/tests/jmeter-tutorial-4-stepping-thread-group/">JMeter Tutorial 4: Stepping Thread Group</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Bis jetzt haben wir zum Simulieren virtueller Benutzer immer nur eine normale Thread-Group verwendet, die bereits die Core-Version von JMeter mitliefert. So konnten wir die Anzahl der Zugriffe, (also die Anzahl der Benutzer), die Anzahl der Durchläufe (Loops) sowie die Ramp-Up-Period (Maximalser Belastung) anhand eines Zeitwertes definieren. Es gibt aber auch die Möglichkeit, weitere Parameter mit einzubeziehen, was die Anzahl der Requests im zeitlichen Verlauf betrifft.  Mit einer Stepping-Thread-Group können<strong> Ramp-up-</strong> und <strong>Ramp-down Time</strong> genauer definiert werden.</p>
<p>Dieser Blogbeitrag ist der vierte Teil einer JMeter-Serie und setzt grundlegende JMeter-Kenntnisse voraus. Neueinsteigern empfehle ich, vorerst die drei vorangegangenen Blogartikel zu lesen oder noch besser: durchzuarbeiten. Am Ende dieses Beitrages wird darauf verlinkt.</p>
<h1>Realistischer Usertest</h1>
<p>In unserem vierten Tutorial wollen wir nun einen <strong><u>realistischen Usertest</u></strong> erstellen. Wie es der Name schon sagt, kommt ein realistischer Usertest dem tatsächlichen Surf-Verhalten der Benutzer sehr nahe. Zunächst muss aber geklärt sein, was genau ein realistischer User-Test überhaupt ist bzw. welche Kriterien er zu erfüllen hat, um als ein solch einer zu gelten.</p>
<p>Das wichtigste Kriterium  in diesem Kontext ist die sog. <strong>Think-Time.</strong> In der Praxis liegt zwischen den einzelnen Requests immer ein kleiner <strong>Delay</strong> vor – nämlich jene Zeit, in der der Benutzer auf der Seite verweilt. Diese Zeit nennt man Think-Time. Sie ist natürlich nicht immer konstant, sondern unterliegt mehr oder weniger starken Schwankungen. Dafür werden wir den sogenannten <strong>Random-Timer</strong> verwenden. Dieser bestimmt die Random-Time per <strong>Zufallsgenerator, </strong>durch die Eingabe eines Minimal- und Maximalwertes.</p>
<h1>Wozu eine Stepping Thread-Group?</h1>
<p>Eine Stepping Thread-Group ist ein hervorragendes Feature zum detaillierten Konfigurieren von Threads. Mit einer herkömmlichen Thread-Group konnten wir die Dauer der Ramp-up- und Ramp-down-Time lediglich linear definieren, und damit nur sicherstellen, dass beispielsweise nach 20 Sekunden eine Auslastung von 200 Usern besteht. Mit einer Stepping Thread-Group haben wir nun die Möglichkeit, die Userlast portionsweise zu steigern, wie wir in der nachstehenden Grafik erkennen:</p>
<p><div id="attachment_8091" style="width: 772px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/steppingthreadgroup.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8091" class="wp-image-8091" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/steppingthreadgroup.png" alt="Abb. 1: Stepping Thread-Group mit eingezeichneten Kenngrößen" width="762" height="336" /></a><p id="caption-attachment-8091" class="wp-caption-text">Abb. 1: Stepping Thread-Group mit eingezeichneten Kenngrößen</p></div></p>
<p>Mit einer Stepping Thread-Group können folgende Parameter definiert werden:</p>
<ul>
<li><strong>Start-Delay</strong>: Jene Zeit, die verstreicht, bis der Test startet.</li>
<li><strong>Anzahl der Start-Threads (auch: Target-Load):</strong> Der Test startet mit xy User</li>
<li><strong>Ramp-up-Period:</strong> alle x Sekunden kommen weitere y User hinzu</li>
<li><strong>Ramp-down-Period</strong>: alle x Sekunden kommen  y User weg</li>
<li><strong>Load-Time:</strong> Jene Zeitspanne, in der die Plattform mit dem Maximum an Threads belastet wird</li>
</ul>
<h1>Download und Installation</h1>
<p>Zunächst benötigen den Plug-In-Manager, um später das Plugin-Stepping-Thread-Group installieren zu können. Diesen gibt es <a href="https://jmeter-plugins.org/wiki/PluginsManager/" target="_blank" rel="noopener">hier zum Download.</a></p>
<p>Ist der Download abgeschlossen, legen wir das Jar-File in den Ordner „lib/ext“ und starten JMeter neu. Nun gib es im Menüpunkt „Options“ ganz unten den Punkt „Plugins Manager“, den wir nun verwenden. Im Reiter „Availables Plugins“ suchen wir nach dem Eintrag „jpgc-Standard Set“ und werden relativ weit unten fündig. Hier setzen wir das Häckchen und klicken rechts unten auf „Apply&#8230;“.</p>
<p>Nun können wir  die Stepping Thread-Group unserem Testplan hinzufügen: <strong>Rechtsklick / Hinzufügen / Threads / Stepping Thread-Group</strong></p>
<p>In der nachstehenden Eingabemaske können wir nun die Parameter von Abbildung 1 definieren.</p>
<p><div id="attachment_8098" style="width: 1474px" class="wp-caption alignleft"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8098" class="wp-image-8098 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/stepping_thread_group_einstellungen.png" alt="Abb. 2: Stepping Thread Group in JMeter" width="1464" height="912" /><p id="caption-attachment-8098" class="wp-caption-text">Abb. 2: Stepping Thread Group in JMeter</p></div></p>
<h2></h2>
<h2></h2>
<h2></h2>
<p>&nbsp;</p>
<p>&nbsp;</p>
<h2></h2>
<h1></h1>
<p>&nbsp;</p>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h2></h2>
<h1>Testplan erstellen</h1>
<p>Wurde die Stepping-Thread-Group erfolgreich installiert und konfiguriert, solle der Rest eigentlich kein Problem mehr darstellen. Nun können wir die Stepping Thread-Group mit HTTP-Request befüllen und dazwischen jeweils die Random-Timer<strong> (Hinzufügen / Zeitgeber / Uniform Random Timer)</strong> einfügen. Unser Testplan sollte nun in etwa so aussehen:</p>
<p><div id="attachment_8103" style="width: 1922px" class="wp-caption alignleft"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/stepping_thread_group_einstellungen_testplan.png"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-8103" class="wp-image-8103 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2019/01/stepping_thread_group_einstellungen_testplan.png" alt="Abb. 3: Testplan mit integrierter Stepping Thread-Group" width="1912" height="476" /></a><p id="caption-attachment-8103" class="wp-caption-text">Abb. 3: Testplan mit integrierter Stepping Thread-Group</p></div></p>
<p>&nbsp;</p>
<h1>Vorteile in der Praxis</h1>
<p>Was die Auswertung des Tests betrifft, ergibt sich für uns in der Praxis nun ein wesentlicher Vorteil: Wir können leichter herausfinden, wo die Belastungsgrenze des zu testendem Systems liegt. Denn durch das schrittweise hinzufügen von virtuellen Benutzern, kennen wir die genaue Anzahl zu jedem Zeitpunkt, anders als bei einer normalen Thread-Group.</p>
<h2>Weitere Tutorials</h2>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/tests/websitetesting-mit-jmeter/">JMeter Tutorial 1: Grundlagen, Listeners und Assertions</a></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/tests/jmeter-tutorial-2-datenbanken-web-services-und-ftp/">JMeter Tutorial 2: DB, Web-Services und FTP</a></p>
<p><a href="https://akirchknopf-21110.php.fhstp.cc/tests/jmeter-tutorial-3-https-test-script-recording/">JMeter Tutorial 3: Test Script Recording</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/tests/jmeter-tutorial-4-stepping-thread-group/">JMeter Tutorial 4: Stepping Thread Group</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JMeter Tutorial 3: Test Script Recording</title>
		<link>https://mobile.fhstp.ac.at/workshop/jmeter-tutorial-3-https-test-script-recording/</link>
		
		<dc:creator><![CDATA[Lukas Glaser]]></dc:creator>
		<pubDate>Wed, 28 Nov 2018 18:30:34 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Workshop]]></category>
		<category><![CDATA[Java]]></category>
		<category><![CDATA[JMeter]]></category>
		<category><![CDATA[Softwaretesting]]></category>
		<category><![CDATA[Testing]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8046</guid>

					<description><![CDATA[<p>Wozu Script-Recording? In der Praxis ist es oft sehr mühsam und vor allem kompliziert und zeitaufwändig, Testpläne manuell in JMeter zu schreiben. Vor allem dann, wenn komplexe Vorgänge getestet werden, bei denen auch viele Hintergrundprozesse laufen, wie beispielsweise Authentifizierungen, Buchungen oder auch ganze Kaufabwicklungen. Hierbei werden Cookies und Sessions zwischengespeichert, Eingaben überprüft, Datenbankaufrufe getätigt, Login-Daten <a class="read-more" href="https://mobile.fhstp.ac.at/workshop/jmeter-tutorial-3-https-test-script-recording/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/workshop/jmeter-tutorial-3-https-test-script-recording/">JMeter Tutorial 3: Test Script Recording</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<h2 class="wp-block-heading"><strong>Wozu Script-Recording?</strong></h2>




In der Praxis ist es oft sehr mühsam und vor allem kompliziert und zeitaufwändig, Testpläne manuell in JMeter zu schreiben. Vor allem dann, wenn komplexe Vorgänge getestet werden, bei denen auch viele Hintergrundprozesse laufen, wie beispielsweise Authentifizierungen, Buchungen oder auch ganze Kaufabwicklungen. Hierbei werden Cookies und Sessions zwischengespeichert, Eingaben überprüft, Datenbankaufrufe getätigt, Login-Daten verschlüsselt und an den Server geschickt, u.v.m. Um die Prozedur, dafür einen Testplan zu erstellen, einfacher zu gestalten, gibt es in JMeter ein Recording-Tool, das die Browseraktionen aufzeichnet und als JMeter-Testplan abspeichert.




<h2 class="wp-block-heading"><strong>Proxy-Server-Architektur</strong></h2>




Bevor wir aber loslegen, müssen wir aber noch ein paar Vorkehrungen hinsichtlich unserer Infrastruktur treffen. Denn wenn wir jetzt die JMeter-Recording-Funktion als Client ausführen, würden wir nicht weit kommen. Die Firewall würde uns daran hindern. Wenn wir in JMeter einen Proxy-Server simulieren, kann das Programm problemlos mit dem Server kommunizieren und all unsere Browseraktionen aufzeichnen, da die Firewall umgangen wird.




<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1027" height="394" class="wp-image-8055" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/11/1027px-CPT-Proxy.svg_.png" alt="" /><figcaption><strong>Proxy-Server Architektur</strong>
Quelle: https://en.wikipedia.org/wiki/Proxy_server</figcaption></figure>




In der Praxis ist das dann so: JMeter simuliert einen Proxyserver und wir als Tester führen im Browser eine Interaktion durch, also senden einen Request. JMeter erkennt das und speichert diese Aktion im Testplan ab. Schließlich antwortet der Server mit einer Response und JMeter speichert auch diesen ab. Auf diese Art und Weise können wir ganz einfach Testpläne automatisiert aufzeichnen.




<h2 class="wp-block-heading"><strong>Vorbereiten des Testplans</strong></h2>




Zunächst benötigen wir in JMeter, wie gewöhnlich, eine Thread-Group. In unserem Fall wollen wir eine Authentifizierung testen. Ich verwende dafür meinen Account von arduino.cc. Natürlich steht es Dir frei, welchen Account du für deinen Test verwenden willst. In diese Thread-Group geben wir nun einen Recording-Controller (Hinzufügen / Logic Controller / Recording Controller), damit JMeter weiß, an welcher Stelle im Testplan der aufgezeichnete Traffic gespeichert werden soll.

Damit wir unsere Ergebnisse später auch betrachten können, verwenden wir wieder einen Listener. In diesem Fall ist der View-Results Tree ausreichend.

Nun kommen wir aber zum interessanteren Teil, nämlich zum HTTP(S) Test Script Recorder. Diesen finden wir durch Rechtsklick auf das Root-Element (Testplan) unter: „Hinzufügen / Nicht-Test-Elemente / HTTP(S) Test Script Recorder.

Den Port stellen wir hier auf 8888. Interessant für uns ist nun auch noch der Target-Controller. Hier stellen wir ein, in welchen Recording-Controller unsere Testschritte gespeichert werden. Die Gruppierung stellen wir auf ,,Put each group in a new Transaction Controller“. Dadurch werden später zusammengehörige Samples (alle Samples vom selben Seitenaufruf) gruppiert in einer eigenen Gruppe gespeichert. Das war’s auch schon wieder mit unseren Einstellungen. Hier sind wir soweit mal fertig.





<strong>Unser Testplan sollte nun wie folgt aussehen:</strong>




<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1518" height="628" class="wp-image-8051" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/11/httpsscriptrecordertest.jpg" alt="" /><figcaption>Testplan mit HTTP(S) Test Script Recorder</figcaption></figure>




Wenn wir nun testweise unser Recording starten, bekommen wir eine Fehlermeldung mit dem Hinweis, dass wir vorerst noch ein bestimmtes Zertifikat installieren müssen. Dieses Zertifikat dient als Sicherheitsgarantie. Wir benötigen es, damit unser JMeter-Proxy-Server HTTP(S)-Traffic entschlüsseln darf. Wenn wir nun in unser BIN-Verzeichnis wechseln, sehen finden wir bereits unser Zertifikat in Form einer Datei mit dem Namen ApacheJMeterTemporaryRootCA.crt vor. Standardmäßig ist dieses Zertifikat für 7 Tage gültig.





Nun müssen wir dieses Zertifikat noch im Browser installieren. Dazu wechseln wir in Firefox und öffnen den Punkt „Einstellungen / Datenschutz und Sicherheit“. Hier finden wir ganz unten den Punkt „Zertifikate“. Wenn wir uns diese anzeigen lassen, können wir hier ein neues Zertifikat importieren.





Zu guter Letzt müssen wir noch den Browser entsprechend konfigurieren. Unter Einstellungen suchen wir nach „Proxy“ und stellen auch hier den Port auf <strong>8888</strong>.




<figure class="wp-block-image"><img loading="lazy" decoding="async" width="752" height="635" class="wp-image-8052" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/11/proxy.jpg" alt="" /><figcaption>Proxy-Einstellungen in Firefox</figcaption></figure>



<h2 class="wp-block-heading"><strong>Aufnahme starten</strong></h2>




Nun ist unser Proxy-Server konfiguriert und wir haben damit alle notwendigen Einstellungen getroffen, sodass wir den Testplan endlich aufzeichnen können.





Dazu betätigen wir den Play-Button im http(S)-Test-Script-Recorder und führen im Browser eine Login-Aktion aus. Wenn Du alles richtig gemacht hast, erscheinen nun in der Thread-Group eine ganze Menge an Requests. Viele davon beziehen sich auf Bild-, CSS-, HTML-, JS-Dateien usw… Die einzelnen Samples beinhalten jeweils einen http Header Manager. Darin befinden sich einige
Metadaten. Besonders erwähnenswert ist der HTTP-Authorization-Manager. Hier befinden sich unsere Anmeldedaten in verschlüsselter Form.




<figure class="wp-block-image"><img loading="lazy" decoding="async" width="1785" height="1017" class="wp-image-8050" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/11/testplan_recording.jpg" alt="" /><figcaption>Aufgezeichneter Testplan</figcaption></figure>



<h2 class="wp-block-heading">Weitere Tutorials</h2>




<a href="https://akirchknopf-21110.php.fhstp.cc/tests/websitetesting-mit-jmeter/">JMeter Tutorial 1: Grundlagen, Listeners und Assertions</a>





<a href="https://akirchknopf-21110.php.fhstp.cc/tests/jmeter-tutorial-2-datenbanken-web-services-und-ftp/">JMeter Tutorial 2: DB, Web-Services und FTP</a>

<p>The post <a href="https://mobile.fhstp.ac.at/workshop/jmeter-tutorial-3-https-test-script-recording/">JMeter Tutorial 3: Test Script Recording</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Mobile Apps als Helfer in sicherheitskritischen Situationen</title>
		<link>https://mobile.fhstp.ac.at/trends/mobile-apps-als-helfer-in-sicherheitskritischen-situationen/</link>
		
		<dc:creator><![CDATA[Lukas Glaser]]></dc:creator>
		<pubDate>Tue, 09 Oct 2018 12:18:40 +0000</pubDate>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Forschung]]></category>
		<category><![CDATA[Trends]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=8016</guid>

					<description><![CDATA[<p>Gefahren- und Krisenlagen bringen oft unerwartete Folgen für die Bevölkerung mit sich.  Die dadurch entstandenen Schäden haben in den letzten Jahrzehnten stark zugenommen. In lebensbedrohlichen Situationen gerät die Bevölkerung schnell in Unsicherheit, sucht nach Hilfe und stellt sich die Frage, was passiert ist und wie sie sich zu verhalten hat. In vielen Fällen sind jedoch <a class="read-more" href="https://mobile.fhstp.ac.at/trends/mobile-apps-als-helfer-in-sicherheitskritischen-situationen/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/trends/mobile-apps-als-helfer-in-sicherheitskritischen-situationen/">Mobile Apps als Helfer in sicherheitskritischen Situationen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[
<p>Gefahren- und Krisenlagen bringen oft unerwartete Folgen für die Bevölkerung mit sich.  Die dadurch entstandenen Schäden haben in den letzten Jahrzehnten stark zugenommen. In lebensbedrohlichen Situationen gerät die Bevölkerung schnell in Unsicherheit, sucht nach Hilfe und stellt sich die Frage, was passiert ist und wie sie sich zu verhalten hat. In vielen Fällen sind jedoch die herkömmlichen Empfangsmedien wie Radio oder TV nicht griffbereit oder funktionsfähig.      <br/>Je weniger Informationen vorhanden sind, desto mehr steigt die Verunsicherung der Bürger, was häufig auch in panischen Reaktionen endet.   </p>



<p>Mobile Applikationen sind als verlässliche Frühwarnsysteme oder zusätzliche Kommunikationsmittel von großer Bedeutung. Dank der zahlreichen Funktionen über die sie heute verfügen (GPS, Mobilfunk, Kamera, Bluetooth, interner Datenspeicher,…) sind sie in der Lage, eine Hilfestellung zu bieten. Sei es bei einer Suchaktion nach einem Erdbeben, als Wetter- und Gefahrenwarndienste, zur Anleitungen von Erste-Hilfe-Maßnahmen oder auch nur für rein organisatorische Zwecke. <br/>Die Forschung in diesem Bereich konzentriert sich stets auf die Mensch-Maschinen-Interaktion zwischen den Betroffenen und den helfenden Akteuren.       <br/>Je nach Kontext der Krise oder Katastrophe ergeben sich unterschiedliche Ziele an die Kommunikation. Das Grundprinzip ist jedoch immer das Gleiche: die Unsicherheit der Betroffenen zu reduzieren.<br/>In diesem Blogartikel wird ein grober Einblick in die Nutzung mobiler Anwendungen in gefährlichen Situationen gegeben.</p>



<p class="has-large-font-size"><strong>Warnung vor Naturkatastrophen und anderen Gefahren</strong></p>



<p>Es existiert eine Reihe unterschiedlicher Apps, um die Bevölkerung rechtzeitig vor drohenden Gefahren warnen. Die App „Katwarn“ beispielsweise, informiert Menschen bei Krisen- und Katastrophenfällen sowie über Großeinsätze von Blaulichtorganisationen. Oberstes Ziel ist, dass relevante Informationen treffsicher an die Bevölkerung gebracht werden. Die User erhalten die Informationen entweder über einen von ihnen definierten Standort oder jenen Ort der per GPS getrackt wird. Die Daten werden von behördlicher Seite eingespeist und sind demnach auf eine zertifizierte Quelle zurückzuführen.<strong> </strong>Es gibt auch noch andere Sicherheits-Apps die vor Terrorgefahr, Bombenentschärfungen usw. warnen – und auch jene, mit denen man den Aufenthaltsort von Angehörigen überprüfen kann. Letzteres findet vor allem in Regionen mit akuter Terrorgefahr Anwendung.</p>



<p class="has-large-font-size"><strong>Crisis
Mapping</strong></p>



<p>Ein Begriff der in diesem Zusammenhäng auch häufig vorkommt, ist <em>„Crisis Mapping“ (auch: Disaster Mapping genannt)</em>. Hierbei werden während einer Naturkatstrophe Daten gesammelt, ausgewertet und schließlich der Öffentlichkeit zur Verfügung gestellt. Nach einer Naturkatastrophe können beispielsweise Einsatzkräfte dieses kartographische Material als Hilfestellung verwenden und dadurch schneller und effizienter humanitäre Hilfe leisten. <strong></strong><br/>Auf sozialen Netzwerken wie Facebook und Twitter posten User während bzw. nach einer Katastrophe häufe Beiträge mit persönlichen Erlebnissen und Bildern. Dieses Material kann sowohl für andere Betroffene, als auch für die Helfer von enormer Wichtigkeit sein. Die App Clickers von Micro Mappers hilf dabei, diese Informationen logisch zu kategorisieren, um den Hilfsorganisationen die Arbeit zu erleichtern.<strong></strong></p>



<p class="has-large-font-size"><strong>Das
Smartphone als Kommunikationsmittel am Beispiel „smarter“</strong></p>



<p>In Zusammenarbeit mit der TU Darmstadt und
der Uni Kassel wurde die App „smarter“ entwickelt. Diese kann eine Ad-hoc-Verbindung
ohne Internet und ohne Mobilfunk herstellen. So soll der Hilferuf bzw. das
Lebenszeichen des Betroffenen auch dann weitergeleitet werden, wenn das Strom-
und Mobilfunknetz lahmgelegt sind. Über einen W-LAN-Chip verbindet die App das
Telefon mit einem andern Smartphone, auf dem die App installiert ist und sich
in der Umgebung befindet. Dieses Gerät stellt wiederum weitere Verbindungen
her. So entsteht ein Ad-hoc-Netz über welches die User miteinander
kommunizieren, aber auch Statusmeldungen und Hilferufe weiterleiten können. Die
mobilen Endgeräte funktionieren faktisch wie Funkgeräte.<br/>
Die App implementiert auch eine Karte, auf der angezeigt wird, wo Hilfe benötigt
und angeboten wird. </p>



<p class="has-large-font-size"><strong>Mobiles
Crowdsourcing und VGI</strong></p>



<p>Bei mobilen Crowdsourcing werden mobile Endgeräte
zum Sammeln von Daten eingesetzt. Das Grundkonzept dahinter ist, dass sich
Freiwillige beteiligen und dadurch auch keine Koste anfallen. Meist tragen die
Beteiligten damit auch zu ihrem eigenen Nutzen bei. Die gesammelten sogenannten
VGI-Daten (Voluntered Geographic Information) sind meist orts- und raumbezogen,
häufig aber auch zeitbezogen. Es sind zahlreiche mobile
Crowdsourcing-Anwendungen bekannt, insbesondere im Natur-, Umwelt- und
Katastrophenschutz. So werden beispielsweise während eines Erdbebens die
Bevölkerung und die Einsatzkräfte mit wichtigen Informationen versorgt. Nach
einem Einsatz dient die App dazu, um vorhandene Schäden zu bewerten,
dokumentieren und analysieren. </p>



<p>Bei einem VGI-basierten Prognosesystem sind zwei Bestandteile unerlässlich: <strong>Mobile Tasking</strong> und <strong>Mobile Sensing</strong>.</p>



<p>Unter Mobile Tasking versteht man
das Rekrutieren von Freiwilligen zum Sammeln von Daten. Häufig bestimmen sie
selbst über ihren Anonymitätsgrad und werden von einer zentralen Komponente
gebeten, hydrologische Messungen durchzuführen. Dem Nutzer steht es natürlich
frei, ob er die Aufgabe ablehnt oder annimmt. Mobile Sensing ist der
eigentliche Vorgang des Datensammelns und des zur Verfügung Stellens der Daten
auf diversen Plattformen.  </p>



<p><strong>Quellen</strong></p>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://www.cebit.de/de/news-trends/news/smarter-app-soll-im-katastrophenfall-helfen-17921
</div></figure>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://www.it-service24.com/lexikon/a/ad-hoc-modus/
</div></figure>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://derstandard.at/2000059903201/Innenministerium-stellt-App-fuer-Katastrophen-Warnung-vor
</div></figure>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://www.pcwelt.de/ratgeber/Die-besten-Katastrophen-und-Terrorwarn-Apps-fuer-Android-10027413.html
</div></figure>



<figure class="wp-block-embed"><div class="wp-block-embed__wrapper">
https://www.rhein-zeitung.de/nachrichten/netzwelt/news_artikel,-kommunikation-im-krisenfall-smarterapp-funktioniert-ohne-netz-_arid,1763985.html
</div></figure>



<p><strong>Titelbild: Quelle: dpa</strong><br/>(https://www.rhein-zeitung.de/nachrichten/netzwelt/news_artikel,-kommunikation-im-krisenfall-smarterapp-funktioniert-ohne-netz-_arid,1763985.html)</p>
<p>The post <a href="https://mobile.fhstp.ac.at/trends/mobile-apps-als-helfer-in-sicherheitskritischen-situationen/">Mobile Apps als Helfer in sicherheitskritischen Situationen</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>Dropsource – der erste visuelle Ansatz für mobile App-Entwicklung</title>
		<link>https://mobile.fhstp.ac.at/development/cross-plattform/dropsource-der-erste-visuelle-ansatz-fuer-mobile-app-entwicklung/</link>
		
		<dc:creator><![CDATA[Lukas Glaser]]></dc:creator>
		<pubDate>Wed, 06 Jun 2018 20:52:33 +0000</pubDate>
				<category><![CDATA[Cross Plattform]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=7791</guid>

					<description><![CDATA[<p>Dropsource bringt die App-Entwicklung auf ein neues Level. Mit dieser neuen Technologie können native, leistungsstarke und datengesteuerte Applikationen basieren auf einer visuellen Vorgehensweise erstellt werden ohne dabei nur ein einziges Schnipsel Code zu schreiben. Dropsource punktet vor allem in Sachen Effizienz und Geschwindigkeit. Einzelpersonen und Unternehmen, die in kurzer Zeit innovativ sein müssen profitieren vor <a class="read-more" href="https://mobile.fhstp.ac.at/development/cross-plattform/dropsource-der-erste-visuelle-ansatz-fuer-mobile-app-entwicklung/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/cross-plattform/dropsource-der-erste-visuelle-ansatz-fuer-mobile-app-entwicklung/">Dropsource – der erste visuelle Ansatz für mobile App-Entwicklung</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>Dropsource bringt die App-Entwicklung auf ein neues Level. Mit dieser neuen Technologie können native, leistungsstarke und datengesteuerte Applikationen basieren auf einer visuellen Vorgehensweise erstellt werden ohne dabei nur ein einziges Schnipsel Code zu schreiben.</p>
<p>Dropsource punktet vor allem in Sachen Effizienz und Geschwindigkeit. Einzelpersonen und Unternehmen, die in kurzer Zeit innovativ sein müssen profitieren vor allem von der relativ einfachen Handhabe und der schnellen Erlernbarkeit. So wird Dropsource gerne dazu verwendet, einen Prototyp zu bauen und zu testen.</p>
<h2><strong>Prototyping und Build</strong></h2>
<p>Mit Dropsource lässt sich mit vertretbaren Zeitaufwand ein funktionaler Prototyp, sowohl für iOS als auch für Android entwickeln – und das schneller, als je zuvor. Mit einem <u>Drag-and-Drop-Builder</u>, also einem visuellen Interface, lassen sich UI-Elemente platzieren und so ganze Apps „zusammenklicken“. Der entscheidende Vorteil liegt darin, dass der Auftraggeber schon relativ bald ein vorläufiges Ergebnis betrachten kann.</p>
<p>Die manuelle Programmierung wird hierbei völlig überflüssig. Dennoch bietet Dropsource Zugriff auf den nativen Code, der beim „Zusammenbauen“ im Hintergrund entsteht. Selbstverständlich ist dieser auch editierbar. Dadurch ist es möglich, eigene Features und Elemente zu entwickeln und das User-Interface nach individuellen Wünschen anzupassen.</p>
<p><div id="attachment_7804" style="width: 1310px" class="wp-caption aligncenter"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7804" class="wp-image-7804 size-full" title="Drag and Drop Builder" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/06/home-page-prototype-and-build-v3.png" alt="Drag and Drop Builder" width="1300" height="781" /><p id="caption-attachment-7804" class="wp-caption-text">Drag and Drop Builder (Quelle: https://www.dropsource.com)</p></div></p>
<p><strong>Externe Datenquellen</strong></p>
<p>Die Resultate sind dabei <u>vollständig nativ</u> und können auch mit einer <u>REST-API</u> verbunden werden. So können problemlos datengesteuerte Anwendungen erstellt werden.  Auch externe Datenquellen von öffentlich zugänglichen APIs wie Facbeook, Google und dgl. können problemlos integriert werden.</p>
<h2><strong>Testing und Deployment</strong></h2>
<p>Ist die App einmal testbereit, so kann sie dafür direkt auf ein Gerät gesandt und im Browser geöffnet werden. Das Browsertesting läuft dabei über das Tool Appetize.io</p>
<p>Der Code, den die Entwicklungsplattform generiert, ist bei iOS-Apps in Swift, und bei Android-Apps in Java geschrieben. Daher lässt sich die fertige App ganz einfach herunterladen. Der Code kann natürlich anderswertig weiterverarbeitet und angepasst werden. Auch ein Veröffentlichungsdienst für AppStore und Playstore steht bei Dropsource zur Verfügung.</p>
<p>&nbsp;</p>
<p>Derzeit ist Dropsource noch kostenlos. Um jedoch in den Genuss einer Reihe praktischer Zusatzfeatures zu kommen, bezahlt man 39$ pro Monat und Projekt.</p>
<p>Mehr Infos siehe: <a href="https://www.dropsource.com/pricing/">https://www.dropsource.com/pricing/</a></p>
<p>&nbsp;</p>
<p><strong><u>Weiterführende Links</u></strong></p>
<p><a href="https://www.dropsource.com/">https://www.dropsource.com/</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/development/cross-plattform/dropsource-der-erste-visuelle-ansatz-fuer-mobile-app-entwicklung/">Dropsource – der erste visuelle Ansatz für mobile App-Entwicklung</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
		<item>
		<title>JMeter Tutorial 2: DB, Web-Services und FTP</title>
		<link>https://mobile.fhstp.ac.at/tests/jmeter-tutorial-2-datenbanken-web-services-und-ftp/</link>
		
		<dc:creator><![CDATA[Lukas Glaser]]></dc:creator>
		<pubDate>Mon, 21 May 2018 13:58:21 +0000</pubDate>
				<category><![CDATA[Software]]></category>
		<category><![CDATA[Tests]]></category>
		<category><![CDATA[Workshop]]></category>
		<guid isPermaLink="false">https://akirchknopf-21110.php.fhstp.cc/?p=7726</guid>

					<description><![CDATA[<p>In meinem letzten Blogartikel haben wir uns mit den Grundlagen von JMeter befasst, einen ersten Testplan geschrieben, und die Analyse mit verschiedenen Listeners ausgewertet. Aufbauend darauf, widmen wir uns im folgenden Beitrag einigen fortgeschrittenen Funktionen. Dies ist keine Lektion für Anfänger. Um diesem Tutorial folgen zu können, ist es notwendig, die grundlegenden Kenntnisse von JMeter <a class="read-more" href="https://mobile.fhstp.ac.at/tests/jmeter-tutorial-2-datenbanken-web-services-und-ftp/">[...]</a></p>
<p>The post <a href="https://mobile.fhstp.ac.at/tests/jmeter-tutorial-2-datenbanken-web-services-und-ftp/">JMeter Tutorial 2: DB, Web-Services und FTP</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></description>
										<content:encoded><![CDATA[<p>In meinem letzten Blogartikel haben wir uns mit den Grundlagen von JMeter befasst, einen ersten Testplan geschrieben, und die Analyse mit verschiedenen Listeners ausgewertet. Aufbauend darauf, widmen wir uns im folgenden Beitrag einigen fortgeschrittenen Funktionen.</p>
<p>Dies ist keine Lektion für Anfänger. Um diesem Tutorial folgen zu können, ist es notwendig, die grundlegenden Kenntnisse von JMeter zu beherrschen, welche in <a href="https://akirchknopf-21110.php.fhstp.cc/tests/websitetesting-mit-jmeter/">diesem Beitrag</a> behandelt werden. Auch grundlegende SQL-Kenntnisse sowie Erfahrungen mit phpMyAdmin sind von Vorteil.</p>
<h1><strong>Datenbank – Testing mit JMeter</strong></h1>
<h2><strong>Vorbereitungen</strong></h2>
<p>Im ersten Abschnitt dieses Tutorials werden wir einen Testplan zum Testen eines Datenbankservers erstellen, wiederum mehrere User simulieren, die parallel viele Datenbank-Requests an den Server senden.</p>
<p>Zu Beginn benötigen wir eine SQL-Datenbank mit einer Tabelle. Dafür verwende ich den lokalen Testserver XAMPP und phpMyAdmin als Admin-Panel. Natürlich kannst Du auch gerne ein anderes Datenbanksystem verwenden.</p>
<p>Nun erstelle ich eine kleine Tabelle mit ein paar Testdatensätzen. (siehe Abbildung) Der Name meiner Datenbank lautet: Personen.</p>
<p><div id="attachment_7722" style="width: 582px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild1.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7722" class="wp-image-7722 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild1.jpg" alt="Datenbanktabelle mit Testdaten" width="572" height="168" /></a><p id="caption-attachment-7722" class="wp-caption-text">Datenbanktabelle mit Testdaten</p></div></p>
<p>Im nächsten Schritt müssen wir JMeter mit der Datenbank verbinden. Dazu benötigen wir den sogenannten MySQL-Connector, also einen Treiber, der uns über die ODBC-Programmschnittstelle einen Datenbankzugriff ermöglicht.</p>
<p>Dazu gehen wir in den Downloadbereich der Seite: <a href="https://dev.mysql.com/downloads/connector/j/5.1.html" target="_blank" rel="noopener">dev.mysql.com</a></p>
<p>Etwas weiter unten gibt es den MySQL-Connector als Zip-File zum Download. Den Zip-Folder entpacken wir und suchen uns das darin enthaltene JAR-File heraus. Bei mir lautet der Dateiname: <strong>mysql-connector-java-5.1.46.</strong> Bei Verwendung einer anderen (aktuelleren) Version wird die Datei logischerweise mit einer anderen Versionsnummer gekennzeichnet sein.</p>
<p>Diese Datei kopieren wir nun in den Ordner „lib“ unseres JMeter-Verzeichnisses.</p>
<h2><strong>Testplan</strong></h2>
<p>Wie wir es bereits aus dem letzten Tutorial kennen, beginnen wir auch hier unseren Testplan wieder mit der Erstellung einer Thread-Group. Um es einfach zu halten, simulieren wir 10 User zu je 10 Wiederholungen.</p>
<p><div id="attachment_7723" style="width: 949px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild2.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7723" class="wp-image-7723 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild2.jpg" alt="Thread-Gruppe" width="939" height="393" /></a><p id="caption-attachment-7723" class="wp-caption-text">Thread-Gruppe</p></div></p>
<p>Als nächstes fügen wir ein <strong>JDBC-Connection-Configuration-Element</strong> ein der Thread-Group ein. (<em>Rechtsklick auf Thread-Group / Hinzufügen / Konfigurationselement / JDBC-Connection-Configuration)</em>.</p>
<p>Hier können wir nun im Abschnitt „Database Connection Configuration“ eine Verbindung zur Datenbank herstellen. In der Datenbank-URL geben wir den Link zur Datenbank an, und am Ende (Nach dem Schrägstrich) den Namen der Datenbank. Gleich darunter geben wir den Namen des Treibers, welchen wir vorhin installiert haben, an. (com.mysql.jdbc.Driver)</p>
<p>Wichtig ist hier auch das Feld „Variable Name for created pool“. Damit geben wir der Datenbankverbindung den Namen „test“. Wozu wir das brauchen, sehen wir später.</p>
<p><div id="attachment_7724" style="width: 976px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild3.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7724" class="wp-image-7724 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild3.jpg" alt="JDBC-Connection Configuration" width="966" height="535" /></a><p id="caption-attachment-7724" class="wp-caption-text">JDBC-Connection Configuration</p></div></p>
<p>Nun können wir uns endlich dem Wesentlichen widmen. Wir erstellen einen JDBC-Request <em>(Rechtsklick auf Thread-Group / Hinzufügen / Sampler / JDBC Request).</em></p>
<p>Mit diesem Sampler können wir nun einen SQL-Request an die Datenbank senden. Ich gebe nun einen SQL-Befehl zur Auswahl aller Datensätze der Tabelle Personen im Feld Query ein:</p>
<blockquote><p>select * from personen</p></blockquote>
<p>Im Feld Query Type wählen wir „Select Statement“ aus. Auch hier gibt es wieder ein Feld in dem ein Variable-Name zu vergeben ist. Auch hier geben wir wieder den Namen „test“ an, um JMeter zu sagen, auf welche Datenbankverbindung es sich beziehen soll. Jeder JDBC-Request benötigt also einen klaren Bezug zu einer Datenbank. Selbstverständlich können sich auch mehrere Requests auf dieselbe Datenbank beziehen.</p>
<p><div id="attachment_7725" style="width: 1002px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild4.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7725" class="wp-image-7725 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild4.jpg" alt="JDBC-Request" width="992" height="311" /></a><p id="caption-attachment-7725" class="wp-caption-text">JDBC-Request</p></div></p>
<p>Damit wir unser Ergebnis auch betrachten können, benötigen wir noch einen Listener. Was ein Listener ist, haben wir bereits im vorherigen Kurs kennen gelernt. Ich füge einen Results-Tree und eine Ergebnistabelle hinzu.</p>
<p>Mein Testplan sieht nun so aus:</p>
<p><div id="attachment_7715" style="width: 351px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild5.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7715" class="wp-image-7715" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild5.jpg" alt="Testplan mit JDBC-Connection" width="341" height="165" /></a><p id="caption-attachment-7715" class="wp-caption-text">Testplan mit JDBC-Connection</p></div></p>
<h2><strong>Ergebnis</strong></h2>
<p>Nun können wir den Test ausführen, und die Ergebnisse im Results Tree betrachten. Wie wir hier sehen, haben alle Requets funktioniert. Im Reiter „Response data“ sehen wir auch die zurückgelieferten Daten.</p>
<p><div id="attachment_7716" style="width: 677px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild6.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7716" class="wp-image-7716 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild6.jpg" alt="View Results Tree mit Ergebnissen der JDBC-Requests" width="667" height="320" /></a><p id="caption-attachment-7716" class="wp-caption-text">View Results Tree mit Ergebnissen der JDBC-Requests</p></div></p>
<h1><strong>Web-Services (API)</strong></h1>
<h2><strong>Was ist ein Web-Service?</strong></h2>
<p>Ein Web-Service ist ein Dienst zur Kommunikation zwischen Client und Server auf Basis von HTTP oder HTTPS über ein Netzwerk. Dabei werden meist Daten ausgetauscht und Funktionen ausgeführt. Jeder Web-Service besitzt eine URI (Uniform Resource Identifier) über die wer eindeutig identifizierbar ist.<br />
Wenn Du beispielsweise über eine Online-Plattform einen Flug buchst oder eine Bestellung abwickelst, kommen dabei Webservices zum Einsatz.</p>
<h2><strong>Webservice Schnittstellen: REST und SOAP</strong></h2>
<p>Bei <u>REST (Representational State Transfer)</u> wird versucht, die Schnittstelle auf eine Reihe vordefinierter Standartoperationen (GET, PUT, POST, DELETE,…) zu beschränken. Der Schwerpunkt von REST liegt auf der Maschine-zu-Maschine-Kommunikation und der Interaktion von zustandslosen Ressourcen. Welches Datenformat die Serverantwort liefert, wird durch REST nicht spezifiziert!</p>
<h3><strong>Rest-Prinzipien</strong></h3>
<ul>
<li><strong>Adressierbarkeit</strong>: Jeder Dienst bzw. jede Ressource hat einen eindeutigen URI (Uniform Resource Identifier)</li>
<li><strong>Unterschiedliche</strong> <strong>Repräsentationen</strong>: Je nach Anwendung kann ein REST Server unterschiedliche Repräsentationen der Daten ausliefern (JSON, XML, HTML,…)</li>
<li><strong>Zustandslosigkeit</strong> (stateless)</li>
</ul>
<p>Jede Anfrage enthält sämtliche Informationen die zur Abarbeitung nötig sind</p>
<p><u>SOAP (Simple Object Access Protokoll)</u> ist ein vom World Wide Web Consortium (W3C) unterstützter Standard für den Nachrichtenaustausch zwischen verteilten Systemen. Zur Repräsentation von Daten stützt sich SOAP meist auf XML und zu deren Übertragung auf Internetprotokolle.</p>
<h2><strong>Testen eines REST-Web-Services</strong></h2>
<p>Wie gewohnt, beginnen wir auch hier wieder mit einer Thread-Group und fügen dieser einen http-Request hinzu. <em>(Hinzufügen / Sampler / http-Request) </em></p>
<p>Als nächstes benötigen wir eine frei verfügbare REST-API, die wir später auch testen können.<br />
Die Website <a href="https://openweathermap.org/">https://openweathermap.org/</a>  stellt globale Wetterdaten kostenlos zur Verfügung und liefert diese über eine API aus.</p>
<p>Die API kann nur mit gültigem API-Key genutzt werden, dessen Verfügbarkeit eine Registrierung voraussetzt. Diese Registrierung ersparen wir uns aber, und verwenden stattdessen einen frei verfügbaren Test-API-Call, der zwar keine Verbindung zum echten API-Dienst hat, aber dennoch Daten zurückliefert.</p>
<p>Auf folgenden Unterseiten können wir nochmals genau nachlesen, wie auf die API zugegriffen werden kann und wie ein API-Call aufgebaut wird:</p>
<p><a href="https://openweathermap.org/appid">https://openweathermap.org/appid</a><br />
<a href="https://openweathermap.org/current">https://openweathermap.org/current</a></p>
<p>Im zweiten Link finden wir unter anderem auch ein Beispiel für einen API-Call der uns Wetterdaten über London liefert:</p>
<p><a href="http://samples.openweathermap.org/data/2.5/weather?q=London,uk&amp;appid=b6907d289e10d714a6e88b30761fae22">api.openweathermap.org/data/2.5/weather?q=London</a></p>
<p>Wenn wir den Call nun im Browser aufrufen erhalten baut sich die nachstehende URL zusammen, und liefert und ein JSON-Objekt retour.</p>
<p><a href="http://samples.openweathermap.org/data/2.5/weather?q=London,uk&amp;appid=b6907d289e10d714a6e88b30761fae22">http://samples.openweathermap.org/data/2.5/weather?q=London,uk&amp;appid=b6907d289e10d714a6e88b30761fae22</a></p>
<p>Soweit so gut! Bevor wir aber jetzt wieder mit JMeter weiterarbeiten, wollen wir noch genauer verstehen, woraus sie der API-Call zusammensetzt und was die einzelnen Fragmente darstellen. Die nachstehende Liste soll dabei Aufschluss geben:</p>
<ul>
<li>samples.openweathermap.org = Webserver und/oder API-Name</li>
<li>/data/2.5/weather = Pfad</li>
<li>q=London,uk = 1. Parameter &#8220;q&#8221;: Stadt und Länderkürzel</li>
<li>appid=b6907d289e10d714a6e88b30761fae22 = 2. Parameter: appid</li>
</ul>
<p>Jetzt müssen wir den Call nur noch dem Testplan hinzufügen. Den Servername und den Pfad kopieren wir einfach in das entsprechende Feld. Die beiden Parameter fügen wir als Key-Value-Pairs der Tabelle hinzu. Am Ende sollte es dann so aussehen:</p>
<p><div id="attachment_7717" style="width: 943px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild7.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7717" class="wp-image-7717 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild7.jpg" alt="HTTP-Request" width="933" height="303" /></a><p id="caption-attachment-7717" class="wp-caption-text">HTTP-Request</p></div></p>
<p>Wenn wir dem Testplan nun einen Listener hinzufügen und dann ausführen, werden wir sehen, dass der Request das JSON-Objekt zurückliefert.</p>
<p><div id="attachment_7718" style="width: 916px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild8.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7718" class="wp-image-7718 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild8.jpg" alt="Response Data" width="906" height="110" /></a><p id="caption-attachment-7718" class="wp-caption-text">Response Data</p></div></p>
<h1><strong>FTP-Requests</strong></h1>
<p>Im unserem dritten und letzten Abschnitt lernen wir, wie man eine FTP-Site mit JMeter testet. Auch hier erstellen wir wieder eine Thread-Gruppe, mit der wir später einen Benutzer simulieren werden. Dieser soll beim Ausführen unseres Tests eine Datei vom Server herunterladen.</p>
<p>Dazu fügen wir nun einen FTP-Request der Thread-Group hinzu. <em>(Rechtsklick auf die Thread-Group / Hinzufügen / Sampler / FTP-Anfrage)</em></p>
<p>Nun benötigen wir noch einen Webserver mit FTP-Zugang. Ich verwende dafür einen meiner privaten Webspaces und gebe deren Verbindungsdaten in der Detailansicht der FTP-Anfrage ein (Servername, Username, Passwort).</p>
<p><div id="attachment_7719" style="width: 965px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild9.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7719" class="wp-image-7719 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild9.jpg" alt="FTP Request" width="955" height="272" /></a><p id="caption-attachment-7719" class="wp-caption-text">FTP Request</p></div></p>
<p>Als nächstes stelle ich über den FTP-Client eine Verbindung zum Server her und lade via Drag and Drop eine Datei (folder.php) in das Root-Verzeichnis. Es bleibt dir selbst überlassen, welche Datei du hierfür verwendest. Wichtig ist nur, dass sie nicht zu groß ist.</p>
<p><div id="attachment_7720" style="width: 477px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild10.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7720" class="wp-image-7720 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild10.jpg" alt="Dateiverzeichnis" width="467" height="70" /></a><p id="caption-attachment-7720" class="wp-caption-text">Dateiverzeichnis</p></div></p>
<p>Als nächstes wollen wir mit JMeter diese Datei vom Server wieder runterladen. Dafür ergänzen wir die Details der FTP-Anfrage wie folgt:</p>
<p>Wir geben den Namen der Datei an (folder.php), sowie den lokalen Speicherort an. Wichtig ist außerdem auch, dass wir die Get-Methode auswählen.</p>
<p><div id="attachment_7721" style="width: 943px" class="wp-caption aligncenter"><a href="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild11.jpg"><img loading="lazy" decoding="async" aria-describedby="caption-attachment-7721" class="wp-image-7721 size-full" src="https://akirchknopf-21110.php.fhstp.cc/wp-content/uploads/2018/05/jmeter2_bild11.jpg" alt="FTP-Request mit Dateipfaden (JMeter)" width="933" height="269" /></a><p id="caption-attachment-7721" class="wp-caption-text">FTP-Request mit Dateipfaden</p></div></p>
<p>Nun können wir noch einen Listener hinzufügen und den Test starten. Wenn Du alles richtig gemacht hast, sollte nun die angegebene Datei vom Webserver in das angegebene Verzeichnis transferiert werden.</p>
<p>In diesem Tutorium haben wir uns fortgeschrittenes JMeter-Wissen angeeignet und dabei gelernt, wie man die Verfügbarkeit von Daten in einer Datenbank, die Funktion eines Web-Services, sowie den Datentransfer via FTP prüft. Damit sind wir nun in der Lage, umfassende Benutzerinteraktionen zu simulieren und interaktive Systeme zu testen.</p>
<p>The post <a href="https://mobile.fhstp.ac.at/tests/jmeter-tutorial-2-datenbanken-web-services-und-ftp/">JMeter Tutorial 2: DB, Web-Services und FTP</a> appeared first on <a href="https://mobile.fhstp.ac.at">Mobile USTP MKL</a>.</p>
]]></content:encoded>
					
		
		
			</item>
	</channel>
</rss>
