Applying Testing Mindset to Software Development

  • View
    1.134

  • Download
    0

  • Category

    Software

Preview:

DESCRIPTION

Software Development is a creative activity that requires focus. During coding session you as a programmer tends to make so many decision that sometimes force you to neglect 'unimportant details' that might sounds like specific use cases, unclear statements or somethings that won't gonna happen. In most cases the system even so complex that is not that easy to step out and see the whole picture, even from user's point of view. Historically software developers used to trust other people called testers to verify those 'details' from user's perspective before deploying into production. In order to have proper alignment inside the team dedicated 'QA step' added to the process. That obvious solution have some quick-wins with outcome of found bugs before releasing the software. But there are some tradeoffs, such as: slower delivery cycle, extra test documentation and GUI automated tests that are not that easy to maintain. During my talk I would like to share some insight and lessons we learned @ Spotify that helps us improving team's development productivity without losing quality of the product. Hopefully that will help your team as well or at least show one of the directions you might want to follow. Spotify Engineering Culture: https://labs.spotify.com/2014/03/27/spotify-engineering-culture-part-1/ https://labs.spotify.com/2014/09/20/spotify-engineering-culture-part-2/

Citation preview

December 11, 2014

Applying Tester’s Mindset to Software Development

Andrii Dzynia

Software Quality Engineer

@adzynia

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

3

Organic Structure

4

Scaled Agile @ Spotify@joakimsunden

5

How we are minimizing development cycle and

delivering value faster!

6

Is a Programmer Enjoying learning new things Passioned about technologies

PETER

ONE DAY OF PETER’S LIFE

WAKE UP THINKING ABOUT PROBLEM WAS NOT ABLE

TO SOLVE YESTERDAY COMMUTE TO THE OFFICE SYNC MEETING WITH A TEAM FINISHED CODING ON THE PROBLEM WENT ON MEETING GOT NEW TASK TO WORK ON STARTED READING DESCRIPTION

7

ONE DAY OF PETER’S LIFE

Started implementing the simples snippet Went on meeting Went home

8

WHERE IS THE PROBLEM?

9

@visbeek

Here…

10

Expectations

Reality

How that reflects on users and software?

11

@wiseacre

Bugs

Bugs

Bugs

BugsBugs

Bugs

Bugs

Bugs

Bugs

You might say.

12

Hire testers!

Consequences

Additional ‘QA’ or ‘Testing’ column in a process

Slower delivery

The bigger system the more testers to hire Hiring test automators to minimise the cost

Project become more expensive and harder to maintain

Less, but still have bugs Users less, but still frustrated

13

14

Problem at Scale

15

The earlier you share results

@rocketdogphotography

The lower risk of failure!

Testing as a Mindset 16

Testing during meetings17

challenge ideas and solutions via healthy discussions

prove hypnotises via end users collaboration

Acceptance Scenarios - User Journeys

Given Peter ready for workout When Peter unlock the phone screen Then Spotify client starts playing kick-ass track

18

Testing during implementation

19

write tests during implementation

rise your opinion during pair discussion

peer review before merging to master

20

Code Review &

Human Testing on

Pull Request

Testing during release process

21

Checking stages Gradual Rollouts Monitoring A/B test different solutions Feature flags

Delivery Pipeline22

23Monitoring

Best reward - people satisfaction 24

25

Promote quality awareness

Invest in your testers

Technical Test Engineer != Test automator Technical Test Engineer ~ Software Engineer in Test Work as a software developer Advocate testability of the product/system

Test Engineer != Manual Tester Test Engineer ~ Context Driven Tester Know business domain Free to explore the product

26

Invest in your developers

Unit testing Acceptance testing TDD Continuous Integration Continuous Deployment Pair Programming Peer Reviews Refactoring

27

Extreme Programming Practices

Internal Hackathons

Invest in your users28

User Support Interviews A/B testing

Create a self-learning environment29

Educate everyone to work in collaboration!

30

(c) Elisabeth Hendrickson

31‘Test’ is a verbDo not just talk about testing, do

Testing Encourage discussions about

testing and quality Ask a question ‘How would we

test this?’ Make testing visible for everyone Celebrate achievements and

share resultsKeep looking further improvements.

You should never end :)

It does not mean no testers

That means just enough “formal” testers

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

Want to join the band?

Recommended