Der Martin: Ästhetik und Klarheit von Code

Beitrag lesen

Hi,

Schreibt man einzelne Funktionen, mag das ja noch gut gehen.
Genau, jede wird zunächst isoliert für sich getestet: Liefert sie für alle erlaubten Argumente das gewünschte Ergebnis?
Da fängt es ja schon an. Manchmal ist das "gewünschte Ergebnis" zwar eben dieses, aber trotzdem logisch falsch.

ähm, nein. Nicht, wenn die Anforderung klar definiert ist.

[...] Da aber, wie du schon andeutest, oft der Teufel im Detail steckt, wird diese Ebene natürlich auch wieder getestet
Und jetzt stell dir vor du hast 100 dieser Ebenen.

Das bedeutet einen Riesenaufwand, den ich aber für unumgänglich halte. Okay, bei umfangreichen Projekten mag es sinnvoll sein, die Tests auf eine Menge von Stichproben zu beschränken, die man vorher sorgfältig auswählt. Aber das bringt natürlich eine gewisse Unsicherheit ins Spiel.

Und nun stell dir vor, es soll sich grundlegend etwas ändern (Kunden...) und du musst die Struktur und die Zusammensetzung/Kombination der Module ändern.

Wenn irgendwo tief im Innern das ausführlich getestete Modul X gegen das ebenfalls ausführlich getestete Modul U getauscht werden soll, ist das IMO ohne großen Aufwand möglich, wenn
 * X und U die gleiche Schnittstelle haben und unter denselben Bedingungen getestet wurden
oder
 * die Schnittstelle(n) von U eine Obermenge von X ist, die sich innerhalb der Grenzen von
   X gleich verhält.
Nur wenn die zusätzlichen Möglichkeiten von U im Gesamtprojekt tatsächlich genutzt werden (wenn nicht, wäre der Austausch ja sinnlos), sind erneute Tests kaum zu vermeiden.

Und jetzt stell dir vor, dass du auf externe Module angewiesen bist, vielleicht sogar auf solche, die du nicht einmal per reverse engineerung analysieren kannst.

Nur unter Zwang oder Gewaltandrohung.

Und zu guter letzt ist es viel zu aufwendig wirklich jeden Testfall durchzuspielen. Und mit den bisher vorhandenen Testfällen mögen die bisherigen Module korrekt zu sein scheinen, aber im zusammenspiel wird dann plötzlich ein vorher nicht getester Fall relevant.

Das kann passieren, wenn man die Tests auf Stichproben reduzieren muss.

Wenn in einem Projekt aber viele viele Komponenten zusammenspielen, von denen du vielleicht 10% kennst, ...
... dann muss ich wohl den Aufwand treiben, diese Komponenten als "Black Box" ausführlich zu testen.
Und wenn sich diese Komponenten verändern (z.B. SaaS o.ä.)? Dann müsstest du bei jeder Änderung (die du meist nicht mitkriegst) erneut manuell testen.

Selbstverständlich. Ein weiterer Grund, Fremdkomponenten zu vermeiden.

In einem privaten Projekt geht das wohl. Nicht aber auf geschäftlicher Ebene. Aus vielen Gründen.

Oh, das geht. Im Prinzip. Nur manche *wollen* sich das Leben unnötig kompliziert machen, indem sie sich auf Fremdleistungen verlassen.

So long,
 Martin

--
Liebet eure Feinde - vielleicht schadet das ihrem Ruf.
Selfcode: fo:) ch:{ rl:| br:< n4:( ie:| mo:| va:) de:] zu:) fl:{ ss:) ls:µ js:(
3 88

Ästhetik und Klarheit von Code

Tim Tepaße
  • programmiertechnik
  1. 2
    asdf
    1. 0
      Jeena Paradies
      1. 0
        asdf
      2. 2
        molily
        1. 0
          Jeena Paradies
      3. 2
        Stefanie M.
    2. 0
      Tim Tepaße
      1. 1
        dedlfix
  2. 0
    Jeena Paradies
    1. 2
      Tim Tepaße
      1. 2
        Jeena Paradies
  3. 0
    Der Martin
    1. 1
      Jeena Paradies
    2. 1
      Tim Tepaße
      1. 0
        Der Martin
        1. 0
          Jeena Paradies
          1. 0
            Der Martin
            1. 3
              DaBear
              1. 0
                Der Martin
                1. 1
                  DaBear
                  1. 0
                    Der Martin
                    1. 1
                      Jeena Paradies
                      1. 4
                        Christian Kruse
                        1. 0
                          Christian Seiler
                          1. 0
                            Christian Kruse
                          2. 0
                            molily
                2. 0
                  Tom
            2. 2
              Tim Tepaße
              1. 0
                Der Martin
                1. 1
                  dedlfix
                  1. 0
                    Tom
                    1. 1
                      Jeena Paradies
                      1. 0
                        Tom
                        1. 0
                          Tom
                          1. 4
                            Christian Kruse
                        2. 4
                          Kai345
                2. 3
                  Christian Seiler
                  1. 0
                    Tom
                    1. 0
                      Don P
                      • menschelei
                      1. 0

                        Currying

                        Tom
              2. 0
                Stefanie M.
                1. 0
                  Tom
                  1. 0
                    Tim Tepaße
                    1. 0
                      dedlfix
                    2. 1
                      Der Martin
                      1. 2
                        molily
                2. 1
                  molily
            3. 3
              molily
              1. 0
                Der Martin
                1. 0
                  dedlfix
                  1. 0
                    Tom
                    1. 5
                      molily
                      1. 0

                        Ein Nachruf

                        Christian Seiler
                        1. 0
                          Christian Kruse
                          1. 0
                            Tom
                        2. 0
                          Der Martin
                          1. 3
                            Christian Seiler
                            1. 0
                              Der Martin
                        3. 0

                          Der Unterschied zwischen Nachwuchsföderung und Arroganz

                          Tom
                          • menschelei
                          1. 0

                            Was ist aus dem einstigen Nachwuchs geworden?

                            Tom
                          2. 0
                            Jeena Paradies
                        4. 1
                          dedlfix
                      2. 0
                        Tom
                        1. 0
                          Tim Tepaße
                          1. 0
                            Der Martin
                            1. 5
                              molily
                              1. 1
                                dedlfix
                                1. 3
                                  molily
                                  1. 3
                                    Don P
                          2. 0
                            Tom
                            1. 0
                              Tim Tepaße
                              1. 0
                                dedlfix
        2. 0
          Christian Seiler
        3. 0
          Don P
    3. 0
      Tom
      1. 0
        Der Martin
    4. 0
      Don P
      1. 0
        Jeena Paradies
        1. 0
          Christian Seiler
          1. 0
            Christian Kruse
          2. 0
            molily
  4. 1
    molily
    1. 0
      Tim Tepaße
  5. 0
    reborn
  6. 0
    Buchtipp
  7. 0
    jobo
    1. 0
      jobo