pycon 2015 belarus andrii soldatenko

28

Upload: andrii-soldatenko

Post on 14-Aug-2015

53 views

Category:

Technology


3 download

TRANSCRIPT

Page 1: PyCon 2015 Belarus Andrii Soldatenko
Page 2: PyCon 2015 Belarus Andrii Soldatenko

High performance Functional tests

Andrii Soldatenko 31 January 2015 @a_soldatenko

Page 3: PyCon 2015 Belarus Andrii Soldatenko

About me:• Senior Test Automation Engineer at

• Backend Python Developer at

• Speaker at PyCon Ukraine 2014

• @a_soldatenko

• http://asoldatenko.com

Page 4: PyCon 2015 Belarus Andrii Soldatenko

"Tests are the Programmer’s

stone, transmuting fear into boredom."

Page 5: PyCon 2015 Belarus Andrii Soldatenko

We don’t have time for tests

Page 6: PyCon 2015 Belarus Andrii Soldatenko

Test Automation Pyramid

from  http://martinfowler.com/bliki/TestPyramid.html

Page 7: PyCon 2015 Belarus Andrii Soldatenko

Unit tests

Page 8: PyCon 2015 Belarus Andrii Soldatenko

Integration tests

Page 9: PyCon 2015 Belarus Andrii Soldatenko

Functional or UI tests

Page 10: PyCon 2015 Belarus Andrii Soldatenko

How to automate Functional tests for Web?

Page 11: PyCon 2015 Belarus Andrii Soldatenko

Demo

Page 12: PyCon 2015 Belarus Andrii Soldatenko

Test Execution Time

• Faster Tests Mean Faster Development

• Slow Tests Don’t Get Run as Often

Page 13: PyCon 2015 Belarus Andrii Soldatenko

How to decrease test execution time?

“Man is a tool-using animal. Without tools he is nothing, with tools he is all.“ - Thomas Carlyle

Page 14: PyCon 2015 Belarus Andrii Soldatenko

Using requests instead of Selenium

Page 15: PyCon 2015 Belarus Andrii Soldatenko

Demo

Page 16: PyCon 2015 Belarus Andrii Soldatenko

Use Selenium Grid

Node

Node

Node

Hub

Page 17: PyCon 2015 Belarus Andrii Soldatenko

How to setup Selenium Grid locally

Page 18: PyCon 2015 Belarus Andrii Soldatenko

unittests in Pythonparallel

execution plugins test coverage

unittest NO NO NO

YES NO YES

YES YES NO

Page 19: PyCon 2015 Belarus Andrii Soldatenko

Selenium Grid + Concurrent test execution

Node

Node

Node

HubOR

Page 20: PyCon 2015 Belarus Andrii Soldatenko

Demo

Page 21: PyCon 2015 Belarus Andrii Soldatenko

Selenium Grid in Cloud

Page 22: PyCon 2015 Belarus Andrii Soldatenko

Demo

Page 23: PyCon 2015 Belarus Andrii Soldatenko

Use Selenium with PhantomJS

+

Page 24: PyCon 2015 Belarus Andrii Soldatenko

Demo

Page 25: PyCon 2015 Belarus Andrii Soldatenko

Functional tests for Django

Page 26: PyCon 2015 Belarus Andrii Soldatenko

Final Thoughts

• Don’t test constants

• Avoid double-testing functionality

• Collaboration on Step Definitions in BDD

• Use Continuous Integration

• Slow tests kill productivity

Page 27: PyCon 2015 Belarus Andrii Soldatenko

Questions

?

Page 28: PyCon 2015 Belarus Andrii Soldatenko

Thank You

[email protected]

@a_soldatenko

http://asoldatenko.com