Finding a holy grail in a haystack October 7 , 2016 Marjana - - PowerPoint PPT Presentation

finding a holy grail in a haystack
SMART_READER_LITE
LIVE PREVIEW

Finding a holy grail in a haystack October 7 , 2016 Marjana - - PowerPoint PPT Presentation

Finding a holy grail in a haystack October 7 , 2016 Marjana Shammi, Niels de Keijzer, Arturo Martinez Story of today First Half Introduction to IceMobile Challenges & Solutions Q & A Second Half Keeping Innovation Alive


slide-1
SLIDE 1

Finding a holy grail in a haystack

October 7 , 2016 Marjana Shammi, Niels de Keijzer, Arturo Martinez

slide-2
SLIDE 2

First Half

  • Introduction to IceMobile
  • Challenges & Solutions

Q & A Second Half

  • Keeping Innovation Alive

Q & A

Story of today

slide-3
SLIDE 3

Founded in 2002

slide-4
SLIDE 4

T est tool stack

T

  • ols we used in the past
slide-5
SLIDE 5
slide-6
SLIDE 6

The new tester

slide-7
SLIDE 7
  • knowledge retention & dispersion
  • Strategy & Process for Automation
  • tooling stack fit for purpose

Simplify

slide-8
SLIDE 8

Automation Strategy

Client Side Unit Tests Server Side Unit Tests

API Integration checks

System Component checks Exploratory Tests Increase

  • f

Automation

Front-end checks ( mocked)

Mocha & Chai Minosse Semele (mobile) Selenium (web)

slide-9
SLIDE 9

Minosse - API automated checks

https:/ /github.com/icemobilelab/minosse

https:/ /github.com/icemobilelab/gherkin-definitions

Feature File Custom Steps Support Code (js) APIs Common Steps

Minosse

slide-10
SLIDE 10
  • Revise
  • Use Native Tooling
  • More involvement of developers to keep

code & automation consistent

  • Keep a similar language convention
  • Reduce dependency of external tooling
  • Increase of performance runs

Mobile automation

Previous Struggles

  • Use of global names that needed

to be duplicated to make work with both platforms.

  • Appium asks for using accessibility

labels that are not mandatory for iOS.

  • App code needed to be modified to

work with previous framework Teseo.

  • Developers were frustrated to

maintain and didn’t.

  • Appium updates were not too

frequent 6 months or so.

Improve

slide-11
SLIDE 11

Semele - Mobile Automated checks

Feature File Custom Steps Support Code (Espresso XCUITest ) Common Steps Mapping iOS And

Semele

slide-12
SLIDE 12

Minosse

https:/ /github.com/icemobilelab/minosse

https:/ /github.com/icemobilelab/gherkin-definitions

Feature File Custom Steps Support Code (js) APIs Common Steps

Minosse

Minosse - API automated checks

slide-13
SLIDE 13

Monitos

A monkey test tool for a mobile app REST API

slide-14
SLIDE 14

Mobile app landscape

Middle-layer Backend A Backend B Backend C Backend D

slide-15
SLIDE 15

Oops

slide-16
SLIDE 16

Search for stores Log in Browse categories Add products to basket Book a collection slot Place order

Steps to reproduce

slide-17
SLIDE 17

Cowboy style

slide-18
SLIDE 18
slide-19
SLIDE 19

Reproducing the issue with SoapUI

slide-20
SLIDE 20
slide-21
SLIDE 21
slide-22
SLIDE 22

Search for stores Log in Browse categories Add products to basket Book a collection slot Place order

The same set of calls, but then in a Node.js script

slide-23
SLIDE 23

Enter state machines

State diagram of a turnstile

slide-24
SLIDE 24

Search for stores Log in Browse categories Add products to basket Book a collection slot Place order

More realistic journeys

slide-25
SLIDE 25

Search for stores Log in Browse categories Add products to basket Book a collection slot Place order

slide-26
SLIDE 26

Monitos

slide-27
SLIDE 27
  • Monkey testing for the middle-layer
  • Find obscure user journeys that lead to errors
  • Spawn a couple dozens and let them run for some

time, hopefully catching some bugs in the process

  • Reproduction of complex error scenarios
  • Smoke test alternative
  • Cache warmup mechanism

Current usage

slide-28
SLIDE 28
slide-29
SLIDE 29
slide-30
SLIDE 30
  • List of endpoints called
  • Achievements
slide-31
SLIDE 31
slide-32
SLIDE 32
  • State machines meet D&D
  • http://npmjs.com/package/monitos
  • https://github.com/dunkelheit/monitos

Monitos core library

slide-33
SLIDE 33

Demo time

slide-34
SLIDE 34

Questions?