Snabba tester med Nodejs

24
TDD is dead. Long live testing

description

Gabriel Falkenberg, Valtech En snabb testsvit är underbart att ha under utveckling. Jag kommer presentera några moduler och tekniker, beprövade och experimentella, för att få dina tester att gå som en oljad blixt.

Transcript of Snabba tester med Nodejs

Page 1: Snabba tester med Nodejs

TDD is dead. Long live testing

Page 2: Snabba tester med Nodejs

Slow database test fallacy

Page 3: Snabba tester med Nodejs

Snabba tester för Node.js

Page 4: Snabba tester med Nodejs
Page 5: Snabba tester med Nodejs
Page 6: Snabba tester med Nodejs

nock supertest

Page 7: Snabba tester med Nodejs

var nock = require('nock') !

nock('http://api.example.com') .get('/me') .reply(200, { username: 'dude', email: '[email protected]' })

nock

Page 8: Snabba tester med Nodejs

supertestvar request = require('supertest') !

request('http://api.example.com') .get('/me') .expect(200) .expect({ username: 'dude', email: '[email protected]' }) .end(function (err, res) {})

Page 9: Snabba tester med Nodejs

supertestvar request = require('supertest') !

request('http://api.example.com') .get('/me') .expect(200) .expect({ username: 'dude', email: '[email protected]' }) .end(function (err, res) {})

require('../app.js')

Page 10: Snabba tester med Nodejs

express// expose app for tests module.exports = app !

// listen only on normal start if (!module.parent) { app.listen(...) }

Page 11: Snabba tester med Nodejs

ApplikationWebb-läsare

Externt API

Page 12: Snabba tester med Nodejs

Sätter upp lyssnare (supertest)

Sätter upp (nock)

ApplikationWebb-läsare

Externt API

Fejkat externt APITest Testar

(supertest)

Page 13: Snabba tester med Nodejs

Hur tar vi testerna till nästa nivå?

Page 14: Snabba tester med Nodejs

Kör vi testerna

parallellt?

Page 15: Snabba tester med Nodejs

Hindermocha require

Page 16: Snabba tester med Nodejs

mocha ppunit, lab require require.js, IoC continuation-local-storage

Hinder

Page 17: Snabba tester med Nodejs

0

1

2

3

4

Sekventiellt Parallella testsviter Parallella tester

Page 18: Snabba tester med Nodejs

Test

tid i

seku

nder

0

1

3

4

5

Latens hos bakomliggande system0 ms 10 ms 20 ms 30 ms 40 ms

sekventiella tester parallella sviter parallella tester

Page 19: Snabba tester med Nodejs

Rela

tiv te

sttid

0,00

0,25

0,50

0,75

1,00

Antal kärnor1st 2st 4st 8st

tester med nock & supertest

Page 20: Snabba tester med Nodejs

en till sak...

Page 21: Snabba tester med Nodejs

profilera dina tester!

Page 22: Snabba tester med Nodejs

57.92% parse_buffer dustjs-linkedin/lib/parser.js

Före Efter

Page 23: Snabba tester med Nodejs

Sammanfattning1. Ersätt riktiga HTTP-anrop med nock2. (Om det inte är möjligt, försök köra

testerna parallellt)3. Profilera dina tester4. Kör testerna på flera kärnor

Page 24: Snabba tester med Nodejs

valtechlabs.se

Tack!