Delphi-PRAXiS
Seite 2 von 3     12 3      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Softwaretests und Qualitätssicherung (https://www.delphipraxis.net/86-softwaretests-und-qualitaetssicherung/)
-   -   Unit Testing sinnvoll? (https://www.delphipraxis.net/155518-unit-testing-sinnvoll.html)

Mithrandir 27. Okt 2010 14:14

AW: Unit Testing sinnvoll?
 
Vor dem Hintergrund des GUI-Testings finde ich ja auch deshalb WPF so genial. Hier muss ich mich nicht mit Frameworks herumschlagen, die sich durch irgendwelche GUIs klicken, sondern ich erstell einfach n Test, der den Controller testet (vorrausgesetzt natürlich, ich arbeite mit einem entsprechenden Pattern). Die Ansicht ist ja dank Binding nur lose an den Controller gebunden.

Assarbad 27. Okt 2010 15:12

AW: Unit Testing sinnvoll?
 
Zitat:

Zitat von Mithrandir (Beitrag 1058126)
Vor dem Hintergrund des GUI-Testings finde ich ja auch deshalb WPF so genial. Hier muss ich mich nicht mit Frameworks herumschlagen, die sich durch irgendwelche GUIs klicken, sondern ich erstell einfach n Test, der den Controller testet (vorrausgesetzt natürlich, ich arbeite mit einem entsprechenden Pattern). Die Ansicht ist ja dank Binding nur lose an den Controller gebunden.

Naja ... TestComplete nutzt auch Instrumentation und klinkt sich so in den Code ein und "sieht" bspw. die VCL-Eigenschaften. Aber das ist m.E.n. ein Problem mit Delphi/BCB: beide fördern schlechte Programmierung, indem der Programmierer dazu verführt wird den Code direkt in die Ereignisbehandlungsroutinen zu packen. Das ist natürlich am Anfang eine feine Sache, aber später nicht gerade Sahne wenn man sowas warten muß. Siehe: http://de.wikipedia.org/wiki/3-Tier#...en-Architektur

Einige Architekturen fördern diese Trennung einfach besser. Aber mit etwas Disziplin läßt sich das auch in Delphi umsetzen.

Meflin 28. Okt 2010 13:34

AW: Unit Testing sinnvoll?
 
Zitat:

Zitat von Phoenix (Beitrag 1058088)
Wie oft macht man an Stelle A etwas und später fällt jemandem auf, dass an Stelle Q irgendwas nicht mehr funktioniert (durch Seiteneffekt der Änderung an A). Sowas decken die Unittests bei guter Abdeckung sofort auf und sparen dadurch massiv Zeit (Fehlersuche, wieder reindenken, nach der Änderung manuell alles durchtesten, wieder was vergessen, wieder später erneut suchen...).

Absolut. Schaut euch mal in anderen Sprach-Communities um (Ruby, Smalltalk, ...). Da ist es Gang und Gäbe zu "Units" auch die Tests mitzuliefern, was unter Anderem auch dazu führt, dass man ggf. nötige Anpassungen gefahrlos vornehmen kann.

Was agile Methoden betrifft, scheint mir die Delphi-Community allerdings etwas Yestercentury zu sein...

Net7 16. Jan 2011 18:22

AW: Unit Testing sinnvoll?
 
Zitat:

Zitat von Assarbad (Beitrag 1058148)
Zitat:

Zitat von Mithrandir (Beitrag 1058126)
Vor dem Hintergrund des GUI-Testings finde ich ja auch deshalb WPF so genial. Hier muss ich mich nicht mit Frameworks herumschlagen, die sich durch irgendwelche GUIs klicken, sondern ich erstell einfach n Test, der den Controller testet (vorrausgesetzt natürlich, ich arbeite mit einem entsprechenden Pattern). Die Ansicht ist ja dank Binding nur lose an den Controller gebunden.

Naja ... TestComplete nutzt auch Instrumentation und klinkt sich so in den Code ein und "sieht" bspw. die VCL-Eigenschaften. Aber das ist m.E.n. ein Problem mit Delphi/BCB: beide fördern schlechte Programmierung, indem der Programmierer dazu verführt wird den Code direkt in die Ereignisbehandlungsroutinen zu packen. Das ist natürlich am Anfang eine feine Sache, aber später nicht gerade Sahne wenn man sowas warten muß. Siehe: http://de.wikipedia.org/wiki/3-Tier#...en-Architektur

Einige Architekturen fördern diese Trennung einfach besser. Aber mit etwas Disziplin läßt sich das auch in Delphi umsetzen.

Hmm... heißt das, du rufst im Ereignis zb. OnBTN_Click eine Funktion zb. MaleAufCaptionEinenText auf?? Oder wägst du ab wie komplex die einzelnen Aufrufschritte sind.

Unwissender 16. Jan 2011 19:30

AW: Unit Testing sinnvoll?
 
Zitat:

Zitat von Net7 (Beitrag 1075100)
Hmm... heißt das, du rufst im Ereignis zb. OnBTN_Click eine Funktion zb. MaleAufCaptionEinenText auf?? Oder wägst du ab wie komplex die einzelnen Aufrufschritte sind.

Hi,

ohne das für Assabard beantworten zu wollen möchte ich schon mal sagen, dass die Antwort ganz klar JA lauten wird (so hätte ich das schon gesagte interpretiert) und so gilt das für saubere Entwicklung.

Die Komplexität der Ereignisbehandlung hat nichts damit zu tun ob oder wie die Trennung in verschiedene Schichten erfolgen soll. Der Grund dass man im einfachsten Fall das GUI von der Domänenlogik trennt liegt nicht darin, dass die Komplexität sinkt oder man leichter testen kann, vielmehr haben die beiden Schichten unterschiedliche "Lebenszeiten".
So kann sich ein GUI sehr schnell und häufig ändern, ohne dass das einen Einfluss auf die Fachlichkeit hat. Auch kann es gut sein, dass Du mehrere GUIs unterstützen musst, z.B. ein Webinterface, einen Fatclient und vielleicht noch mal eine extra Oberfläche für's Smartphone.

Nimmst Du also einfach immer und sofort die Trennung vor, dann geht das in Routine über, Du arbeitest gleich richtig und musst nicht überlegen ob die Komplexität jetzt hoch genug ist es zu trennen. Alles was nicht nur mit der Darstellung in einem GUI zu tun hat, gehört da einfach nicht rein. Dass Du so leichter testen oder das GUI austauschen kannst. Auch steigt die Wartbarkeit, keiner muss lange durch die Ereignisbehandlung gehen und schauen, ob hier noch Logik drinsteckt, die nichts mit der Anzeige zu tun hat. Entsprechend weißt Du auch schon, in welcher Schicht Du Änderungen einpflegen musst, für solche an der Fachlichkeit musst Du nicht durch ein GUI durch und dort die richtige Stelle suchen. Zuguter letzt kannst Du hier auch schöner sprechende Methodennamen verwenden, da die nun die Fachlichkeit beschreiben und nicht die Behandlung eines bestimmten Buttons, der gedrückt wurde.

Assarbad 17. Jan 2011 01:46

AW: Unit Testing sinnvoll?
 
Was soll man dem noch hinzufügen :zwinker:

In der Tat würde die Trennung immer erfolgen, da statt einer grafischen Benutzeroberfläche ja auch eine Textmodusoberfläche stehen könnte ...

s.h.a.r.k 17. Jan 2011 05:24

AW: Unit Testing sinnvoll?
 
Wie viel Zeit wird von euch denn für solche Unit-Tests denn investiert? Ich persönlich habe den Sinn zwar schon verstanden, sehe es aber teilweise als unwirtschaftlich an, wenn ich mir da so manche Videos angeschaut habe. Klar, wenn ein blöder Fehler versteckt ist, kann es sein, dass ich (also der Programmierer) dann teurer kommt, da er erst mal den Fehler ausfindig machen muss. Aber eine Kennzahl wäre hier schon mal interessant zu wissen. Gerne auch prozentual zu den Stunden, die wirklich am Projekt selbst gearbeitet wird.

Assarbad 18. Jan 2011 10:29

AW: Unit Testing sinnvoll?
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1075182)
Wie viel Zeit wird von euch denn für solche Unit-Tests denn investiert? Ich persönlich habe den Sinn zwar schon verstanden, sehe es aber teilweise als unwirtschaftlich an, wenn ich mir da so manche Videos angeschaut habe.

Soviel wie es eben benötigt.

Unit-Tests können teilweise ja sogar als Ersatz einer Spezifikation dienen. Die Idee ist ja bei einer möglichst großen Abdeckung mit Tests die darunterliegende Implementation beliebig abändern zu können und sicher zu sein, daß es noch funktioniert.

Abgesehen davon ist natürlich "unwirtschaftlich" etwas weithergeholt. Wenn man bedenkt daß die meisten Projekte mit schlechter Testabdeckung und/oder Planung schwer wartbar sind und die Wartung (und Fehlersuche/-behebung) sehr lange dauert, relativiert sich das wieder.

Sobald du mal, statt eine Funktion 100x über irgendwas laufen zu lassen und trotzdem nicht zu wissen ob deine Änderung korrekt war, eine kleine Änderung gemacht hast und dann deine Tests drüberlaufen lassen kannst und mit Gewissheit weißt, daß die Änderungen bei erfolgreichem Testdurchlauf korrekt sind, dürfte dir die Wirtschaftlichkeit klar werden ;)

