Tags:
create new tag
, view all tags

Perl Testumgebung

Werkzeuge

Für das Schreiben der Tests benutzen wir folgende CPAN-Module (Liste wird nach Bedarf erweitert):

  • Test::Class
  • Test::More
  • Test::Effects

Aufbau und Lokalisation der Tests

Bei Verwendung von Test::Class werden gewisse Konventionen befolgt:

  • Testmodule heissen in der Regel einfach Test.pm
  • die Testmodule sind als Suffixe zu bevorzugen, also z.B. CQ::User::Test und nicht Test::CQ::User
  • alle Testmodule befinden sich im Verzeichnis t/test/

Ort Bezeichnung
t/ Ort für die einzelnen Tests, alle mit der Endung .t, z.B. runtest.t
t/tests/ Enthält nur weitere Verzeichnisse, die mit dem Namen der zu testenden Module übereinstimmen
t/tests/CQ/Test.pm Enthält ein Testmodul zum Testen aller Basis-Funktionalitäten von CQ.pm
t/tests/CQ/User/Test.pm Testmodul für alle Tests von CQ::User
t/tests/CQ/Group/Test.pm Testmodul für alle Tests von CQ::Group

Dabei soll z.B. CQ::Test nur die Grundfunktionalitäten von CQ.pm testen, während CQ::User::Test die erweiterten Funktionalitäten von CQ::User testet. Beim Aufruf der Tests von CQ::User::Test werden dann automatisch auch die Tests von CQ::Test ausgeführt. Dies wird durch Test::Class bewerkstelligt.

Was soll getestet werden

Primär sollten Unit- und Integrationstests durchgeführt werden. Die API-Spezifikation des Moduls (perldoc) stellt dabei die Grundlage dar.

  • API Testing
    • tiefste Ebene
    • einzelne Methoden werden getestet (unabhängig von einander)
    • fehlerhafte Werte testen, z.B. ungültige E-Mail-Adresse
  • Procedural testing
    • Sequenzen von Methodenaufrufen werden getestet
    • soll den «normalen» Gebrauch des API darstellen
    • diese Tests sollen wenn möglich zuerst geschrieben werden
  • Data-driven testing
    • Grosse Mengen von Daten sollen mit dem zu testenden Modul gefüttert werden
    • z.B. viele User mit CQ::User erstellen, modifizieren und löschen, mit «echten» Daten aus der nethz-DB
    • eignet sich nicht für alle Module

Teil-Testumgebungen mit Basis.pm

Das wichtigste Modul, welches alle nethz-Applikationen benutzen, heisst Basis.pm. Es liest das globale Konfigurationsfile aus und stellt die Datenbankverbindung her. In der Regel haben wir nicht für alle Subsysteme eigene Testsysteme. Tests müssen daher manchmal in gemischten Umgebungen (Test / Produktion) ausgeführt werden. Um dies zu realisieren, müssen Testskripts ein zusätzliches Konfigurationsfile bereitstellen, welches mittels

use Basis config=>'my_special_config_file.cfg';

eingelesen wird. Es reicht, bloss die Angaben für die Test-Subsysteme in diesem Konfigurationsfile aufzuführen, die übrigen Angaben bleiben diesselben.

-- SwenVermeul - 2013-03-06

Topic revision: r2 - 2013-05-14 - vermeul
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2017 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback