Abteilung für Telekooperation Übung Softwareentwicklung 1 für Wirtschaftsinformatik UE02 C - Handtest Dr. Wieland Schwinger [email protected] http://www.tk.uni-linz.ac.at/teaching/ http://www.tk.uni-linz.ac.at/blackboard/ Abteilung für Telekooperation Testpunkte Sum() Eingabe: 1 9 6 8 0 Schritt Stelle number sum sum = 0 Pos A read(number) Pos B while number>0 sum = sum + number read(number) Pos C Pos D write(sum) Pos E Softwareentwicklung I • UE • Schwinger Zumindest an jeder Stelle, an der sich Werte von Variablen ändern! Folie-2 Abteilung für Telekooperation Testpunkte Sum() sum = 0 Pos A read(number) Pos B while number>0 sum = sum + number read(number) Pos C Pos D write(sum) Pos E Softwareentwicklung I • UE • Schwinger Eingabe: Schritt 1 2 3 4 5 6 7 8 9 10 11 Stelle A) B) C) D) C) D) C) D) C) D) E) 1 9 6 8 0 number ? 1 1 9 9 6 6 8 8 0 0 sum 0 0 1 1 10 10 16 16 24 24 24 Wie sieht der Durchlauf mit folgenden Eingaben aus? a) 9 3 0 b) 2 9 7 4 0 c) 0 Folie-3 Abteilung für Telekooperation Primfaktorenzerlegung Primfaktorenzerlegung Gesucht ist ein Alogrithmus, der von einer eingelesenen ganzen Zahl die Primfaktoren ermittelt und diese ausgibt. Eingabe: positive ganze Zahlen Ausgabe: aufsteigend die Primfaktoren der eingegebenen Zahl Aufgaben 1) Erstellen Sie den Algorithmus und beschreiben Sie diesen in einem Ablaufdiagramm 2) Bestimmen Sie die Beobachtungspunkte für den Algorithmus 3) Fuehren Sie eine Handsimulation des Algorithmus für die Eingabe der Zahlen 10 bzw. 360 durch Softwareentwicklung I • UE • Schwinger Folie-4 Abteilung für Telekooperation Ablaufdiagramm PrimeFactors() A B C D E F write(“Input number: “) read(↑number) i=2 while number > 1 while (number modulo i) == 0 G H write(↓i) number = number / i ja i=i+1 i == 2 nein i=i+2 I J K Softwareentwicklung I • UE • Schwinger ANMERKUNG: Dieser Algorithmus testet nicht nur Primzahlen! Er funktioniert dennoch korrekt, da Nichtprimzahlen bereits durch die zuvor getesteten Primfaktoren berücksichtet wurden. Das Testen von Nichtprimzahlen ist nicht notwendig, wird jedoch hier zur Vereinfachung angenommen. Folie-5 Abteilung für Telekooperation Schreibtischtest Testfall: 10 Nr Pos number i EINGABE AUSGABE Vergleich 1 A ? ? 2 B 10 ? 3 C 10 2 4 D 10 2 5 E 10 2 6 F 10 2 7 G 10 2 8 H 5 2 9 F 5 2 (5 modulo 2 == 0) => FALSE 10 I 5 2 (2 == 2) => TRUE Softwareentwicklung I • UE • Schwinger Input number: 10 (10 > 1) => TRUE (10 modulo 2 == 0) => TRUE 2 Folie-6 Abteilung für Telekooperation Schreibtischtest cont. Nr Pos number i 11 J 5 3 12 D 5 3 13 E 5 3 14 F 5 3 (5 modulo 3 == 0) => FALSE 15 I 5 3 (3 == 2) => FALSE 16 J 5 5 17 D 5 5 18 E 5 5 19 F 5 5 20 G 5 5 21 H 1 5 22 F 1 5 (1 modulo 5) => FALSE 23 I 1 5 (5 == 2) => FALSE 24 J 1 7 25 D 1 7 26 K 1 7 Softwareentwicklung I • UE • Schwinger EINGABE AUSGABE Testfall: 10 Vergleich (5 > 1) => TRUE (5 > 1) => TRUE (5 moludo 5 == 0) ==> TRUE 5 (1 > 1) => FALSE Folie-7 Abteilung für Telekooperation Sonderfälle Grenzen / Sonderfälle 1 0 2 3 4 5 6 8 256 8085 1031 ANMERKUNG: Der gezeigte Algorithmus berücksichtigt nicht die Eingabe von negativen Zahlen. Diese sind "per Definition" nicht zulässig. Für die Erstellung von Programmen nehmen Sie bitte sehr wohl auf "unzulässige" Eingaben Rücksicht! Dh. für Ihre zukünftige Programme sollten Sie auch Eingaben wie: -1, "Einen Test statt einer Zahl" usw. testen! => hat keine Primfaktoren => hat keine Primfaktoren => kleinster Wert mit einem Primfaktor => zweitgrößter Wert mit einem Primfaktor => kleinster Wert mit zwei (gleichen) Primfaktoren => kleinster Wert vor dem eine Zahl mit mehreren Primfaktoren existiert => kleinster Wert mit zwei unterschiedlichen Primfaktoren => kleinster Wert mit mehr als 2 Primfaktoren => größere Anzahl an (gleichen) Primfaktoren => größere Anzahl an unterschiedlichen Primfaktoren => größere Zahl mit nur einem Primfaktor (=> Primzahl) Softwareentwicklung I • UE • Schwinger Folie-8 Abteilung für Telekooperation Testfälle Nr Zweck Eingabewert Erwartete Ausgabe 1 Kleinste positive Zahl ohne Primfaktoren 0 2 3 Erste Zahl größer 0, die per Definition keine Primzahl ist Kleinster Wert mit einem Primfaktor 1 2 "0 hat keine Primfaktoren" keine Primfaktoren 2 4 Zweitgrößter Wert mit einem Primfaktor 3 3 5 Kleinster Wert mit zwei gleichen Primfaktoren 4 22 6 Kleinerer Wert mit mehreren Primfaktoren existiert 5 5 7 Kleinster W. mit zwei unterschiedlichen Primfaktoren 6 23 8 9 9 Kleinster Wert mit mehr als 2 Primfaktoren Kleinster Wert mit mehr als 2 Primfaktoren ungleich erstem Primfaktor 2 Größere Anzahl an (gleichen) Primfaktoren 8 27 256 222 333 22222222 10 Größere Anzahl an unterschiedlichen Primfaktoren 8085 3 5 7 7 11 11 Größere Zahl mit nur einem Primfaktor 1031 1031 Softwareentwicklung I • UE • Schwinger Folie-9 Abteilung für Telekooperation Testfälle Nr Zweck Erwartete Ausgabe Allgemeiner Fall Eingabew ert 6534 12 13 Allgemeiner Fall 13332 2 2 3 11 101 14 Allgemeiner Fall 10 25 15 Negative Zahl -10 keine Primfaktoren 16 Größte Negative Zahl -1 keine Primfaktoren 17 Ungültige Eingabe eines Textes hallo eine ein: 18 Ungültige Eingabe einer Zahl gefolgt von einem Text 123hallo 19 Ungültige Eingabe einer Gleitkommazahl 123.789 19 Keine Eingabe (eine Eingabe muss natürlich mit '\n' beendet werden 20 Größte mögliche Zahl (Grenzwert des Datentyps) Bitte geben Sie gültige Zahl <zahleneingabe> Bitte geben Sie gültige Zahl <zahleneingabe> Bitte geben Sie gültige Zahl <zahleneingabe> Bitte geben Sie gültige Zahl <zahleneingabe> 2147483647 21 Um eins zu große Zahl (Grenzwert des Datentyps+1) eine ein: 22 Kleinste negative Zahl Bitte geben Sie gültige Zahl <zahleneingabe> Bitte geben Sie gültige Zahl <zahleneingabe> Softwareentwicklung I • UE • Schwinger 214748364 7 214748364 8 214748364 8 2 3 3 3 11 11 eine ein: eine ein: eine ein: eine ein: Folie-10 Abteilung für Telekooperation Testplan Vor dem Testen eines Programms (welches einen bestimmten Algorithmus implementiert) überlegen Sie: • WAS Sie testen wollen: welches Verhalten und welche (Sonder-)Fälle Sie untersuchen wollen. • WIE Sie diese Tests durchführen, und zwar durch Festlegung geeigneter Eingabewerte Ein Testplan sollte daher folgendes beinhalten: • WAS Sie testen wollen (Zweck) • WIE Sie diese Tests durchführen (Eingabewerte) • erwartetes Resultat (Ausgabewerte) Ab nun ist zu jeder Übung ein Testplan zu erstellen und des Programm entsprechend zu testen! Softwareentwicklung I • UE • Schwinger Folie-11 Abteilung für Telekooperation Project Pläne und IEEE 829 The 16 clauses of the IEEE 829 test plan standard are: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ 1. Test plan identifier. 2. Introduction. 3. Test items. 4. Features to be tested. 5. Features not to be tested. 6. Approach. 7. Item pass/fail criteria. 8. Suspension criteria and resumption requirements. 9. Test deliverables. 10. Testing tasks. 11. Environmental needs. 12. Responsibilities. 13. Staffing and training needs. 14. Schedule. 15. Risks and contingencies. 16. Approvals. Softwareentwicklung I • UE • Schwinger Folie-12