AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein Was sind eigentlich Unittests genau?
Thema durchsuchen
Ansicht
Themen-Optionen

Was sind eigentlich Unittests genau?

Ein Thema von BUG · begonnen am 14. Mai 2008 · letzter Beitrag vom 17. Jun 2008
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#1

Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 14:23
Hallo zusammen,

man findet bei Artikel über Softwareentwicklung öfter mal die sog. "Unittests", sucht man aber danach, findet man kaum/keine Erläuterungen, sondern nur dazugehörige Bibliotheken.

Hier kommt also meine Frage:
Was genau sind Unittest, wie funktionieren sie allgemein und wieso nutzt man dafür bestimmte Bibliotheken?

Ich hoffe auf Erleuchtung


MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 14:26
Unittests sind so eine Sache, die einen eingefleischten Delphianer durcheinander bringen können. Es geht nämlich nicht um Delphi-Units, sondern um abgeschlossene Programmeinheiten, die von außen als Blackbox wirken und gemäß einer Spezifikation ihre arbeit tun. An dieser Stelle kommen Unit-Tests, denen wird die Spezifikation gegeben und die testen dann die Programmeinheit gegen die Spezifikation.

Wohlgemerkt sind units in diesem Sinne nicht notwendigerweise komplette Applikationen sondern können auch nur eine einzelne Prozedur sein.

Sherlock
Oliver
  Mit Zitat antworten Zitat
Benutzerbild von idontwantaname
idontwantaname

Registriert seit: 31. Aug 2004
Ort: Traiskirchen
575 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 14:40
.. oder im objektorientierten Zeitalter auch Objekte. Eines der Grundprinzipien der Objektorientierten Programmierung ist ja die Kapselung bestimmter (Teil)Probleme in einem Objekt. Das Objekt soll von außen nur so weit beeinflussbar sein, dass man mit ihm arbeiten kann, allerdings dürfen durch ungewöhnliche Eingaben keine Fehler innerhalb eines Objektes entstehen. Solche Tests - denke ich mal - werden diese Kritierien testen
Oliver Hanappi
Besucht meine neue Homepage: http://oli.hux.de
  Mit Zitat antworten Zitat
Benutzerbild von Sherlock
Sherlock

Registriert seit: 10. Jan 2006
Ort: Offenbach
3.763 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 14:43
Genau!

Und ausserdem (ich hab das eben woanders gesehen...ich finds coool)

www.gidf.de/unittest



Sherlock
Oliver
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#5

Re: Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 14:51
Hallo,

und hier noch mal der Link.

http://dunit.sourceforge.net/

Warum diese Bibliothek.

Aaaaalso. ein Bsp.

Wir haben eine tolle Funktion:

Delphi-Quellcode:
function Add_One(const theValue: Integer): Integer;
begin
  Result:= theValue+1;
end;
uiui
nich schlecht

Aber jetzt kommt es.
Wie stellst du sicher, dass die Funktion auch das richtige Ergebnis liefert.

Delphi-Quellcode:
procedure Test__Add_One;
var
  iValue : Integer;
  iResult : Integer;
begin
  iValue:= 0;
  iResult:= Add_One(iValue);
  Assert(iResult=1);

  iValue:= 1;
  iResult:= Add_One(iValue);
  Assert(iResult=2);
end;
So, klappt !!!


Jetzt stell dir vor, wir Ändern/Erweitern die Funktion.
wenn negative Zahlen übergeben werden, soll 0 rauskommen
Das ist ein Bsp.!


Delphi-Quellcode:
function Add_One(const theValue: Integer): Integer;
begin
  Result:= 0;

  if theValue>0 then
  begin
    Result:= theValue+1
  end;
end;
Jetzt testen wir wieder und !!!
OK OK, habe ich extra so gemacht

Delphi-Quellcode:
 iValue:= 0;
  iResult:= Add_One(iValue);
  Assert(iValue=1); <<<--- hier kracht es
Ich habe einen Fehler eingebaut.
Bei 0 wird gar nichts übergeben, den Übergabe-Wert habe ich vergessen.
Vorher ging es aber !

Unit-Tests heisst, zuerst schreibe ich den Körper der Procedure/Funktion,
dann denke ich mir Tests aus, dann schreibe ich den Code
und probiere, ob meine Tests klappen.

Gerade bei Änderungen an existierendem Code kann es ebend
schon mal passieren, dass ein Fehler eingebaut wird.


dUnit erlaubt es jetzt, basierend auf einem Framework
Test-Code zu schreiben.
Die Testmethoden werden per RTTI ausgelesen.
Bsp. auf dem Link oben.

In unserem Bsp.

