Nein, es ist bescheuert, für jeden möglichen Betrag einen Test zu machen. Aber für jeden grundsätzlich unterschiedlichen Beleg. Wir haben das Formular auch nicht für jeden Betrag getestet, sondern für jede mögliche unterschiedliche Kombination von Textbausteinen zum Beispiel.DeathAndPain hat geschrieben: ↑08.09.2024 19:57Du würdest in meinem Beispiel also einen Testfall für jeden nur denkbaren Betrag machen.
Und doch gibt es immer wieder mal Seiteneffekte. Die Existenz solcher zu bestreiten, ist grotesk.DeathAndPain hat geschrieben: ↑08.09.2024 19:57Einer Klasse, die wiederverwendet wird, sollte es egal sein, von wem.
Und dann hast du genau das Problem wie mit Funktionsbauteinen, dass du eben nicht einen Beleg als Objekt hast, sondern irgendein Coding, das du mit Daten befüttern musst. So kannst du halt nicht in einer Schleife einfach sagen "buch mich", sondern musst in dieser Schleife ständig erstmal die vorgegebenen Werte ändern, weil du den Zustand ja nicht gespeichert hast.DeathAndPain hat geschrieben: ↑08.09.2024 19:57An dieser Stelle zahlen sich dann auch wieder zustandslose Methoden aus
Und es sind ja keine theoretischen Tests. Jede Schnittstelle hat Importparameter und ein Ergebnis. Was ich nun mache, ist:DeathAndPain hat geschrieben: ↑08.09.2024 19:57Theoretische Tests zu machen und dann zu beten, dass es im praktischen Alltag genauso gut laufen wird und Deine theoretisch erdachten Testfälle alles abdecken, halte ich für naiv. Das endet so wie diverse Windowsupdates der letzten Zeit...
Dann muss du den Test anders machen. Natürlich sind das dann keine 100.000 Testfälle. Vermutlich ein Tabelle mit Input 0,01€...1000€ und einem Output 100 €, 864€, 883€,...wärst Du für den Bereich zwischen 0,01 € und 1000 € schon bei 100.000 "Testfällen".
Und was ist, wenn sie nicht funktioniert und du einen Fehler beheben muss? Woher weißt du, dass du nicht 3 neue Fehler einbaust bzw. etwas bisher funktionierendes kaputt machst. Genau auf da funktionierende habe sich alle anderen Verwender verlassen. Ok, bei solchen "popligen" Abfragen mag das reichen. Aber wenn es um komplexe Berechnungen (z.B. Zahlungstermine) geht, wird das echt heftig.Wenn ich an dieser Klasse bzw. Methode etwas machen möchte, dann ist für mich nur maßgeblich, dass dies die Funktionalität ist, die von dieser Methode bereitgestellt wird. Die kann man testen. Entweder sie funktioniert, oder sie funktioniert nicht.
"Sollte" und "dokumentiert" sind die Problem. Viele Entwickler dokumentieren nicht und andere machen auch mal Fehler. Damit hat die Methode nicht das Verhalten, was sie haben "sollte".definiertes (und dokumentiertes) Verhalten haben sollte.
Schön wär's. Vor einigen Jahren wurde der Steuersatz für Zinsen in der Gewerbesteuer von heute auf morgen vom Gericht als ungültig definiert, aber kein neuer Steuersatz festgelegt. 1) Die Komunen haben zunächst nicht mehr verzinst. 2) Dann wurde recht plötzlich der neue Steuersatz von der Politik festgelegt und das rückwirkend. Also musste irgendwie die Software das rückwirkend grade ziehen. Hat ein Kollege von mir gemacht. Leider ohne Unit-Test und es lief ewig im Kreis, weil genau die eine Korrektur zum Fehler führte, weil am Anfang nicht alles berücksichtigt wurde/werden konnte. Glaub mir, Berechnungen in der Gewerbesteuer inkl. Vollverzinsung sind kein Pappenstiel.Der Gesetzgeber räumt immer längere Umstellungszeiträume ein.
Folgende Benutzer bedankten sich beim Autor msfox für den Beitrag:
ralf.wenzel
Oh ja, hatte ich ganz vergessen. Bei Unit-Test gibt es ja Code Coverage. Da sieht man gleich wieviel Quellcode-Zeilen bereits getestet wurden. Ok, das ist nur nicht immer aussagekräftig. Bei den 100.000 Fällen aus dem Beispiel würde sicher immer der gleich Code durchlaufen. Aber wenn man IF, ELSE, CASE, etc. drin hat, machen Unit-Test Sinn um gleich zu sehen, ob wirklich jede Möglichkeit - auch Exceptions etc. durchlaufen wurden. DAS macht ein manueller Tester nicht!Oder hat er Unit-Tests geschrieben? Die dokumentieren sich selbst.
Wie testet ihr Formulare (Smartforms?)? Da kommt ja am Ende nur ein OTF raus. Außer, man hat sämlich Logik in der Anwendungsklasse und gibt das dann im Smartforms nur noch aus. Dann kann man die Anwendungs-/Formularklasse anhand der PWB_DATA testen.Wir haben das Formular auch nicht für jeden Betrag getestet,
Folgende Benutzer bedankten sich beim Autor tar für den Beitrag (Insgesamt 2):
DeathAndPain • black_adept
Nein, ich erzeuge XMLs für Inspire.
Nein, zu kompliziert. Weil die Zahl der Fälle ja nicht kleiner wird, wenn man z. B. eine Bestellung einfach in mehrere verschiedene "Bestellungs-Fall-Formulare" aufteilt. Die Fälle werden ja nicht weniger, man hat nur noch mehr Formulare.tar hat geschrieben: ↑09.09.2024 00:56Darüber hinaus verstehe ich immer noch nicht, wieso man es überhaupt vorzieht, hunderte Testfälle für eine Riesenentwicklung aufzubauen und beständig durchzurödeln statt die zugehörige Entwicklung kleinteiliger zu gestalten. Wieso gibt es nur 1 Formular für hunderte unterschiedliche Fälle? Wieso nicht 10 oder 20 Formulare und eine entsprechend überschaubare zugehörige Entwicklung? Wäre das zu einfach?
Nochmal: Es geht darum, sicherzustellen, dass man mit korrekten Testdaten arbeitet. Wie willst du das tun, wenn du mit eigenen, vorgetäuschten Daten hantierst und so überhaupt nichts von etwaigen Änderungen mitbekommst? Dann funktioniert deine Logik am Ende zwar wunderbar für deine Fake-Daten, aber nicht für die produktiven - spitze 🥳ralf.wenzel hat geschrieben: ↑09.09.2024 08:46Nochmal: Es geht nicht darum, die DAO-Schicht (also das INSERT) zu testen, das kann man auch machen, aber das ist ein anderes Thema. Hier geht es darum, die Logik dahinter zu testen, also was mit den Daten gemacht wird, die da gelesen wurden.
Und um DAS zu testen, muss ich sie nicht von der DB lesen. Und wenn ich sie nicht von der DB lese, bin ich systemunabhängig.
Das ist doch so schwer nicht.
Folgende Benutzer bedankten sich beim Autor tar für den Beitrag:
DeathAndPain
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain
Wie ich schon schrieb: Ich suche mir das durchaus aus. Ich bin Software-Entwickler und arbeite da, wo ordentlich Software entwickelt wird. Nach Maßstäben, die in anderen Programmiersprachen üblich sind.black_adept hat geschrieben: ↑09.09.2024 11:21@tar und @Ralf: Ihr bewegt euch in verschiedenen Welten. tar hat die Art von Kunden, die ich kenne, Ralf eher solche welche bereit sind für gut (getestete) Software auch zu bezahlen.
Nein. Ungetestete Software ist im unternehmenskritischen Bereich auf keinen Fall vertretbar. Und Ausprobieren ist kein Testen.black_adept hat geschrieben: ↑09.09.2024 11:21Das waren doch einige Stellen, das Budget knapp und man lebt scheinbar seit Jahr(zehnt)en mit dieser Situation und entweder arbeitet man so, dass nie Daten verloren gehen oder man hat sich damit arrangiert und trägt verlorene Daten halt nach, wenn man sie entdeckt.
Ist das so wie ich arbeiten würde: Nein
Ist das betriebswirtschaftlich vertretbar: Vielleicht -
Es geht ab einem gewissen Punkt nicht mehr um billiger oder teurer. Eine Herz-OP lasse ich auch nicht von dem Arzt machen, der sie billiger anbietet als ein anderer. Und das ist mit dem Unternehmensbeispiel durchaus vergleichbar.black_adept hat geschrieben: ↑09.09.2024 11:21Manchmal ist es billiger nicht alles perfekt zu haben und Zusatzkosten hinzunehmen als alles auf 100% zu bringen.
Wer DAFÜR kein Geld hat, sollte seinen Laden schließen. Der hat auch Firmenwagen ohne TÜV oder baut sich ein Firmengebäude ohne statische Berechnung.black_adept hat geschrieben: ↑09.09.2024 11:21aber da ist halt immer das Damoklesschwert des Budgets.
Nein, sie haben Hilfe verdient. Wenn sie die nicht wollen, dann eben nicht. FÜRSORGE leiste ich nicht, ich leiste Hilfe.black_adept hat geschrieben: ↑09.09.2024 11:21aber auch die Schmuddelkinder haben Fürsorge verdient.
Das Lustige ist ja, dass die Software zigtausendfach getestet ist und man (inzwischen) weiß, dass die fehlerhaft bzw. nicht IMMER korrekt arbeitet. Aber das ist scheinbar keine Herz-OP, wo ein Fehler das Ende darstellt sondern eher sowas wie das Finden einer Lösung für ein TSP. Eine "hinreichend gute" Lösung ist akzeptabel.ralf.wenzel hat geschrieben: ↑09.09.2024 11:34Nein. Ungetestete Software ist im unternehmenskritischen Bereich auf keinen Fall vertretbar. Und Ausprobieren ist kein Testen.
Ralf
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
DeathAndPain
Nein, das prüft dann der Integrataionstest. Wie auch immer der aussieht...tar hat geschrieben: ↑09.09.2024 00:56Erst dann bin ich sicher, dass Spaltennamen, Schlüsselwerte, Select-Bedingungen, Datentypen, Domänenwerte, die DB-Verfügbarkeit, die Authentifizierung, eine etwaige DB-Protokollierung, Sperren, YouNameIt... korrekt funktionieren. Prüft das gemockte Ergebnis dies alles?[/i]
Im Zweifel alle...Wieviele vorbereitete Testfälle und gemockte Ergebnisse müsste man nun anpassen, damit das systemweit gerade gezogen wird?
In dem man sie einfach ausführt. Die, die auf Fehler laufen, müssen untersucht und ggf. angepasst werden.Wie stellt man sicher, dass keiner davon vergessen wird?
Genau und nun! Wenn du mit deinen MOCK-Daten arbeitest, dann sind diese immer gleich, da du sie ja definiert hast. Was in der unsauberen Datenbank ein T-Systems steht, kann dir dann egal sein.Deswegen gibt es ja gerade Test- & Q-Systeme: für hinreichend(!) verlässliche Testdaten und die sind, die Realität lehrt es immer wieder, auch nie 100 % sauber. Und nun?
Was sagt da die Revision dazu, wenn Daten an der Änderungsprotokollierung vorbei angepasst werden. Also in der öffentlich Verwaltung hast du dann echt ein Problem, wenn du nicht nachweisen kannst, warum z.B. irgendwelche Gewerbesteuerdaten falsch waren und es dazu nix an Änderungsbelegen gibt und vor allem, wer es gändert hat. Hart auf der Datenbank zu 99% ein no-Go.ich habe hier Kunden, die wild in ihrem P-System hart auf der Datenbank fehlerhafte Daten korrigieren. Warum? Weil deren Kunde am Telefon nervt
Kommt drauf an :). Bei uns wurden schon tagelang rundungsCents gesucht. Wo ich dann immer ironisch sage, gebt der Gemeinde die paar Cent, bevor ihr sie sucht, was an Beratertagen teurer ist. Das geht natürlich nicht! Die Rechnung muss auf den Cent genau sein.Manchmal ist es billiger nicht alles perfekt zu haben und Zusatzkosten hinzunehmen als alles auf 100% zu bringen.
Muss du doch nicht. Du kannst doch die Daten zu dem Stichtag aus dem System als Testdaten nehmen. Dann sind sie nicht vortäuscht, kommen aber auch nicht von der Datenbank. Naja ok, vielleicht doch, wenn du sie in einen ECatts-DatenContainer packst.Wie willst du das tun, wenn du mit eigenen, vorgetäuschten Daten hantierst und so überhaupt nichts von etwaigen Änderungen mitbekommst?
Richtig - und das geht auch gar nicht anders, weil unterschiedliche Systeme unterschiedlich eingestellt sind. Insbesondere beim Berechtigungskonzept.
Eines wollte ich ja noch anfügen: Es gibt Fälle, die im System gar nicht abgebildet sind.
Die weiß das nicht, sonst hätten die das längst abgestellt. Weil das in HÖCHSTEM Maße unseriös ist. Leute, die sowas machen, gehören angezeigt. Und das meine ich wirklich so wie ich das schreibe. Ich kann mir die Daten auf einem Produktivsystem nicht einfach hinbiegen wie ich sie schön finde. Es gibt Buchführungs- und Aufzeichnungspflichten.
Kenne ich - SAP Einführung bei einer Kommune, Tagesabschluss, was ich da an Stunden mit den Kassenleiter Cents gesucht habe....msfox hat geschrieben: ↑09.09.2024 14:49Kommt drauf an :). Bei uns wurden schon tagelang rundungsCents gesucht. Wo ich dann immer ironisch sage, gebt der Gemeinde die paar Cent, bevor ihr sie sucht, was an Beratertagen teurer ist. Das geht natürlich nicht! Die Rechnung muss auf den Cent genau sein.
Antwort: Getestet und protokolliert an den Testfällen, die im Pflichtenheft dokumentiert wurden.ralf.wenzel hat geschrieben: ↑09.09.2024 15:44Letztlich landen wir immer wieder bei der Frage: Der Entwickler hat eine Anwendung geschrieben und übergibt die dem Anwender mit dem Hinweis: Funktioniert, bitte abnehmen. Da wäre MEINE erste Frage: Woraus schließt du, dass sie funktioniert? Hast du sie getestet? Wo ist das Testprotokoll, damit ich sehen kann, ob du hinreichend viele Fälle getestet hast?
Folgende Benutzer bedankten sich beim Autor black_adept für den Beitrag:
tar