FPCUnit oder FPTest
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
FPCUnit oder FPTest
Hi,
da bei meiner aktuellen Coderei es etwas schwierig ist, sich mit dem Debugger durch die diversen miteinander zusammenwirkenden Prozeduren und Funktionen durchzuwühlen, habe ich mir mal das Thema Unit Testing angesehen.
Im Wiki von Freepascal steht ja schon einiges und es gibt auch ein paar weiterführende Links. Folgender geht leider nicht: http://www.freepascal.org/olddocs-html/fpcunit.pdf
Kennt ihr noch weitere Tutorials/Erklärungen zum Unittesting unter Lazarus... vielleicht sogar mal was in Deutsch? Ich komme zwar mit dem Englischen soweit klar, aber da mir Unittesting an sich noch völlig neu ist, ist die Sprachbarriere nervig.
da bei meiner aktuellen Coderei es etwas schwierig ist, sich mit dem Debugger durch die diversen miteinander zusammenwirkenden Prozeduren und Funktionen durchzuwühlen, habe ich mir mal das Thema Unit Testing angesehen.
Im Wiki von Freepascal steht ja schon einiges und es gibt auch ein paar weiterführende Links. Folgender geht leider nicht: http://www.freepascal.org/olddocs-html/fpcunit.pdf
Kennt ihr noch weitere Tutorials/Erklärungen zum Unittesting unter Lazarus... vielleicht sogar mal was in Deutsch? Ich komme zwar mit dem Englischen soweit klar, aber da mir Unittesting an sich noch völlig neu ist, ist die Sprachbarriere nervig.
Ich mag Pascal...
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: FPCUnit oder FPTest
Hi,
ich habe mal den Betreff dieses Threads geändert, weil ich bei meinen Recherchen jetzt auf einen Fork(?) von FPCUnit gestoßen bin: FPTest. In Lazarus ist ja FPCUnit verbaut, Im FPTest-Wiki steht, das FPTest besser wäre, weil es manche Macken(?) von FPCUnit nicht übernommen hätte.
Wie seht ihr das? Lässt sich FPTest in Lazarus einbinden und vor allem: lohn sich das?
ich habe mal den Betreff dieses Threads geändert, weil ich bei meinen Recherchen jetzt auf einen Fork(?) von FPCUnit gestoßen bin: FPTest. In Lazarus ist ja FPCUnit verbaut, Im FPTest-Wiki steht, das FPTest besser wäre, weil es manche Macken(?) von FPCUnit nicht übernommen hätte.
Wie seht ihr das? Lässt sich FPTest in Lazarus einbinden und vor allem: lohn sich das?
Ich mag Pascal...
Re: FPCUnit oder FPTest
Meine (vielleicht falsche) Meinung zu diesem Mode-Thema: Solange du noch mit dem Debugger Fehler in deinem Programm suchen musst, ist Unit-Testing nichts. Ich habe in fpspreadsheet von meinem Vorgänger eine Testumgebung übernommen und kämpfe die meiste Zeit damit, die Fehler in den neuen Testroutinen zu finden. Denn es muss klar sei: auch die Tests sind Software und können Fehler haben.
Der Vorteil kommt erst dann zum Tragen, wenn man weitgehend laufende Routinen hat und sich zur Qualitätssicherung einen Satz von Testprozeduren zusammenstellt. Dann kann man man dann schnell durchlaufen lassen, wenn man die Codebasis verändert hat, und kann so sicherstellen, dass alles noch funktioniert wie vorher. Dazu möchte ich das nicht mehr missen. Praktisch ist auch, dass man relativ stur irgendwelche Testparameter einsetzen kann, und automatisch prüfen lässt, was man von Hand kaum machen würde.
Falls du dir das mal anschauen willst, lade dir fpspreadsheet von ccr und starte spreadtestgui im Ordner tests.
Der Vorteil kommt erst dann zum Tragen, wenn man weitgehend laufende Routinen hat und sich zur Qualitätssicherung einen Satz von Testprozeduren zusammenstellt. Dann kann man man dann schnell durchlaufen lassen, wenn man die Codebasis verändert hat, und kann so sicherstellen, dass alles noch funktioniert wie vorher. Dazu möchte ich das nicht mehr missen. Praktisch ist auch, dass man relativ stur irgendwelche Testparameter einsetzen kann, und automatisch prüfen lässt, was man von Hand kaum machen würde.
Falls du dir das mal anschauen willst, lade dir fpspreadsheet von ccr und starte spreadtestgui im Ordner tests.
- m.fuchs
- Lazarusforum e. V.
- Beiträge: 2639
- Registriert: Fr 22. Sep 2006, 19:32
- OS, Lazarus, FPC: Winux (Lazarus 2.0.10, FPC 3.2.0)
- CPU-Target: x86, x64, arm
- Wohnort: Berlin
- Kontaktdaten:
Re: FPCUnit oder FPTest
Marsmännchen hat geschrieben:Im FPTest-Wiki steht, das FPTest besser wäre, weil es manche Macken(?) von FPCUnit nicht übernommen hätte.
Wie seht ihr das? Lässt sich FPTest in Lazarus einbinden und vor allem: lohn sich das?
Hm, ich habe FpTest noch nie ausprobiert, aber die Argumente im Wiki gelesen. So richtig kann ich es nicht nachvollziehen.
But FPCUnit has some design flaws which makes it mostly useful for smaller projects and less complicated test suites.
Hm was sind komplizierte Testsuites und wie lange ist ein Projekt "smaller"? Ich habe hier größere Projekte mit ein paar hundert Testfällen problemlos laufen. Und kompliziert sollten Tests sowieso nicht sein, sondern möglichst leicht verständlich.
FPCUnit's test decorators, Setup/Teardown etc is severely broken.
Keine Ahnung was damit gemeint ist, da müsste der Autor mal ein paar Beispiele geben. Ich bin bisher noch nicht auf größere Probleme gestoßen.
Mein Tipp daher: fang mit FPCUnit an, das sollte meines Erachtens ausreichen. Wenn du wirklich an Grenzen stößt, soll der Wechsel ja nicht allzu kompliziert sein.
Software, Bibliotheken, Vorträge und mehr: https://www.ypa-software.de
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: FPCUnit oder FPTest
Hi,
Versteh ich nicht ganz: wie suchst du denn Fehler? Unittesting und TDD habe ich bisher noch nie angefasst, da es für meine Coderei ein wenig... overdressed wäre . Aber von der Logik her, schien es mir eigentlich ein guter Ansatz zu sein um robusten Code zu schreiben. Oder entfache ich hier einen Glaubenskrieg? Ansonsten habe ich mir für mein aktuelles Projekt erstmal damit beholfen, dass ich mir eine schnelle Testprozedur geschrieben habe, die mir den Initialisierungskram abnimmt. Ich kann jetzt in meinen Routinen einfach Haltepunkte setzen, wo ich nachgucken muss und gdb zeigt mir relativ brav die mich interessierenden Werte an.
Parallel dazu werde ich mal einen Blick auf FPCUnit werfen (danke an m.fuchs) und schauen, ob ich damit warm werde. Blöd nur, dass die Doku nicht mehr vollständig ist (s. meinen ersten Post. Der defekte Link zeigte meines Erachtens auf die Doku). Aber FPCUnit soll ja mit DUnit weitgehend identisch sein. Vielleicht kann ich ja von da Infos saugen. Mach ich mit Freepascal auch immer wieder (Delphitreff ist da eine schöne Fundgrube).
wp_xyz hat geschrieben:...Solange du noch mit dem Debugger Fehler in deinem Programm suchen musst, ist Unit-Testing nichts.
Versteh ich nicht ganz: wie suchst du denn Fehler? Unittesting und TDD habe ich bisher noch nie angefasst, da es für meine Coderei ein wenig... overdressed wäre . Aber von der Logik her, schien es mir eigentlich ein guter Ansatz zu sein um robusten Code zu schreiben. Oder entfache ich hier einen Glaubenskrieg? Ansonsten habe ich mir für mein aktuelles Projekt erstmal damit beholfen, dass ich mir eine schnelle Testprozedur geschrieben habe, die mir den Initialisierungskram abnimmt. Ich kann jetzt in meinen Routinen einfach Haltepunkte setzen, wo ich nachgucken muss und gdb zeigt mir relativ brav die mich interessierenden Werte an.
Parallel dazu werde ich mal einen Blick auf FPCUnit werfen (danke an m.fuchs) und schauen, ob ich damit warm werde. Blöd nur, dass die Doku nicht mehr vollständig ist (s. meinen ersten Post. Der defekte Link zeigte meines Erachtens auf die Doku). Aber FPCUnit soll ja mit DUnit weitgehend identisch sein. Vielleicht kann ich ja von da Infos saugen. Mach ich mit Freepascal auch immer wieder (Delphitreff ist da eine schöne Fundgrube).
Ich mag Pascal...
Re: FPCUnit oder FPTest
Erster Treffer bei Google, wenn man nach "fpcunit.pdf" sucht:
http://www.freepascal.org/~michael/articles/fpcunit/fpcunit.pdf
http://www.freepascal.org/~michael/articles/fpcunit/fpcunit.pdf
Re: FPCUnit oder FPTest
Marsmännchen hat geschrieben:Versteh ich nicht ganz: wie suchst du denn Fehler?
Na, mit dem Debugger. Aber nicht mit FPCUnit. Das zeigt mir, dass Fehler vorhanden sind, aber nicht wie sie zu beseitigen sind. Und dass man sich, um sich die Arbeit mit dem Debugger zu vereinfachen, kleinere Testprogramme schreiben muss, ist auch klar, aber das hat auch nichts mit FPCUnit zu tun.
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: FPCUnit oder FPTest
Wenn der Code mit Debugger schlecht zu debuggen ist, dann sollte man sich um sein Codedesign kümmern. Solange der Code nicht verständlich ist, sauber zu testen ist, ich meine damit das er auch mit Minimalbeispielen testber ist ! Solange braucht man über Unittesting nicht nachdenken. Besonders nicht was der unterschied zwischen den Versionen ist.
Um Code mit Unittesting zu testen muss dieser auch fähig sein in Minimalbeispielen zu laufen. Den das Unittesting macht eigentlich grob gesagt nichts anderes als den Codeteil in einem Minimalbeispiel unter kontrollierten Bedingungen ablaufen zu lassen. Dabei werden definierte Eingangswerte und Zustände verwendet und am Schluss geprüft ob das Ergebnis dem Erwarteten entspricht.
Wichtig ist, das diese Tests einfach, nachvollziehbar und WARTBAR sein müssen.
Daher, wenn man das nich erfüllt, zurūck an den Start und den Code sauber gestalten.
Andreas
Um Code mit Unittesting zu testen muss dieser auch fähig sein in Minimalbeispielen zu laufen. Den das Unittesting macht eigentlich grob gesagt nichts anderes als den Codeteil in einem Minimalbeispiel unter kontrollierten Bedingungen ablaufen zu lassen. Dabei werden definierte Eingangswerte und Zustände verwendet und am Schluss geprüft ob das Ergebnis dem Erwarteten entspricht.
Wichtig ist, das diese Tests einfach, nachvollziehbar und WARTBAR sein müssen.
Daher, wenn man das nich erfüllt, zurūck an den Start und den Code sauber gestalten.
Andreas
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).
-
- Beiträge: 294
- Registriert: So 4. Mai 2014, 21:32
- OS, Lazarus, FPC: Windows 10 64bit, Lazarus 2.0.10
- CPU-Target: 64bit
- Wohnort: Oranienburg
Re: FPCUnit oder FPTest
Achtzig hat geschrieben:Erster Treffer bei Google, wenn man nach "fpcunit.pdf" sucht:
http://www.freepascal.org/~michael/articles/fpcunit/fpcunit.pdf
... ich hab nach allem Möglichen gegoogelt, aber auf den bin ich nicht gekommen. Danke!
af0815 hat geschrieben:Wenn der Code mit Debugger schlecht zu debuggen ist, dann sollte man sich um sein Codedesign kümmern. Solange der Code nicht verständlich ist, sauber zu testen ist, ich meine damit das er auch mit Minimalbeispielen testber ist ! Solange braucht man über Unittesting nicht nachdenken. Besonders nicht was der unterschied zwischen den Versionen ist.
Ich würde noch nicht mal sagen, das mein Code schlecht zu debuggen ist. Ein Profi würde das vermutlich anders sehen . Aber wenn man einen komplexen Ablauf hat, bei dem diverse Funktionen zusammenwirken und deswegen immer ziemlich früh in den Debuggingablauf einsteigen muss und sich dann mit F7/F8 durch die Gegend klickt, dann ist das halt mühselig. Ich habs ja inzwischen auf vereinfacht, indem ich mir eine kleine Testroutine geschrieben habe, die mir Arbeit abnimmt. Trotzdem: du hast natürlich insgesamt recht!
Ich mag Pascal...
- af0815
- Lazarusforum e. V.
- Beiträge: 6209
- Registriert: So 7. Jan 2007, 10:20
- OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
- CPU-Target: 32Bit (64Bit)
- Wohnort: Burgenland
- Kontaktdaten:
Re: FPCUnit oder FPTest
Marsmännchen hat geschrieben:Ich habs ja inzwischen auf vereinfacht, indem ich mir eine kleine Testroutine geschrieben habe, die mir Arbeit abnimmt. Trotzdem: du hast natürlich insgesamt recht!
Dann bist du am richtigen Weg Das mit der Testroutine ist genaugenommen der Beginn von unittesting, nur das man die Routinen nicht verwirft sondern mit jeder (größeren) Änderung wieder ausführt und so quasi beweist, das der Kode trotz Änderungen noch Ok ist.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).