Top Banner
AUTOMATED FUNCTIONAL TESTS BASED ON SELENIUM FOR DJANGO PROJECTS A NDRII S OLDATENKO
23
Welcome message from author
This document is posted to help you gain knowledge. Please leave a comment to let me know what you think about it! Share it to your friends and learn new things together.
Transcript
Page 1: PyCon Ukraine 2014

AUTOMATED FUNCTIONAL TESTS BASED ON SELENIUM FOR DJANGO PROJECTS

ANDRII SOLDATENKO

Page 2: PyCon Ukraine 2014

ABOUT ME:

• TEST  AUTOMATION  LEAD  AT  LUXOFT  • PYTHON  DEVELOPER  AT  TOPTAL  • @A_SOLDATENKO  • HTTP://ANDRIISOLDATENKO.GITHUB.IO/

Page 3: PyCon Ukraine 2014

“TESTS ARE THE PROGRAMMER’S STONE, TRANSMUTING FEAR INTO BOREDOM.” - KENT BECK

3

WE DON’T HAVE TIME FOR TESTS!

Page 4: PyCon Ukraine 2014

TEST AUTOMATION PYRAMID:

Unit tests

Integration tests

Functional tests

Page 5: PyCon Ukraine 2014

TASK: HOW TO AUTOMATE FUNCTIONAL TESTS FOR WEB?

Page 6: PyCon Ukraine 2014

ABOUT SELENIUM:

• PIP  INSTALL  -­‐U  SELENIUM

• SELENIUM  WEBDRIVER  API  NOW  IN  W3C  DRAFT  SPECIFICATION

• RUN  IN  MANY  BROWSERS

• AND  OS

• CAN  BE  CONTROLLED  BY  DIFFERENT  PROGRAMMING  LANGUAGES

Page 7: PyCon Ukraine 2014

7

DEMO

Page 8: PyCon Ukraine 2014

WHEN  NUMBER  OF  TESTS  IS  GROWING:

• WE  NEED  TO  DECREASE  TEST  EXECUTION  TIME

• WE  NEED  TO  USE  DESIGN  PATTERNS  (I.E  PAGEOBJECT,  PAGEFACTORY)

• WE  NEED  TO  USE  SKELETON  FOR  ORGANIZING  TESTS

Page 9: PyCon Ukraine 2014

SKELETON  FOR  ORGANIZING  TESTS:

Page 10: PyCon Ukraine 2014

DESIGN  PATTERNS:

Page 11: PyCon Ukraine 2014

SIMPLE  SELENIUM  TEST  WITHOUT  PAGEOBJECT:

Page 12: PyCon Ukraine 2014

SIMPLE  SELENIUM  TEST  WITH  PAGEOBJECT:

Page 13: PyCon Ukraine 2014

SIMPLE  SELENIUM  TEST  WITH  PAGEOBJECT:

Page 14: PyCon Ukraine 2014

SIMPLE  SELENIUM  TEST  WITH  PAGEOBJECT:

Page 15: PyCon Ukraine 2014

WHAT  ABOUT  FT  IN  DJANGO?

Page 16: PyCon Ukraine 2014

HOW  TO  DECREASE  TEST  EXECUTION  TIME  ?

• SET  UP  LOCAL  SELENIUM  GRID

• USE  SAUCE  LABS

• USE  PYTEST  OR  NOSE

Page 17: PyCon Ukraine 2014

ABOUT  SELENIUM  GRID:

Node

Node

Node

Hub

Page 18: PyCon Ukraine 2014

SETUP  SELENIUM  GRID  LOCALLY:

Page 19: PyCon Ukraine 2014

SCHEME  FOR  SELENIUM  GRID  +  CONCURRENT  TEST  EXECUTION

py.testunittest.TestCase

Node

Node

Node

Hub

Page 20: PyCon Ukraine 2014

BEST  PRACTICE  FOR  TEST  DATA  GENERATION  AND  

• DJANGO  LOREM  IPSUM  UTILS  • DON’T  USE  FIXTURES  • USE  FACTORY  BOY  +  FAKER  INSTEAD  OF  FIXTURES

Page 21: PyCon Ukraine 2014

BEST  PRACTICE  FOR  CREATION  FT  TESTS:

• USE  EXPLICIT  WAITS  RATHER  THAN  IMPLICIT  WAITS.  

• USE  CODE—HELPER  METHODS  IN  BASE  CLASS,  OR  PAGE  PATTERN.

• AVOID  DOUBLE-­‐TESTING  FUNCTIONALITY

• LOOK  INTO  BDD  TOOLS

• USE  CONTINUOUS  INTEGRATION

Page 22: PyCon Ukraine 2014

22

?

QUESTIONS:

Page 23: PyCon Ukraine 2014

23

• @A_SOLDATENKO  • HTTPS://ANDRIISOLDATENKO.GITHUB.IO/

THANK  YOU: