Встреча Quality built in @Spotify от Андрея Дзыни : как стать...

53
December 6, 2014 Andrii Dzynia Road Manager to Continuous Delivery @adzynia Quality Built In

Transcript of Встреча Quality built in @Spotify от Андрея Дзыни : как стать...

Page 1: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

December 6, 2014

Andrii Dzynia Road Manager to Continuous Delivery

@adzynia

Quality Built In

Page 2: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

2

Spotify brings you the right music for

every moment!

Started in 2006 (in Sweden) Now 1500+ employees, 500+ engineers Over 30 million songs available Over 20,000 songs added every day 5 development centres across the globe

Page 3: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

What is Quality?

3

Page 4: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

4

Not just software defects, but stakeholders expectations as well

when expectations matches the reality.

Quality is a “state” ….

Page 5: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Why Quality is Important?

5

Page 6: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Cost of Bug/Change

6

Page 7: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

What is a way to build high quality product?

7

Page 8: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

8Do not release until it’s perfect

Page 9: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

9

No one is perfect.

Page 10: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Implementing internal back office system

Example

Page 11: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

11

Step 1 - Prototyping phase

Technical spike investigation Hacking different Back-End solutions

Ad-hoc design discussions Stub implementation of Front End

Getting early user’s feedback on Front End

Page 12: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

12

WebApp with

stubs

Whatever works to get end-user understanding

Sketches on

whiteboard

Page 13: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

13

Step 2 - Setting delivery pipeline

Add more unit tests Add more integration tests Add more functional tests Automate deployment configuration Add dashboards and system monitoring

Clarifying End User Needs

Page 14: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

14

http://blog.crisp.se/2013/02/05/yassalsundman/continuous-delivery-vs-continuous-deployment

Page 15: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

15

Step 3 - Connecting the dots

Connect back-end and front-end parts into

End-2-End system

Get user’s feedback and iterate

Page 16: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Keep releasing small, usable, incremental pieces16

Page 17: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

17

What is under the hood ?

Page 18: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

18

Page 19: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Organic Structure

19

Scaled Agile @ Spotify@joakimsunden

Page 20: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

20

Test Automation Pyramid

Page 21: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

21

How to avoid Ice-Cream effect?

Page 22: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

22

Be strict with this rule.

Page 23: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Testable micro-services architecture 23

Unit Tests

Component Tests

Functional Tests

System/End-2-End Tests

Integration Tests

Unit Tests

Component Tests

Functional Tests

JS Unit Tests

JS Component Tests

UI Functional

Tests

Page 24: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

24

Unit Tests

Check logic of minimal code snippet with no or mocked dependencies

https://github.com/mockito/mockitohttps://github.com/junit-team/junit

Page 25: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

25

https://github.com/jsevellec/cassandra-unit

Very much like unit tests but emulating external components

e.g. cassandra database

Component Tests

Page 26: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

26

Client App

Fake Back-End Server

Spotify Back End

Fake back-end for client apps

http://jsonstub.com

https://github.com/azagniotov/stubby4jhttps://github.com/dreamhead/moco

Page 27: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

27

Integration Tests

Check an integration between components

You do not need whole system to check the integrationhttps://github.com/spotify/helios/blob/master/docs/testing_framework.md

Page 28: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

28

@docker containers

Create Test Environment ‘on the fly’

https://www.docker.com

Page 29: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

29

Check services API behaviour or

End user use cases

Functional Tests

http://seleniumhq.orghttp://hc.apache.org

Page 30: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

30

http://graphwalker.org

Model Based Testing

Page 31: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?
Page 32: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

32

Code Review &

Human Testing on

Pull Request

Page 33: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Delivery Pipeline33

Page 34: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

34

Was not covered during this talk …

Load Testing Gradual Rollouts A/B Testing Feature Toggles Monitoring/Alerting Information Radiators

… but stay tuned

Page 35: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

35

Technical Test Engineer Test Engineer

! = Manual Tester ! = Test Automator

~ Software Engineer in Test

Test Engineering Roles and Responsibilities

~ Context Driven Tester

Page 36: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

36

Technical Test Engineer

Work as a software developer Advocate testability of the product

Argue on software design with software engineers Help with building new/injecting existed development tools

Page 37: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

37

https://github.com/jsevellec/cassandra-unit

Cassandra Unithttps://github.com/mikaellanger/job-dsl-plugin

Jenkins job-dsl-plugin

https://github.com/spotify/heliosDocker orchestration

Spoticloude.g. cli control over amazon cloud http://dashing.io

Dashboards

Development Productivity Tools

Page 38: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

38

Knows business domain Focused on exploring the product

Free to use any programming language to test specific use case Free to use any programming language to automate his work

Test Engineer

Page 39: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

39

Mind Map as a Tool

https://www.mindmup.com

Product tree Scenarios Playbooks Checklists

Session notes

Page 40: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Quality Engineers40

http://www.satisfice.com/blog/archives/1372

TEST JUMPERS: ONE VISION OF AGILE TESTING

http://www.satisfice.com/blog/archives/1364“RESPONSIBLE TESTER”

http://www.satisfice.com/articles/omega_tester.pdfOMEGA TESTER

@jamesmarcusbach calls us Test Jumpers

Page 41: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

41

Any other ways to improve

quality?

Page 42: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

42

test ideas during healthy discussions

test requirements via end users collaboration

discuss system design and conner cases earlier in the planing/design meetings

define definition of done

Break Uncertainty

Page 43: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

43

But have responsible person to figure out what consensus means in each case

Use Google Docs collaboration for finding group consensus

Page 44: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Social Programming

44

write “checks” during implementation shape your thoughts via pair discussions peer review before merging to master

Page 45: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

45

User Stories Planning meeting Standup meeting Open workspace TDD Refactoring etc……

Not mentioned Engineering Practices

http://www.extremeprogramming.org/rules.html

Page 46: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

Employee Early Builds Testing

46

Page 47: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

47

One week to do whatever you want

Do it alone or with a team

Crazy ideas comes out

Hackathons

Page 48: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

48

QA engineer at Spotify

http://continuousdelivery.com/2014/02/visualizations-of-continuous-delivery/

Page 49: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

How to check you are on a right path ?

49

Page 50: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

That is easy to spot 50

Page 51: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

51

Ready for a journey?Make Quality explicit Find Quality promoters Define your way of Quality

improvements Set right Quality constraints Share results as early as possible

Keep looking further quality improvements Probably you will never end :)

Page 53: Встреча Quality built in @Spotify от Андрея Дзыни : как стать лучшим тестировщиком?

and …

Stop saying QA when you mean Testing

Check out http://www.spotify.com/jobs or @Spotifyjobs for more information

Want to join the band?