Projekt ecwin7: Liste der Testprozeduren of1 +ohneFenster.ProgrammStarten of2+ Alle default-Einstellungen der Fenster prüfen of3+ Geänderte Einstellungen der Fenster prüfen of4+ Applikation beenden of5+ Fenster öffnen, schließen und Aufbau of6+ Kundenliste ergänzen und anzeigen =============================================================== =case of1 +ohneFenster.ProgrammStarten Programm starten =pre =of =step of1 +ohneFenster.ProgrammStarten =check .WnHauptfenster.OPEN .{kein Innenfenster sichtbar} .Fenstergröße := "600x400" .Hintergrundfarbe := "grau" .$KundeListe := Leer =next =hf =============================================================== =case of2+ Alle default-Einstellungen der Fenster prüfen WnHauptfenster: Farbe und Größe in of1 geprüft WnIfEingabe: Beschriftungsgröße *** WnIfTabelle: Gitternetzlinien *** WnIfAllgemein: Farbe und Größe aus WnHauptfenster *** WnIfAnsicht.WnEingabe: Schriftgröße aus WnIfEingabe *** WnIfAnsicht.WnTabelle: Gitternetzlinien aus WnIfTabelle *** =pre =of // Applikation neu starten of1 +ohneFenster.ProgrammStarten =step hf3 +WnHauptfenster.Menübar.Ansicht.Eingabe =check .WnIfEingabe.OPEN .WnIfEingabe .TxStatus := "" .EtKundennummer := "" .EtKundenname := "" .Beschriftungsgröße.12 =pre he11 +WnIfEingabe.BtSchließenX =step hf4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle.OPEN .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.Leer .Gitternetzlinien.defaultOhne =pre ht8 +WnIfTabelle.BtSchließenX =step hf5 +WnHauptfenster.Menübar.Einstellungen.Allgemein =check .WnIfAllgemein.OPEN .WnIfAllgemein .SsFenstergröße.SELECTED := "600x400" .WnIfAllgemein.SsHintergrundfarbe.SELECTED := "grau" =pre ha10 +WnIfAllgemein.BtSchließenX =step hf6 +WnHauptfenster.Menübar.Einstellungen.Ansicht =check .WnIfAnsicht.OPEN .WnIfAnsicht.WnEingabe.OPEN .WnIfAnsicht.WnEingabe .SsSliderSchriftgröße.12 =step hae8 +WnIfAnsicht.BtReiterTabelle =check .WnIfAnsicht.WnTabelle.OPEN .WnIfAnsicht.WnTabelle .SsGitternetzlinien.defaultOhne =next =hat =============================================================== =case of3+ Geänderte Einstellungen der Fenster prüfen Änderungen sind wirksam im Zielfenster, sofort Änderungen werden erkannt vom Einstellfenster, aber erst beim Öffnen oder Aktualisieren Änderungen werden gemerkt wenn beide Fenster zu sind. WnHauptfenster: Farbe und Größe gemerkt // gibts nicht, WnHauptfenster ist immer auf WnIfEingabe: Beschriftungsgröße gemerkt *** WnIfTabelle: Gitternetzlinien gemerkt *** WnIfAllgemein: Farbe und Größe aus WnHauptfenster wirkt *** erkannt *** WnIfAnsicht.WnEingabe: Schriftgröße aus WnIfEingabe wirkt *** erkannt *** WnIfAnsicht.WnTabelle: Gitternetzlinien aus WnIfTabelle wirkt *** erkannt *** =pre =of // Applikation neu starten of1 +ohneFenster.ProgrammStarten =step hf5 +WnHauptfenster.Menübar.Einstellungen.Allgemein ha7 +WnIfAllgemein.SsFenstergröße << "750x500" ha8 +WnIfAllgemein.SsHintergrundfarbe << "rot" =check // WnIfAllgemein.wirkt .WnHauptfenster.Fenstergröße := WnIfAllgemein.SsFenstergröße."750x500" .WnHauptfenster.Hintergrundfarbe := WnIfAllgemein.SsHintergrundfarbe."rot" =pre ha10 +WnIfAllgemein.BtSchließenX =step hf5 +WnHauptfenster.Menübar.Einstellungen.Allgemein =check // WnIfAllgemein.erkannt 1 .WnIfAllgemein .SsFenstergröße.SELECTED."750x500" .WnIfAllgemein.SsHintergrundfarbe.SELECTED."rot" =pre { Hauptfenstergröße von Hand ändern } =step hf5 +WnHauptfenster.Menübar.Einstellungen.Allgemein // bei offenem Fenster =check // WnIfAllgemein.erkannt 2 .WnIfAllgemein .SsFenstergröße.SELECTED.NOT .WnIfAllgemein.SsHintergrundfarbe.SELECTED."rot" =pre ha10 +WnIfAllgemein.BtSchließenX hf6 +WnHauptfenster.Menübar.Einstellungen.Ansicht hae10 +WnIfAnsicht.WnEingabe.SsSliderSchriftgröße << 16 hae9 +WnIfAnsicht.BtSchließenX =step hf3 +WnHauptfenster.Menübar.Ansicht.Eingabe =check // WnIfEingabe.merken .WnIfEingabe .Beschriftungsgröße.16 =step he6 +WnHauptfenster.Menübar.Einstellungen.Ansicht =check // WnIfAnsicht.WnEingabe.erkennt .WnIfAnsicht.WnEingabe .SsSliderSchriftgröße := 16 =step heae15 +WnIfAnsicht.WnEingabe.SsSliderSchriftgröße << 12 =check // WnIfAnsicht.WnEingabe.wirkt .WnIfEingabe.Beschriftungsgröße.12 =pre heae7 +WnIfEingabe.EtKundennummer.123 // damit man was sieht heae8 +WnIfEingabe.EtKundenname."Einsmann" heae9 +WnIfEingabe.BtÜbernehmen heae7 +WnIfEingabe.EtKundennummer.234 heae8 +WnIfEingabe.EtKundenname."Zweifler" heae9 +WnIfEingabe.BtÜbernehmen heae11 +WnIfEingabe.BtSchließenX hae8 +WnIfAnsicht.BtReiterTabelle hat10 +WnIfAnsicht.WnTabelle.SsGitternetzlinien << mitLinien hat9 +WnIfAnsicht.BtSchließenX =step hf4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check // WnIfTabelle.merken .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.{2 Einträge} .Gitternetzlinien.mitLinien =step ht6 +WnHauptfenster.Menübar.Einstellungen.Ansicht hae8x +WnIfAnsicht.BtReiterTabelle =check // WnIfAnsicht.WnTabelle.erkannt .WnIfAnsicht.WnTabelle .SsGitternetzlinien.mitLinien =step htat12 +WnIfAnsicht.WnTabelle.SsGitternetzlinien << ohneLinien =check // WnIfAnsicht.WnTabelle.wirkt .WnIfTabelle.AnzeigeTabelle.Gitternetzlinien.ohneLinien =next =htat =============================================================== =case of4+ Applikation beenden Beenden möglich mit +WnHauptfenster.BtBeendenX ohne offene Unterfenster *** mit offenen Unterfenstern (getestet: alle Fenster auf) *** +WnHauptfenster.Menübar.Datei.Beenden *** Programmcode identisch zu WnHauptfenster.BtBeendenX, deshalb nur ein einziger Test Test aller Alternativen aus den relevanten Zuständen wäre ein Overkill, das Beenden ist nicht zustandssensitiv. =pre =of // Applikation neu starten of1 +ohneFenster.ProgrammStarten =step hf1 +WnHauptfenster.BtBeendenX =check // ohne offene Unterfenster 1 .WnHauptfenster.CLOSE =pre of1 +ohneFenster.ProgrammStarten hf3 +WnHauptfenster.Menübar.Ansicht.Eingabe he4 +WnHauptfenster.Menübar.Ansicht.Tabelle het6 +WnHauptfenster.Menübar.Einstellungen.Ansicht hf5x +WnHauptfenster.Menübar.Einstellungen.Allgemein =step hf1x +WnHauptfenster.BtBeendenX =check // mit offenen Unterfenstern .WnHauptfenster.CLOSE =pre of1 +ohneFenster.ProgrammStarten hf3 +WnHauptfenster.Menübar.Ansicht.Eingabe he4 +WnHauptfenster.Menübar.Ansicht.Tabelle het6 +WnHauptfenster.Menübar.Einstellungen.Ansicht hf5x +WnHauptfenster.Menübar.Einstellungen.Allgemein he11x +WnIfEingabe.BtSchließenX ht8x +WnIfTabelle.BtSchließenX hae9x +WnIfAnsicht.BtSchließenX ha10 +WnIfAllgemein.BtSchließenX =step // ohne offene Unterfenster 2 hf1x +WnHauptfenster.BtBeendenX =check // mit offenen Unterfenstern .WnHauptfenster.CLOSE =pre of1 +ohneFenster.ProgrammStarten =step hf2 +WnHauptfenster.Menübar.Datei.Beenden =check // über Menübar .WnHauptfenster.CLOSE =next =of =============================================================== =case of5+ Fenster öffnen, schließen und Aufbau Neue Fenster erhalten aktuellen Inhalt *** Bereits geöffnete Fenster werden aktualisiert und werden sichtbar *** Aktualisierungen reflektieren hier nur Änderungen von außen, kein Setzen von Werten aus dem Fenster heraus Fenster haben Standardpositionen *** Verschobene Fenster bleiben dort, bis sie geschlossen werden *** Fenster haben feste Titel und Beschriftungen *** WnIfAllgemein.SsHintergrundfarbe-Liste kann gescrollt werden *** WnHauptfenster geprüft in of1 WnIfEingabe *** WnIfTabelle *** WnIfAllgemein *** WnIfAnsicht.WnEingabe *** Inhalt nicht von außen änderbar WnIfAnsicht.WnTabelle *** Inhalt nicht von außen änderbar Testprinzip: Öffnen -- Inhalt ändern -- Überdecken lassen -- Nach vorn holen -- schließen Fensteröffnen über den Menübar durchläuft denselben Programmcode und ist nur davon abhängig, ob das Fenster selbst schon offen ist oder nicht. Ein vollständiges Permutieren aller Alternativen von geöffneten Fenstern wäre ein Overkill. =pre =of // Applikation neu starten of1 +ohneFenster.ProgrammStarten =step hf6 +WnHauptfenster.Menübar.Einstellungen.Ansicht =check .WnIfAnsicht .Titel := "Einstellungen Ansicht" .Position.rechtsUntenImFrame .WnIfAnsicht.WnEingabe .Titel := "Eingabe" .Feldbeschriftung := "Schriftgröße" .SsSliderSchriftgröße.12 =step .{WnAnsicht etwas verrücken in WnHauptfenster} hae8 +WnIfAnsicht.BtReiterTabelle =check .WnIfAnsicht .Titel := "Einstellungen Ansicht" .Position.{unverändert} .WnIfAnsicht.WnTabelle .Titel := "Tabelle" .Feldbeschriftung := "Tabelle" .SsGitternetzlinien.ohneLinien =pre .{WnAnsicht ins Zentrum von WnHauptfenster ziehen} =step hat7 +WnIfAnsicht.BtReiterEingabe =check // WnAnsicht.Reiterclick belässt Position .WnIfAnsicht .Position.{unverändert} .UnterfensterSichtbar.WnEingabe =step hae3 +WnHauptfenster.Menübar.Ansicht.Eingabe =check .WnIfEingabe .Titel := "Dateneingabe" .Feldbeschriftung := ("Kundennummer", "Kundenname") .Position.linksImFrame // überdeckt WnAnsicht .TxStatus."" .EtKundennummer."" .EtKundenname."" .Beschriftungsgröße.12 =pre heae7 +WnIfEingabe.EtKundennummer."123" heae8 +WnIfEingabe.EtKundenname."Einzig" heae9 +WnIfEingabe.BtÜbernehmen // 1 Datensatz für späteres Anzeigen heae7 +WnIfEingabe.EtKundennummer."" heae8 +WnIfEingabe.EtKundenname."Nixing" heae9 +WnIfEingabe.BtÜbernehmen // TxStatus auf Fehler setzen {Fenster in die Mitte von WnHauptfenster ziehen} // überdeckt WnAnsicht komplett =step heae6 +WnHauptfenster.Menübar.Einstellungen.Ansicht =check .WnIfAnsicht .Front .WnIfAnsicht.WnEingabe.OPEN =pre heae13 +WnIfAnsicht.BtReiterTabelle =step he3x +WnHauptfenster.Menübar.Ansicht.Eingabe =check // Inhalt wird immer gelöscht .WnIfEingabe .Front .TxStatus := "" .EtKundennummer := "" // !! ist so spezifiziert .EtKundenname := "" .Beschriftungsgröße.12 =step he6x +WnHauptfenster.Menübar.Einstellungen.Ansicht =check // es kommt immer WnEingabe .WnIfAnsicht .Front .UnterfensterSichtbar.WnEingabe // !! ist so spezifiziert =pre heae13 +WnIfAnsicht.BtReiterTabelle hat9x +WnIfAnsicht.BtSchließenX =step he4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle .Front .Titel := "Tabellenansicht" .Position.rechtsImFrame // überdeckt WnIfEingabe .AnzeigeTabelle.{Überschrift} := ("Kundennummer", "Kundenname") .AnzeigeTabelle .Inhalt := KundeListe.{1 Eintrag} .Gitternetzlinien.ohneLinien =step het6 +WnHauptfenster.Menübar.Einstellungen.Ansicht =check .WnIfAnsicht .Front .Position.rechtsUntenImFrame .WnIfAnsicht.WnEingabe .SsSliderSchriftgröße.12 =pre heae3x +WnHauptfenster.Menübar.Ansicht.Eingabe het7x +WnIfEingabe.EtKundennummer."234" het8x +WnIfEingabe.EtKundenname."Zwickel" het9x +WnIfEingabe.BtÜbernehmen // Datensatz für neues WnIfTabelle =step het4x +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle .Front .AnzeigeTabelle .Inhalt := KundeListe.{2 Datensätze} .Gitternetzlinien.ohneLinien =step hf5x +WnHauptfenster.Menübar.Einstellungen.Allgemein =check .WnIfAllgemein .Titel := "Allgemeine Einstellungen" .Feldbeschriftung := ("Fenstergröße", "Hintergrundfarbe") .Position.rechtsObenImFrame .SsFenstergröße.SELECTED."600x400" .WnIfAllgemein.SsHintergrundfarbe.SELECTED."grau" =step ha9x +WnIfAllgemein.SsHintergrundfarbe.SCROLL =check {scrolling möglich, Selektion bleibt erhalten} =pre hae6x +WnHauptfenster.Menübar.Einstellungen.Ansicht hae9x +WnIfAnsicht.BtSchließenX {WnHauptfenstergröße von Hand ändern z.B. "550x422"} // WnIfAllgemein bleibt unverändert hae4x +WnHauptfenster.Menübar.Ansicht.Tabelle =step hae5x +WnHauptfenster.Menübar.Einstellungen.Allgemein =check .WnIfAllgemein .Front .SsFenstergröße.SELECTED.NOT .WnIfAllgemein.SsHintergrundfarbe.SELECTED."grau" =pre ha7 +WnIfAllgemein.SsFenstergröße.SELECTED << "750x500" ha10x +WnIfAllgemein.BtSchließenX het13 +WnIfTabelle.BtSchließenX he10 +WnIfEingabe.BtSchließen // der Knopf, nicht das X =check .WnHauptfenster .Innenfenster.keine =step hf3 +WnHauptfenster.Menübar.Ansicht.Eingabe =check .WnIfEingabe .Position.LinksImFrame .TxStatus := "" .EtKundennummer := "" .EtKundenname := "" .Beschriftungsgröße.12 =step he4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle .Position.rechtsImFrame .AnzeigeTabelle .Inhalt := KundeListe.{2 Datensätze} .Gitternetzlinien.ohneLinien =step het5 +WnHauptfenster.Menübar.Einstellungen.Allgemein =check .WnIfAllgemein .Position.RechtsObenImFrame .SsFenstergröße.SELECTED."750x500" .WnIfAllgemein.SsHintergrundfarbe.SELECTED."grau" =step hf6 +WnHauptfenster.Menübar.Einstellungen.Ansicht =check .WnIfAnsicht .Position.rechtsUntenImFrame .WnIfAnsicht.WnEingabe .SsSliderSchriftgröße.12 =next mix =============================================================== =case of6+ Kundenliste ergänzen und anzeigen Lokales Verhalten: Jedes Tippen löscht TxStatus *** Kundenname.Leer wird nicht eingetragen *** Kundennummer.Leer wird nicht eingetragen *** Wechselwirkung mit KundeListe: Kundennummer.Vorhanden wird nicht eingetragen *** Kundenname darf doppelt sein *** Kundennummer muss keine Zahl sein *** Technischer Test: Leer : [ vonVornhereinLeer | eingetragenesEntfernt ] *** Unabhängigkeit von WnIfEingabe, WnIfTabelle, KundeListe *** Anzeige: In Tabelle nach Aktualisierung *** Aktualisierung durch Öffnen *** durch Öffnen bei offenem Fenster *** durch BtAktualisieren *** Betroffene Fenster offen: WnHauptfenster+WnIfEingabe *** WnHauptfenster+WnIfEingabe+WnIfTabelle *** Kundenliste: nicht getestet: sehr viele Einträge(scroll), weil die Spezifikation hier keine Vorgaben macht. =pre =of of1 +ohneFenster.ProgrammStarten =step hf3 +WnHauptfenster.Menübar.Ansicht.Eingabe =check .WnIfEingabe .TxStatus."" .EtKundennummer."" .EtKundenname."" .Beschriftungsgröße.12 =step he4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.Leer .Gitternetzlinien.ohneLinien =step het7 +WnIfEingabe.EtKundennummer.CHANGED << "123" het8 +WnIfEingabe.EtKundenname.CHANGED << "Einsmann" het9 +WnIfEingabe.BtÜbernehmen =check // Alles passt, speichern .WnIfTabelle .{unverändert} .WnIfEingabe .EtKundenNummer := "" .EtKundenName := "" .TxStatus := "Gespeichert" =step het7 +WnIfEingabe.EtKundennummer.CHANGED << "2" =check // TxStatus: Gespeichert-Meldung löschen 1 .WnIfEingabe .TxStatus := "" =step het7 +WnIfEingabe.EtKundennummer.CHANGED << "234" { WnIfEingabe.EtKundenname bleibt leer } het9 +WnIfEingabe.BtÜbernehmen =check // Kdname leer, fehler .WnIfTabelle .{unverändert} .WnIfEingabe .EtKundenNummer.234 .EtKundenName."" .TxSTatus := "Datensatz nicht gespeichert" =step het4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.{1 Datensatz: 123, Einsmann} =step het8 +WnIfEingabe.EtKundenname.CHANGED << "Z" =check // TxStatus: Fehler-Meldung löschen 2 .WnIfEingabe .TxStatus := "" =step { schon da: +WnIfEingabe.EtKundennummer.CHANGED << "234" } het8 +WnIfEingabe.EtKundenname.CHANGED << "Zwickel" het9 +WnIfEingabe.BtÜbernehmen =check .WnIfTabelle .{unverändert} .WnIfEingabe .EtKundenNummer := "" .EtKundenName := "" .TxStatus := "Gespeichert" =step het12 +WnIfTabelle.BtAktualisieren =check .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.{2 Datensätze: 123 und 234} =pre het13 +WnIfTabelle.BtSchließenX =step {WnIfEingabe.EtKundennummer bleibt leer} he8 +WnIfEingabe.EtKundenname.CHANGED << "Nobody" he9 +WnIfEingabe.BtÜbernehmen =check // Fehler: leere Kundennummer .WnIfEingabe .EtKundenNummer."" .EtKundenName."Nobody" .TxSTatus := "Datensatz nicht gespeichert" =step he7 +WnIfEingabe.EtKundennummer.CHANGED << "999" he8 +WnIfEingabe.EtKundenname.CHANGED << "" he9 +WnIfEingabe.BtÜbernehmen =check // Kundenname explizit gelöscht .WnIfEingabe .EtKundenNummer."999" .EtKundenName."" .TxSTatus := "Datensatz nicht gespeichert" =step he7 +WnIfEingabe.EtKundennummer.CHANGED << "" he8 +WnIfEingabe.EtKundenname.CHANGED << "Drilling" he9 +WnIfEingabe.BtÜbernehmen =check // Kundennummer explizit gelöscht .WnIfEingabe .EtKundenNummer."" .EtKundenName."Drilling" .TxSTatus := "Datensatz nicht gespeichert" =step he7 +WnIfEingabe.EtKundennummer.CHANGED << "drei" he9 +WnIfEingabe.BtÜbernehmen =check .WnIfEingabe .EtKundenNummer := "" .EtKundenName := "" .TxStatus := "Gespeichert" =step he4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.{3 Datensätze: 123, 234, drei} =step het7 +WnIfEingabe.EtKundennummer.CHANGED << "234" het8 +WnIfEingabe.EtKundenname.CHANGED << "Zwilling" het9 +WnIfEingabe.BtÜbernehmen =check // KdNummer vorhanden, Fehler 1 .WnIfTabelle .{unverändert} .WnIfEingabe .EtKundenNummer."234" .EtKundenName."Zwilling" .TxSTatus := "Datensatz nicht gespeichert" =step het7 +WnIfEingabe.EtKundennummer.CHANGED << "drei" het8 +WnIfEingabe.EtKundenname.CHANGED << "Drilling" het9 +WnIfEingabe.BtÜbernehmen =check // KdNummer-String+Dublette vorhanden, Fehler 2 .WnIfTabelle .{unverändert} .WnIfEingabe .EtKundenNummer."234" .EtKundenName."Zwilling" .TxSTatus := "Datensatz nicht gespeichert" =step het7 +WnIfEingabe.EtKundennummer.CHANGED << "3" het8 +WnIfEingabe.EtKundenname.CHANGED << "Drilling" het9 +WnIfEingabe.BtÜbernehmen =check // Kdname darf doppelt sein .WnIfEingabe .EtKundenNummer := "" .EtKundenName := "" .TxStatus := "Gespeichert" =step het12 +WnIfTabelle.BtAktualisieren =check .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.{4 Datensätze: 123, 234, drei, 3} =step het13 +WnIfTabelle.BtSchließenX he7 +WnIfEingabe.EtKundennummer.CHANGED << "123" he8 +WnIfEingabe.EtKundenname.CHANGED << "Solist" he9 +WnIfEingabe.BtÜbernehmen =check // KdNummer doppelt, Fehler 3 .WnIfEingabe .EtKundenNummer."1" .EtKundenName."Solist" .TxSTatus := "Datensatz nicht gespeichert" =step he7 +WnIfEingabe.EtKundennummer.CHANGED << "567" he8 +WnIfEingabe.EtKundenname.CHANGED << "Fiffy" he9 +WnIfEingabe.BtÜbernehmen he10 +WnIfEingabe.BtSchließen =check // Technische Unabhängigkeit .WnHauptfenster .{keine Innenfenster} =step he4 +WnHauptfenster.Menübar.Ansicht.Tabelle =check .WnIfTabelle .AnzeigeTabelle .Inhalt := KundeListe.{5 Datensätze: 123, 234, drei, 3, 567} =next =het ====================== Ende der Testprozeduren =====================