devops 及 tdd 開發流程哲學
TRANSCRIPT
![Page 1: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/1.jpg)
DevOps TDD
![Page 2: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/2.jpg)
SPOOKY
ProgrammerDevOps
Team Leader
Java 6 yearsJavascript 1.5 years
smlsun@facebook
trunk-studio.comblog.trunk-studio.com
![Page 3: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/3.jpg)
OUTLINE• DevOps
• DevOps
• DevOps
• TDD
• TDD
• TDD
• TDD CI
•
![Page 4: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/4.jpg)
![Page 5: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/5.jpg)
![Page 6: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/6.jpg)
![Page 7: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/7.jpg)
![Page 8: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/8.jpg)
![Page 9: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/9.jpg)
![Page 10: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/10.jpg)
![Page 11: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/11.jpg)
DevOps
![Page 13: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/13.jpg)
AGILE VS LEAN• Agile:
•
• Lean:
•
•
![Page 14: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/14.jpg)
![Page 15: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/15.jpg)
![Page 16: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/16.jpg)
DEVOPS
•
•
![Page 17: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/17.jpg)
DEVOPS
• 90
• 2 1 DevOps 1.5 18
![Page 18: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/18.jpg)
![Page 19: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/19.jpg)
![Page 20: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/20.jpg)
![Page 21: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/21.jpg)
![Page 22: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/22.jpg)
![Page 23: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/23.jpg)
![Page 24: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/24.jpg)
DevOps
![Page 25: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/25.jpg)
DevOps
Develop Operator
![Page 26: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/26.jpg)
DevOps Tools
![Page 27: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/27.jpg)
Tools as objects to think with Tools
![Page 28: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/28.jpg)
DEVOPS
•
•
•
•
![Page 29: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/29.jpg)
TDD
DevOps ...
![Page 30: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/30.jpg)
![Page 31: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/31.jpg)
•
•
•
•
![Page 32: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/32.jpg)
![Page 33: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/33.jpg)
![Page 34: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/34.jpg)
![Page 35: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/35.jpg)
![Page 36: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/36.jpg)
![Page 37: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/37.jpg)
![Page 38: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/38.jpg)
![Page 39: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/39.jpg)
![Page 40: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/40.jpg)
![Page 41: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/41.jpg)
![Page 42: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/42.jpg)
TEST
![Page 43: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/43.jpg)
![Page 44: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/44.jpg)
DeveloperQA
![Page 45: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/45.jpg)
TEST SPEC
![Page 46: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/46.jpg)
/
![Page 47: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/47.jpg)
![Page 48: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/48.jpg)
![Page 49: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/49.jpg)
![Page 50: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/50.jpg)
FAIL Edge of Tomorrow
![Page 51: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/51.jpg)
TDD test
Tools as objects to think with Tools
TDD is not about testbut think about better design
![Page 52: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/52.jpg)
...
![Page 53: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/53.jpg)
TDD TEST CODE
![Page 54: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/54.jpg)
TDD
![Page 55: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/55.jpg)
![Page 56: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/56.jpg)
X TEST vs O TEST
-4-2-60
![Page 57: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/57.jpg)
![Page 58: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/58.jpg)
TDD NODEJS
![Page 59: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/59.jpg)
PackageLibrary
ApplicationServer
![Page 60: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/60.jpg)
LOGIN
• 3 step Login
![Page 61: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/61.jpg)
INITIAL
![Page 62: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/62.jpg)
var liftApp = async () => { await models.sequelize.sync({ force: config.connection.force }); await bootstrap(); app.listen(config.port); return app;}if (env !== 'test') liftApp();module.exports = liftApp
import chai from 'chai';import request from 'supertest';import sinon from 'sinon';import liftApp from '../../server';chai.should();global.sinon = sinon;before(async (done) => { let app = await liftApp(); global.app = app; global.request = request.agent(app.listen()); done();});
APstart
test frameworkstart
![Page 63: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/63.jpg)
SPECdescribe('auth login spec', () => { before(async (done) => { let testUser = {'username': 'test', 'password': 'test'} await models.User.create(testUser); done(); });
it('login should be success.', async (done) => {
let loginUserFormData = { 'username': ‘test', 'password': ‘test' }; request.post(‘/auth/login') .send(loginUserFormData).expect(200) .end((error, res) => { if (error) done(error); let loginResult = res.body; loginResult.success.should.be.true; done(); }) }});
![Page 64: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/64.jpg)
• Mocha test framework
• Supertest API
• Should or Chai spec
![Page 65: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/65.jpg)
MOCK
EX
![Page 66: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/66.jpg)
APIOR
![Page 67: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/67.jpg)
• sinon Mock
Source code
Mock code
![Page 68: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/68.jpg)
Spec
SPECSA/SD
![Page 69: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/69.jpg)
/
SPEC
![Page 70: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/70.jpg)
TDD CI
![Page 71: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/71.jpg)
CI / CD
![Page 72: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/72.jpg)
CI
![Page 73: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/73.jpg)
![Page 74: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/74.jpg)
![Page 75: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/75.jpg)
![Page 76: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/76.jpg)
![Page 77: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/77.jpg)
![Page 78: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/78.jpg)
![Page 79: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/79.jpg)
Auto Trigger
![Page 80: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/80.jpg)
![Page 81: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/81.jpg)
![Page 82: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/82.jpg)
![Page 83: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/83.jpg)
![Page 84: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/84.jpg)
–
“ ”
![Page 85: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/85.jpg)
![Page 86: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/86.jpg)
•
•
•
•
• from Clean Code
![Page 87: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/87.jpg)
![Page 88: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/88.jpg)
DEVOPS TDD
![Page 89: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/89.jpg)
![Page 90: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/90.jpg)
![Page 91: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/91.jpg)
• Member
•
• Member
![Page 92: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/92.jpg)
•
•
•
•
![Page 93: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/93.jpg)
•
• Member
•
•
![Page 94: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/94.jpg)
AGILE VS LEAN AND
• Agile:
•
• Lean:
•
![Page 95: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/95.jpg)
![Page 96: DevOps 及 TDD 開發流程哲學](https://reader031.vdocuments.net/reader031/viewer/2022012313/586fe95b1a28ab92198b4b0f/html5/thumbnails/96.jpg)
• http://qualitycoding.org/tdd-testimonial/
• http://gamesfromwithin.com/backwards-is-forward-making-better-games-with-test-driven-development
• http://punnode.com/archives/18016
• http://teddy-chen-tw.blogspot.tw/2014/09/blog-post_22.html