Slide 1

Slide 1 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Practical Testing in iOS

Slide 2

Slide 2 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Hello Devnot

Slide 3

Slide 3 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN 2010 - Today

Slide 4

Slide 4 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN nsistanbul.com

Slide 5

Slide 5 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN kanvas.istanbul

Slide 6

Slide 6 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN

Slide 7

Slide 7 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN @seyfoyun

Slide 8

Slide 8 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN

Slide 9

Slide 9 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN iOS Testing Today

Slide 10

Slide 10 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Testing is standard for all teams.

Slide 11

Slide 11 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN But is it?

Slide 12

Slide 12 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN PRACTICAL Testing for iOS

Slide 13

Slide 13 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Why Tests?

Slide 14

Slide 14 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Results in more modularized code

Slide 15

Slide 15 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Define better specs

Slide 16

Slide 16 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN As project grows larger, saves your 🍑

Slide 17

Slide 17 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Types of Tests

Slide 18

Slide 18 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Unit Tests

Slide 19

Slide 19 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Unit → smallest piece of code

Slide 20

Slide 20 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN fast.

Slide 21

Slide 21 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN small.

Slide 22

Slide 22 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN reliable.

Slide 23

Slide 23 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN 8000 Shopify Android

Slide 24

Slide 24 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN 10000 Airbnb iOS

Slide 25

Slide 25 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN 30000 Nordstrom iOS

Slide 26

Slide 26 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN XCTest

Slide 27

Slide 27 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN XCTest

Slide 28

Slide 28 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Where to Write Unit Tests?

Slide 29

Slide 29 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Custom Logic

Slide 30

Slide 30 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN View Models

Slide 31

Slide 31 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Presenters

Slide 32

Slide 32 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Routing

Slide 33

Slide 33 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Serialization

Slide 34

Slide 34 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Mutable State

Slide 35

Slide 35 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN State Machines

Slide 36

Slide 36 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Bindings

Slide 37

Slide 37 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Data Sources

Slide 38

Slide 38 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Data Stores

Slide 39

Slide 39 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Extensions

Slide 40

Slide 40 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Custom Classes

Slide 41

Slide 41 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN BDD (Behavior Driven Development)

Slide 42

Slide 42 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Quick (Nimble)

Slide 43

Slide 43 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN

Slide 44

Slide 44 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Quick (Nimble) Advantages • More matching methods • Easier async tests

Slide 45

Slide 45 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Quick (Nimble) • Easier async tests

Slide 46

Slide 46 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Mocking

Slide 47

Slide 47 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Mocker

Slide 48

Slide 48 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Mocker

Slide 49

Slide 49 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Mocker

Slide 50

Slide 50 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Integration Tests

Slide 51

Slide 51 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Integration Tests

Slide 52

Slide 52 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN UI Tests

Slide 53

Slide 53 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN UI Automation Tests

Slide 54

Slide 54 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN XCUITest

Slide 55

Slide 55 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN XCUITest

Slide 56

Slide 56 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN XCUITest

Slide 57

Slide 57 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN UI Automation Tests are • Clunky (slow) • Prone to errors • Repetitive

Slide 58

Slide 58 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Appium (JS, Python, Java, Ruby)

Slide 59

Slide 59 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN XCUITest

Slide 60

Slide 60 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Robot Pattern

Slide 61

Slide 61 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Robot Pattern

Slide 62

Slide 62 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Robot Pattern

Slide 63

Slide 63 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Robot Pattern

Slide 64

Slide 64 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Robot Pattern

Slide 65

Slide 65 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Robot Pattern

Slide 66

Slide 66 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Page Object Pattern

Slide 67

Slide 67 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Page Object Pattern

Slide 68

Slide 68 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Page Object Pattern

Slide 69

Slide 69 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Page Object Pattern

Slide 70

Slide 70 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Snapshot Tests

Slide 71

Slide 71 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Pass in static data

Slide 72

Slide 72 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Take screenshots of different UIs & UI states

Slide 73

Slide 73 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Verify screenshots

Slide 74

Slide 74 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Turn record mode off

Slide 75

Slide 75 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN iOSSnapshotTestCase (formerly FBSnapshotTestCase)

Slide 76

Slide 76 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN SnapshotTesting

Slide 77

Slide 77 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN SnapshotTesting

Slide 78

Slide 78 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN SnapshotTesting Downsides • Repository can grow large after many tests • Some teams store reference images in another repository • Add CI jobs to fetch reference images and run snapshot tests afterwards

Slide 79

Slide 79 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Are We Late to Start Testing?

Slide 80

Slide 80 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Start by writing tests to new features only

Slide 81

Slide 81 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Tests need to be written when refactoring

Slide 82

Slide 82 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Code where bug fixes are being made should be tested

Slide 83

Slide 83 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Integration tests are a good way to start

Slide 84

Slide 84 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Writing snapshot tests are quick and easy

Slide 85

Slide 85 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Plus, you’ll have a better connection with your designer

Slide 86

Slide 86 text

SEYFEDDIN BASSARAC DEVNOT MOBILE 2023 APRIL 2023 @SEYFOYUN SEYFEDD.IN Thank you.