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
Seite 3 von 3     123   
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#21

AW: Unit Testing sinnvoll?

  Alt 18. Jan 2011, 19:00
Ich bin da etwas hin- und hergerissen.

Über solche Tests kann man doch auch nur einige Dinge und Situationen prüfen, die man in einem starren Ablauf nachvollziehen kann.
Wenn ich eine Funktion Addiere(A,B) mit 1 und 2 prüfe, kommt korrekt 3 heraus.
Auf 100 und 200 teste ich nicht, aber durch einen Fehler in der Funktion kommt 400 heraus. Den Fehler erkennt man also auch über ein Unit-Testing nicht.

Ein weiteres Problem ist in der GUI-Anbindung zu sehen. Gibt es hier irgendwelche (zeitkritischen) Probleme, kann man das mit Unittesting auch nicht feststellen.
Da scheint mir ein GUI-Testing schon sinnvoller, aber so richtig überzeugt mich das auch nicht (vom Aufwand/Nutzen her).

Also ich bin noch nicht sicher, was ich davon halten soll (ob sich der Aufwand lohnt).
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

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

AW: Unit Testing sinnvoll?

  Alt 18. Jan 2011, 19:47
Über solche Tests kann man doch auch nur einige Dinge und Situationen prüfen, die man in einem starren Ablauf nachvollziehen kann.
Wenn ich eine Funktion Addiere(A,B) mit 1 und 2 prüfe, kommt korrekt 3 heraus.
Auf 100 und 200 teste ich nicht, aber durch einen Fehler in der Funktion kommt 400 heraus. Den Fehler erkennt man also auch über ein Unit-Testing nicht.
Aaah. In der Tat. Hierbei kommen dann "Integration Tests" und "System Tests" zum Einsatz.

Stell dir den jeweiligen Unit Test einfach als Möglichkeit vor die dokumentierte oder implizierte Funktionsweise der Funktion zu testen, jedoch nicht deren Einbindung in das Produkt. Dafür gibt es, wie gesagt, wiederum andere Varianten.

Ein weiteres Problem ist in der GUI-Anbindung zu sehen. Gibt es hier irgendwelche (zeitkritischen) Probleme, kann man das mit Unittesting auch nicht feststellen.
Absolut korrekt. Aber hier kann bspw. die Trennung deiner Anwendung in verschiedene Ebenen (siehe http://de.wikipedia.org/wiki/3-Tier#...en-Architektur) helfen. Vorteil: du kannst deine Tests bspw. in einer Kommandozeilenversion automatisieren. Damit haste sicher in den meisten Fällen mehr als 90% der Funktionalität einer Anwendung abgedeckt, es sei denn du mischst Logik und Präsentation (was Delphi leider ein wenig fördert, s.o.).

Also ich bin noch nicht sicher, was ich davon halten soll (ob sich der Aufwand lohnt).
Okay, mach es doch einfach mal anhand eines kleinen Projekts. Und dann notierst du exakt den Zeitaufwand. Ich denke aufgrund der Erfahrung mit Projekten ohne Tests kannste es sehr bald abschätzen. Aber Gold wert sind Unit Tests sobald du eine tiefgreifende Änderung am System vornehmen willst.
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Benutzerbild von BUG
BUG

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

AW: Unit Testing sinnvoll?

  Alt 18. Jan 2011, 20:50
Wenn ich eine Funktion Addiere(A,B) mit 1 und 2 prüfe, kommt korrekt 3 heraus.
Auf 100 und 200 teste ich nicht, aber durch einen Fehler in der Funktion kommt 400 heraus. Den Fehler erkennt man also auch über ein Unit-Testing nicht.
Man kann natürlich nicht alles abdecken.
Aber überlege, was du testest, wenn du "live" beim Programmieren testest.

z.B.

A,B: Integer

Dann hast du zum Beispiel Eigenschaften wie:
1) A < 0, A > 0, A = 0
2) B < 0, B > 0, B = 0
3) A < B, A > B, A = B

Wenn du für alle diese Kombinationen von Eigenschaften ein Beispiel testest, solltest du beim Addieren relativ gut hinkommen.
(Ob das wohl in der Praxis irgendjemand so ausführlich macht )

Zusätzlich kannst du dir Eingabewerte merken, bei denen es in der Vergangenheit Probleme gab:
Wenn mal bei ADD(6,-4) = 42 herauskam und du den Fehler gefixt hast, dann kannst du sichergehen, das der Fehler nicht nochmal auftritt (z.B. wenn du wegen eines anderen Problems eine frühere Version aus dem SVN holst).

