Slide 1

Slide 1 text

@alex_zhukovich https://alexzh.com/ Common mistakes 
 UI Testing

Slide 2

Slide 2 text

Interaction Pixel perfectness

Slide 3

Slide 3 text

INTERACTION PIXEL PERFECTNESS

Slide 4

Slide 4 text

INTERACTION PIXEL PERFECTNESS

Slide 5

Slide 5 text

Test Planning Test Data Device Preparation What to test

Slide 6

Slide 6 text

Test Planning

Slide 7

Slide 7 text

NOT DEFINING CLEAR TEST OBJECTIVES Design System Application Screen in isolation

Slide 8

Slide 8 text

NOT DEFINING CLEAR TEST OBJECTIVES Design System Application Screen in isolation END-TO-END TESTING

Slide 9

Slide 9 text

NOT DEFINING CLEAR TEST OBJECTIVES Design System Application Screen in isolation END-TO-END TESTING FUNCTIONAL 
 TESTING

Slide 10

Slide 10 text

NOT DEFINING CLEAR TEST OBJECTIVES Design System Application Screen in isolation END-TO-END TESTING FUNCTIONAL 
 TESTING SCREENSHOT 
 TESTING

Slide 11

Slide 11 text

NOT SELECTING APPROPRIATE TEST SCENARIOS

Slide 12

Slide 12 text

NOT SELECTING APPROPRIATE TEST SCENARIOS

Slide 13

Slide 13 text

Test Data

Slide 14

Slide 14 text

NOT USING CORRECT TEST DATA @Test fun superImportantTest() { assertEquals(4, sum(2, 2)) } fun sum(a: Int, b: Int): Int { ... }

Slide 15

Slide 15 text

@Test fun superImportantTest() { assertEquals(4, sum(2, 2)) } fun sum(a: Int, b: Int): Int { return 4 } NOT USING CORRECT TEST DATA

Slide 16

Slide 16 text

GLOBAL TEST DATA FOR A TEST SUITE TEST DATA TEST CASE TEST CASE TEST CASE TEST CASE

Slide 17

Slide 17 text

GLOBAL TEST DATA FOR A TEST SUITE TEST DATA TEST CASE TEST CASE TEST CASE TEST CASE

Slide 18

Slide 18 text

DO NOT CLEAR DATA AFTER TEST CASE EXECUTION Test Case Test Case Test Case TEST CASE TEST CASE TEST CASE

Slide 19

Slide 19 text

SETUP DATA VIA UI INSTEAD OF API, DB, MOCK +

Slide 20

Slide 20 text

SETUP DATA VIA UI INSTEAD OF API, DB, MOCK + ADD NOTE

Slide 21

Slide 21 text

SETUP DATA VIA UI INSTEAD OF API, DB, MOCK + Fake data

Slide 22

Slide 22 text

Device Preparation

Slide 23

Slide 23 text

INCORRECT SETUP OF DEVICE OR EMULATOR Tools requirements Noti fi cations Language

Slide 24

Slide 24 text

What to test

Slide 25

Slide 25 text

NOT TESTING VISUAL DESIGN GUIDELINES

Slide 26

Slide 26 text

NOT TESTING DIFFERENT FONT & DISPLAY SIZES Display Size: Large Font Size: Largest Display Size: Default Font Size: Largest Display Size: Default Font Size: Default

Slide 27

Slide 27 text

NOT TESTING INTERNALIZATION AND LOCALIZATION

Slide 28

Slide 28 text

NOT TESTING DIFFERENT USER WORKFLOWS PREMIUM PREMIUM PREMIUM PREMIUM

Slide 29

Slide 29 text

NOT TESTING NEGATIVE TEST CASES ERROR

Slide 30

Slide 30 text

NOT TESTING OFFLINE FUNCTIONALITY NO INTERNET

Slide 31

Slide 31 text

NOT TESTING DIFFERENT PERMISSIONS https://alexzh.com/ui-testing-of-android-runtime-permissions/

Slide 32

Slide 32 text

Tools & Techniques

Slide 33

Slide 33 text

HOW TO ACHIEVE EFFICIENCY IN TESTING END-TO-END TESTS FUNCTIONAL TESTS SCREENSHOT TESTS

Slide 34

Slide 34 text

PARAMETERIZED TEST CASES @RunWith(TestParameterInjector::class) class WeekCalendarParamScreenshotTest( @TestParameter val uiMode: UiMode, @TestParameter val fontSize: FontSize, @TestParameter val todayIsSelectedDate: Boolean ) : ScreenshotTest { ... @Test fun weekCalendar_paramUiModeAndFontSizeAndSelectedDate() { val todayDate = if (todayIsSelectedDate) testDate.minusDays(1) else testDate.minusDays(2) val todayIsSelectedDateDescription = if (todayIsSelectedDate) "todayIsSelectedDate" else "todayIsNotSelectedDate" val activityScenario = ActivityScenarioConfigurator.ForComposable() .setUiMode(uiMode) .setFontSize(fontSize) .launchConfiguredActivity() .onActivity { it.setContent { AppTheme { WeekCalendar(...) } } } activityScenario.waitForActivity() compareScreenshot(composeTestRule, "weekCalendar_${uiMode}_${fontSize}_${todayIsSelectedDateDescription}") activityScenario.close() } }

Slide 35

Slide 35 text

PARAMETERIZED TEST CASES

Slide 36

Slide 36 text

FIXING COMMON MISTAKES

Slide 37

Slide 37 text

HOW TO START ADDING UI TESTS Priorities User Flow Analytics

Slide 38

Slide 38 text

? ? ?

Slide 39

Slide 39 text

@alex_zhukovich https://alexzh.com/ Explore More UI Testing