README.md 3.83 KB
Newer Older
Tom Gross's avatar
Tom Gross committed
1
2
3
4
5
# Webakzeptanztests Tutorial

## Voraussetzungen

 - Visual Studio 
6
 - Python 3 Extension (Workload Python Entwicklung) https://www.visualstudio.com/de/vs/python/  (Python 3.6 64bit)
7
 - Chrome Web Browser (mindestens Version 59 für Headless Mode für Linux und Mac)
Tom Gross's avatar
Tom Gross committed
8
 - Repository [0] clonen oder ZIP herunterladen und entpacken
9

Tom Gross's avatar
Tom Gross committed
10
11
## Installation

12
 - Python Virtualenv erstellen [1].
13
 - Requirements installieren. (Visual Studio übernimmt das.)
14
15
16
17

**Achtung!** in der VS-Solution kommt eine Python Virtualenv `env` mit. Diese muss von der Disk und der
Solution gelöscht werden, bevor eine neue Python Virtualenv mit genau dem Namen `env` erstellt wird.

18
19
20
**Achtung!** Vor allem beim Download als ZIP kann es vorkommen, dass der Pfad für die Python Umgebung zu lang
ist und es zu einer Fehlermeldung kommt. Der Pfad muss dann durch Verschieben der Solution oder Umbenennen der
Verzeichnisse verkürzt werden.
Tom Gross's avatar
Tom Gross committed
21

22
 - Chrome Driver [2] in der Virtualenv installieren
Tom Gross's avatar
Tom Gross committed
23

24
25
**Achtung!** Die beiden Verzeichnisse `./Acceptance Test Tutorial/env` und
`./Acceptance Test Tutorial/env/Scripts` müssen im Pfad Environment sein,
Tom Gross's avatar
Tom Gross committed
26
damit Python und der Testrunner gefunden werden.
27

Tom Gross's avatar
Tom Gross committed
28
29
30

## Selenium

31
Gestartet ist Selenium als Firefox Addon [3]. Mittlerweile hat es sich zum Platzhirsch des 
Tom Gross's avatar
Tom Gross committed
32
automatisierten Blackbox Akkzeptanztestings für Webseiten und Anwendungen etabliert. Das
33
Firefox Addon ist mittlerweile EOL [4].
Tom Gross's avatar
Tom Gross committed
34
35

Selenium wird heutzutage direkt aus den Testingtools verschiedener Programmiersprachen
Tom Gross's avatar
Tom Gross committed
36
verwendet. Es gibt offizielle Integrationen für Java, C#, Ruby, Python, JavaScript (Node).
Tom Gross's avatar
Tom Gross committed
37
38
39

## Robot Framework

Tom Gross's avatar
Tom Gross committed
40
Eine Möglichkeit der Steuerung von Selenium ist das generische
41
Akzeptanztestframework Robot Framework [5]. Dieses Framework
Tom Gross's avatar
Tom Gross committed
42
wird vom Team Web für die Akzeptanztests des Webauftritts und
Tom Gross's avatar
Tom Gross committed
43
44
45
46
47
anderer Services verwendet.

### Warum Robot Framework?

 * Gut dokumentiert
Tom Gross's avatar
Tom Gross committed
48
 * Erweiterbar auf andere (nicht Web) Bereich - zB SMTP, Mobile, etc.
Tom Gross's avatar
Tom Gross committed
49
50
 * Gutes Level an Abstraktion (DRY)
 * Goodies wie Testbericht und Screenshots
Tom Gross's avatar
Tom Gross committed
51

Tom Gross's avatar
Tom Gross committed
52
53
54
55
56
57
58
59
60
61
62

### Das Kleingdruckte

 * Auch Tests müssen (analog anderer Software) gewartet werden.
   Eine sinnvolle Beschränkung auf die wichtigsten Features ist angeraten
 * Es kommt immer wieder zu False Positives.
   Da die Abhängigkeiten bei Selenium recht komplex sind, kommt es immer
   wieder zu Testfehlschlägen, die eigentlich keine sind.
   Es gibt Abhängigkeiten zu Browser, WebDriver, Netzwerk, Server, etc.
   Hier hilft die Tests so klein wie möglich zu halten und
   bei öfterem Auftreten neu zu organisieren.
Tom Gross's avatar
Tom Gross committed
63
64
65
66
67
 * Je nach Szenarium dauert die Ausführung und damit ein vermeintliches
   Debugging lange. Für unmittelbare Feedbacks sind Seleniumtests
   eher ungeeignet. Mit dem Grundsatz "Weniger ist mehr" und einer
   Parallelisierung der Testausführung kann diesem Nachteil entgegegen
   gewirkt werden.
68

Tom Gross's avatar
Tom Gross committed
69
## Übungen vorbereiten
Tom Gross's avatar
Tom Gross committed
70

Tom Gross's avatar
Tom Gross committed
71
Um die Übungen durführen zu können, muss ein lokaler Server auf Port
Tom Gross's avatar
Tom Gross committed
72
8000 laufen. 
Tom Gross's avatar
Tom Gross committed
73
74

```
Tom Gross's avatar
Tom Gross committed
75
C:\...>"Acceptance Test Tutorial\env\Scripts\python.exe" -m http.server
Tom Gross's avatar
Tom Gross committed
76
77
78
Serving HTTP on 0.0.0.0 port 8000 (http://0.0.0.0:8000/) ...
```

Tom Gross's avatar
Tom Gross committed
79
80
81
# Übungen

* [Beispiel 1: Erster Selenium Test](Beispiel1.md)
Tom Gross's avatar
Tom Gross committed
82
* [Beispiel 2: Debugging von Robot Tests](Debugging.md)
Tom Gross's avatar
Tom Gross committed
83
* [Beispiel 3: Selektoren](Selektoren.md)
Tom Gross's avatar
Tom Gross committed
84
* [Beispiel 4: Formulare](Formulare.md)
Tom Gross's avatar
Tom Gross committed
85
* [Beispiel 5: Typische Probleme](TypischeProbleme.md)
Tom Gross's avatar
Tom Gross committed
86
87
* [Beispiel 6: Dynamische Seiten](DynamischeSeiten.md)
* [Beispiel 7: Knacknüsse - iFrames, WYSIWYG, etc.](KnackNuesse.md)
Tom Gross's avatar
Tom Gross committed
88
* [Beispiel 8: Robot Erweiterungen](RobotExtensions.md) 
Tom Gross's avatar
Tom Gross committed
89
* [Anhang 1: Dokumentation](Documentation.md)
Tom Gross's avatar
Tom Gross committed
90

91
[0]: https://gitlab.fhnw.ch/web/acceptancetest-tutorial
92
93
[1]: https://docs.microsoft.com/en-us/visualstudio/python/python-environments
[2]: https://sites.google.com/a/chromium.org/chromedriver/
Tom Gross's avatar
Tom Gross committed
94
[3]: http://www.seleniumhq.org/projects/ide/
95
96
[4]: https://seleniumhq.wordpress.com/2017/08/09/firefox-55-and-selenium-ide/
[5]: http://robotframework.org/