AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Tutorials Von 0 auf 100 - DUnitX - Ein Testframework für Delphi
Tutorial durchsuchen
Ansicht
Themen-Optionen

Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

Ein Tutorial von generic · begonnen am 19. Okt 2019 · letzter Beitrag vom 16. Dez 2020
Antwort Antwort
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#1

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 24. Okt 2019, 08:14
Dankesehr für die Infos und Videos

UnitTests finde ich sind generell recht notwendig heutzutage, um fehlerfrei zu programmieren.
Testen von separaten BusinessLogik-Units ist aber die eine Sache, das sollte klar sein.

Ich frage mich nur ob es auch spezielle, gute Best-Practices Tipps und Prozesse für die Tests von verteilten System gibt, wo Alles zusammen kommt
(z.B. mit separaten Business-Units, mehreren asynchronen, externen Geräten, Embedded-Systemen, mehreren asynchronen Schnittstellen, Server, Cloud-Diensten, mobilen Apps, Logger-Services, etc.).

In solchen Fällen halte ich es so das ich auf z.B. mobilen Geräten kleine "Selbst-Test" und "Debug" Funktionen einbaue, als Ergänzung zu den UnitTests.
Mit denen ich das Verhalten etwas besser im realen Betrieb simulieren und "testen" kann.

Bei den Unit-Tests komme ich da irgendwie an Grenzen, um komplexere Systeme zu Testen.
In der Regel funktioniert die Business-Logik bei komplexen Systemen mit zig. Partnern nicht ohne die ganzen externen Partner lauffähig zu haben.
Wenn aber mehrere Partner gleichzeitig entwickelt werden, und in verschiedenen Versionen verfügbar sind, dann wird es mühsam.

Bei solchen Systemen kann man natürlich alles separat Testen, mit viel Glück, aber oft gibt es weder Client noch Server, oder etwas Unvorhergesehenes kommt dazwischen und braucht Änderungen.
Solche Unit-Tests könnten z.B. je nach Versionsstand mehrere Versionen des Gesamtsystems abdecken, so dass ältere und neuere Units noch nebeneinander existieren können.
Es ist wohl ein typisches Henne-Ei Problem.
Ich habe auch schonmal ein komplettes Embedded-System simuliert, bevor es zu 100% existierte, um die App dafür schneller zu entwickeln.
Der Aufwand war aber nur zu rechtfertigen weil ich die Simulation dem Kunden auch als Gimmick für Schulungszwecke angeboten habe.

Gerade bei Mobil-Entwicklung kommen die ganzen Geräte-Spezifischen Funktionen noch dazu (Permissions, Orientation, Sensoren, ...), die man nur schlecht auf Desktops simulieren kann.
Zumindest teste ich das meistens auf den mobilen Geräten selbst.
Wenn man zuviel unter Win32 simuliert kann es passieren das die App dann plötzlich sofort abstürzt, und man kann nicht mehr sagen warum eigentlich.
Deshalb lege ich mir solche Geräte-"Features" in separate kleine Units, die ich wunderbar separat Testen kann, und die dann später in einer komplexeren App einfach zusammengesteckt werden und nutzbar sind (diese können sich aber leider trotzdem immer wieder mit anderen "Features" beissen, oder die OS-Updates werfen die Funktion raus).

Die kleinen Hello-World Beispiele für Unit-Tests sind sicher gut um sich einzuarbeiten, aber was meistens fehlt sind auch realere Beispiele, aus dem echten Leben.
Ich hoffe das es mit der Video-Serie noch weitergeht, auch mehr in diese Richtung.
Vielleihct hängt die mangelnde Akzeptanz von Unit-Tests auch damit zusammen das man den Zusammenhang und die Lösung von "Hello World" zu echten Problemen nur schwer erkennen kann.

Falls jemand gute Hinweise hat wie man solche komplexeren Strukturen noch besser Entwickeln und Testen sollte, immer her damit.
  Mit Zitat antworten Zitat
Klaus01

Registriert seit: 30. Nov 2005
Ort: München
5.782 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 24. Okt 2019, 08:56
.. ist es nicht so, das Unit-Tests die Programmlogik, die Eigenschaften testet.
Ich kann damit auch testen wie sich das Programm gegenüber Schnittstellen verhält.
Die Schnittstelle (des anderen Systems, wenn nicht vorhanden) muss ich anhand der Spezifikation nachbilden.

Das Zusammenspiel von mehreren Systemen ist dann das Thema des/der Integrationstests.
Das kann kein Unit-Test leisten.

Grüße
Klaus
Klaus
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#3

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 24. Okt 2019, 09:00
Ja, aber wenn z.B. mehrere Systeme voneinander, asynchron abhänden, dann wird es eben immer schwieriger.
Und wenn die Schnittstellen sich auch mal ändern können, weil die externe Hardware-Firma Eigenschaften nicht einhalten kann, dann gibt es u.U. mehrere gültige Versionen.

Klar kann man sagen das müsste Alles vorher exakt definiert sein, aber erklär das z.B. mal einem chinesischen Lieferanten von Hardware.
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#4

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 24. Okt 2019, 10:26
Ja, aber wenn z.B. mehrere Systeme voneinander, asynchron abhänden, dann wird es eben immer schwieriger.
Und wenn die Schnittstellen sich auch mal ändern können, weil die externe Hardware-Firma Eigenschaften nicht einhalten kann, dann gibt es u.U. mehrere gültige Versionen.

