AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Cross-Platform-Entwicklung Gemeinsame Codebasis für Desktop und Mobile???
Thema durchsuchen
Ansicht
Themen-Optionen

Gemeinsame Codebasis für Desktop und Mobile???

Ein Thema von BlackGuest · begonnen am 21. Dez 2013 · letzter Beitrag vom 29. Jan 2014
 
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#20

AW: Gemeinsame Codebasis für Desktop und Mobile???

  Alt 27. Dez 2013, 13:51
Nehmen wir mal an es gibt eine sehr komplexe Berechnungsformel, die unter bestimmten Umständen versagt.
Beim Entwickeln war einem dieser Umstand nicht bekannt und darum ist dort jetzt ein Fehler.

Kunde A beschwert sich und bevor man sich an den Code macht, erweitert man den Test um diese Konstellation und fängt an den Code zu prüfen und zu fixen.

Wann ist der Fix fertig? Wenn alle anderen und der neue Test fehlerfrei durchlaufen.

Ein wenig später kommt die Erkenntnis, dass man alles viel einfacher umsetzen/berechnen könnte.
Also einfach die neue Berechnungsformel implementieren.

Wann ist man fertig? Wenn alle Tests fehlerfrei durchlaufen.

Ein Test ist nur so gut wie die Testbedingungen, aber die sind nicht in Stein gemeißelt, sondern dynamisch und wachsen eben mit. Dadurch vermeidet man aber auf jeden Fall Fehler aus der Vergangenheit nochmals zu begehen.

BTW Tests mit Idealbedingungen zeigen nur, ob der Code im Idealfall funktioniert. Robusten Code testet man aber mit Bedingungen die zwar abwegig, aber möglich sind (werden Exceptions richtig geworfen, etc.)

EDIT
Dazu fällt mir gerade folgendes noch ein (reallifeexperince, allerdings kein Delphi aber egal)

Eine Funktion zum Ermitteln des Brutto-Preises:
Delphi-Quellcode:
function GetBrutto( Preis : currency; MwSt : currency ) : currency;
begin
  Result := ( Preis * ( 100 + 19 ) ) / 100; // ja, war hardcoded!
end;
Tja, und wer jetzt die Tests nur mit 19% macht fällt hier auf die Nase.

Vor allem, wenn sich dieser Fehler nach 2 Releases wieder ins Programm schleicht (ein VCS kannten die nicht)
Und vorsorglich haben die gar keine Tests drin gehabt, sondern die Funktion mit einem Artikel getestet.

So würde ich diese Funktion testen
Delphi-Quellcode:
// Idealbedingung
CheckEquals( 119, GetBrutto( 100, 19 ) );

// Variationen
CheckEquals( 100, GetBrutto( 100, 0 ) );
CheckEquals( 107, GetBrutto( 100, 7 ) );

// Abwegig, aber möglich
CheckEquals( 110.5, GetBrutto( 100, 10.5 ) );
CheckEquals( 90, GetBrutto( 100, -10 ) );

// Weitere Variationen
CheckEquals( 1190, GetBrutto( 1000, 19 ) );

// Fehler von Kunden gemeldet (bei Bedarf erweitern)

CheckEquals( 0, GetBrutto( 0, 19 ), 'case 0815');
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)

Geändert von Sir Rufo (27. Dez 2013 um 14:36 Uhr)
  Mit Zitat antworten Zitat
 


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

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:22 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz