Christian Kruse: Ästhetik und Klarheit von Code

Beitrag lesen

Moin Jeena,

ähm, nein. Nicht, wenn die Anforderung klar definiert ist.
Was sie in 75% der fälle nicht ist, da kein Kunde in die Zukunft sehen kann.

75% ist aber noch großzügig geschätzt ;-)

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.
Wie kommst du darauf dass Unit-Tests "Stichprobentests" sind?

Was Jeena sagen will: der Trick bei Unit Tests ist, dass man so viele Testfälle schreibt, dass am besten jede Zeile des Codes getestet wurde und jede Verzweigung abgelaufen wurde. So kann man zwar keine 100% Sicherheit haben, dass es keinen Bug gibt (es ist bewiesen, dass man durch Tests nicht die Abwesenheit von Bugs feststellen kann), aber die Wahrscheinlichkeit sinkt sehr stark.

Um das sicherzustellen, gibt es auch ein paar „Regeln,“ an die man sich halten muss:

  • Unit Tests sollten isoliert ablaufen, also ohne Interaktion mit fremden Modulen
  • Unit Tests müssen(!) auch den Fehlerfall testen. Es muss ausdrücklich auch mit Fehleingaben, Netzwerkfehlern, etc, pp getestet werden.
  • Unit Tests sollten kontinuierlich beim entwickeln immer wieder ausgeführt werden und als Absicherung genutzt werden, dass Änderungen am Code keine unerwünschten Nebenwirkungen haben.
  • Die Entwicklung sollte „test driven“ sein: zuerst schreibt man den Test-Fall, dann den Code, aus mehreren Gründen: es hilft einem sich über die Schnittstellen und die Verhaltensweisen klarzuwerden, es verhindert „whitebox testing“ (testen von nur den Positiv-Fällen) und, bei Änderungen bestehender Module, es ist sichergestellt, dass ohne die Änderung der Testfall fehlschlägt.
  • Pro Bug ein Test: dadurch wird sichergestellt, dass der Bug wirklich existiert und es wird sichergestellt, dass er wirklich behoben wurde.

[…] Das nächste mal wenn du oder ein Kolege an diesem Code arbeitest und sehen willst ob es denn irgendwelche unerwünschten Nebenwirkungen gibt die nicht offensichtlich sind dann rufst du alle Tests die du vorher geschrieben hast noch mal auf und guckst ob immer noch alle bestanden werden.

Das nennt man übrigens „Regressionstest.“

LG,
 CK

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