Posts Tagged ‘ Akzeptanztests

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';
}
?>