51
WHO WILL TEST YOUR TESTS ? Yahya Poonawala @meetykp Priti Biyani @pritibiyani

Who will test_your_tests_yahya poonawala- priti biyani

Embed Size (px)

Citation preview

Page 1: Who will test_your_tests_yahya poonawala- priti biyani

WHO WILL TEST YOUR TESTS ?

Yahya Poonawala @meetykp

Priti Biyani @pritibiyani

Page 2: Who will test_your_tests_yahya poonawala- priti biyani

2https://flic.kr/p/9uZhDS 2

Page 3: Who will test_your_tests_yahya poonawala- priti biyani

TESTSCode works

Reduce Bugs

Reducecost of change

AllowRefactoring

Faster development

Reduce fear

3

Page 4: Who will test_your_tests_yahya poonawala- priti biyani

NOW

WHEN YOU HEAR ….

4

Page 5: Who will test_your_tests_yahya poonawala- priti biyani

Oh, it failed?

Don’t worry. Just re-trigger it!

5

Page 6: Who will test_your_tests_yahya poonawala- priti biyani

Oh, it failed?

Strange; it passed on my machine!

6

Page 7: Who will test_your_tests_yahya poonawala- priti biyani

Oh, it failed?

Run it on agent 007!

It’s an agent issue!

7

Page 8: Who will test_your_tests_yahya poonawala- priti biyani

Oh, it failed?

I know. It fails at 12AM!

8

Page 9: Who will test_your_tests_yahya poonawala- priti biyani

9

Page 10: Who will test_your_tests_yahya poonawala- priti biyani

Now, again,

WHY DO WE WRITE TESTS?

1

0

Page 11: Who will test_your_tests_yahya poonawala- priti biyani

Tests prove that the code actually works

Tests prove that the code

sometimes works

1

1

Page 12: Who will test_your_tests_yahya poonawala- priti biyani

Tests reduce bugs

Tests itself might have bugs

1

2

Page 13: Who will test_your_tests_yahya poonawala- priti biyani

Tests reduce the cost of change

Change? Are you kidding?

1

3

Page 14: Who will test_your_tests_yahya poonawala- priti biyani

Tests helps in faster development.

Testing is slowing me down

1

4

Page 15: Who will test_your_tests_yahya poonawala- priti biyani

NON-DETERMINISTIC

TESTS

A.K.A “Flaky Tests”

1

5

Page 16: Who will test_your_tests_yahya poonawala- priti biyani

1

6http://www.trovatten.com/long-game/

Page 17: Who will test_your_tests_yahya poonawala- priti biyani

1

7

Page 18: Who will test_your_tests_yahya poonawala- priti biyani

1

8

http://tom-doherty.com/wp-content/uploads/2014/02/craigslist-waste-time.jpg

Page 19: Who will test_your_tests_yahya poonawala- priti biyani

1

9

Page 20: Who will test_your_tests_yahya poonawala- priti biyani

ILLUSION OF SUCCESS!

2

0

Page 21: Who will test_your_tests_yahya poonawala- priti biyani

ILLUSION OF FAILURE!

2

1

Page 22: Who will test_your_tests_yahya poonawala- priti biyani

2

2

Page 23: Who will test_your_tests_yahya poonawala- priti biyani

2

3

Page 24: Who will test_your_tests_yahya poonawala- priti biyani

DO NOT DELETE YOUR

FLAKY TESTS!!

2

4

Page 25: Who will test_your_tests_yahya poonawala- priti biyani

CAUSES OF FLAKINESS

2

5

Page 26: Who will test_your_tests_yahya poonawala- priti biyani

Thread 1::

if( name is not Yahya ) {

fputs( name, file )

}

Thread 2::

Initialize name to Yahya

Page 27: Who will test_your_tests_yahya poonawala- priti biyani

CONCURRENCY

2

7

Page 28: Who will test_your_tests_yahya poonawala- priti biyani

