SlideShare ist ein Scribd-Unternehmen logo
1 von 95
Downloaden Sie, um offline zu lesen
Michael Tamm | optivo GmbH


Fighting Layout Bugs
2 / 95




         Worum geht's?
• 2 Folien Einführung
• Drei alte bekannte Gegenmaßnahmen
• Neue innovative Gegenmaßnahmen
3 / 95




Wer bin ich?
    Michael Tamm

    Systemarchitekt
    QA Automation Expert
    Selenium Committer
    Conference Speaker
    Autor für die c't und iX
4 / 95




Drei-Schichten-Architektur


       Presentation Layer

      Business Logic Layer

       Persistence Layer
5 / 95




         Worum geht's?
• 2 Folien Einführung
• Drei alte bekannte Gegenmaßnahmen
• Neue innovative Gegenmaßnahmen
6 / 95




       Idee #1

Layout-Fehler vermeiden,
    indem man immer
 valides HTML ausliefert.
7 / 95




                   Wie?
• Browser Extension
  – Funktioniert nur in einem Browser
  – Läßt den CI-Build nicht fehlschlagen
8 / 95




                   Wie?
• Automatische Validierung
  als Bestandteil des CI-Builds
  – Option 1: Ein separater Test, der die
    entscheidenen Seiten Ihrer Website
    überprüft.
  – Option2: Innerhalb bereits existierender
    Frontend-Tests
9 / 95




W3C Markup Validation Service
10 / 95




W3C Markup Validation Service
11 / 95




W3C Markup Validation Service
12 / 95




W3C Markup Validation Service
13 / 95




Schnelleres Feedback möglich?
14 / 95




Schnelleres Feedback möglich!
• Mit einem javax.servlet.Filter
  – Voraussetzung: HTML-Entwickler
    benutzt Tomcat oder Jetty
  – Funktioniert in allen Browsern
15 / 95




W3CMarkupValidationFilter
16 / 95




Demo
17 / 95




Demo
18 / 95




Demo
19 / 95




Demo
20 / 95




Demo
21 / 95




                Ads
• Müssen Sie invalides HTML von externen
  Quellen in Ihre Seiten einbinden?
• Option 1: Fügen Sie einen Switch zum
  Ausschalten aller Ads zu Ihrer Web-
  applikation hinzu.
• Option 2: Erweitern Sie den
  W3CMarkupValidationFilter so, dass er
  vor der Validierung alle Ads entfernt.
22 / 95
23 / 95




       Idee #2

Layout-Fehler vermeiden,
   indem man immer
 valides CSS ausliefert.
24 / 95




CSS Validation Service
25 / 95
26 / 95
27 / 95




       Idee #3

Layout-Fehler vermeiden,
  indem man auf gültige
   Bild-URLs überprüft.
28 / 95
 http://fighting-layout-bugs.googlecode.com


  DetectInvalidImageUrls
• Überprüft HTML auf sichtbare
  <img>- Elemente ohne oder mit
  ungültigen src-Attribut
• Überprüft CSS (style-Attribute,
  <style>-Elemente, eingebundene
  Stylesheets) auf ungültige Bild-URLs
• Überprüft die URL für das Favicon
29 / 95
30 / 95




         Worum geht's?
• 2 Folien Einführung
• Drei alte bekannte Gegenmaßnahmen
• Neue innovative Gegenmaßnahmen
31 / 95
32 / 95
33 / 95
34 / 95
35 / 95
36 / 95
37 / 95
38 / 95
39 / 95
40 / 95




       Idee #4

 Layout-Fehler entdecken,
indem man die menschliche
  Wahrnehmung simuliert.
41 / 95
42 / 95
43 / 95
44 / 95
45 / 95
46 / 95
47 / 95
    http://fighting-layout-bugs.googlecode.com


           SimpleTextDetector
•   jQuery wird in die zu analysierende Seite injected
•   jQuery('*').css('color', '#000000');
•   ein Screenshot wird erstellt
•   jQuery('*').css('color', '#fffff');
•   es wird ein zweiter Screenshot erstellt
•   Vergleich beider Screenshots:
    unterschiedliche Pixel sind Textpixel
