DO YOU WANT TO TALK ABOUT
UNIT TESTIG IN SWIFT?
#itsat @daloog
¯_( )_/¯
Alexey Demedetskiy
Sigma Software
THANK YOU APPLE!
99% OF IOS APPS ARE
SHIPPED WITH UNIT TESTING!
WORKOUT TIME!!
( °□°)
ARE UNIT TESTS WORTH IT?
HTTP://STACKOVERFLOW.COM/QUESTIONS/237000/IS-
THERE-HARD-EVIDENCE-OF-THE-ROI-OF-UNIT-TESTING
TIME += 30%
HTTP://COLLABORATION.CSC.NCSU.EDU/LAURIE/PAPERS/
TDDPAPERV8.PDF
DEFECTS -= 60%
HTTP://RESEARCH.MICROSOFT.COM/EN-US/GROUPS/ESE/
NAGAPPAN_TDD.PDF
TESTS ARE GREAT!
!(ಠ ಠ!)
WHY WE ARE NOT RUBY?
1) MARKET HUSTLE
2) APPLE FRAMEWORKS
3) LACK OF EXPERTISE
4) OUTSOURCE
⌛ ➡ 💰
UNIT TESTS ARE WRITTEN
BY DEVELOPERS.
TESTS ARE DEVELOPERS
RESPONSIBILITY
DON’T SELL THEM
WRITE THEM
WHY DO WE NEED TO WRITE
TESTS?
1) REFACTORING
2) CONFIDENCE
3) CATCHING ERRORS
4) REGRESSION
🐞➡❌➡⌨➡✅
HOW TO WRITE TESTS?
🍕 🛠
🌌
UNIT
AS SMALLEST LOGIC CONTAINER
🍕
FUNCTION
INPUT ➡ OUTPUT
PURE FUNCTIONS
METHOD
MUTATION OF STATE
VOID ➡ VOID
INPUT ➡ OUTPUT
DOMAIN == CODOMAIN
ALL MY CODE IS
FUNCTIONAL, WHERE EVERY
FUNCTION TAKES ONE
ARGUMENT: ALL MY
PROGRAM'S STATE.
OBJECT
DEPENDENCIES
TRANSITIVE DEPENDENCIES
INITIAL STATE
ORDER OF OPERATIONS
UNIT
AS SMALLEST LOGIC CONTAINER
🍕
🍕 🛠
🌌
TESTS
🛠
GWT
GIVEN
WHEN
THEN
AAA
ARRANGE
ACT
ASSERT
SRV
SETUP
RECORD
VERIFY
FUNCTIONS - GWT
METHODS - AAA
OBJECTS - SRV
VALUE TESTS
BEHAVIOR TESTS
INTEGRATION TESTS
CLIENT TESTS
PYRAMID OF TESTS
HTTP://TODDLITTLEWEB.COM/WORDPRESS/2014/06/23/
THE-TESTING-DIAMOND-AND-THE-PYRAMID-2/
TEST COVERAGE
HTTP://MARTINFOWLER.COM/BLIKI/
TESTCOVERAGE.HTML
TESTS
🛠
🍕 🛠
🌌
SIDE EFFECTS
🌌
RETURN VALUE
FUNCTION CALL
STATE CHANGE
SIDE EFFECTS
🌌
🍕 🛠
🌌
SWIFT
DEPENDENCIES
STRUCT
INTERNAL
PROTOCOL
EXTERNAL
XCTEST
QUICK / NIMBLE
HTTPS://GITHUB.COM/QUICK/QUICK
RECORDER
HTTPS://GIST.GITHUB.COM/ALEXEYDEMEDETSKIY/
7A148559C81472A314F7
SWIFT
🍕 🛠
🌌
💻
💻
HTTPS://GITHUB.COM/XNEKOIX/FUNTIONALMVP
HTTP://WWW.AMAZON.COM/WORKING-EFFECTIVELY-
LEGACY-MICHAEL-FEATHERS/DP/0131177052
HTTP://WWW.AMAZON.COM/EXTREME-PROGRAMMING-
EXPLAINED-EMBRACE-EDITION/DP/0321278658
QUESTIONS:
@DALOOG
DALOG@ME.COM
NOBIDON

Алексей Демедецкий | Unit testing in swift