snabba tester med nodejs
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
![Page 1: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/1.jpg)
TDD is dead. Long live testing
![Page 2: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/2.jpg)
Slow database test fallacy
![Page 3: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/3.jpg)
Snabba tester för Node.js
![Page 4: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/4.jpg)
![Page 5: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/5.jpg)
![Page 6: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/6.jpg)
nock supertest
![Page 7: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/7.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/8.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/9.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/10.jpg)
express// expose app for tests module.exports = app !
// listen only on normal start if (!module.parent) { app.listen(...) }
![Page 11: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/11.jpg)
ApplikationWebb-läsare
Externt API
![Page 12: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/12.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/13.jpg)
Hur tar vi testerna till nästa nivå?
![Page 14: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/14.jpg)
Kör vi testerna
parallellt?
![Page 15: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/15.jpg)
Hindermocha require
![Page 16: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/16.jpg)
mocha ppunit, lab require require.js, IoC continuation-local-storage
Hinder
![Page 17: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/17.jpg)
0
1
2
3
4
Sekventiellt Parallella testsviter Parallella tester
![Page 18: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/18.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/19.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/20.jpg)
en till sak...
![Page 21: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/21.jpg)
profilera dina tester!
![Page 22: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/22.jpg)
57.92% parse_buffer dustjs-linkedin/lib/parser.js
Före Efter
![Page 23: Snabba tester med Nodejs](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/23.jpg)
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](https://reader034.vdocuments.mx/reader034/viewer/2022051110/54b513f54a7959202e8b462c/html5/thumbnails/24.jpg)
valtechlabs.se
Tack!