Und dann gibt es noch die Möglichkeit, Fehler zu testen, die einfach häufig sind:
Grenzfälle, Off-By-One-Errors, usw.


Zudem kannst du beim Unit-Test ja relativ gut abschätzen, wo der Fehler herkommt, was beim GUI-Testen schwerer ist.
Intellekt ist das Verstehen von Wissen. Verstehen ist der wahre Pfad zu Einsicht. Einsicht ist der Schlüssel zu allem.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#24

AW: Unit Testing sinnvoll?

  Alt 24. Jan 2011, 16:11
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.
Ich finde das klingt alles sehr einleuchtend und zu dieser Vorgehensweise möchte ich auch hin.

Allerdings hapert es bei mir etwas an der praktischen Umsetzung.

Gibt es mal irgendwo ein (kleines) open source Programm, welches nach diesem Prinzip aufgebaut ist, nicht zu komplex ist damit man nicht direkt erschlagen wird, aber auch nicht zu simpel ist damit man die praktische Anwendung auch erkennt?? Jo, drei Wünsche auf einmal

Bei allem was ich hiermal so runtergeladen habe (soweit ich mich erinnere) war diese Prinzip nicht wirklich da.

Würde mich über den einen oder anderen Tipp sehr freuen
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#25

AW: Unit Testing sinnvoll?

  Alt 25. Jan 2011, 15:15
Wir stellen gerade auf Test-Driven-Developement um. Also ja, ich denke schon, dass Unit-Tests Sinn machen

Kleinere Projekte eignen sich hervorragend zum üben, bevor man sich an die alten großen Bestandsprojekte macht.
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#26

AW: Unit Testing sinnvoll?

  Alt 31. Jan 2011, 16:34
Bezüglich #24: Also gibt es sowas in Delphi nicht (viel)?

Stimmt die These von mquadrat also doch irgendwo??

http://www.delphipraxis.net/157452-d...re-design.html
  Mit Zitat antworten Zitat
Benutzerbild von Assarbad
Assarbad

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

AW: Unit Testing sinnvoll?

  Alt 31. Jan 2011, 17:50
Stimmt die These von mquadrat also doch irgendwo??

http://www.delphipraxis.net/157452-d...re-design.html
Ich würde ihm zustimmen. Es läuft im Grunde auf das gleiche Argument hinaus wie meines, daß Delphi zu schludriger Programmierung verleitet ... (und die oft kopierten Codebeispiele ebenso).
Oliver
"... aber vertrauen Sie uns, die Physik stimmt." (Prof. Harald Lesch)
  Mit Zitat antworten Zitat
Viktorii

Registriert seit: 19. Jul 2007
358 Beiträge
 
#28

AW: Unit Testing sinnvoll?

  Alt 1. Feb 2011, 08:01
Schade

Na, dann werde ich mich ab jetzt mal mehr in den besagten C# Foren rumtreiben...
  Mit Zitat antworten Zitat
Benutzerbild von stahli
stahli

Registriert seit: 26. Nov 2003
Ort: Halle/Saale
4.343 Beiträge
 
Delphi 11 Alexandria
 
#29

AW: Unit Testing sinnvoll?

  Alt 1. Feb 2011, 12:57
Ich habe das programmieren vor 30 Jahren autodidaktisch gelernt.
Dann ist irgendwo logisch, dass man (mit Delphi) irgendwelche Berechnungen in einer Ereignisbehandlung durchführt. Man befasst sich ja auch nicht bei den ersten Schritten mit dem Erstellen von Klassen.

Inzwischen sehe ich die Sinnhaftigkeit der Trennung in mehrere Schichten durchaus ein. Zumindest für ernsthaftere und komplexere Projekte.

Wenn ich aber mal schnell einen kleinen Test zusammenklicke, werde ich mich nicht zwangsläufig mit Klassendeklarationen herumschlagen.

Also die Möglichkeit, mit Delphi auch schnell und schludrig zu arbeiten, sollte Dich nicht vertreiben. Du kannst ja jederzeit Dein Projekt auch "sauber" aufbauen.
Man muss halt Aufwand und Nutzen abwägen - auch im Hinblick auf Wartbarkeit und möglicher späterer Migration.
Stahli
http://www.StahliSoft.de
---
"Jetzt muss ich seh´n, dass ich kein Denkfehler mach...!?" Dittsche (2004)
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 3 von 3     123   


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 05:09 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