Андрей Солдатенко. Разработка...

28

Upload: alina-dolgikh

Post on 27-Jul-2015

449 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon
Page 2: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

High performance Functional tests

Andrii Soldatenko 31 January 2015 @a_soldatenko

Page 3: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

About me:• Senior Test Automation Engineer at

• Backend Python Developer at

• Speaker at PyCon Ukraine 2014

• @a_soldatenko

• http://asoldatenko.com

Page 4: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

"Tests are the Programmer’s

stone, transmuting fear into boredom."

Page 5: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

We don’t have time for tests

Page 6: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Test Automation Pyramid

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

Page 7: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Unit tests

Page 8: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Integration tests

Page 9: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Functional or UI tests

Page 10: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

How to automate Functional tests for Web?

Page 11: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Demo

Page 12: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Test Execution Time

• Faster Tests Mean Faster Development

• Slow Tests Don’t Get Run as Often

Page 13: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

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: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Using requests instead of Selenium

Page 15: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Demo

Page 16: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Use Selenium Grid

Node

Node

Node

Hub

Page 17: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

How to setup Selenium Grid locally

Page 18: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

unittests in Pythonparallel

execution plugins test coverage

unittest NO NO NO

YES NO YES

YES YES NO

Page 19: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Selenium Grid + Concurrent test execution

Node

Node

Node

HubOR

Page 20: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Demo

Page 21: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Selenium Grid in Cloud

Page 22: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Demo

Page 23: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Use Selenium with PhantomJS

+

Page 24: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Demo

Page 25: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Functional tests for Django

Page 26: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

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: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Questions

?

Page 28: Андрей Солдатенко. Разработка высокопроизводительныx функциональных тестов для Django проектов. PyCon

Thank You

[email protected]

@a_soldatenko

http://asoldatenko.com