Ankündigung

Einklappen
Keine Ankündigung bisher.

PHP Unittesting

Einklappen

Neue Werbung 2019

Einklappen
X
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • PHP Unittesting

    Themenmoderation:
    [-] Abgetrennt von http://www.php.de/off-topic-diskussi...twicklung.html

    Ehrlich gesagt komm ich mit PHPUnit nicht so ganz zurecht. Ich nutz das Zend Framework, aber ich weiß nicht wie ich die Unittests effektiv anwenden soll. Ich kann vlt. einzelne Funktionen testen (View Helper, Action Helper). Aber wie teste ich effektiv Models? Wenn die Daten aus der Datenbank oder über eine SOAP Schnittstelle kommen weiß ich nicht wie ich richtige Testcases schreiben soll. Genauso die Controller/Action/View. Was testet man da? Die komplette HTML Ausgabe am Ende wäre ja schwierig zu machen und ansonsten gibt es ja kaum Methoden in die man Parameter rein steckt und ein Ergebnis erwartet.

    @robo: Wie schreibst du da deine Tests?


  • #2
    Ja, z.B. Habe mir PHPT gerade nochmal durchgelesen und finde es irgendwie umständlich, diese ganzen Testcases aufzustellen. Die Beispiele sind ja immer für Trivialcode. Wie man komplexe Szenarien testen soll, Testkonfigurationen stetig aktuell halten, oder bspw. Probleme mit Umbrüchen oder Zeichensätzen in den Sections der Konfigurationen verhindert, verschweigen die Beispiele immer.
    Sagen wir, ich habe ein Objekt, das ein Input-Element für ein Form erstellt. Mit all seinen möglichen Attributen, Vorgabewerten etc. Wie soll man sowas beliebig komplexes testen?
    --

    „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
    Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


    --

    Kommentar


    • #3
      Zitat von nikosch Beitrag anzeigen
      Gerade mit der Verwendung von Testsoftware habe ich auch so meine Probleme, was die SInnhaltigkeit anbelangt [...]
      geht mir genauso...

      Zitat von nikosch Beitrag anzeigen
      [...] das sollte man viell. mal in einem separaten Thread diskutieren.
      bin dabei .-

      cx

      Kommentar


      • #4
        Ich hab das ganze mal als eigenen Thread abgespalten. Denn Sinn kann ich verstehen, ich weiß nur nicht wie ich es richtig umsetzen soll.

        Kommentar


        • #5
          Ja, den Sinn verstehe ich auch. Die Vorstellung ist auch toll, ein automatisierbares Testszenario nach Softwareänderungen drüberlaufen zu lassen. Nur scheint das ein sehr theoretisches Modell zu sein, dass in der Praxis doch einige Fragen aufwirft. Da finde ich Assertions und entspr. Logging wesentlich besser nutzbar. Aber gerade das erwartete Ergebnis eines komplexen Prozesses zu formulieren, scheint mir doch sehr aufwendig oder tw. gar unmöglich zu sein. Sehr kleine Bausteine (das meint wohl Unit) zu testen, erscheint dagegen oft übertrieben und auch sinnlos auf das betrachtete Ganze. Ein paar Komponenten (bestimmte reguläre Ausdrücke oder Filterfunktionen) kann man sich evtl. noch vorstellen.
          --

          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


          --

          Kommentar


          • #6
            ich habe mich noch nie mit einem der genannten tools intensiver auseinandergesetzt, da ich bisher stets über einen oder mehreren der folgenden punkte gestolpert bin und schliesslich hängenblieb:

            - nerdige, unübersichtliche projekt-websites
            - (mir) unverständliche dokumentationen
            - beispiele / use-cases, in denen ich mich nicht wiederfinde

            und vor allem: ist es nicht so, dass man die tests selbst erstellt; d.h. man konstruiert ein szenario, um sich selbst auszutricksen...?

            cx

            Kommentar


            • #7
              ist es nicht so, dass man die tests selbst erstellt; d.h. man konstruiert ein szenario, um sich selbst auszutricksen...?
              So verstehe ich das auch. Man ist quasi begrenzt in dem, was man sich vorstellen kann. Für bestimmte Verhalten (jede Abweichung ist ein Fehler) mag das funktionieren, allerdings, wie gesagt, in machen Anwendungen kann ich mir kaum vorstellen, wie man alle möglichen Ergebnisse eines Vorgangs sinnvoll angeben soll.
              --

              „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
              Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


              --

              Kommentar


              • #8
                Zitat von nikosch Beitrag anzeigen
                So verstehe ich das auch.
                prima... bei manchen dingen frage ich mich nämlich: "bin ich jetzt der einzige, der das ganz nicht toll findet oder checkst du's einfach nicht."

                Zitat von nikosch Beitrag anzeigen
                Man ist quasi begrenzt in dem, was man sich vorstellen kann.
                yepp - damit sind wir wieder beim relativismus .-

                Zitat von nikosch Beitrag anzeigen
                Für bestimmte Verhalten jede Abweichung ist ein Fehler) mag das funktionieren [...]
                eben... dafür braucht man jedoch (prinzipiell) keine zusätzliche software, sondern kann das mit wesentlich einfacheren methoden erschlagen.

                cx

                Kommentar


                • #9
                  Naja die Idee hinter den Testszenarios ist ja nicht das man sich selbst austrickst. Eigentlich sollte man die Tests schreiben bevor man überhaupt Code schreibt. Oft werden die Tests auch von anderen Personen geschrieben als man selbst. Aber ich weiß wodrauf du hinaus willst. 100% kannst du nie Fehler aufdecken. Unittests haben aber einfach den praktischen Effekt dass du bei Änderungen genau siehst WO sonst noch was zerschossen wurde was du sonst nicht wirklich mitbekommen würdest.

                  Ich stell mir das nur schwierig vor solche Tests zu schreiben bzw. ich hab keine Ahnung wie man das effektiv machen könnte. Grad wenn ich mit Webseiten arbeite die eben HTML produzieren und nicht einfach nur aus Funktionen und Rückgabewerten bestehen.

                  Kommentar


                  • #10
                    Zitat von Flor1an Beitrag anzeigen
                    Eigentlich sollte man die Tests schreiben bevor man überhaupt Code schreibt.
                    an der stelle fängt bereits (für meinen persönlichen geschmack) der wahnsinn an bzw. hört der spass / die freude am kreativen teil des programmierens auf.

                    Zitat von Flor1an Beitrag anzeigen
                    Grad wenn ich mit Webseiten arbeite die eben HTML produzieren und nicht einfach nur aus Funktionen und Rückgabewerten bestehen.
                    hm, das klingt immer ein wenig nach ausrede, aber es stimmt schon... webentwicklung ist schon ein wenig speziell .-

                    cx

                    Kommentar


                    • #11
                      Was heißt Ausrede. Ich würde es gerne testen, ich weiß aber nicht richtig wie ich das testen soll. Der Großteil der Arbeit bei Webseiten steckt nicht in Objekten/Methoden/Funktionen die Daten berechnen. Der Großteil ist wirklich nur Daten aus DB holen -> an den View weitergeben und dann im HTML darstellen. Ich weiß nicht wie ich das dann richtig testen kann.

                      Kommentar


                      • #12
                        "ausrede" heisst, dass wir webentwickler gern sagen, dass bei uns alles (vor allem die programmierung) ein wenig anders ist. das mag (für aussenstehende) (manchmal) etwas seltsam klingen.

                        cx

                        Kommentar


                        • #13
                          Aussenstehende Entwickler sagen das auch gern über uns. Meist mit einer negativen Betonung.
                          --

                          „Emoticons machen einen Beitrag etwas freundlicher. Deine wirken zwar fachlich richtig sein, aber meist ziemlich uninteressant.
                          Wenn man nur Text sieht, haben viele junge Entwickler keine interesse, diese stumpfen Texte zu lesen.“


                          --

                          Kommentar


                          • #14
                            Hey, ich bin nicht allein

                            Also UnitTests habe ich mir auch mal angesehen, und wie ihr schon sagt, konnte ich die (trivialen) Beispiele überhaupt nicht auf meinen Code beziehen.

                            Während des Programmierens denkt man sich doch schon Sonderfälle aus und testet diese automatisch ab. Wenn später ein Fehler auftritt, wird der Code eben angepasst.
                            So, mit UnitTests müsste ich mir dann erstmal Testfälle schreiben und dann damit testen - habe ich dabei einen Fall übersehen und es tritt später ein Fehler auf, muss ich den Test und den Code anpassen. Ich kann da jetzt auch nicht den Vorteil sehen, außer dass ich die doppelte Arbeit habe

                            Ok, der Nutzen wäre, dass alle alten Testfälle automatisch mitgetestet werden und ich so sichergehen kann, dass ich durch die Fehlerbeseitigung keinen anderen Fehler erzeugt habe. Das rechtfertig in meinen Augen aber nicht den Aufwand der doppelten Codepflege, nochdazu wenn man allein ein Projekt umsetzt und nicht in einem großen Team.

                            Aber vielleicht äußert sich auch mal jemand mit Pro-Argumenten füs Testen ,)

                            Kommentar


                            • #15
                              Zitat von nikosch Beitrag anzeigen
                              Meist mit einer negativen Betonung.
                              möglicherweise ist es blanker neid, dass wir (angenommenermaszen) in der lage sind, das chaos zu händeln / der breite der anforderungen bei der entwicklung von webanwendungen gerecht zu werden .-p

                              cx

                              Kommentar

                              Lädt...
                              X