Du bist nicht angemeldet.

Stilllegung des Forums
Das Forum wurde am 05.06.2023 nach über 20 Jahren stillgelegt (weitere Informationen und ein kleiner Rückblick).
Registrierungen, Anmeldungen und Postings sind nicht mehr möglich. Öffentliche Inhalte sind weiterhin zugänglich.
Das Team von spieleprogrammierer.de bedankt sich bei der Community für die vielen schönen Jahre.
Wenn du eine deutschsprachige Spieleentwickler-Community suchst, schau doch mal im Discord und auf ZFX vorbei!

Werbeanzeige

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

1

01.11.2006, 14:42

Benutzt ihr Applikationen um Tests zu simulieren?

Hi,
in Softwaretechnologie müssen wir uns mit sogenannten Testapplikationen wie JUnit. Der ganze Sinn ist das Programm, welches du in einer Sprache geschrieben hast zu testen (Werte vergleichen, Objekte etc.). Dazu schreibt man sogennante "Test Cases". Diese Test Cases sind in großem und ganzen nichts anderes als vergleiche wie:

Quellcode

1
2
3
4
  public void testAmount() {
    Euro two = new Euro(2.00);
    assertTrue(2.00 == two.getAmount());
  }


Wenn der Vergleich fehlschlägt wird ein roter Balken anzeigt sonst grün.

Nun frag ich mich wozu? Unser Tutor meint, das solche Testapplikationen eine Menge Arbeit ersparen, da man ja in sehr kurzen Abständen sehr viele Tests durchführen kann. Das sehe ich anders, den ich bin doch viel schneller einfach ein paar Haltepunkte zu setzen und die Variablen dort abzufragen. :roll:

Nutzt ihr auch solche Testapplikationen (evtl. auch in Firmen?) und wenn ja, was ist den nun das ganz tolle daran? Ich kam bis jetzt immer hervorragend mit dem Debugger an mein Ziel. Die Argumente m eines Tutors haben mich eher in meiner Meinung bestärkt, als mich von dem Zeug zu überzeugen.

Anonymous

unregistriert

2

01.11.2006, 14:48

koschka
Wir hatten damals im Unternehmen Testapplikationen und es war ein Horror. Ne Menge Arbeit abnehmen? Nur in kleineren Sachen.

Nach 2 Jahren waren wir weg davon und sowas kommt auch nicht mehr in das Haus rein. Die Teile haben uns sogut wie gar keine Arbeit abgenommen und die Test-Cases waren für unsere Gebiete viel zu Allgemein und konnten nie auf unsere Anforderungen richtig spezialisiert werden.

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

3

01.11.2006, 15:10

Wir machen das gerade auch in Softwareengineering I.
Ich denke wozu die Tests eigentlich da sind, ist folgendes: Mit den Test-Cases kannst du verhindern, dass Teile des Programms, die einmal funktionieren, durch irgendwelche Änderungen "kaputt" gemacht werden, ohne dass man etwas davon mitkriegt.
Man kennt das ja. Hier eine kleine Änderung, und man bedenkt nicht, dass diese Änderung dazu führen könnte, dass ein anderer Teil der Anwendung nicht mehr richtig funktioniert. Mit den Tests, die du dann alle automatisiert ablaufen lassen kannst, fällt dir das dann direkt auf.

Ich persönlich werde das aber sicher auch nicht für mich selbst verwenden.

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

4

01.11.2006, 16:00

Vielen Dank euch zwei. 8)

Ich steh dem ganzen immernoch skeptisch gegenüber :? , aber da schein ich ja nicht der einzige zu sein ^^.

Osram

Alter Hase

Beiträge: 889

Wohnort: Weissenthurm

Beruf: SW Entwickler

  • Private Nachricht senden

5

01.11.2006, 17:00

Re: Benutzt ihr Applikationen um Tests zu simulieren?

Zitat von »"koschka"«


Nun frag ich mich wozu? Unser Tutor meint, das solche Testapplikationen eine Menge Arbeit ersparen, da man ja in sehr kurzen Abständen sehr viele Tests durchführen kann. Das sehe ich anders, den ich bin doch viel schneller einfach ein paar Haltepunkte zu setzen und die Variablen dort abzufragen. :roll:


Dein Tutor hat recht. Habe gerade mal die Testapp unseres Geometrieerstellungssystems :) laufen gelassen; 139 recht komplexe Tests in unter 20 Sekunden inkl starten des Programms. Kann mir nicht vorstellen das Du das händisch schaffsts ;). Und eigentlich sind die Tests sogar noch viel zu langsam. Ich habe schon zwei verschiedene Vorträge über UnitTesting speziell in der Spieleindustrie gehört und der eine meinte, alle Tests müssten (je) weit unter einer Sekunde liegen. Ich weiss leider seine Daten nicht mehr auswändig und bin zu faul nachzuschauen, aber es waren so ganz ganz Größenordnungsmäsig 2000 tests in 10 Sekunden. Mein program ist sehr alt und daher sind die TestApps nicht von Anfang an eingebaut gewesen, bei neuen Programmen, ob Spiel oder Applikation würde ich es von Anfang an machen. Der Sinn ist wie David sagte, dass man es ziemlich häufig laufen lässt und wenn man einen Fehler macht, dieser relativ wahrscheinlich von dem System gefunden wird und zwar kurz nachdem Du Ihn gemacht hast, d.h. die Änderungen seit dem letzten (erfolkgreichen) Lauf sind wenige, Du bist noch "drin" in dem Code etc. Ausserdem hast Du gleich eine Art den Fehler schnell und sicher zu reproduzieren, gerade bei Spielen ja oft nicht so einfach. Daher ist die Fehlersuche im Durchschnitt VIEL schneller. Und UnitTests können halt auf einer Ebene Testen auf der ein Anwender es nicht kann. Wenn man allgemein von solchen regressionschecks redet gibt es 4 Arten dieser tests in Spielen:

