@roesslerj1
Dr. Jeremias Rößler
https://retest.de
Test Automation
without Assertions
@roesslerj2
Teaser-DEMO
@roesslerj3
expect(umbrellaOpens).toBe(true)
tests: 1 passed, 1 total
**all tests passed**
@roesslerj5
We do one thing different.
@roesslerj6
You don’t define the outcome,
you approve it.
First you ensure that everything is as wanted.
Then we make sure it doesn’t change.
@roesslerj7
automated tests
≠
tests
@roesslerj8
automated tests
=
version control
@roesslerj9
Where has the
Code changed?
@roesslerj10
@roesslerj11
Where has the
_Software_ changed?
@roesslerj12
Closing the gap:
automated tests
@roesslerj13
automated tests
=
version control
@roesslerj14
@roesslerj15
@roesslerj16
passes
@roesslerj17
@roesslerj18
@roesslerj19
@roesslerj20
@roesslerj21
@roesslerj22
automated tests
=
version control
@roesslerj23
*.log
*.class
target/.*
.gitignore
@roesslerj24
@roesslerj25
@roesslerj26
@roesslerj27
@roesslerj28
Git for the GUI
@roesslerj29
# These files are ignored by git
# based on their name:
*.log
*.class
target/.*
.gitignore
@roesslerj30
# Ignore file for recheck.
# Ignore attributes globally:
attribute=class
.retest/recheck.ignore
@roesslerj31
# Ignore file for recheck.
# Ignore attributes with regex:
attribute-regex=.*
.retest/recheck.ignore
@roesslerj32
# Ignore file for recheck.
# Ignore elements by tag:
matcher: type=a
.retest/recheck.ignore
@roesslerj33
# Ignore file for recheck.
# Ignore elements by attribute:
matcher: id=banner
.retest/recheck.ignore
@roesslerj34
# Ignore file for recheck.
# These can be combined:
matcher: id=div-b4f23, attribute-regex: font.*
.retest/recheck.ignore
@roesslerj35
# Ignore file for recheck.
# Ignore whole subtrees:
matcher: xpath=HTML[1]/BODY[1]/DIV[1]/DIV[1]/DIV[1]
.retest/recheck.ignore
@roesslerj36
ignore ≈ filter
@roesslerj37
Demo
@roesslerj38
Better than pixel diffing
@roesslerj39
Better than pixel diffing
@roesslerj40
Better than pixel diffing
@roesslerj41
Works with animations
@roesslerj42
+ rule-based deterministic ignore
+ open source
+ offline usage
+ unbreakable selenium
+ works for any technical interface
recheck benefits:
@roesslerj43
some Feedback
… I was thrilled by that
product and new
approach…
… let me congratulate you on your brilliant
idea of the unbreakable Selenium and the
web page difference checking solutions. I
think this is a very much needed solution in
the website testing field.
Ahmed Magdy
Michael Wowro
… the tool is very helpful, gives detailed
information and is easy to use …
Karolina Wierbol
@roesslerj44
@roesslerj45
new version
findElement(by.id(“sign-in”))
ID changed
use
new element
and log
find in
old version
old version
breaks
create 1-on-1
assignment
new version
best match
@roesslerj46
@roesslerj48
@roesslerj49
@roesslerj50
@roesslerj51
data-independent tests
@roesslerj52
https://github.com/retest/recheck-web
@roesslerj53
https://github.com/retest/recheck-web-chrome-extension
@roesslerj
new version
findElement(by.id(“sign-in”))
ID changed
use
new element
and log
find in
old version
old version
breaks
create 1-on-1
assignment
new version
best match
@roesslerjX
Better than pixel diffing
54
Summary
Difference Testing
whitelist testing
easy creation
easy maintenance
Unbreakable Selenium:
easy to use
define own ids
data-independent tests
@roesslerj55
roessler@retest.de
https://www.facebook.com/retest.de
http://retest.rocks
@roesslerj
Please star us on GitHub!

Testing without Assertions