Delphi-Quellcode:
type
  TTestCase1 = class(TTestCase)
    published
      procedure Test__Add_One;
  end; { TTestCase }

procedure TTestCase1.Test__Add_One;
var
  iValue : Integer;
  iResult : Integer;
begin
  iValue:= 0;
  iResult:= Add_One(iValue);
  Check(iResult=1, "iResult<>1");

  iValue:= 1;
  iResult:= Add_One(iValue);
  Check(iResult=2);
end;
TTestCase1 wird über eine Framework-Methode
mit dunit verbunden und Test__Add_One ausgeführt,
Check ist ähnlich wie das Assert oben.


Das dUnit-Framework erstellt eine Exe, die die mit published
markierten Methoden der einzelnen TestCases ausführt.


Heiko
Heiko
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

Registriert seit: 4. Dez 2003
Ort: Cottbus
2.094 Beiträge
 
#6

Re: Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 15:07
OK, danke ...

ich hatte eine grobe Vorstellung (durch das Suchen im Netz), dachte aber es steckt mehr dahinter bzw. die Bibliotheken nehmen einem mehr ab.

MfG,
Bug
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
MathiasBurbach

Registriert seit: 29. Sep 2005
Ort: Sydney, Australien
6 Beiträge
 
Delphi 11 Alexandria
 
#7

Re: Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 15:18
Hallo Bug

Unittests können Dein Leben als Programmierer viel entspannter machen! Die Idee von Unittest ist es einzelne Klassen automatisiert zu testen, um so gewünschte Funktionalität prüfen zu können und schneller auf "Verschlimmbesserungen" aufmerksam zu werden. In Delphi kann man dazu DUnit oder DUnit2 (von Peter McNab und anderen) nutzen.

Beispiele, wie Du DUnit auf Deine DB-Anwendungen mit DatenModulen anwenden kannst findest Du hier.

Unittests sind Teil einer Softwareentwicklungsstrategie, die sich Extreme Programming nennt.

Salut,
Mathias
Mathias
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#8

Re: Was sind eigentlich Unittests genau?

  Alt 14. Mai 2008, 15:23
Hallo,

nun ja, was mir noch fehlt bei dUnit.

- Recovery-Test
- bessere Suche der Methoden in dUnit


Heiko
Heiko
  Mit Zitat antworten Zitat
I.A

Registriert seit: 14. Jan 2007
83 Beiträge
 
#9

Re: Was sind eigentlich Unittests genau?

  Alt 15. Jun 2008, 20:18
Zitat von Sherlock:
Und ausserdem (ich hab das eben woanders gesehen...ich finds coool)

www.gidf.de/unittest
Find ich zum Kotzen in diesem Kontext hier. DENN ich habe bereits in Google geguckt und jetzt eben mit der Forensuche hier, womit ich das hier gefunden habe. Habe mir auch DUnit bereits gesaugt. Problem:

Ich habe Delphi 7 Personal ABER die visualclx wird vorausgesetzt und auch vclx. Ob das einfach mit vcl zu ersetzen geht, werde ich die nächsten Tage ausprobieren. Fragen werde ich hier nicht. Bin enntäuscht von dem Weg den die DP hier gegangen ist. War früher mal besser.

Bevor ich mit DUnit und Delphi 7 Personal weitere Versuche starte, gucke ich, wie es von den Teilnehmern der DP verlangt wird erst mal im Forum nach brauchbaren Infos. Ich weiß auch, das DUnit in Turbo Delphi bereits eingebaut ist. Turbo Delphi braucht aber 2 Minuten zum Start. Vielleicht ist für kleine Anwendungen oder für Tests kleinerer Units Delphi 7 Personal doch gar nicht so schlecht.

Jetzt such ich aber erst mal im Forum nach weiteren Infos zu DUnit.
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.270 Beiträge
 
Delphi 10.4 Sydney
 
#10

Re: Was sind eigentlich Unittests genau?

  Alt 16. Jun 2008, 08:23
Hallo,

also bei meiner DUnit wird das nicht vorausgesetzt.
Kopier mal die DUnit-Dateien in dein Projektverzeichnis.

Erzeuge dann ein neues Projekt und
ändere den DPR-Quelltext etwa wie unten ab.

Delphi-Quellcode:
program DUnit_Tests;
uses
  Forms,
  MemCheck, // mem check ist immer gut, musst du aber nicht
  SysUtils,
  GUITestRunner,
  _ProjectTestCases; // das ist von mir, hier stehen die von TTestCase abgeleiteten Testklassen

{$R *.RES}

begin
 {$IFDEF MEMCHECK}
  MemChk;
 {$ENDIF}

  Application.Initialize;

  TGUITestRunner.runRegisteredTests;
end.

Heiko
Heiko
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 16:35 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz