Archive for the ‘ programmieren ’ Category

Installation CouchDB

Installation
Die Installation ist mittlerweile recht einfach.

Unter Mac gibt es ein "rund um wohl fühl Paket", welches direkt die Datenbank startet und als Trayicon oben in die Leiste Heftet.

Unter ubuntu/mint gibt es direkt ein Metapaket mit allen Abhängigkeiten

sudo apt-get install couchdb

nach der Installation ist die Datenbank unter http://127.0.0.1:5984 erreichbar.

couchDb bring weiterhin seine eigene Verwaltungsoberfläche mit die unter http://127.0.0.1:5984/_utils/ erreichbar ist.

In dieser Oberfläche kann man recht einfach neue Datenbanken erstellen, Konfigurationen ändern und vereinfacht in den bisherigen Datensätzen suchen.

DIY Kalender

Ich war auf der suche nach einem Kalender-Vorlage für das Din A7 Format welches 1 Woche auf zwei Seiten abbildet. Zusätzlich hatte ich die Anforderung das die seiten auf einer Din A4 Seite abgebildet werden (also 6 seiten auf einer).
Mit dem Druckertreiber hat es auch nicht so geklappt wie ich es mir vorgestellt hätte.

Also habe ich mir die mühe gemacht, und ein wenig programmiert. Dabei sind drei Templates entstanden.

Eine Woche auf einer Seite.
1w1p 2014.pdf
1w1p 2015.pdf

Eine Woche auf zwei seiten.
1w2p 2014.pdf
1w2p 2015.pdf

und zu guter letzt eine Woche auf zwei Seiten für din A7 auf din A4 gemünzt. Dh bei diesem Template muss man sich die seite noch selber zuschneiden. Dies ist für Drucker gedacht, die din A7 nicht mehr einziehen können.

1W2p din a7 auf din a4 2014.pdf
1W2p din a7 auf din a4 2015.pdf

Die vorlagen sind sehr schlicht gehalten:

Kalender Beispiel

FitNesse und Xebium

FitNesse ist ein Wiki welches gleichzeitig in der Lage ist, Oberflächentests ablaufen zu lassen.
Somit ist die Zugänglichkeit um Oberflächentests zu schreiben und zu dokumentieren recht gering, und man benötigt kaum technisches Wissen um dieses Wiki zu benutzen. Allerdings benötigt man ein wenig Einarbeitung, wie ein Test zu schreiben ist.

Allerdings gibt es für FitNesse eine Erweiterung die sich Xebium nennt. Sie ermöglicht es Selenium-Tests, die mit der IDE aufgenommen worden sind, innerhalb von FitNesse abspielen zu lassen.

Allerdings muss man beim exportieren darauf achten, dass die Tests mit dem Xebium formatter exportiert werden.

Damit wird das schreiben von Oberflächen noch einfacher.

Was allerdings anzumerken ist – wenn man möchte das die Tests gegen ein Selenium hub laufen soll sollte man beachten das bei setBrowser ein json string übergeben wird:

{ „name“: „Foo bar test“,
„remote“: „http://localhost:4444/wd/hub“,
„platform“:“ANY“,
„browserName“:“chrome“ }

Selenium und PhpUnit

PhpUnit bietet eine Möglichkeit Selenese Tests auszuführen. Zum einen kann man einen Test einzeln ablaufen lassen, zum anderen kann man einen Verzeichnispfad setzen, in dem alle .htm Dateien ausgeführt werden.

Leider ist es derzeit so, dass die Selenese Tests nicht gegen ein Selenium hub ausführbar sind.
Das liegt daran, dass die API von Selenium von 1 zu 2 geändert hat, da die IDE derzeit nur die API Version 1 unterstütz, sind Selenese tests gegen ein hub nativ nicht ausführbar.

Um den Server zu starten reicht hier der klassische aufruf:

java -jar selenium-server.jar

Im folgendem Listing ist ein kleiner Unittest und der dazu passende Selenese Test.
Dieser wird dann wie gewohnt mit phpunit ausgeführt.

php phpunit SeleneseTest.php 

PhpUnit-Test

<?php
  class SeleneseTest extends PHPUnit_Extensions_SeleniumTestCase {
    public static $browsers
      = array(
        array(
          "name"    => "Firefox",
          "browser" => "firefox",
          "host"    => "localhost",
        )
      );
 
    protected function setUp() {
      $this->setBrowser("*firefox");
      $this->setBrowserUrl("https://www.google.com/");
    }
 
    public function testMyTestCase() {
      $this->runSelenese("Pfad/zur/Datei.htm");
    }
  }
?>

Selenese-Test:

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head profile="http://selenium-ide.openqa.org/profiles/test-case">
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"/>
    <link rel="selenium.base" href="https://www.google.de/"/>
    <title>test</title>
</head>
<body>
<table border="1" cellpadding="1" cellspacing="1">
    <thead>
    <tr>
        <td rowspan="1" colspan="3">test</td>
    </tr>
    </thead>
    <tbody>
    <tr>
        <td>open</td>
        <td>/</td>
    </tr>
    <tr>
        <td>type</td>
        <td>id=gbqfq</td>
        <td>hallo welt2</td>
    </tr>
    <tr>
        <td>click</td>
        <td>id=gbqfb</td>
    </tr>
    <tr>
        <td>click</td>
        <td>id=gbqfb</td>
    </tr>
    <tr>
        <td>pause</td>
        <td>1500</td>
    </tr>
    <tr>
        <td>verifyTitle</td>
        <td>hallo welt2 - Google-Suche</td>
    </tr>
    </tbody>
</table>
</body>
</html>

Hier der Vollständigkeit halber das snipped für das Verzeichnis in dem die .htm Dateien zu finden sind:

<?php
require_once 'PHPUnit/Extensions/SeleniumTestCase.php';
 
class SeleneseTests extends PHPUnit_Extensions_SeleniumTestCase
{
    public static $seleneseDirectory = '/path/to/files';
}
?>