48 / 95
49 / 95
50 / 95
51 / 95
52 / 95
    http://fighting-layout-bugs.googlecode.com


           SimpleEdgeDetector
• jQuery wird in die zu analysierende Seite injected
• jQuery('*').css('color', 'transparent');
• ein Screenshot wird erstellt
• Bestimmen der Kandidaten für vertikale / horizontale
  Kanten: alle Pixelpaare mit hohem Kontrast
• Bestimmen der vertikale / horizontale Kanten:
  alle vertikalen / horizontalen Sequenzen in den
  gefundenen Kandidaten mit ähnlicher Farbe und
  einer gewissen Mindestlänge
53 / 95
54 / 95
55 / 95
56 / 95
57 / 95




Demo
58 / 95
59 / 95
  http://fighting-layout-bugs.googlecode.com


DetectTextWithTooLowContrast
 • Textpixel identifizieren (wie bereits gesehen)
 • Überprüfen, ob Kontrast zwischen Textpixeln
   und Hintergrundpixeln groß genug ist
60 / 95
61 / 95




http://fighting-layout-bugs.googlecode.com/

  • DetectInvalidImageUrls
  • DetectNeedsHorizontalScrolling
  • DetectTextNearOrOverlappingHorizontalEdge
  • DetectTextNearOrOverlappingVerticalEdge
  • DetectTextWithTooLowContrast
62 / 95




       Integration in den
      Entwicklungsprozess
• Nigthly Build
• Option 1: separater Frontend-Test,
  der verschiedene wohldefinierte
  Seiten untersucht
• Option 2: An ausgewählten Punkten
  in bereits bestehenden Frontend-Tests
63 / 95




Fehlerhafte Texterkennung
 durch Animation auf der
zu analysierenden Seite ...
64 / 95
65 / 95
66 / 95
67 / 95
68 / 95
69 / 95




  Umgang mit „Fehlalarmen“




• Option 1: Umkonfiguration des
  Kontrastschwellwerts für Kanten
70 / 95
71 / 95
72 / 95




  Umgang mit „Fehlalarmen“




• Option 1: Umkonfiguration des
  Kontrastschwellwerts für Kanten
• Option 2: Bestimmte HTML-Elemente
  ausschließen
73 / 95




Weitere typische
Layoutfehler ...
74 / 95
75 / 95
76 / 95




          Idee #5

   Layout-Fehler entdecken,
indem man den angezeigten Text
  auf verdächtige Muster prüft.
77 / 95
78 / 95
79 / 95
80 / 95
81 / 95
82 / 95
83 / 95
84 / 95
85 / 95




            Idee #6

     Layout-Fehler entdecken,
   indem man Screenshots von
verschiedenen Browsern vergleicht.
86 / 95
87 / 95




            Idee #7

Zukünftige Layout-Fehler vermeiden,
 indem man automatische Tests für
  bekannte Layout-Fehler schreibt.
88 / 95
89 / 95
90 / 95
91 / 95
92 / 95
93 / 95
94 / 95




             Idee #8

      Layout-Fehler vermeiden,
   indem man aus Designvorlagen
automatische Akzeptanztests ableitet.
95 / 95




Danke für Ihre Aufmerksamkeit
• http://validator.w3.org/
• http://w3c-markup-validation-filter.googlecode.com/
• http://jigsaw.w3.org/css-validator/
• http://selenium.googlecode.com/
• http://fighting-layout-bugs.googlecode.com/



• mail@michaeltamm.de

Weitere ähnliche Inhalte

Andere mochten auch

Helga und freitag der 13 te
Helga und freitag der 13 teHelga und freitag der 13 te
Helga und freitag der 13 teGeorg Montsch
 
Lws cologne leansoftwaredevelopment
Lws cologne leansoftwaredevelopmentLws cologne leansoftwaredevelopment
Lws cologne leansoftwaredevelopmentMichael Mahlberg
 
Súmula do Jogo: Salgueiro-PE 1x0 Botafogo-PB
Súmula do Jogo: Salgueiro-PE 1x0 Botafogo-PBSúmula do Jogo: Salgueiro-PE 1x0 Botafogo-PB
Súmula do Jogo: Salgueiro-PE 1x0 Botafogo-PBBotashow
 
Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012
Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012
Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012Alimentaria
 
CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...
CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...
CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...Dada_Lin
 
2013 learntec jenewein_pe20
2013 learntec jenewein_pe202013 learntec jenewein_pe20
2013 learntec jenewein_pe20Thomas Jenewein
 
Webkunst aus verschiedenen_kulturen1
Webkunst aus verschiedenen_kulturen1Webkunst aus verschiedenen_kulturen1
Webkunst aus verschiedenen_kulturen1katja_w
 
10 Wichtige Meilensteine
10 Wichtige Meilensteine10 Wichtige Meilensteine
10 Wichtige MeilensteineYZx1991x
 
第2回 『マネジメント』 Chapter 9
第2回 『マネジメント』 Chapter 9第2回 『マネジメント』 Chapter 9
第2回 『マネジメント』 Chapter 9Yusuke Onishi
 
Steuerliche Behandlung von Photovoltaikanlagen
Steuerliche Behandlung von PhotovoltaikanlagenSteuerliche Behandlung von Photovoltaikanlagen
Steuerliche Behandlung von PhotovoltaikanlagenSNWPSTB
 
Erreferentzien Txostena
Erreferentzien TxostenaErreferentzien Txostena
Erreferentzien Txostenaguest239cec
 
Präsentation "Krise als Chance"
Präsentation "Krise als Chance"Präsentation "Krise als Chance"
Präsentation "Krise als Chance"guest4b9e2ec
 
Hefte Helfen - Kinderkrebshilfe
Hefte Helfen - KinderkrebshilfeHefte Helfen - Kinderkrebshilfe
Hefte Helfen - KinderkrebshilfeHefteHelfen
 
Work grouping
Work groupingWork grouping
Work groupingzimema
 

Andere mochten auch (19)

Helga und freitag der 13 te
Helga und freitag der 13 teHelga und freitag der 13 te
Helga und freitag der 13 te
 
28 14 zodiaco www.gftaognosticaespiritual.org
28 14  zodiaco www.gftaognosticaespiritual.org28 14  zodiaco www.gftaognosticaespiritual.org
28 14 zodiaco www.gftaognosticaespiritual.org
 
Lws cologne leansoftwaredevelopment
Lws cologne leansoftwaredevelopmentLws cologne leansoftwaredevelopment
Lws cologne leansoftwaredevelopment
 
Pro 1
Pro 1 Pro 1
Pro 1
 
Súmula do Jogo: Salgueiro-PE 1x0 Botafogo-PB
Súmula do Jogo: Salgueiro-PE 1x0 Botafogo-PBSúmula do Jogo: Salgueiro-PE 1x0 Botafogo-PB
Súmula do Jogo: Salgueiro-PE 1x0 Botafogo-PB
 
Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012
Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012
Alimentaria 2012: Schauplatz für Marken! Regal (Austria), enero 2012
 
CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...
CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...
CHAOS 2.0 und Wege hinaus: Der Einsatz von Enterprise Search Technologie zur ...
 
2013 learntec jenewein_pe20
2013 learntec jenewein_pe202013 learntec jenewein_pe20
2013 learntec jenewein_pe20
 
Webkunst aus verschiedenen_kulturen1
Webkunst aus verschiedenen_kulturen1Webkunst aus verschiedenen_kulturen1
Webkunst aus verschiedenen_kulturen1
 
10 Wichtige Meilensteine
10 Wichtige Meilensteine10 Wichtige Meilensteine
10 Wichtige Meilensteine
 
第2回 『マネジメント』 Chapter 9
第2回 『マネジメント』 Chapter 9第2回 『マネジメント』 Chapter 9
第2回 『マネジメント』 Chapter 9
 
Steuerliche Behandlung von Photovoltaikanlagen
Steuerliche Behandlung von PhotovoltaikanlagenSteuerliche Behandlung von Photovoltaikanlagen
Steuerliche Behandlung von Photovoltaikanlagen
 
Fbeltern1
Fbeltern1Fbeltern1
Fbeltern1
 
