Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Architecture for test frameworks
Search
Sponsored
·
Ship Features Fearlessly
Turn features on and off without deploys. Used by thousands of Ruby developers.
→
Sven Kroell
December 05, 2017
Programming
0
58
Architecture for test frameworks
Sven Kroell
December 05, 2017
Tweet
Share
More Decks by Sven Kroell
See All by Sven Kroell
QA/Developer Collaboration
thywen
0
41
Code quality for testing frameworks
thywen
0
75
Other Decks in Programming
See All in Programming
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
7
2.4k
そのAIレビュー、レビューしてますか? / Are you reviewing those AI reviews?
rkaga
6
4.5k
dchart: charts from deck markup
ajstarks
3
990
CSC307 Lecture 06
javiergs
PRO
0
680
AIによる高速開発をどう制御するか? ガードレール設置で開発速度と品質を両立させたチームの事例
tonkotsuboy_com
7
2k
20260127_試行錯誤の結晶を1冊に。著者が解説 先輩データサイエンティストからの指南書 / author's_commentary_ds_instructions_guide
nash_efp
0
910
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
140
AI前提で考えるiOSアプリのモダナイズ設計
yuukiw00w
0
220
高速開発のためのコード整理術
sutetotanuki
1
390
ぼくの開発環境2026
yuzneri
0
100
Data-Centric Kaggle
isax1015
2
760
Amazon Bedrockを活用したRAGの品質管理パイプライン構築
tosuri13
4
250
Featured
See All Featured
Designing for humans not robots
tammielis
254
26k
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
190
Tips & Tricks on How to Get Your First Job In Tech
honzajavorek
0
430
Why You Should Never Use an ORM
jnunemaker
PRO
61
9.7k
A Tale of Four Properties
chriscoyier
162
24k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
55
Gemini Prompt Engineering: Practical Techniques for Tangible AI Outcomes
mfonobong
2
280
Conquering PDFs: document understanding beyond plain text
inesmontani
PRO
4
2.3k
The innovator’s Mindset - Leading Through an Era of Exponential Change - McGill University 2025
jdejongh
PRO
1
88
Between Models and Reality
mayunak
1
180
Refactoring Trust on Your Teams (GOTO; Chicago 2020)
rmw
35
3.3k
HDC tutorial
michielstock
1
360
Transcript
Architecture For test automation frameworks
Sven Kroell Testing Toolsmith 5 Years in Automation Working for
Novoda Mentoring new Testers Creating tailored solutions @craftingtester 2
End to End Integration Unit The pyramid 3
Why automate checks? Save time 4 Codebase grows Better risk
mitigation People grow tired
Record and play 5
Tape jam 6
Do it yourself 7
None
Time flows by 9 Maintenance hard Duplicated code Devs change
locators
Repairing on the fly 1 0 Checks get deactivated Hard
to understand Red builds Codebase grows
How to do it better? 1 1
Building a framework 1 2
➡ Separation of concerns ➡ Build a domain language ➡
Keeping the checks simple ➡ Reusable components Why a framework 1 3
What went wrong? 1 4 Locators Testdata Userflows Repetitions Magic
code Sleeps
None
Think in layers 1 6 Checks Framework Driver Application
➡ Orchestrate the checks ➡ No states ➡ KISS ➡
Using a DSL provided by the framework Checks (Testfiles) 1 7
Layers of the Framework 1 8 Checks Driver Repositories Workflows
Page Objects Data Generators Data Access Objects
➡ Hold the states ➡ Fetch data from api ➡
Trigger builder Repositories 1 9
How it could look like 2 0
➡ Centralised data generation ➡ Single point of change ➡
Checks don’t need to know data rules Why repositories? 2 1
➡ Simple DSL ➡ Reusable Flows ➡ Interact via page
objects Workflows 2 2
How it could look like 2 3
➡ Decouple flows from checks ➡ Checks get cleaner ➡
Using a DSL makes it easier for new joiners to get up to speed Why workflows? 2 4
➡ Holds information about one component of the page ➡
Write and Read from a certain elements Page Objects 2 5
How it could look like 2 6
➡ Hides complexity of the DOM from workflows ➡ Single
point of change for identifiers Why Page Objects? 2 7
Lets have a small demo 2 8
➡ Errors != Faults != Failures ➡ Plan your checks
➡ Work closely with your devs Remarks 2 9
➡ Creating checks is software development ➡ Clean code is
very important ➡ A good architecture helps while refactoring Final thoughts 3 0
Questions? 3 1 Thank you!