81
Caesar Chi 戚務漢 DevOps觀念看Web前端開發測試先 @clonncd From devOps to front end Ops

From devOps to front end Ops, test first

Embed Size (px)

Citation preview

Page 1: From devOps to front end Ops, test first

Caesar Chi 戚務漢

從DevOps觀念看Web前端開發測試先⾏行

@clonncd

From devOps to front end Ops

Page 2: From devOps to front end Ops, test first

What is DevOps

Page 3: From devOps to front end Ops, test first

What is DevOpsDeveloper + Operation

Page 4: From devOps to front end Ops, test first
Page 5: From devOps to front end Ops, test first

http://goo.gl/ChbBTO

Page 6: From devOps to front end Ops, test first

TEST IS ALL

Page 7: From devOps to front end Ops, test first

Deploy without test, it is naked沒有測試的佈署,就像是裸奔

Page 8: From devOps to front end Ops, test first

–DevOps

“Any tests than none.”

Page 9: From devOps to front end Ops, test first

Everything has test (at least)

BDD, TDD, Unit test, XDD, Whatever

Page 10: From devOps to front end Ops, test first
Page 11: From devOps to front end Ops, test first
Page 12: From devOps to front end Ops, test first

TestTestTest

Page 13: From devOps to front end Ops, test first

TestTestTest?Do you have ever front end test yet?

Page 14: From devOps to front end Ops, test first
Page 15: From devOps to front end Ops, test first
Page 16: From devOps to front end Ops, test first

Trigger

Developer / QA/ Anyone

Open browser

Key / input / submit / mouse

Success / Fail

Page 17: From devOps to front end Ops, test first

Trigger

Developer / QA/ Anyone

Open browser

Key / input / submit / mouse

Success / Fail

Deploy

Page 18: From devOps to front end Ops, test first

Trigger

Developer / QA/ Anyone

Open browser

Key / input / submit / mouse

Success / Fail

DailyDeploy

Page 19: From devOps to front end Ops, test first

Trigger

Developer / QA/ Anyone

Open browser

Key / input / submit / mouse

Success / Fail

DailyDeploy Feature

Page 20: From devOps to front end Ops, test first

Trigger

Developer / QA/ Anyone

Open browser

Key / input / submit / mouse

Success / Fail

DailyDeploy Feature Hotfix

Page 21: From devOps to front end Ops, test first
Page 22: From devOps to front end Ops, test first

“Boss Driven Development.” BDD

Page 23: From devOps to front end Ops, test first
Page 24: From devOps to front end Ops, test first
Page 25: From devOps to front end Ops, test first

– John Doe

“If test is all, why not test front end / UI.”

Page 26: From devOps to front end Ops, test first
Page 27: From devOps to front end Ops, test first
Page 28: From devOps to front end Ops, test first
Page 29: From devOps to front end Ops, test first

Convention Controller Compresser

Page 30: From devOps to front end Ops, test first

Convention“Everyone’s code, must be same code.”

Page 31: From devOps to front end Ops, test first

+ ‘use restrict’ JavaScript

$jscs .

Page 32: From devOps to front end Ops, test first

HTML

Page 33: From devOps to front end Ops, test first

CSS

Page 34: From devOps to front end Ops, test first

useghooksprecommit-hook

to validate all things in local before commit

Page 35: From devOps to front end Ops, test first

Convention“Everyone’s code, must be same code.”

+ ‘use restrict’ JavaScript

HTML

CSS

Page 36: From devOps to front end Ops, test first

Controller“User Interface.”

Page 37: From devOps to front end Ops, test first

https://gist.github.com/warpech/9431953

Page 38: From devOps to front end Ops, test first

UI event Logic function

Controller

Page 39: From devOps to front end Ops, test first

UI event Logic function

Controller

Page 40: From devOps to front end Ops, test first

user input -> login -> Validate -> Auth -> success

result verify

Page 41: From devOps to front end Ops, test first

user input -> login -> Validate -> Auth -> success

result verify

Mock data

Page 42: From devOps to front end Ops, test first

Logic function

https://blog.codeship.com/mocha-js-chai-sinon-frontend-javascript-code-testing-tutorial/

Page 43: From devOps to front end Ops, test first

Logic function (Angular)

Page 44: From devOps to front end Ops, test first

Mock data

https://docs.angularjs.org/guide/unit-testing

Page 45: From devOps to front end Ops, test first

– John Doe

“Make Test as Simple as Posible.”

Page 46: From devOps to front end Ops, test first

UI event Logic function

Controller

Page 47: From devOps to front end Ops, test first

Code save

Open browser

…. // do sth

Success / Fail

Old school

Page 48: From devOps to front end Ops, test first

, wait …

too heavy to run with browser.

Page 49: From devOps to front end Ops, test first
Page 50: From devOps to front end Ops, test first
Page 51: From devOps to front end Ops, test first

Test save

Code save

Success / Fail

Welcome to 20 Century

Page 52: From devOps to front end Ops, test first

Test save

Code save

Success / Fail

Page 53: From devOps to front end Ops, test first

, you turn

run all test on real browser … GO

use WebDriver to trigger browser

Page 54: From devOps to front end Ops, test first

No more extra code

Page 55: From devOps to front end Ops, test first

No more extra code

Page 56: From devOps to front end Ops, test first

protractor.conf.js

Page 57: From devOps to front end Ops, test first
Page 58: From devOps to front end Ops, test first

UI event

Logic function

Page 59: From devOps to front end Ops, test first

UI event

Logic function

User basic behavior

Backend

Page 60: From devOps to front end Ops, test first

Input

Logic function Backend

Output

Page 61: From devOps to front end Ops, test first

UI event User basic behavior

ClickSelect

Page 62: From devOps to front end Ops, test first

DeployCompresser

Page 63: From devOps to front end Ops, test first
Page 64: From devOps to front end Ops, test first

concat minify

Page 65: From devOps to front end Ops, test first

concat minify

Page 66: From devOps to front end Ops, test first
Page 67: From devOps to front end Ops, test first
Page 68: From devOps to front end Ops, test first

concat minify

Page 69: From devOps to front end Ops, test first

THEN ?

Page 70: From devOps to front end Ops, test first

As Developer• Keep test running

• Share test concept

• Build a jenkins server

• Keep your task done on time.

• Wash your boss’ brain.

Page 71: From devOps to front end Ops, test first

You

We are here

Page 72: From devOps to front end Ops, test first

As Manager

Push them, do the right thing

Make resource for developer, ex, time, machine, env …

Page 73: From devOps to front end Ops, test first

You

We are here

Page 74: From devOps to front end Ops, test first
Page 75: From devOps to front end Ops, test first

Effect

Page 76: From devOps to front end Ops, test first

Code without Test

Page 77: From devOps to front end Ops, test first

Code with Test

Page 78: From devOps to front end Ops, test first

Compare

Test No test

Test more, keep test move on with logic complex, it is more easy figure out problem. Then you will save more time

Page 79: From devOps to front end Ops, test first
Page 80: From devOps to front end Ops, test first

Front end Ops• Face problem

• Accept Result (fail / success)

• Refactor code

• Deploy code

• Trade off code

Page 81: From devOps to front end Ops, test first