Erreferentzien Txostena
Erreferentzien TxostenaErreferentzien Txostena
Erreferentzien Txostena
 
Serie2
Serie2Serie2
Serie2
 
28 11 el rayo del superhombre www.gftaognosticaespiritual.org
28 11 el rayo del superhombre www.gftaognosticaespiritual.org28 11 el rayo del superhombre www.gftaognosticaespiritual.org
28 11 el rayo del superhombre www.gftaognosticaespiritual.org
 
Präsentation "Krise als Chance"
Präsentation "Krise als Chance"Präsentation "Krise als Chance"
Präsentation "Krise als Chance"
 
Hefte Helfen - Kinderkrebshilfe
Hefte Helfen - KinderkrebshilfeHefte Helfen - Kinderkrebshilfe
Hefte Helfen - Kinderkrebshilfe
 
Work grouping
Work groupingWork grouping
Work grouping
 

Ähnlich wie Fighting Layout Bugs (webinale 2011)

HTML5-Legacy-Anwendungen
HTML5-Legacy-AnwendungenHTML5-Legacy-Anwendungen
HTML5-Legacy-AnwendungenJonathan Weiß
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Andreas Wissel
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptSebastian Springer
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenPeter Rozek
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnMartin Seibert
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?punkt.de GmbH
 
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateQS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateMichael Mirold
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdAOE
 
APEX 5.1 Ui design crashkurs
APEX 5.1 Ui design crashkursAPEX 5.1 Ui design crashkurs
APEX 5.1 Ui design crashkursSteven Grzbielok
 
Whitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab ManagementWhitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab ManagementNico Orschel
 
Whitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab ManagementWhitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab ManagementNico Orschel
 
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im WebVon 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im WebSebastian Springer
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Peter Hecker
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous IntegrationMilena Reichel
 
ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“QAware GmbH
 
Evaluierung einer Hybris-Anbindung an Sitecore mittels Commerce Connect
Evaluierung einer Hybris-Anbindung an Sitecore mittels Commerce ConnectEvaluierung einer Hybris-Anbindung an Sitecore mittels Commerce Connect
Evaluierung einer Hybris-Anbindung an Sitecore mittels Commerce Connectcomspace GmbH & Co. KG
 
Echte Lösungen, keine Tricks
Echte Lösungen, keine TricksEchte Lösungen, keine Tricks
Echte Lösungen, keine TricksJens Grochtdreis
 
Vorteile von Webstandards (Historisches Dokument)
Vorteile von Webstandards (Historisches Dokument)Vorteile von Webstandards (Historisches Dokument)
Vorteile von Webstandards (Historisches Dokument)Eric Eggert
 

Ähnlich wie Fighting Layout Bugs (webinale 2011) (20)

HTML5-Legacy-Anwendungen
HTML5-Legacy-AnwendungenHTML5-Legacy-Anwendungen
HTML5-Legacy-Anwendungen
 
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
Robuste Design Systems mit Storybook und Angular: vom Konzept zur lebendigen ...
 
Best Practices für TDD in JavaScript
Best Practices für TDD in JavaScriptBest Practices für TDD in JavaScript
Best Practices für TDD in JavaScript
 
Hightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign TestenHightway to Hell - Responsive Webdesign Testen
Hightway to Hell - Responsive Webdesign Testen
 
Codeception VisualCeption
Codeception VisualCeptionCodeception VisualCeption
Codeception VisualCeption
 
Continous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickelnContinous Deployment - Schneller entwickeln
Continous Deployment - Schneller entwickeln
 
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
Punkt.de – Layout-Testing: was geht, was bringt´s, wer braucht´s?
 
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmateQS-Tag 2015 - Web Layout Testing mit Galen und webmate
QS-Tag 2015 - Web Layout Testing mit Galen und webmate
 
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von AngrybirdCloud Deployment und (Auto)Scaling am Beispiel von Angrybird
Cloud Deployment und (Auto)Scaling am Beispiel von Angrybird
 
APEX 5.1 Ui design crashkurs
APEX 5.1 Ui design crashkursAPEX 5.1 Ui design crashkurs
APEX 5.1 Ui design crashkurs
 
Whitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab ManagementWhitepaper Visual Studio 2010 Lab Management
Whitepaper Visual Studio 2010 Lab Management
 
Whitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab ManagementWhitepaper Team Foundation Server 2010 Lab Management
Whitepaper Team Foundation Server 2010 Lab Management
 
Von 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im WebVon 0 auf 100 - Performance im Web
Von 0 auf 100 - Performance im Web
 
Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.Cross-Apps-Entwicklung für iPhone, Android und Co.
Cross-Apps-Entwicklung für iPhone, Android und Co.
 
Software Metrics and Continuous Integration
Software Metrics and Continuous IntegrationSoftware Metrics and Continuous Integration
Software Metrics and Continuous Integration
 
ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“ROSIK Stammtisch „Clean Architecture“
ROSIK Stammtisch „Clean Architecture“
 
Evaluierung einer Hybris-Anbindung an Sitecore mittels Commerce Connect
Evaluierung einer Hybris-Anbindung an Sitecore mittels Commerce ConnectEvaluierung einer Hybris-Anbindung an Sitecore mittels Commerce Connect
Evaluierung einer Hybris-Anbindung an Sitecore mittels Commerce Connect
 
Echte Lösungen, keine Tricks
Echte Lösungen, keine TricksEchte Lösungen, keine Tricks
Echte Lösungen, keine Tricks
 
Vorteile von Webstandards (Historisches Dokument)
Vorteile von Webstandards (Historisches Dokument)Vorteile von Webstandards (Historisches Dokument)
Vorteile von Webstandards (Historisches Dokument)
 
A/B Testing mit Node.js
A/B Testing mit Node.jsA/B Testing mit Node.js
A/B Testing mit Node.js
 

