Créateur d'applications mobiles

TECH TALK #9 - 11.01.2017. 11. Create models without committing them : def any_autowash(…, save=False): instance = AutoWash(…) if save: instance.save().
596KB taille 3 téléchargements 237 vues
Créateur d’applications mobiles

TECH TALK

GRATUITS & OUVERTS AU PUBLIC

Tech talk sous forme de courtes formations le mercredi de 17h à 18h ! N’hésitez pas à nous contacter afin de participer aux prochaines sessions au sein de nos locaux !

TECH TALK #9 - 11.01.2017

OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

• Slow • Hard to read (ugly) • Non conforming to quality standards • Not refactored • Non reliable

3

TECH TALK #9 - 11.01.2017

TEST IS CODE and quality maters OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

• Slow • Hard to read (ugly) • Non conforming to quality standards • Not refactored • Non reliable

4

TECH TALK #9 - 11.01.2017

TEST IS CODE and quality maters OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

• Slow • Hard to read (ugly) • Non conforming to quality standards • Not refactored • Non reliable

5

TECH TALK #9 - 11.01.2017

WRITING FAST TESTS WITH DJANGO

TECH TALK #9 - 11.01.2017

OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

YOUR TEST SUITE* SHOULD RUN UNDER 20 SECONDS AND STILL TARGET > 90 % COVERAGE

* flaky tests excluded 7

TECH TALK #9 - 11.01.2017

SO WHAT ? OLIVIER TABONE CO-FONDATEUR DIRECTEUR

Fast test-code-test-fix-debug cycle Not trading code coverage for integration time Tests are run before each commit

WRITING FAST TESTS WITH DJANGO

Broken states are less likely to be pushed

8

TECH TALK #9 - 11.01.2017

RECIPE #1 OLIVIER TABONE CO-FONDATEUR DIRECTEUR

1,48 s WRITING FAST TESTS WITH DJANGO

0,74 s mvmc.accounts

default

md5

9

Y S A E K C I P

TECH TALK #9 - 11.01.2017

RECIPE #2 Do not hit DB unless required

14 ms

OLIVIER TABONE CO-FONDATEUR DIRECTEUR

12 ms

12 ms

WRITING FAST TESTS WITH DJANGO

1 ms

0,7 ms AutoWash model

In Memory

Create

Get Or Create

10

Insert

Bulk Create (100)

TECH TALK #9 - 11.01.2017

RECIPE #2 Do not hit DB unless required OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

Create models without committing them : def any_autowash(…, save=False): instance = AutoWash(…) if save: instance.save() return instance 11

TECH TALK #9 - 11.01.2017

RECIPE #2 Do not hit DB unless required OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

SimpleTestCase will ensure you don’t access the db when running tests. Improve code coverage with unit tests and not integration tests

12

TECH TALK #9 - 11.01.2017

RECIPE #2 Do not hit DB unless required OLIVIER TABONE CO-FONDATEUR DIRECTEUR

Use bulk-api for both test and production code, Limit number of SQL statements :

WRITING FAST TESTS WITH DJANGO

objects.create() =~ objects.bulk_insert([100 objects] 13

TECH TALK #9 - 11.01.2017

MYTH #1 OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

DEBUG = False TEMPLATE_DEBUG = False Does not change performance at all.

14

TECH TALK #9 - 11.01.2017

RECIPE #3 keep db between test runs OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

migrations are expensive ci will always start with an empty db 11 s 5s mvmc

default

15

keepdb

Y S EA K C I P

TECH TALK #9 - 11.01.2017

RECIPE #4 OLIVIER TABONE CO-FONDATEUR DIRECTEUR

Use In Memory SQLITE DB Backend

T ’ N DO

unless you require Postgres specific features WRITING FAST TESTS WITH DJANGO

unfortunately we usually require : postgis jsonb data type array data type 16

TECH TALK #9 - 11.01.2017

MYTH #2

Tune postgres OLIVIER TABONE CO-FONDATEUR DIRECTEUR

no measurable improvement WRITING FAST TESTS WITH DJANGO

17

TECH TALK #9 - 11.01.2017

RECIPE #5 OLIVIER TABONE CO-FONDATEUR DIRECTEUR

Mock expensive / long to respond subsystems

DO L U F E R CA LY

such as paiement systems WRITING FAST TESTS WITH DJANGO

simple interactive model of the subsytem flag functional tests as flaky, so they still run and can detect out of sync mocks 18

TECH TALK #9 - 11.01.2017

OLIVIER TABONE CO-FONDATEUR DIRECTEUR

WRITING FAST TESTS WITH DJANGO

YOUR TEST SUITE* SHOULD RUN UNDER 20 SECONDS AND STILL TARGET > 90 % COVERAGE

* flaky tests excluded 19

TECH TALK ANIMÉ PAR

OLIVIER TABONE CO-FONDATEUR DIRECTEUR [email protected] 06 83 01 05 76

MERCI DE VOTRE PARTICIPATION !

Créateur d’applications mobiles