Klar kann man sagen das müsste Alles vorher exakt definiert sein, aber erklär das z.B. mal einem chinesischen Lieferanten von Hardware.
Dann ist das halt nicht automatisiert testbar und sprengt den Rahmen dieses Themas - DUnit(X) eignet sich gut für Unit-, und Integrationstests - darüber hinaus kann man es sicherlich mit Modifikationen für andere automatisierte Tests benutzen, da es am Ende ja der Testbibliothek egal ist, was sie für Code in ihren Testmethoden ausführen.

Fakt ist, dass man eine stabile und robuste Grundlage schafft, wenn man Unit- und Integrationstests durchführt, so dass man viel, was man früher mühsam durch "selber durchklicken" testen musste, einspart. Und ich finde, dass diese Pillepalle Beispiele bei Unittests gar nicht so weit von der Praxis entfernt sind, da man dort nunmal sehr isoliert und kleinschrittig testet. Das muss man aber am Anfang erstmal in den Kopf bekommen, da man oft schon in Gedanken den untestbaren Softwareklump, den man meist historisch gewachsen vorliegen hat, verinnerlicht hat.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight

Geändert von Stevie (24. Okt 2019 um 10:31 Uhr)
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#5

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 24. Okt 2019, 11:34
Schade das es da keine fertigen Rezepte gibt.

Dann wären UnitTests also immer die erste Grundlage.

Diese können aber nicht unbedingt zusammen mit asynchronen, externen Tests integriert werden,
wie z.B. Click-Tests für das Simulieren von UI-Forms, oder physikalische Simulationen zum Testen von Sensorsignalen.

Vom Testablauf müssen dann erstmal die UnitTests laufen, das ist klar.
Und weitere Tests / Simulationen wären on-top, und nicht unbedingt Teil EINES UnitTests.

Man könnte aber z.B. externe Test-Ergebnisse von UI-Click Tests o.ä. mit in die UnitTests integrieren,
so das es erst ein UnitTest OK gibt wenn auch alle Ergebnisse stimmen.
Es spräche dann aber dagegen das UnitTests möglichst auch schnell und unabhängig sein sollten, denke ich.

Ich habe mich leider noch nicht tiefer mit dem beschäftigt was Idera da noch in Richtung Testing anzubieten hat (Ranorex, Gurock, etc.)
Es könnte aber etwas für mich dabei sein.
  Mit Zitat antworten Zitat
Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.962 Beiträge
 
Delphi 12 Athens
 
#6

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 25. Okt 2019, 06:05
Ich habe mich leider noch nicht tiefer mit dem beschäftigt was Idera da noch in Richtung Testing anzubieten hat (Ranorex, Gurock, etc.)
Es könnte aber etwas für mich dabei sein.
Wir verwenden TestComplete, was den Vorteil hat, dass man bei in Delphi geschriebenen Programmen auf die Properties usw. von Fenstern und deren Elementen zugreifen kann usw., zudem kann man dort viel mit Skripten machen. Man kann zum Beispiel auch im Skript direkt die Delphi-Objektnamen zum Zugriff auf die Elemente eines Fensters verwenden.
Sebastian Jänicke
AppCentral
  Mit Zitat antworten Zitat
Rollo62

Registriert seit: 15. Mär 2007
4.175 Beiträge
 
Delphi 12 Athens
 
#7

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 3. Dez 2019, 06:53
Nochmal zu dem Thema.
https://www.code-partners.com/testin...anorex-studio/

Ranorex sieht doch gar nicht schlecht aus ...
  Mit Zitat antworten Zitat
Benutzerbild von Stevie
Stevie

Registriert seit: 12. Aug 2003
Ort: Soest
4.045 Beiträge
 
Delphi 10.1 Berlin Enterprise
 
#8

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 24. Okt 2019, 08:58
Es gibt sicherlich die Notwendigkeit, automatisierte Integrations- oder Systemtests zu haben, allerdings kann man vieles davon schon in kleiner dimensionierten Tests abhandeln.
Das geht aber nur, wenn die Architektur selbst nicht komplett chaotisch ist (komplex != kompliziert). So braucht man z.b. nicht die komplette Infrastruktur wenn man eine bestimmte Komponente aus dem Verbund testen will, sondern muss nur dessen Kommunikationspartner simulieren/mocken.

Was man auf kleiner Ebene bei Klassen/Funktionen einhält (SRP, SLA, etc), sollte man auch auf höherer Ebene tun.
Stefan
“Simplicity, carried to the extreme, becomes elegance.” Jon Franklin

Delphi Sorcery - DSharp - Spring4D - TestInsight
  Mit Zitat antworten Zitat
Benutzerbild von dummzeuch
dummzeuch

Registriert seit: 11. Aug 2012
Ort: Essen
1.687 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#9

AW: Von 0 auf 100 - DUnitX - Ein Testframework für Delphi

  Alt 24. Okt 2019, 12:39
Vielleihct hängt die mangelnde Akzeptanz von Unit-Tests auch damit zusammen das man den Zusammenhang und die Lösung von "Hello World" zu echten Problemen nur schwer erkennen kann.

Falls jemand gute Hinweise hat wie man solche komplexeren Strukturen noch besser Entwickeln und Testen sollte, immer her damit.
Solche komplexen Systeme werden nicht mit Unit-Tests sonder mit Integrationstests getestet. Und die sind ein ganz anderes Kaliber, wie Du schon selbst schreibst.

Den Spass mit der Kommunikation mit parallel entwickelten externen (embedded) Systemen habe ich immer wieder. Ich schreibe mir dann immer Emulatoren bzw. Simulatoren.
Thomas Mueller
  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:53 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