AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Unit Testing sinnvoll?

Ein Thema von stahli · begonnen am 26. Okt 2010 · letzter Beitrag vom 1. Feb 2011
Antwort Antwort
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#1

AW: Unit Testing sinnvoll?

  Alt 27. Okt 2010, 08:47
Ja, so wie Zähneputzen ("Only Floss the Teeth You Want to Keep"). GUI Tests sind ebenfalls (trotz des Aufwands) für größere Projekte oft erfolgsentscheidend. Ich erinnere mich an einen Test der fehlschlug, weil TestComplete etwas schneller als der durchschnittliche Softwareentwickler durch die Dialogmasken klickte, und Funktionen nutzte die auf unvollständig initialisierten Datenquellen arbeiteten (->Absturz).

In DUnit sind übrigens auch Funktionen zum GUI Test enthalten, ich habe damit noch nicht selber gearbeitet aber als 'minimalistische' Alternative zu TestComplete sind sie sicher brauchbar.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#2

AW: Unit Testing sinnvoll?

  Alt 27. Okt 2010, 10:03
Ich erinnere mich an einen Test der fehlschlug, weil TestComplete etwas schneller als der durchschnittliche Softwareentwickler durch die Dialogmasken klickte, und Funktionen nutzte die auf unvollständig initialisierten Datenquellen arbeiteten (->Absturz).
Dann ist der Bug formal noch immer im Programm und nicht im Test. Denn das Programm hat sicherzustellen, daß alle benötigten Ressourcen für eine Operation verfügbar sind. Zugegeben, evtl. müßte man den Test dann anpassen um auf die entsprechende Meldung zu reagieren, aber die Bringschuld liegt m.E.n. beim Programm.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Phoenix
Phoenix
(Moderator)

Registriert seit: 25. Jun 2002
Ort: Hausach
7.644 Beiträge
 
#3

AW: Unit Testing sinnvoll?

  Alt 27. Okt 2010, 10:35
Das Beispiel von hoika ist genial.
Unit-Tests sind dafür da sicherzustellen, dass alles was von den Tests abgedeckt wird und vorher ging, auch nach beliebigen Änderungen hinterher auch noch geht - oder Dich direkt darauf hinweist das etwas jetzt anders ist und Du darauf noch reagieren musst.

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...).
Sebastian Gingter
Phoenix - 不死鳥, Microsoft MVP, Rettungshundeführer
Über mich: Sebastian Gingter @ Thinktecture Mein Blog: https://gingter.org
  Mit Zitat antworten Zitat
Benutzerbild von Meflin
Meflin

Registriert seit: 21. Aug 2003
4.856 Beiträge
 
#4

AW: Unit Testing sinnvoll?

  Alt 28. Okt 2010, 13:34
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...
Leo S.
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.010 Beiträge
 
Delphi 2009 Professional
 
#5

AW: Unit Testing sinnvoll?

  Alt 27. Okt 2010, 11:28
Ich erinnere mich an einen Test der fehlschlug, weil TestComplete etwas schneller als der durchschnittliche Softwareentwickler durch die Dialogmasken klickte, und Funktionen nutzte die auf unvollständig initialisierten Datenquellen arbeiteten (->Absturz).
Dann ist der Bug formal noch immer im Programm und nicht im Test. Denn das Programm hat sicherzustellen, daß alle benötigten Ressourcen für eine Operation verfügbar sind. Zugegeben, evtl. müßte man den Test dann anpassen um auf die entsprechende Meldung zu reagieren, aber die Bringschuld liegt m.E.n. beim Programm.
So meinte ich das auch, der Testlauf von TestComplete schlägt fehl, wenn die angenommene Fehlerfreiheit der Benutzeroberfläche nicht besteht. Ein "Test der fehlschlägt" ist aus Sicht der QA ein erfolgreicher Test, denn man hat einen Fehler gefunden.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Benutzerbild von Mithrandir
Mithrandir
(CodeLib-Manager)

Registriert seit: 27. Nov 2008
Ort: Delmenhorst
2.379 Beiträge
 
#6

AW: Unit Testing sinnvoll?

  Alt 27. Okt 2010, 14:14
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.
米斯蘭迪爾
"In einer Zeit universellen Betruges wird das Aussprechen der Wahrheit zu einem revolutionären Akt." -- 1984, George Orwell
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

Registriert seit: 8. Okt 2010
Ort: Frankfurt am Main
1.234 Beiträge
 
#7

AW: Unit Testing sinnvoll?

  Alt 27. Okt 2010, 15:12
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.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von Net7
Net7

Registriert seit: 22. Jun 2004
Ort: Lauenburg
161 Beiträge
 
Delphi 7 Professional
 
#8

AW: Unit Testing sinnvoll?

  Alt 16. Jan 2011, 18:22
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.
Marko
So`ne Atombombe kann einem den ganzen Tag verderben!
Eine eigene DLL in C++ geschrieben wird meist ein Sklave für mein Delphi/Pascal.
  Mit Zitat antworten Zitat
Unwissender

Registriert seit: 11. Dez 2003
16 Beiträge
 
#9

AW: Unit Testing sinnvoll?

  Alt 16. Jan 2011, 19:30
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.
  Mit Zitat antworten Zitat
Antwort Antwort


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 14:33 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz