Transcript
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!


Top Related