s.h.a.r.k 18. Jan 2011 15:33

AW: Unit Testing sinnvoll?
 
Muss mir dann wahrlich mal anschauen, wie ich denn diese Tests dann erstelle. Mir erscheint es nur bei kleineren Projekten weniger sinnvoll, vor allem weil ich immer alleine dran gearbeitet hatte. Aber wenn mehrere Personen an etwas frickeln, wird es dann wahrlich schon interessanter. Danke für die nochmalige Erläuterung :thumb:

Assarbad 18. Jan 2011 17:04

AW: Unit Testing sinnvoll?
 
Zitat:

Zitat von s.h.a.r.k (Beitrag 1075567)
Mir erscheint es nur bei kleineren Projekten weniger sinnvoll, vor allem weil ich immer alleine dran gearbeitet hatte.

Aaaah, verstehe. Darauf willste hinaus. Das ist natürlich korrekt. Bei kleinen Tools nimmt man gern Abkürzungen. Ich habe mich allerdings schon mehrfach dabei erwischt, daß Abkürzungen dazu führten, daß ich mich nach einem halben Jahr oder länger fragte, was mein Ich in der Vergangenheit sich wohl bei dieser oder jener Sache dachte. Da ist es dann gut Kommentare oder Tests für die entsprechende Funktion/Zeile zu haben. Die Tests sind in dem Sinne ja auch durchaus Dokumentation.

Aber die Integration der Tests kann in der Tat problematisch sein ... je nachdem was man schreibt und in welchem Stil. In diversen Sprachen haben sich da Standards herausgebildet. Was es bei Delphi ist, weiß ich nicht ... würde mich allerdings durchaus interessieren :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:36 Uhr.
Seite 2 von 3     12 3      

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