Software Technik            HTWG Konstanz             Software Testing und               Qualitätssicherung               ...
WiederhlungJava Persistence API         Data         Disk
Requirement Analysis          Wasserfallmodell              System Design                          Coding                 ...
Warum sollte eine Entity dieBasic Mappings                  Schnittstelle Serializable                                impl...
Assoziationen / Relationen  @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true,      fetch = FetchType.LAZY)  @Join...
Assoziationen / Relationen  @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL,     orphanRemoval = true)  private L...
Entity •Entity hat immer einen eindeutigen Schlüssel (ID)  dieser identifiziert die Entität •Equals auf Basis der ID...
Entity Manager•API bietet alle Funktion für den Datenbankzugriff: •persist •remove •createQuery •merge •findXXX •....
Entity Manager•Wenn die Objekte (Entity Klassen) auch als Daten Transfer Objekte genutzt werden sollen können sie vom Enti...
Detached Entities•Managed Entities werden vom Entity Manager gelöst wenn: •clear oder detach •mittels rollback •Entity Man...
Übungen I•Erweitern Sie Ihre Aufgaben Verwaltung um eine Datenbank Anbindung mittels JPA •Schritt 1. Domain Modell markier...
Was ist Software Qualität ?
Was ist Software Qualität ?Funktionalität - Software sollte die spezifizierten Use-Cases / Anforderungen implementieren.4+4=9
Was ist Software Qualität ?Benutzbarkeit vorgegebenen Use-Cases lassen sicheffektiv, effizient und zufriedenstellend bedien...
Was ist Software Qualität ?Zuverlässigkeit wie verlässlich eine Anwendung in einemZeitintervall ihr Funktionalität erfüllt
Was ist Software Qualität ? Portabilität - der Grad der Plattformunabhängigkeit eines Computerprogramms                   ...
Was ist Software Qualität ? Wartbarkeit - zeigt an, mit welcher Energie und welchem Erfolg Änderungen in einem Systemzusam...
Was ist Software Qualität ? Effizienz - Performance und verbrauchte Ressourcen
Was ist Software Qualität ?                                    Funktionalität              EffizienzWartbarkeit           ...
Was soll sichergestellt werden?  Fehlerwirkung (Failure)  Nach außen sichtbare Fehlverhalten  Fehlerzustand (Bug)  Zustand...
Wege zu guter Softwareanalytische QualitätssicherungMethoden die dazu dienen eine Anwendung strukturiert(analytisch) nach ...
Kosten zur Fehlerbehebung  Kosten (€)                Fehler frühzeitig in einem Projekt                (Entwicklungsprozes...
Komponententests (Modultests) und        Testabdeckung
Komponententest Charakter•Was wird getestet ? (Testobjekt) -Klasse / Komponente (mehre Klassen mit definierter Schnittstell...
Test Design Pattern vier Phasen Test                        Setup        SUT in einen definierten Zustand bringen.         ...
JUnitpublic class QuicksortTest {! Quicksort<Integer> quicksortSUT;          Phase 1: Setup!   @Before!   public void setU...
Test CoverageTestabdeckung
Testabdeckung „Als Testabdeckung bezeichnet man das Verhältnis an tatsächlich getroffenen Aussagen eines Tests gegenüber d...
Testabdeckung (100 %) public boolean aAndbOrC(boolean A, boolean B, boolean C) { ! return (A && B) || C; }    Erwartet    ...
vollständige Testabdeckung„Eine vollständige Testabdeckung stellt eine Ausnahmedar, weil die Anzahl möglicher Testfälle se...
Testabdeckung beimWhite-Box Testen
Statement Coverage (Anweisungsüberdeckung)	   public static boolean aAndBOrC(boolean A, boolean B, boolean C) {	   	 if(A ...
Statement Coverage (Anweisungsüberdeckung)A && B          true  C      true false
Statement Coverage (Anweisungsüberdeckung)         1.A && B               true        Erwartet    A      B      C         ...
Statement Coverage (Anweisungsüberdeckung)              1.A && B                    true        Erwartet    A       B     ...
Statement Coverage (Anweisungsüberdeckung)100 %               1. A && B                    true                           ...
Statement Coverage (Anweisungsüberdeckung)	   public static boolean aAndBOrC(boolean A, boolean B, boolean C) {	   	 if(A ...
Statement Coverage (Anweisungsüberdeckung)100%               1. A && B || C        true        Erwartet    A       B      ...
Statement Coverage (Anweisungsüberdeckung)	   public static int sum(int values[], int offset){	   	 int result = 0;	   	 f...
Statement Coverage (Anweisungsüberdeckung)100%     result = 0 for (value : values)                                        ...
Statement Coverage (Anweisungsüberdeckung)100 %     result = 0 for (value : values)                                       ...
Branch Coverage 100 % (Zweigabdeckung)      result = 0  for (value : values)      offset > 0         offset < value       ...
100% Pfadabdeckung            100 % Pfadabdeckung wird in der Regel nicht            erreicht (halting problem)
Testabdeckungautomatisiert bestimmen
Übung 1I• Erstellen        Sie einen Unit Test für die JPA Implementierung zum speichern der Aufgabe• Messen   Sie die Cod...
Statische TestverfahrenCode Reviews
Walkthrough• Autor   stellt seinen Code Dokument vor.• Autor   ist der Moderator• Vorteile: • Wenig Vorbereitungsaufwand •...
Inspektion• Formalste   Form eines Review • oft   formale Vorprüfung • Gutachter   bekommen die Dokumente vorab • Gutachte...
Technisches Review• Autor nimmt am Review nicht teil• Gutachter   stimmen ab• Prüfen   gegen Spezifikation• Gutachter   prü...
Informelles Review• Gutachter   bekommt Dokument zum lesen und gibt schriftliche Rückmeldung
Zusammenfassung Reviews  Grad der                 geringster      höchsten          mittel         geringFormalisierung   ...
Statische TestverfahrenNamens Konventionen
Namens Konventionen•   Klassennamen    • beginnt mit einem Großbuchstaben, danach in Kleinbuchstaben      weiter    • begi...
Namens Konventionen•   Methodennamen    • beginnt mit einem Kleinbuchstaben, weiter klein geschrieben    • beginnt ein neu...
Namens Konventionen•   Konstantennamen    • komplett in Großbuchstaben•   Beispiele    • LEFT, PI, BLOD
Integrationsstrategien                 Big-bang               Test A        Test B      Test G        Test              Te...
Integrationsstrategien                     Bottom-up                      Test                      A- G                  ...
Integrationsstrategien             Top-down                 Test                  A                  Test               A,...
Integrationsstrategien Backbone Integration
Integrationsstrategien   Continuous Integration       betrachten wir noch in einer der folgenden       Vorlesung
Integrationstests
Test Charakterisierung•Was wird getestet ? (Testobjekt)•Wer testet? (Tester)•Welche Qualitätseigenschaft (ISO9126) wird ge...
Integrationstest Charakter•Was wird getestet ? (Testobjekt) -Zusammenspiel von zwei oder mehrere Module. -Passen die Schni...
Systemtests und Akzeptanztests
Systemtests Charakter•Was wird getestet ? (Testobjekt) -komplettes System (vollständiger Integrationstest) -bis zur System...
funktionale Systemtest /Akzeptanztests mit FIT
Überblick FitFramework for Integrated Tests      FIT wurde entwickelt von Ward Cunningham      WIKI-Erfinder...
Motivation von Fit Tests• Automatisierung von Akzeptanztests mittels Tabellen.• Framework für Datengetriebene Tests – Data...
Testen mit Fit Tabellen Fit Tests für einen Beispiel Zinsrechner
Testen mit Fit Tabellen            Fit Tests als Column Test Tabelle   Betrag    10
Testen mit Fit Tabellen             Fit Tests als Column Test Tabelle    Betrag          Zinssatz     10               2,5
Testen mit Fit Tabellen            Fit Tests als Column Test Tabelle   Betrag       Zinssatz    Laufzeit    10            ...
Testen mit Fit Tabellen           Fit Tests als Column Test Tabelle  Betrag    Zinssatz   Laufzeit   Summe   10         2,...
Testen mit Fit Tabellen                    Fit Tests als Column Test Tabelle                                       Prüfung...
Testen mit Fit Tabellen           Fit Tests als Column Test Tabelle  Betrag    Zinssatz   Laufzeit   Summe()   10         ...
Testen mit Fit Tabellen         Fit Tests als Column Test Tabelle                                 Rot = Fehler in der Anwe...
Testen mit Fit Tabellen                Fit Test als Action Tabelle     Befehle / Kommandos               fit.Ac?onFixture A...
Testen mit Fit Tabellen         Fit Test als Action Tabelle                          Anwendung Starten                    ...
Fit Design     drei Klassen Framework
Fit Tabellen und Applikationverknüpfen
Fit Tabellen und Applikationverknüpfen    onlinerechner.ZinsenFixture    Betrag     Zinssatz Laufzeit   Summe()    10     ...
Fit Tabellen und Applikationverknüpfen             Anbindung an SUT   SUT
Fit Tabellen und Applikationverknüpfen    public class ZinsenFixture extends ColumnFixture {   Basis Klasse               ...
Fit Tabellen und Applikationverknüpfen    fit.Ac?onFixture        GOF - Dekorierer-Muster    start       onlinerechner.Zins...
Fit Tabellen und Applikationverknüpfen
Fit Tabellen und Applikationverknüpfen    public class ZinsenActionFixture extends Fixture {           Zinsen zinsen = new...
OberflächentestsEinführung in Selenium                Selenium Core     Selenium                   Selenium RC        IDE
Selenium Coream Beispiel eines Zinsrechner                                Action - Tabelle Selenium Befehl open           ...
Selenium IDECapture & Replay Tests mit Selenium            Action Tabelle
Selenium Remote ControlAnbindung Selenium in Java Code als Test Treiber                   Selenium Server                 ...
Nächste SlideShare
Wird geladen in …5
×

Einführung Software Testing und Qualitätssicherung

3.873 Aufrufe

Veröffentlicht am

0 Kommentare
1 Gefällt mir
Statistik
Notizen
  • Als Erste(r) kommentieren

Keine Downloads
Aufrufe
Aufrufe insgesamt
3.873
Auf SlideShare
0
Aus Einbettungen
0
Anzahl an Einbettungen
709
Aktionen
Geteilt
0
Downloads
67
Kommentare
0
Gefällt mir
1
Einbettungen 0
Keine Einbettungen

Keine Notizen für die Folie

Einführung Software Testing und Qualitätssicherung

  1. 1. Software Technik HTWG Konstanz Software Testing und Qualitätssicherung Christian Baranowski
  2. 2. WiederhlungJava Persistence API Data Disk
  3. 3. Requirement Analysis Wasserfallmodell System Design Coding Testing Delivery
  4. 4. Warum sollte eine Entity dieBasic Mappings Schnittstelle Serializable implementieren? @Table(name = "Adr") @Entity public class Address implements Serializable { @Id @Column(name = "ADDRESS_ID") @GeneratedValue(strategy = GenerationType.SEQUENCE) private long id; @Basic private String city; @Basic private String country; @Basic private String province; @Basic @Column(name = "P_CODE") private String postalCode; @Basic private String street;
  5. 5. Assoziationen / Relationen @OneToOne(cascade = CascadeType.ALL, orphanRemoval = true, fetch = FetchType.LAZY) @JoinColumn(name = "ADDR_ID") private Address address; @ManyToOne(fetch = FetchType.LAZY) private JobTitle jobTitle; @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "MANAGER_ID") private Employee manager; @OneToMany(mappedBy = "manager") private List<Employee> managedEmployees = new ArrayList<Employee>();
  6. 6. Assoziationen / Relationen @OneToMany(mappedBy = "owner", cascade = CascadeType.ALL, orphanRemoval = true) private List<PhoneNumber> phoneNumbers = new ArrayList<PhoneNumber>(); @OneToMany(cascade = CascadeType.ALL, orphanRemoval = true) @JoinColumn(name="EMP_ID") private List<Degree> degrees = new ArrayList<Degree>(); @ManyToMany @JoinTable(name = "PROJ_EMP", joinColumns = @JoinColumn(name = "EMP_ID"), inverseJoinColumns = @JoinColumn(name = "PROJ_ID")) private List<Project> projects = new ArrayList<Project>();
  7. 7. Entity •Entity hat immer einen eindeutigen Schlüssel (ID) dieser identifiziert die Entität •Equals auf Basis der ID...
  8. 8. Entity Manager•API bietet alle Funktion für den Datenbankzugriff: •persist •remove •createQuery •merge •findXXX •....
  9. 9. Entity Manager•Wenn die Objekte (Entity Klassen) auch als Daten Transfer Objekte genutzt werden sollen können sie vom Entity Manager gelöst werden man spricht von detached Entities!
  10. 10. Detached Entities•Managed Entities werden vom Entity Manager gelöst wenn: •clear oder detach •mittels rollback •Entity Manager closed
  11. 11. Übungen I•Erweitern Sie Ihre Aufgaben Verwaltung um eine Datenbank Anbindung mittels JPA •Schritt 1. Domain Modell markieren mit den JPA Annotationen für das OR Mapping... •Schritt II. Repository Funktionen zum speichern und laden einer Aufgabe umsetzen...
  12. 12. Was ist Software Qualität ?
  13. 13. Was ist Software Qualität ?Funktionalität - Software sollte die spezifizierten Use-Cases / Anforderungen implementieren.4+4=9
  14. 14. Was ist Software Qualität ?Benutzbarkeit vorgegebenen Use-Cases lassen sicheffektiv, effizient und zufriedenstellend bedienen.Benutzbarkeit betrifft nicht nur grafischeBenutzerschnittstellen z.B. auch APIs... Die Benutzbarkeit richtet sich nach dem Anwendungsfall...
  15. 15. Was ist Software Qualität ?Zuverlässigkeit wie verlässlich eine Anwendung in einemZeitintervall ihr Funktionalität erfüllt
  16. 16. Was ist Software Qualität ? Portabilität - der Grad der Plattformunabhängigkeit eines Computerprogramms Portabilität - Die Anwendung läuft auf Linux, MAC und auf Ihrem Android Mobil Phone ...
  17. 17. Was ist Software Qualität ? Wartbarkeit - zeigt an, mit welcher Energie und welchem Erfolg Änderungen in einem Systemzusammenhang von Applikationen durchgeführt werden können.
  18. 18. Was ist Software Qualität ? Effizienz - Performance und verbrauchte Ressourcen
  19. 19. Was ist Software Qualität ? Funktionalität EffizienzWartbarkeit Zuverlässigkeit Portabilität Benutzbarkeit
  20. 20. Was soll sichergestellt werden? Fehlerwirkung (Failure) Nach außen sichtbare Fehlverhalten Fehlerzustand (Bug) Zustand in der Anwendung der zu einer Fehlerwirkung führen kann. Fehlhandlung (Error, Misstake) Irrtum bei der Software-Entwicklung. Fehlermaskierung Wirkung eines Fehlers (Fehlerzustand) ist nach außen nicht sichtbar, weil er durch einen weiteren Fehler verborgen (überlagert / maskiert) wird.
  21. 21. Wege zu guter Softwareanalytische QualitätssicherungMethoden die dazu dienen eine Anwendung strukturiert(analytisch) nach Fehlerwirkungen, Fehlerzuständen undFehlermaskierung zu untersuchen. Die Qualität wird gemessen.Anzahl der Fehlerwirkungen, Fehlerzuständen und konstruktiveFehlermaskierung bestimmt. Qualitätssicherung Methoden die dazu dienen die Wahrscheinlichkeit für Fehlhandlungen zu minimieren. D.h. die Methoden führen dazu dass es zu einer geringeren Fehlerwahrscheinlichkeit im Projekt kommt.
  22. 22. Kosten zur Fehlerbehebung Kosten (€) Fehler frühzeitig in einem Projekt (Entwicklungsprozess) zu finden spart Geld !!! Anforderungsanalyse Systementwurf Umsetzung Integrationstest Systemtest Betrieb
  23. 23. Komponententests (Modultests) und Testabdeckung
  24. 24. Komponententest Charakter•Was wird getestet ? (Testobjekt) -Klasse / Komponente (mehre Klassen mit definierter Schnittstelle)•Wer testet? (Tester) -Entwickler (White-Box / Gray-Box) / Tester (Black-Box)•Welche Qualitätseigenschaft (ISO9126) wird geprüft? -Funktionalität, Robustheit, Effizienz•Mit welchen Werkzeugen wird getestet? -xUnit Frameworks und Coverage Messung z.B. Cobertura, Emma
  25. 25. Test Design Pattern vier Phasen Test Setup SUT in einen definierten Zustand bringen. Exercise SUT aufrufen mit Test Parametern (Daten). Verify Prüfen ob das SUT im erwarteten Zustand ist. Teardown SUT und Testumgebung aufräumen.
  26. 26. JUnitpublic class QuicksortTest {! Quicksort<Integer> quicksortSUT; Phase 1: Setup! @Before! public void setUp() {! ! quicksortSUT = new Quicksort<Integer>(new IntComperator());! }! @Test Phase 2: Exercise! public void testSort() throws Exception {! ! quicksortSUT.sort(new Integer[] { 5, 8, 2, 4, 7 });! ! assertArrayEquals(new Integer[] { 2, 4, 5, 7, 8 }, values);! } Phase 3: Verify! @After! public void tearDown() {! ! quicksortSUT = null;! } Phase 4: tearDown}
  27. 27. Test CoverageTestabdeckung
  28. 28. Testabdeckung „Als Testabdeckung bezeichnet man das Verhältnis an tatsächlich getroffenen Aussagen eines Tests gegenüber den theoretisch möglich treffbaren Aussagen bzw. der Menge der gewünschten treffbaren Aussagen.“ - Wikipedia
  29. 29. Testabdeckung (100 %) public boolean aAndbOrC(boolean A, boolean B, boolean C) { ! return (A && B) || C; } Erwartet A B C false false false false true false false true false false true false true false true true false true false false true true false true true true true false true true true true
  30. 30. vollständige Testabdeckung„Eine vollständige Testabdeckung stellt eine Ausnahmedar, weil die Anzahl möglicher Testfälle sehr schnellungeheuer groß wird (durch kombinatorische Explosion).Ein vollständiger Funktionstest für eine einfacheFunktion, die zwei 16-Bit-Werte als Argument erhält,würde schon 2^(16+16), also ca. 4 Milliarden Testfällebedeuten, um die Spezifikation vollständig zu testen.“ - Wikipedia
  31. 31. Testabdeckung beimWhite-Box Testen
  32. 32. Statement Coverage (Anweisungsüberdeckung) public static boolean aAndBOrC(boolean A, boolean B, boolean C) { if(A && B){ return true; } else if(C) { return true; } else { return false; } }
  33. 33. Statement Coverage (Anweisungsüberdeckung)A && B true C true false
  34. 34. Statement Coverage (Anweisungsüberdeckung) 1.A && B true Erwartet A B C 1. true true true false C true false
  35. 35. Statement Coverage (Anweisungsüberdeckung) 1.A && B true Erwartet A B C 2. 1. true true true false C true 2. true false false true false
  36. 36. Statement Coverage (Anweisungsüberdeckung)100 % 1. A && B true Erwartet A B C 2. 1. true true true false3. C true 2. true false false true 3. false false false false false
  37. 37. Statement Coverage (Anweisungsüberdeckung) public static boolean aAndBOrC(boolean A, boolean B, boolean C) { if(A && B || C){ return true; } else { return false; } }
  38. 38. Statement Coverage (Anweisungsüberdeckung)100% 1. A && B || C true Erwartet A B C2. false 1. true false false true 2. false false false false
  39. 39. Statement Coverage (Anweisungsüberdeckung) public static int sum(int values[], int offset){ int result = 0; for (int value : values) { if(offset > 0){ if(offset < value) result += offset; } result += value; } return result; }
  40. 40. Statement Coverage (Anweisungsüberdeckung)100% result = 0 for (value : values) Erwartet values offset offset > 0 offset < value 3 [2] 1 result += offset result += value return result
  41. 41. Statement Coverage (Anweisungsüberdeckung)100 % result = 0 for (value : values) Erwartet values offset offset > 0 offset < value 3 [2] 1 result += offset result += value return result
  42. 42. Branch Coverage 100 % (Zweigabdeckung) result = 0 for (value : values) offset > 0 offset < value result += offset Erwartet values offset result += value 3 [2] 1 2 [2] 0 return result 2 [2] 2
  43. 43. 100% Pfadabdeckung 100 % Pfadabdeckung wird in der Regel nicht erreicht (halting problem)
  44. 44. Testabdeckungautomatisiert bestimmen
  45. 45. Übung 1I• Erstellen Sie einen Unit Test für die JPA Implementierung zum speichern der Aufgabe• Messen Sie die Code Abdeckung in Eclipse
  46. 46. Statische TestverfahrenCode Reviews
  47. 47. Walkthrough• Autor stellt seinen Code Dokument vor.• Autor ist der Moderator• Vorteile: • Wenig Vorbereitungsaufwand • Prüfung findet durch spontane Fragen statt.
  48. 48. Inspektion• Formalste Form eines Review • oft formale Vorprüfung • Gutachter bekommen die Dokumente vorab • Gutachter prüfen erst einzeln • Anschließende Sitzung mit Autor, Gutachtern und Moderator
  49. 49. Technisches Review• Autor nimmt am Review nicht teil• Gutachter stimmen ab• Prüfen gegen Spezifikation• Gutachter prüfen einzeln vorab
  50. 50. Informelles Review• Gutachter bekommt Dokument zum lesen und gibt schriftliche Rückmeldung
  51. 51. Zusammenfassung Reviews Grad der geringster höchsten mittel geringFormalisierung Autor Autor Gutachter einzelne Anwesend Gutachter Prüfer Moderator Gutachter Moderator Code CodeAnwendbarkeit Dokumente Dokumente Dokumente Dokumente LernenVorbereitung kaum Formale Prüfung Formale Prüfung kaum Walkthrough Inspektion Technisches Informelles Review Review
  52. 52. Statische TestverfahrenNamens Konventionen
  53. 53. Namens Konventionen• Klassennamen • beginnt mit einem Großbuchstaben, danach in Kleinbuchstaben weiter • beginnt ein neuer wesentlicher Teil des Klassennamens, wird er mit einem Großbuchstaben verdeutlicht• Beispiele • Color, Button, TextField, String
  54. 54. Namens Konventionen• Methodennamen • beginnt mit einem Kleinbuchstaben, weiter klein geschrieben • beginnt ein neuer wesentlicher Teil wird er mit einem Großbuchstaben verdeutlicht• Beispiele • equals(), setColor(), drawOval()...
  55. 55. Namens Konventionen• Konstantennamen • komplett in Großbuchstaben• Beispiele • LEFT, PI, BLOD
  56. 56. Integrationsstrategien Big-bang Test A Test B Test G Test Test C A- G Test F Test D Test E
  57. 57. Integrationsstrategien Bottom-up Test A- G Test Test B, E, F D, G Test C Test E Test F Test G
  58. 58. Integrationsstrategien Top-down Test A Test A, B, C, D Test A- G
  59. 59. Integrationsstrategien Backbone Integration
  60. 60. Integrationsstrategien Continuous Integration betrachten wir noch in einer der folgenden Vorlesung
  61. 61. Integrationstests
  62. 62. Test Charakterisierung•Was wird getestet ? (Testobjekt)•Wer testet? (Tester)•Welche Qualitätseigenschaft (ISO9126) wird geprüft?•Mit welchen Werkzeugen wird getestet?
  63. 63. Integrationstest Charakter•Was wird getestet ? (Testobjekt) -Zusammenspiel von zwei oder mehrere Module. -Passen die Schnittstellen?•Wer testet? (Tester) -Entwickler (White-Box / Gray-Box) / dezidierte Tester (Black-Box)•Welche Qualitätseigenschaft (ISO9126) wird geprüft? -Robustheit, Portabilität,Funktionalität, Wartbarkeit, Effizienz•Mit welchen Werkzeugen wird getestet? -JUnit, DBunit, Mocking Frameworks
  64. 64. Systemtests und Akzeptanztests
  65. 65. Systemtests Charakter•Was wird getestet ? (Testobjekt) -komplettes System (vollständiger Integrationstest) -bis zur Systemgrenze•Wer testet? (Tester) - dezidierte Tester (Black-Box)•Welche Qualitätseigenschaft (ISO9126) wird geprüft? -Funktionalität, Effizienz, Benutzbarkeit, Robustheit, Portabilität•Mit welchen Werkzeugen wird getestet? -JUnit, FIT, Selenium ... HP Test Runner, GUIdancer ...
  66. 66. funktionale Systemtest /Akzeptanztests mit FIT
  67. 67. Überblick FitFramework for Integrated Tests FIT wurde entwickelt von Ward Cunningham WIKI-Erfinder...
  68. 68. Motivation von Fit Tests• Automatisierung von Akzeptanztests mittels Tabellen.• Framework für Datengetriebene Tests – Data-Driven-Test (xUnit Test Patterns - Gerard Meszaros)
  69. 69. Testen mit Fit Tabellen Fit Tests für einen Beispiel Zinsrechner
  70. 70. Testen mit Fit Tabellen Fit Tests als Column Test Tabelle Betrag 10
  71. 71. Testen mit Fit Tabellen Fit Tests als Column Test Tabelle Betrag Zinssatz 10 2,5
  72. 72. Testen mit Fit Tabellen Fit Tests als Column Test Tabelle Betrag Zinssatz Laufzeit 10 2,5 2
  73. 73. Testen mit Fit Tabellen Fit Tests als Column Test Tabelle Betrag Zinssatz Laufzeit Summe 10 2,5 2 10,51
  74. 74. Testen mit Fit Tabellen Fit Tests als Column Test Tabelle Prüfung eines Ergebnis Eingehende - Werte Betrag Zinssatz Laufzeit Summe()Testfall 10 2,5 2 10,51
  75. 75. Testen mit Fit Tabellen Fit Tests als Column Test Tabelle Betrag Zinssatz Laufzeit Summe() 10 2,5 2 10,51 10 10 3 25,94 10 10 10 100000 ... ... ... ... Testfälle
  76. 76. Testen mit Fit Tabellen Fit Tests als Column Test Tabelle Rot = Fehler in der Anwendung Gelb =Ausnahme - Fehler im Test Grün = erfolgreicher Test
  77. 77. Testen mit Fit Tabellen Fit Test als Action Tabelle Befehle / Kommandos fit.Ac?onFixture Anbindung an die Applikation (Java) start ZinsenAc(onFixture enter Betrag 10 Argumente enter Zinssatz 2,5 Testfall enter Laufzeit 2 press Submit check Summe 10,51 Objekt / Auswahl / Target
  78. 78. Testen mit Fit Tabellen Fit Test als Action Tabelle Anwendung Starten Eingaben Aktion - Zinsen Berechnen Prüfung
  79. 79. Fit Design drei Klassen Framework
  80. 80. Fit Tabellen und Applikationverknüpfen
  81. 81. Fit Tabellen und Applikationverknüpfen onlinerechner.ZinsenFixture Betrag Zinssatz Laufzeit Summe() 10 2,5 2 10,51 10 10 3 25,94 20 10 10 100000 ... ... ... ...
  82. 82. Fit Tabellen und Applikationverknüpfen Anbindung an SUT SUT
  83. 83. Fit Tabellen und Applikationverknüpfen public class ZinsenFixture extends ColumnFixture { Basis Klasse für private Zinsen zinsen = new Zinsen(); Fit Extension public double betrag; SUT public double zinsatz; public double laufzeit; Eingehende - Werte public double summe() { Prüfung - Ausgabe zinsen.setBetrag(betrag); zinsen.setLaufzeit(laufzeit); zinsen.setZinssatz(zinsatz); Anbindung return zinsen.berechneZinsen(); an SUT } }
  84. 84. Fit Tabellen und Applikationverknüpfen fit.Ac?onFixture GOF - Dekorierer-Muster start onlinerechner.ZinsenAc(onFixture enter Betrag 10 enter Zinssatz 2,5 enter Laufzeit 2 press berechneZinsen check Summe 10,51
  85. 85. Fit Tabellen und Applikationverknüpfen
  86. 86. Fit Tabellen und Applikationverknüpfen public class ZinsenActionFixture extends Fixture { Zinsen zinsen = new Zinsen(); double summe; public void betrag(double betrag) { zinsen.setBetrag(betrag); Eingaben / Enter } … public void berechneZinsen() { Aktion / Press summe = zinsen.berechneZinsen(); } public double summe() { return summe; Ausgabe Prüfung / Check } }
  87. 87. OberflächentestsEinführung in Selenium Selenium Core Selenium Selenium RC IDE
  88. 88. Selenium Coream Beispiel eines Zinsrechner Action - Tabelle Selenium Befehl open /JugsBase/zinsrechner.jsp Argumente type betrag 20.0 type zinsatz 22.0 type laufzeit 100.0 clickAndWait submit assertTextPresent 8649939365.27  Euro Target
  89. 89. Selenium IDECapture & Replay Tests mit Selenium Action Tabelle
  90. 90. Selenium Remote ControlAnbindung Selenium in Java Code als Test Treiber Selenium Server Browser Firefox, IE Selenium Core JAVA, PHP... SUT HTTP Proxy Webapplikation

×