Initialize lock;

Thread 1::

Acquire lock

if( name is not Yahya) {

. . .

fputs( name, file )

. . .

}

Release lock

Thread 2::

Acquire lock

Initialize name to Yahya

Release lock

Page 29: Who will test_your_tests_yahya poonawala- priti biyani

TIME

2

9

http://imgs.xkcd.com/comics/bug.png

Page 30: Who will test_your_tests_yahya poonawala- priti biyani

EXTERNAL SYSTEM CALLS

3

0

Page 31: Who will test_your_tests_yahya poonawala- priti biyani

UNORDERED COLLECTIONS

3

1

Page 32: Who will test_your_tests_yahya poonawala- priti biyani

3

2https://www.vardot.com/sites/default/files/2.jpg

Page 33: Who will test_your_tests_yahya poonawala- priti biyani

# pseudo-code

makeAsyncCall;

sleep(2000);

readResponse;

Page 34: Who will test_your_tests_yahya poonawala- priti biyani

ASYNCHRONOUS

WAITING

3

4

Page 35: Who will test_your_tests_yahya poonawala- priti biyani

make asynchronous call;

While (response received?)

if timeout then

throw Test Timeout Exception

else

sleep(10)

. . .

read response

Page 36: Who will test_your_tests_yahya poonawala- priti biyani

RESOURCE LEAKS

3

6

Page 37: Who will test_your_tests_yahya poonawala- priti biyani

# //pseudo-code

FILE_NAME = “content.txt”

// Test 1:

FileReader.read(FILE_NAME).to be empty

// Test2: Write to the file

data = “XP Conf 2015”

FileWriter.write(FILE_NAME, data)

FileReader.read(FILE_NAME) == data

// Test 3: Updates the file

append_data = “Schedule for talk”

complete_data = “XP Conf 2015. Schedule for talk ”

FileWrite.append(FILE_NAME, append_data)

FileReader.read(FILE_NAME) == complete_data

Page 38: Who will test_your_tests_yahya poonawala- priti biyani

TEST ORDER DEPENDENCY

3

8

Page 39: Who will test_your_tests_yahya poonawala- priti biyani

INPUT / OUTPUT

3

9

Page 40: Who will test_your_tests_yahya poonawala- priti biyani

4

0

Page 41: Who will test_your_tests_yahya poonawala- priti biyani

WHAT’S YOUR STRATEGY?

4

1

Page 42: Who will test_your_tests_yahya poonawala- priti biyani

STOP CALLING YOUR BUILD

FLAKY!!

4

2

Page 43: Who will test_your_tests_yahya poonawala- priti biyani

Identify Flaky tests

Quarantine

Plan Fix Tests

Monitor

4

3

Page 44: Who will test_your_tests_yahya poonawala- priti biyani

IT’S NOT ALWAYS YOUR

TESTS

4

4

Page 45: Who will test_your_tests_yahya poonawala- priti biyani

DO NOT GET

OVERWHELMED BY FAILING

TESTS

4

5

Page 46: Who will test_your_tests_yahya poonawala- priti biyani

REMEMBER!

4

6

Page 47: Who will test_your_tests_yahya poonawala- priti biyani

LOVE YOUR TEST CODE !

4

7

Page 48: Who will test_your_tests_yahya poonawala- priti biyani

There is no such thing as

FLAKY TEST!

If its flaky, its not a test !4

8

Page 49: Who will test_your_tests_yahya poonawala- priti biyani

AND THE FUTURE…

4

9

Page 50: Who will test_your_tests_yahya poonawala- priti biyani

REFERENCES

• An Empirical Analysis of Flaky tests

• Eradicating Non-Determinism in Tests – Martin

Fowler

• No more flaky tests on the GO team - Pavan

Sudarshan

• Top 12 reasons to write unit tests

• http://tech.just-eat.com/2015/03/30/how-to-fix-

flaky-tests/

5

0