1. Test dass es noch funktioniert. Die häufigste und wichtigste Testart.
2. Test dass die selben Sachen noch genauso aussehen
3. Test dass die fps nicht zurückgegangen ist
4. Test dass es noch compiliert, macht nur bei grossen Teams Sinn.


bei 2 und 3 kann es natürlioch schon mal durch Änderungen einen falschen Alarm geben, finde ich aber durchaus gut, Z.B. man baut Per Pixel Lighting ein und bekommt "Ist jetzt 15% langsamer" und wenn man denkt "Ist ok, das ist es Wert", kann man eben die "Schranke" neu anpassen.

Bei Spielen machen 1, 2 und 3 Sinn.
"Games are algorithmic entertainment."

rklaffehn

Treue Seele

Beiträge: 267

Wohnort: Braunschweig

  • Private Nachricht senden

6

01.11.2006, 18:08

Meiner Meinung und Erfahrung nach helfen solche Unit Tests ungemein, wenn man an komplexen Projekten mit vielen Leuten arbeitet. Wie hier ja schon einige gesagt haben, kann man so verhindern, dass eine Änderung an einer Stelle pötzlich zu Fehlern an anderer Stelle führen.

Das eigentliche Problem bei solchen Tests ist, sie richtig zu schreiben. Das geht deutlich über schnödes Variablenvergleichen hinaus sondern muss die benutzen Schnittstellen möglichst vollständig überprüfen. Also, alles was gehen soll, muss auf Funktion gepüft werden, und alles, was nicht gehen darf muss auch geprüft werden. Der erste Teil ist meistens noch recht einfach, aber die "negativ" Tests sind schon eine kleine Herausforderung, weil nicht immer sofort klar ist, was alles falsch sein könnte.

Knifflig wird es, wenn man eine GUI auf korrekte Funktion testen will, weil das eben nur schwer auf mechanischem Weg zu machen ist.

Zur Laufzeit solcher Tests ist eigentlich nur wichtig, dass sie regelmäßig laufen. Wenn nach drei Wochen dann doch mal wieder ein Testlauf gemacht wird, der dann auch noch einen Fehler wirft, weiss man eben nicht mehr so genau, was sich alles geändert hat (ausser man verbringt seine Zeit überwiegend an der Kaffeemaschine :)) Wenn sie schnell durchlaufen: umso besser, dann kann ich oft testen. Die Mördertests, die stundenlang rechnen, lasse ich dann eben nur am Wochenende einmal durchlaufen.

Fazit meinerseits: in kleinen Projekten oder im privaten Bereich sind Tests noch entbehrlich, aber je komplexer und größer das Projekt wird, desto mehr helfen sie, auch langfristig noch einen Service für die Software aufrecht zu erhalten. Und auch noch wichtig: wenn man Test macht, dann immer so früh wie möglich; am besten schon beim ersten Design gleich überlegen, wie man das alles auch testen kann.

Gruss,
Rainer
God is real... unless declared integer.
http://www.boincstats.com/signature/user_967277_banner.gif

koschka

Community-Fossil

  • »koschka« ist der Autor dieses Themas

Beiträge: 2 862

Wohnort: Dresden

Beruf: Student

  • Private Nachricht senden

7

01.11.2006, 20:31

Man kann auch GUI's mit solchen Tests testen?

Jedenfalls hätt ich nicht gedacht das solche Tests doch recht häufig eingesetzt werden. Mir ist jedenfalls jetzt wesentlich klarer wieso man, und vorallem zu welchem Zweck man solche Tests schreibt :D, vielen Dank auch an euch.

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

8

01.11.2006, 22:12

Also ich sehe auch keinen großen Sinn mehr in solch einer Testanwendung.
Ich glaube man kann sowas auch viel simpler lösen oder?
z.b. ein einfaches Programm(Konsole) was diese Tests macht.

EDIT:
Hab noch mal einen Wikiartikel ausgegraben:
http://de.wikipedia.org/wiki/JUnit

Ein kleiner Sinn steckt wegen dem Extrem Programming schon aber ich werd mir das morgen genauer durchlesen.
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

David Scherfgen

Administrator

Beiträge: 10 382

Wohnort: Hildesheim

Beruf: Wissenschaftlicher Mitarbeiter

  • Private Nachricht senden

9

01.11.2006, 22:21

Zitat von »"T-VIRUS"«

Ich glaube man kann sowas auch viel simpler lösen oder?

Was könnte simpler sein als einmal einen Knopf zu drücken und direkt alle Tests automatisiert laufen zu lassen?

T-VIRUS

Alter Hase

Beiträge: 548

Wohnort: Göttingen(West)/Nordhausen(Ost)

Beruf: Schüler

  • Private Nachricht senden

10

01.11.2006, 22:26

hmm stimmt aber muss man das nicht erst einbauen?
Noch simpler wäre es wenn man keinen Knopf drücken müsste und man entweder 1 oder 0 bekommt(1=Fehler/Erfolg, 0=Erfolg/Fehler).
Aber da man dort mit einem Exception mechanismus arbeitet würde ich auch zu JUnit pledieren.
Meine Blog:)

Wer Bugs im Text findet kann sie melden, fix erscheint irgendwann :D

MFG T-VIRUS

Werbeanzeige