<?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>Axel Jung &#187; test</title>
	<atom:link href="http://www.ajung.de/tag/test/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.ajung.de</link>
	<description>Privater Blog von Axel Jung aus Wiesbaden</description>
	<lastBuildDate>Tue, 22 Nov 2011 21:13:42 +0000</lastBuildDate>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.org/?v=3.3</generator>
		<item>
		<title>JMeter Testplan Parametrisieren</title>
		<link>http://www.ajung.de/2011/11/01/jmeter-testplan-parametrisieren/</link>
		<comments>http://www.ajung.de/2011/11/01/jmeter-testplan-parametrisieren/#comments</comments>
		<pubDate>Tue, 01 Nov 2011 19:43:33 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Test]]></category>
		<category><![CDATA[deployment]]></category>
		<category><![CDATA[jmeter]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=684</guid>
		<description><![CDATA[Es kann relativ aufwendig sein einen sinnvollen und realistischen Testplan mit JMeter zu erstellen. In unseren Fall wollte ich diesen Testplan auf verschiedenen Testumgebungen einsetzen und mal mit der JMeter Gui und mal auf der Konsole mittels Jenkins laufen lassen. Hierbei unterscheiden sich die Urls, Userdaten und Laufzeiten des Tests. Wenn ich den Plan kopiert [...]]]></description>
			<content:encoded><![CDATA[<p>Es kann relativ aufwendig sein einen sinnvollen und realistischen Testplan mit <a href="http://jakarta.apache.org/jmeter/">JMeter</a> zu erstellen. In unseren Fall wollte ich diesen Testplan auf verschiedenen Testumgebungen einsetzen und mal mit der JMeter Gui und mal auf der Konsole mittels Jenkins laufen lassen. Hierbei unterscheiden sich die Urls, Userdaten und Laufzeiten des Tests. Wenn ich den Plan kopiert hätte, wäre die Wartung sehr aufwendig.</p>
<h3>JMeter Properties</h3>
<p>Es gibt bei JMeter die Möglichkeit eine Properties Datei für den Testplan anzugeben.</p>
<pre>jmeter –p dev.properties –t testplan.jmx</pre>
<p>In dieser Datei kann man beispielsweise die Domain definieren.</p>
<pre>domain=example.com</pre>
<p>Im Testplan kann man auf diesen Wert dann wie folgt zugreifen:</p>
<pre>${__P(domain)}</pre>
<p>Man kann auch einen Default Wert angeben.</p>
<pre>${__P(domain,www.example.com)}</pre>
<h3><a href="http://www.ajung.de/wp-content/uploads/2011/11/jmeter_properties.jpg"><img class="alignnone size-full wp-image-685" title="jmeter_properties" src="http://www.ajung.de/wp-content/uploads/2011/11/jmeter_properties.jpg" alt="" width="444" height="240" /></a></h3>
<h3>JMeter Funktionen</h3>
<p>Mit dem JMeter Funktionen kann man noch einiges mehr machen. Beispielsweise: Daten aus einer <a href="http://jakarta.apache.org/jmeter/usermanual/functions.html#__CSVRead">CSV lesen</a> oder<a href="http://jakarta.apache.org/jmeter/usermanual/functions.html#__Random"> Zufallszahlen</a> verwendet.</p>
<p>http://jakarta.apache.org/jmeter/usermanual/functions.html</p>
<p>Im Hilfe Menü gibt es ein ganz praktisches Tool um mit den Funktionen zu arbeiten. Hierbei wird einem auch der richtige Code generiert.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/11/jmeter_help.jpg"><img class="alignnone size-medium wp-image-692" title="jmeter_help" src="http://www.ajung.de/wp-content/uploads/2011/11/jmeter_help-500x173.jpg" alt="" width="500" height="173" /></a></p>
<h3>Berechnungen</h3>
<p>Es lassen sich auch Berechnungen durchführen. Diese werden mit der Javascript Funktion gemacht:</p>
<pre>${__javaScript(${DURCHSATZ}/100*38.5)}</pre>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2011/11/01/jmeter-testplan-parametrisieren/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cloud Lasttest mit JMeter und Amazon</title>
		<link>http://www.ajung.de/2011/10/27/cloud-lasttest-mit-jmeter-und-amazon/</link>
		<comments>http://www.ajung.de/2011/10/27/cloud-lasttest-mit-jmeter-und-amazon/#comments</comments>
		<pubDate>Thu, 27 Oct 2011 20:53:31 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Test]]></category>
		<category><![CDATA[cloud]]></category>
		<category><![CDATA[test]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=667</guid>
		<description><![CDATA[Wir hatten die Aufgabe für eine Webseite Lasttests zu erstellen. Die zu erzeugende Last sollte sehr real sein. Da man mit einen einzigen Rechner nicht so eine hohe Last erzeugen kann haben wir uns für die Amazon Cloud entschieden. Dort kann man für einen kurzen Zeitraum eine hohe Zahl an Rechnern verwenden und das mit [...]]]></description>
			<content:encoded><![CDATA[<p>Wir hatten die Aufgabe für eine Webseite Lasttests zu erstellen. Die zu erzeugende Last sollte sehr real sein. Da man mit einen einzigen Rechner nicht so eine hohe Last erzeugen kann haben wir uns für die Amazon Cloud entschieden. Dort kann man für einen kurzen Zeitraum eine hohe Zahl an Rechnern verwenden und das mit sehr geringen Kosten.</p>
<p>Als Lasttest Tool wird JMeter verwendet. Mit JMeter kann man sehr granulare Testpläne erstellen und damit ein relativ gutes Abbild der realen Last simulieren.</p>
<p><a href="http://jakarta.apache.org/jmeter/" rel="nofollow">http://jakarta.apache.org/jmeter/</a></p>
<p>JMeter ist in der Lage die Tests über verteilte Rechner auszuführen. Dadurch kann man eine sehr große Last erzeugen.</p>
<p><a href="http://jakarta.apache.org/jmeter/usermanual/remote-test.html" rel="nofollow">http://jakarta.apache.org/jmeter/usermanual/remote-test.html</a></p>
<p>JMeter ist in der Lage alle Anfragen über einen Proxy laufen zu lassen. So kann man IP geschützte Seiten testen indem man die IP vom Proxy freischaltet. In unseren Fall verwenden wir den Squid Proxy mit einer geschützten Authentifizierung.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/10/proxy.png"><img class="alignnone size-medium wp-image-668" title="proxy" src="http://www.ajung.de/wp-content/uploads/2011/10/proxy-500x368.png" alt="" width="500" height="368" /></a></p>
<p>&nbsp;</p>
<h3>Vorbereitung</h3>
<h4>Proxy Server AMI erstellen</h4>
<p>In der Amazon Cloud gibt es sogenannte AMI (Amazon Machine Images). Das sind Abbildungen von Systemen die man erstellen kann um diese immer wieder zu verwenden.</p>
<h4>AMI erstellen</h4>
<p>AWS Management Console <a href="https://console.aws.amazon.com/ec2/" rel="nofollow">https://console.aws.amazon.com/ec2/</a> auf den Reiter ec2 wechseln und eine Instanz starten. Den  Rechner nach eigenen Wünschen anpassen und dann über das Menü „Instance Action“ eine AMI erstellen. Amazon erstellt dann von dem aktuellen System ein Abbild das man wiederverwenden kann.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/10/ami.jpg"><img class="alignnone size-full wp-image-669" title="ami" src="http://www.ajung.de/wp-content/uploads/2011/10/ami.jpg" alt="" width="580" height="486" /></a></p>
<h3>Squid Proxy in der Cloud installieren:</h3>
<p><a href="http://home.engineering.iastate.edu/%7Ehawklan/squidProxy/squidProxy.html" rel="nofollow">http://home.engineering.iastate.edu/~hawklan/squidProxy/squidProxy.html</a></p>
<p>Dieser Proxy muss natürlich abgesichert werden, da er sonst missbraucht werden könnte.</p>
<h3>Passwort Authentifizierung einrichten</h3>
<p>In der Squid Konforgurations Datei (/etc/squid/squid.conf) muss als erstes das Authentifizierungs Programm eingestellt werden. Es gibt diverse Möglichkeiten. ncsa_auth ist wahrscheinlich die einfachste. Man erzeugt mit htpasswd eine Passwort Datei (/etc/squid/squid_user) und gibt diese in der Konfiguration an.</p>
<div>
<div>
<div>
<div id="highlighter_860025">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div title="Hint: double-click to select code">
<pre><code>auth_param basic program /usr/lib64/squid/ncsa_auth /etc/squid/squid_user</code></pre>
<div> <code>acl jmeter proxy_auth REQUIRED</code></div>
<div><code>http_access allow jmeter</code></div>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>Der Proxy lässt sich damit nur noch mittels Usernamen und Passwort aufrufen.</p>
<h3>Caching auschalten</h3>
<p>Squid speichert die Anfragen normalerweise. Das würde aber das Ergebniss verfälschen. Deshalb muss man noch das Caching ausschalten. Dazu genügt es folgende Zeile in die Squid Konforgurations Datei (/etc/squid/squid.conf)  einzufügen.</p>
<pre>cache deny all</pre>
<h3>Proxy automatisch starten</h3>
<p>Damit der Proxy automatisch mit dem Starten der Instanz mit gestartet wird kann man in der Datei /etc/rc.local diesen Befehl eintragen /etc/init.d/squid start .</p>
<h3>Proxy starten</h3>
<p>In der AWS Management Console starten wir die vorgefertigte AMI.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/10/proxy1.jpg"><img class="alignnone size-medium wp-image-675" title="proxy" src="http://www.ajung.de/wp-content/uploads/2011/10/proxy1-500x128.jpg" alt="" width="500" height="128" /></a></p>
<h3>JMeter Master Server</h3>
<p>Für den JMeter Master Server verwenden wir einen vorgefertigte Windows AMI bei der JMeter vorinstalliert ist. Dieser Rechner kann dann über Remote Desktop bedient werden.</p>
<p>Auf den Master Server muss dann der Testplan kopiert werden.</p>
<p>Auf dem Master Server wird die Testausführung gesteuert.</p>
<h3>JMeter Slaves</h3>
<p>Die JMeter Slaves sind beliebig viele Linux Rechner auf denen der JMeter im Server Modus gestartet ist. Dafür benötigt man eine AMI auf der JMeter vorhanden ist und dieser Befehl Autostart (/etc/rc.local) ist</p>
<div>
<div>
<div>
<div id="highlighter_343846">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div title="Hint: double-click to select code">
<pre><code>{pathtojmeter}/bin/jmeter-server</code></pre>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<p>Dafür steht auch die öffentliche AMI zur Verfügung: <strong>ami-823f0df6</strong></p>
<p>Die Adressen der Slave Rechner müssen in die JMeter Properties Datei auf den Master Server eingetragen werden. So das dieser seine Remote Maschinen kennt.</p>
<h3>jmeter.properties</h3>
<div>
<div>
<div>
<div id="highlighter_379261">
<table border="0" cellspacing="0" cellpadding="0">
<tbody>
<tr>
<td>
<div title="Hint: double-click to select code">
<pre><code>remote_hosts=...,....</code></pre>
</div>
</td>
</tr>
</tbody>
</table>
</div>
</div>
</div>
</div>
<h3>Starten der Tests</h3>
<p>Wenn die Slaves hochgefahren sind kann der Testplan auf den Remote Servern gestartet werden.</p>
<p><a href="http://www.ajung.de/wp-content/uploads/2011/10/cloud.jpg"><img class="alignnone size-medium wp-image-670" title="cloud" src="http://www.ajung.de/wp-content/uploads/2011/10/cloud-500x310.jpg" alt="" width="500" height="310" /></a></p>
<p>&nbsp;</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2011/10/27/cloud-lasttest-mit-jmeter-und-amazon/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Selenium RC und Firefox 4</title>
		<link>http://www.ajung.de/2010/02/22/selenium-rc-und-firefox-3-6/</link>
		<comments>http://www.ajung.de/2010/02/22/selenium-rc-und-firefox-3-6/#comments</comments>
		<pubDate>Mon, 22 Feb 2010 19:30:22 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Allgemein]]></category>
		<category><![CDATA[Internet]]></category>
		<category><![CDATA[selenium]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[Unittests]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=602</guid>
		<description><![CDATA[Die Selenium-RC Version 1.0.1 ist leider nicht kompatibel mit dem neuen Firefox 4. Das Selenium Server Paket enthält einige Firefox Erweiterungen in denen eine maximale Kompatibilität zu Firefox 3.5 angegeben wurde. Diese Erweiterungen sind auch mit der Version 4 lauffähig, doch man muss die install.rdf Dateien anpassen. Anleitung zum modifizieren des Selenium RC Entpacke das [...]]]></description>
			<content:encoded><![CDATA[<p><a href="http://www.ajung.de/wp-content/uploads/2010/02/big-logo.png"><img class="alignright size-full wp-image-603" title="big-logo" src="http://www.ajung.de/wp-content/uploads/2010/02/big-logo.png" alt="" width="200" height="181" /></a>Die <a href="http://seleniumhq.org/projects/remote-control/">Selenium-RC</a> Version 1.0.1 ist leider nicht kompatibel mit dem neuen Firefox 4.</p>
<p>Das Selenium Server Paket enthält einige Firefox Erweiterungen in denen eine maximale Kompatibilität zu Firefox 3.5 angegeben wurde. Diese Erweiterungen sind auch mit der Version 4 lauffähig, doch man muss die <strong>install.rdf </strong>Dateien anpassen.</p>
<h2>Anleitung zum modifizieren des Selenium RC</h2>
<ol>
<li>Entpacke das Java Archiv selenium-server.jar</li>
<li>Suche alle Dateien mit dem Namen install.rdf in dem ausgepackten Verzeichnis.</li>
<li>Ändere in den Dateien den Wert &lt;em:maxVersion&gt;3.5.*&lt;/em:maxVersion&gt; auf &lt;em:maxVersion&gt;4.*&lt;/em:maxVersion&gt;</li>
<li>Erzeuge eine neue jar Datei
<ol>
<li style="text-align: left;">Gehe in der Kommando Zeile in das ausgepackte Verzeichnis</li>
<li style="text-align: left;">Stelle sicher dass das JDK im Pfad vorhanden ist.  (PATH=C:\Programme\Java\jdk1.6.0_18\bin)</li>
<li style="text-align: left;">Erzeuge die neue Jar Datei: jar -cvfm selenium-server.jar META-INF/MANIFEST.MF *</li>
</ol>
</li>
<li style="text-align: left;">Tausche die alte selenium-server.jar mit der neuen aus.</li>
</ol>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/02/22/selenium-rc-und-firefox-3-6/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>phpUnit Coverage Probleme mit doppelten Klassen</title>
		<link>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/</link>
		<comments>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/#comments</comments>
		<pubDate>Mon, 25 Jan 2010 13:43:28 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[PHP]]></category>
		<category><![CDATA[phpunit]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[Unittests]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=590</guid>
		<description><![CDATA[Bei der Erstellung der Codecoverage mit phpUnit bin ich schon mehrmals aus diesen PHP Fehler gestoßen: PHP Fatal error:  Cannot redeclare class Aus dem Code war kein Grund dafür ersichtlich da alle Dateien mit require_once eingebunden waren. Das Problem lag dabei in der Verwendung von Mock Klassen ohne diese vorher importiert zu haben. Ich kann [...]]]></description>
			<content:encoded><![CDATA[<p>Bei der Erstellung der Codecoverage mit phpUnit bin ich schon mehrmals aus diesen PHP Fehler gestoßen:</p>
<pre>PHP Fatal error:  Cannot redeclare class
</pre>
<p>Aus dem Code war kein Grund dafür ersichtlich da alle Dateien mit require_once eingebunden waren. Das Problem lag dabei in der Verwendung von Mock Klassen ohne diese vorher importiert zu haben.</p>
<p>Ich kann mit folgenden Code eine Object der Klasse <em>Example</em> erstellen ohne die original Klasse zu laden.</p>
<pre>$object = $this-&gt;getMock ( 'Example', array (), array (), '', false );</pre>
<p>Wenn danach die original Klasse <em>Example</em> importiert wird, ist diese schon deklariert und es kommt zu diesen Fehler. Abhilfe tut hier ein require_once im Test:</p>
<pre>require_once('path/to/Example.php');
$object = $this-&gt;getMock ( 'Example', array (), array (), '', false );
</pre>
<p>Dann klappt es auch mit der Coverage Auswertung.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2010/01/25/phpunit-coverage-probleme-mit-doppelten-klassen/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Praktisches Tool: IETester</title>
		<link>http://www.ajung.de/2008/08/07/praktisches-tool-ietester/</link>
		<comments>http://www.ajung.de/2008/08/07/praktisches-tool-ietester/#comments</comments>
		<pubDate>Thu, 07 Aug 2008 08:50:31 +0000</pubDate>
		<dc:creator>ajung</dc:creator>
				<category><![CDATA[Webwerkzeuge]]></category>
		<category><![CDATA[browser]]></category>
		<category><![CDATA[debug]]></category>
		<category><![CDATA[ie]]></category>
		<category><![CDATA[test]]></category>
		<category><![CDATA[tools]]></category>

		<guid isPermaLink="false">http://www.ajung.de/?p=16</guid>
		<description><![CDATA[Der IETester ist ein praktisches Tool zum Testen einer Webseite in verschiedenen Internet Explorer Versionen. Ich habe bereits mit einigen Tools herum probiert aber keines was so unproblematisch und schnell zu bedienen wie der IETester. Man startet nur ein einziges Tool und kann über Tabs die Seiten in verschiedenen Versionen testen. Das Tool lässt sich [...]]]></description>
			<content:encoded><![CDATA[<p>Der IETester ist ein praktisches Tool zum Testen einer Webseite in verschiedenen Internet Explorer Versionen. Ich habe bereits mit einigen Tools herum probiert aber keines was so unproblematisch und schnell zu bedienen wie der IETester.</p>
<p>Man startet nur ein einziges Tool und kann über Tabs die Seiten in verschiedenen Versionen testen. Das Tool lässt sich bedienen wie ein normaler Internet Explorer. Es hat Lesezeichen und die normalen Navigations-Funktionen.</p>
<p><img class="alignnone size-full wp-image-17" title="ietester" src="http://www.ajung.de/wp-content/uploads/2008/08/ietester.jpg" alt="" width="500" height="248" /></p>
<p>Das Tool ist kostenlos und kann bei <a href="http://www.my-debugbar.com/wiki/IETester/HomePage">My DebugBar</a> heruntergeladen werden.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.ajung.de/2008/08/07/praktisches-tool-ietester/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
	</channel>
</rss>