Fighting Layout Bugs (webinale 2011)

  • 1. Michael Tamm | optivo GmbH Fighting Layout Bugs
  • 2. 2 / 95 Worum geht's? • 2 Folien Einführung • Drei alte bekannte Gegenmaßnahmen • Neue innovative Gegenmaßnahmen
  • 3. 3 / 95 Wer bin ich? Michael Tamm Systemarchitekt QA Automation Expert Selenium Committer Conference Speaker Autor für die c't und iX
  • 4. 4 / 95 Drei-Schichten-Architektur Presentation Layer Business Logic Layer Persistence Layer
  • 5. 5 / 95 Worum geht's? • 2 Folien Einführung • Drei alte bekannte Gegenmaßnahmen • Neue innovative Gegenmaßnahmen
  • 6. 6 / 95 Idee #1 Layout-Fehler vermeiden, indem man immer valides HTML ausliefert.
  • 7. 7 / 95 Wie? • Browser Extension – Funktioniert nur in einem Browser – Läßt den CI-Build nicht fehlschlagen
  • 8. 8 / 95 Wie? • Automatische Validierung als Bestandteil des CI-Builds – Option 1: Ein separater Test, der die entscheidenen Seiten Ihrer Website überprüft. – Option2: Innerhalb bereits existierender Frontend-Tests
  • 9. 9 / 95 W3C Markup Validation Service
  • 10. 10 / 95 W3C Markup Validation Service
  • 11. 11 / 95 W3C Markup Validation Service
  • 12. 12 / 95 W3C Markup Validation Service
  • 13. 13 / 95 Schnelleres Feedback möglich?
  • 14. 14 / 95 Schnelleres Feedback möglich! • Mit einem javax.servlet.Filter – Voraussetzung: HTML-Entwickler benutzt Tomcat oder Jetty – Funktioniert in allen Browsern
  • 21. 21 / 95 Ads • Müssen Sie invalides HTML von externen Quellen in Ihre Seiten einbinden? • Option 1: Fügen Sie einen Switch zum Ausschalten aller Ads zu Ihrer Web- applikation hinzu. • Option 2: Erweitern Sie den W3CMarkupValidationFilter so, dass er vor der Validierung alle Ads entfernt.
  • 23. 23 / 95 Idee #2 Layout-Fehler vermeiden, indem man immer valides CSS ausliefert.
  • 24. 24 / 95 CSS Validation Service
  • 27. 27 / 95 Idee #3 Layout-Fehler vermeiden, indem man auf gültige Bild-URLs überprüft.
  • 28. 28 / 95 http://fighting-layout-bugs.googlecode.com DetectInvalidImageUrls • Überprüft HTML auf sichtbare <img>- Elemente ohne oder mit ungültigen src-Attribut • Überprüft CSS (style-Attribute, <style>-Elemente, eingebundene Stylesheets) auf ungültige Bild-URLs • Überprüft die URL für das Favicon
  • 30. 30 / 95 Worum geht's? • 2 Folien Einführung • Drei alte bekannte Gegenmaßnahmen • Neue innovative Gegenmaßnahmen
  • 40. 40 / 95 Idee #4 Layout-Fehler entdecken, indem man die menschliche Wahrnehmung simuliert.
  • 47. 47 / 95 http://fighting-layout-bugs.googlecode.com SimpleTextDetector • jQuery wird in die zu analysierende Seite injected • jQuery('*').css('color', '#000000'); • ein Screenshot wird erstellt • jQuery('*').css('color', '#fffff'); • es wird ein zweiter Screenshot erstellt • Vergleich beider Screenshots: unterschiedliche Pixel sind Textpixel
  • 52. 52 / 95 http://fighting-layout-bugs.googlecode.com SimpleEdgeDetector • jQuery wird in die zu analysierende Seite injected • jQuery('*').css('color', 'transparent'); • ein Screenshot wird erstellt • Bestimmen der Kandidaten für vertikale / horizontale Kanten: alle Pixelpaare mit hohem Kontrast • Bestimmen der vertikale / horizontale Kanten: alle vertikalen / horizontalen Sequenzen in den gefundenen Kandidaten mit ähnlicher Farbe und einer gewissen Mindestlänge
  • 59. 59 / 95 http://fighting-layout-bugs.googlecode.com DetectTextWithTooLowContrast • Textpixel identifizieren (wie bereits gesehen) • Überprüfen, ob Kontrast zwischen Textpixeln und Hintergrundpixeln groß genug ist
  • 61. 61 / 95 http://fighting-layout-bugs.googlecode.com/ • DetectInvalidImageUrls • DetectNeedsHorizontalScrolling • DetectTextNearOrOverlappingHorizontalEdge • DetectTextNearOrOverlappingVerticalEdge • DetectTextWithTooLowContrast
  • 62. 62 / 95 Integration in den Entwicklungsprozess • Nigthly Build • Option 1: separater Frontend-Test, der verschiedene wohldefinierte Seiten untersucht • Option 2: An ausgewählten Punkten in bereits bestehenden Frontend-Tests
  • 63. 63 / 95 Fehlerhafte Texterkennung durch Animation auf der zu analysierenden Seite ...
  • 69. 69 / 95 Umgang mit „Fehlalarmen“ • Option 1: Umkonfiguration des Kontrastschwellwerts für Kanten
  • 72. 72 / 95 Umgang mit „Fehlalarmen“ • Option 1: Umkonfiguration des Kontrastschwellwerts für Kanten • Option 2: Bestimmte HTML-Elemente ausschließen
  • 73. 73 / 95 Weitere typische Layoutfehler ...
  • 76. 76 / 95 Idee #5 Layout-Fehler entdecken, indem man den angezeigten Text auf verdächtige Muster prüft.
  • 85. 85 / 95 Idee #6 Layout-Fehler entdecken, indem man Screenshots von verschiedenen Browsern vergleicht.
  • 87. 87 / 95 Idee #7 Zukünftige Layout-Fehler vermeiden, indem man automatische Tests für bekannte Layout-Fehler schreibt.
  • 94. 94 / 95 Idee #8 Layout-Fehler vermeiden, indem man aus Designvorlagen automatische Akzeptanztests ableitet.
  • 95. 95 / 95 Danke für Ihre Aufmerksamkeit • http://validator.w3.org/ • http://w3c-markup-validation-filter.googlecode.com/ • http://jigsaw.w3.org/css-validator/ • http://selenium.googlecode.com/ • http://fighting-layout-bugs.googlecode.com/ • mail@michaeltamm.de