Portal > Foren > PHP > PHP-Programmierung > Frage zu Unit Tests
Antwort
 
Themen-Optionen
Alt 31.07.2006, 22:24 Nach oben    #1
Benutzer
 
Registriert seit: 31.12.2005
Beiträge: 90
Standard Frage zu Unit Tests

Hi,
habe mir letztens das Buch gekauft:
http://forum.developers-guide.net/sh...ad.php?p=35717
und nun steht in Kapitel 6 was über Unit Tests.

Bei 'einfacheren' Funktionen wie z.B.
PHP-Code:
function splitMail($mail)
{
  return 
explode('@'$mail);

ist es sicher nicht schwer, einen UnitTest zu programmieren. Nur frage
ich mich, wie man es bei Funktionen machen möchte, die eventuell bei
bestimmten Parametern einfach nicht das machen, was sie sollen.
Oder wie macht man es z.B. bei Funktionen, die ein Watermark
in ein anderes Bild einfügen oder ein Thumbail eines anderen Bildes erstellen.

Wie will man das gescheit testen?

Danke!!
björn ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.08.2006, 01:42 Nach oben    #2
axo
Gast
 
Beiträge: n/a
Standard

guis kann man mit unit tests so gut wie gar nicht testen. dafür gibt's andere test-methoden. und vollständig kannst du eh auch nicht testen, denn die anzahl an möglichen pfaden durch dein programm wächst super-exponentiell. siehe auch path enumeration problem.

by the way: zum unit testing gehört _nicht_ nur das automatisierte testen. ein unit test kann durchaus sein, dass man diverse aktionen im interface ausführt und schriftlich die ergebnisse festhält.

bei bildern kann man z.b. auch den trick machen, ein referenz-bild zu hinterlegen (d.h. das bild mit dem gewünschten ergebnis), und das generierte bild (nach irgendwelchen kriterien) mit diesem referenz-bild zu vergleichen. das kann man z.b. auch mit toleranzintervallen machen, und damit das ganze sogar automatisieren. meist ist aber das test-setup bereits so aufwändig, dass es sich nicht lohnt, sowas zu machen. also bleibt das ungetestet, bzw. wird einmal händisch getestet, und danach wird der code eingefroren, d.h. nicht mehr verändert.

das axiom lautet: wie kann ich mit möglichst wenig aufwand möglichst viele fehler aufdecken, d.h. als testerIn erfolgreich sein?
das führt im prinzip dazu, dass man möglichst viel automatisiert, aber nur das, was mit akzeptablem aufwand auch automatisierbar ist. alles andere wird von menschenhand getestet.
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.08.2006, 10:10 Nach oben    #3
Benutzer
 
Registriert seit: 31.12.2005
Beiträge: 90
Standard

Danke für die Antwort.
Genau, teilweise ist es echt aufwändiger, die Unittests zu schreiben, als den zu testenden Code selbst
björn ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 01.08.2006, 10:15 Nach oben    #4
axo
Gast
 
Beiträge: n/a
Standard

Zitat:
Zitat von björn
Danke für die Antwort.
Genau, teilweise ist es echt aufwändiger, die Unittests zu schreiben, als den zu testenden Code selbst
richtig. man darf aber daraus nicht den schluss ziehen, dass unit tests nur aufwändig sind. lieber ein test zu viel als einer zu wenig, außerdem rentieren sich die automatisierten tests eh erst nach mehr als einem halben jahr, nämlich dann, wenn änderungen am bestehenden code gemacht werden müssen.

grüße
axo
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 02.08.2006, 20:53 Nach oben    #5
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

Also ich teste meine Scripte immer nach jedem mittelgroßen Schritt einmal komplett, damit ich weiß, dass die neue Funktion die integriert wurde auch so läuft, wie sie soll. Die fiesesten Fehler findet man eh erst in der Live-Umgebung, da man als Programmierer garnicht so doof denken kann, wie manche User sind. Oder ergeht es nur mir so, dass ganz banale Sachen, die für einen selber selbstverständlich sind, dass man davon die Finger lässt, zu Fehlern führen können und von irgendwelchen DAUs gefunden werden? Also ab und zu?!
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.08.2006, 00:16 Nach oben    #7
axo
Gast
 
Beiträge: n/a
Standard

äh... nö. userIn ist nie schuld. programmiererIn ist immer* schuld.
zum testen gehört auch die evaluation, ob das user-interface / die website etc. so benutzerInnenfreundlich ist, dass er/sie damit auch gut zurechtkommt.
hat man diesen punkt beim prototyping vernachlässigt und hat man's dann auch noch verpasst, beim integration testing diesen aspekt ordentlich zu evaluieren, und beliefert man dann den kunden mit einem unverständlichen, schwer oder missverständlich zu bedienenden produkt, kann nicht der kunde schuld sein.
nicht der kunde ist doof - der kunde ist kein techniker, der von der materie ahnung haben muss. er muss das ganze intuitiv bedienen können, d.h. die software muss auch in maßen zu seinem vokabular passen, angemessen große schriften und angemessen kontrastreiche farben haben, und wenn es mal nicht intuitiv geht, muss hilfe-doku, ein rückgängig-button, ein wizard, eine hotline etc. da sein, um ihn dabei zu unterstützen.

beispiel heute:
ich sehe in der post einer mitarbeiterin zu, wie sie einem anderen kunden kohle auszahlt. der will natürlich seine quittung haben. mitarbeiterin kann nicht ausdrucken, holt kollegen zur hilfe. der sagt 'geht nicht, dass du drucken willst hättest du vor der auszahlung eingeben müssen'...
was ist passiert?
das menü im buchungsprogramm der post ist so schlecht gemacht, dass man nur in einem bestimmten fenster die quittung ausdrucken kann, und zwar muss man das machen, bevor man die auszahlung durchführt. danach kommt man nicht mehr zurück, und kann somit dem kunden keine quittung mehr geben.
geil, oder? und hier soll der kunde schuld sein? ist jetzt der kunde daran schuld, dass er/sie nicht wie der programmierer fünf minuten vorher ans drucken gedacht hat?

sowas passiert schon immer wieder, aber aus jedem fehler muss man lernen, die fehler beheben und die daraus gezogenen schlüsse dann ins eigene qualitätsmanagement übernehmen, damit sowas nicht mehr vorkommt. vor allem lässt sich sowas relativ gut automatisieren, indem man sich darum kümmert, diese usability-aspekte implizit von einem framework ausführen zu lassen... so wie z.b. html-quickform-controller, das automatisch die vor-zurück-jump-navigation für mehrseitige menüs hat. nur mal so als beispiel.


grüße
axo

* so gut wie. gegen die leute, die sich über den abgebrochenen kaffee-tassen-halter am computer beschweren, kann man nichts machen. gehen wir einfach mal von einem mäßig gebildeten kunden aus, der weiß wie man tastatur und maus benutzt, wie man etwas klickt undsoweiter.

Geändert von axo (03.08.2006 um 00:22 Uhr).
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.08.2006, 00:25 Nach oben    #8
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Stimme ich dir voll und ganz zu, aber wir haben auch nicht gesagt (zumindest ich nicht), dass wir keine Schuld am Fehler tragen. Kloar .. wir haben es programmiert. Wir haben nur gesagt, dass wir den Fehler gemacht haben uns nicht so "dumm" wie den DAU vor die Anwendung gesetzt zu haben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.08.2006, 00:36 Nach oben    #9
axo
Gast
 
Beiträge: n/a
Standard

ist ja technisch gar nicht möglich, sonst hätten wir es ja nicht geschafft, die anwendung zu schreiben...
ne, is klar. passiert mir auch immer wieder, dass ein kunde irgendwas anders klickt als ich und plötzlich alles abschmiert. aber es passiert immer seltener, je länger man im geschäft ist ...

gute nacht
axo
 
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.08.2006, 06:22 Nach oben    #10
Lutz
 
Benutzerbild von MrNiceGuy
 
Registriert seit: 14.08.2005
Ort: Nienburg / Weser
Beiträge: 684
Standard

@axo: Ich wollte damit die Schuld keineswegs auf den User lenken und auch nicht behaupten, dass alle User doof / DAUs sind, aber Fakt ist nunmal, dass viele Fehler erst auftreten, wenn sich User ohne Programmierkenntnisse an den Programmen vergreifen, da man selber als Programmierer meistens garnicht so quer denken kann und an bestimmte Dinge nicht gedacht hat sie in den Code mit einzubauen, weil man von seinem logischen Verständnis her nie auf die Idee kommen würde, es auszuprobieren.

Natürlich kann man das durch eine vernünftige Planung alles versuchen auszugleichen, aber meiner Meinung nach gibt es die perfekte Planung nicht. Jeder, egal wer, übersieht hier und da eine Kleinigkeit, die später zu einem Fehler führen kann.
__________________
Paradox ist, wenn jemand für seinen Alkoholkonsum geradestehen soll
MrNiceGuy ist gerade online  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 03.08.2006, 07:58 Nach oben    #11
Benutzer
 
Registriert seit: 31.12.2005
Beiträge: 90
Standard

Jop sehe ich genauso. Ich teste meine Programme auch immer nochmals per Hand und gehe auf Fehlersuche!!
björn ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 07.08.2006, 08:51 Nach oben    #12
Johannes Schlichenmaier
 
Benutzerbild von Jojo
 
Registriert seit: 26.08.2005
Ort: Mannheim
Beiträge: 397
Standard

Also mithilfe meiner bevorzugten Beta-Testerin (Mutter) habe ich bis jetzt jeden (groben) Fehler ermitteln können.
Sowohl die Programmier-, als auch die Logikfehler in der GUI
Obwohl ich langsam das Gefühl bekomme, dass meine Mutter mittlerweile nicht mehr unbedarft genug ist.
Vielleicht sollte ich mal meine Oma fragen ^^
__________________
In the beginning was the word
and the word was content-type: plain/text

heute code ich, morgen debug ich und uebermorgen cast ich die koenigin auf int
Jojo ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Alt 10.08.2006, 19:15 Nach oben    #13
Ben
Benjamin Klaile
 
Benutzerbild von Ben
 
Registriert seit: 02.12.2004
Ort: Remagen
Beiträge: 4.480
Standard

Bin gerade auf diesen Artikel hier gestoßen:
http://blog.thinkphp.de/archives/133...-Selenium.html

Ich poste den Link mal hier, weil es irgendwie recht gut in das Thema passt (finde ich zumindest).

Grüße, Ben.
Ben ist offline  
Add Post to del.icio.usBookmark Post in TechnoratiDiesen Beitrag zu Mister Wong hinzufügen!
Mit Zitat antworten
Antwort

Lesezeichen


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
indireckte Frage zu Template system kampfgnom PHP-Programmierung 4 04.06.2007 04:12
[C++] Entwurfsproblem: Tests mepeisen Sonstige Programmiersprachen 4 07.04.2007 15:42
Frage zum Tut: [PHP] Fremde Webseiten auslesen the_cRu PHP-Programmierung 27 10.02.2007 19:59
Frage zu Aufklapp-Menü mit CSS Hobbyuser HTML, XML und CSS 8 12.08.2006 18:41
Java Programm - Code Frage (Problem) Finki Allgemeine Java-Programmierung 16 23.10.2005 12:36


Alle Zeitangaben in WEZ +2. Es ist jetzt 08:51 Uhr.


Powered by vBulletin® Version 3.7.3 (Deutsch)
Copyright ©2000 - 2008, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44