狠狠撸

狠狠撸Share a Scribd company logo
BDD x cucumber Sam Huang 2015/03/26
Allen Huang @ CCAgile
1
黃相文 Sam Huang
2nd year of Master in NTUT
2
前言
黃柏棋 Allen Huang
2nd year of Master in NTUT
3
TDD
BDD
BDD vs TDD
4
What is BDD ?
Behavior-driven Development
行為驅動開發
ビヘイビア駆動開発
?? ?? ??
?????????????????????????????
5
Behavior-driven Development
? User’s behavior
6
是一種敏捷開發的技術,它鼓勵軟體中的開發者, QA 與非技術人員或商業參
與者之間的協作。From Wikipedia
http://projectcartoon.com/
7
Coding / UTAT
8
PO QA Developers
User Story
Traditional Software Development
Software
X
Coding / UT
9
PO QA Developers
User Story
BDD
Software
Feature Steps
AT
10
User Story Acceptance Test
Feature Steps
PO QA
http://blog.andolasoft.com/2014/06/rails-things-you-must-know-about-tdd-and-bdd.html
11
Cons
1. 非技術人員與技術人員間更容易溝通
2. 技術人員可以更專注在程式上
3. 規格就是程式碼
4. 降低文件同步的成本
5. 完整了開發流程
12
Feature Steps
透過關鍵字來描述功能,將
User Story 轉成可執行的程式
將 Feature 內的流程對應到
使用者操作的步驟
Ruby
gem install cucumber
13
https://cukes.info/blog/2015/03/24/single-source-of-truth
14
How to use cucumber?
15
Given ThenWhen
定義在這個流程中的
前提條件
定義在什麼情況下會
發生這個流程
定義在這個流程結束
後,你想得到什麼樣
的結果
16
Example
17
Feature:Login
In order to use system
As a user
I can type my user name and password on login page
Scenario:Login successfully
Given I am on the system login page
When type my user name and password
Then login system, and see main page
Feature File - Eng
功能:登入
為了使用系統
身為使用者
我可以在登入頁面輸入我的帳號及密碼來登入
場景:成功登入
假如 我在系統的登入頁面
當 我輸入我的帳號及密碼
那麼 我可以登入系統,且看到系統的主頁面
Feature File – 中文
Given(/^I am on the system login page$/) do
bar bar bar …
end
When(/^type my user name and password$/) do
bar bar bar …
end
Then(/^login system, and see main page$/) do
bar bar bar …
end
Step File
Numerical
Input Steps
Feature
21
Quotation
marks Input
Steps
Feature
22
Table Input
Steps
Feature
23
cucumber 小小實例
24
小小計算機
25
You can clone this app from Github.
https://github.com/imidya/WebCalculator
小小計算機演算法
26
Algorithm (×, ÷)
+ 4 × 3 - 9 ÷ 35
27
Algorithm (×, ÷)
4 × 3 - 9 ÷ 3
5
+
28
Algorithm (×, ÷)
× 3 - 9 ÷ 3
5
+
4
29
Algorithm (×, ÷)
- 9 ÷ 3
5
+
4
× 3
12
30
Algorithm (×, ÷)
9 ÷ 3
5
+
12
-
31
Algorithm (×, ÷)
9
5
+
12
-
3÷
32
Algorithm (×, ÷)
9
5
+
12
-
3÷
3
33
Algorithm (+, -)
35 + 12 -
34
Algorithm (+, -)
3
5
+ 12 -
17
35
Algorithm (+, -)
3
17
-
14
36
LIVE DEMO
37
Q & A
38
Ad

Recommended

A dev ops team's practice in trend micro in agile summit 2018
A dev ops team's practice in trend micro in agile summit 2018
Juggernaut Liu
?
為了精準估算,你必须付出什麼代价?
為了精準估算,你必须付出什麼代价?
William Yeh
?
導讀持續交付 2.0 - CH02 價值探索環
導讀持續交付 2.0 - CH02 價值探索環
Rick Hwang
?
给资安工程师开源授权观念
给资安工程师开源授权观念
Yi-Feng Tzeng
?
Modern Web Architecture Design Journey
Modern Web Architecture Design Journey
Yi-Feng Tzeng
?
不妥协的河蟹之道
不妥协的河蟹之道
Ken Kuan
?
[教材] 例外處理設計與重構實作班201309
[教材] 例外處理設計與重構實作班201309
teddysoft
?
了解模式讓你更敏捷 (C C Agile 活動分享)
了解模式讓你更敏捷 (C C Agile 活動分享)
teddysoft
?
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
teddysoft
?
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
teddysoft
?
重构叁两事
重构叁两事
teddysoft
?
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
?
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
teddysoft
?
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
?
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
Chen Cheng-Wei
?
C.C. Agile#30 – Coding Dojo – Prepared Kata
C.C. Agile#30 – Coding Dojo – Prepared Kata
CCAgile
?

More Related Content

Viewers also liked (8)

那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
teddysoft
?
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
teddysoft
?
重构叁两事
重构叁两事
teddysoft
?
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
?
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
teddysoft
?
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
?
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
Chen Cheng-Wei
?
C.C. Agile#30 – Coding Dojo – Prepared Kata
C.C. Agile#30 – Coding Dojo – Prepared Kata
CCAgile
?
那一夜我們說Pattern design patterns 20周年-published
那一夜我們說Pattern design patterns 20周年-published
teddysoft
?
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
搞懂Java例外處理的難題:Checked與Unchecked Exceptions不再是問題
teddysoft
?
重构叁两事
重构叁两事
teddysoft
?
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
A brief introduction to Vagrant – 原來 VirtualBox 可以這樣玩
Wen-Tien Chang
?
模式入門第一堂課: 30分鐘寫出一個模式
模式入門第一堂課: 30分鐘寫出一個模式
teddysoft
?
Design Patterns這樣學就會了:入門班 Day1 教材
Design Patterns這樣學就會了:入門班 Day1 教材
teddysoft
?
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
DevOps:建造開發維運的跨界之橋 (@ C.C. Agile #37)
Chen Cheng-Wei
?
C.C. Agile#30 – Coding Dojo – Prepared Kata
C.C. Agile#30 – Coding Dojo – Prepared Kata
CCAgile
?

Behavior Driven Development on C.C.Agile

Editor's Notes

  • #19: Feature:可以敘述一些關於此 feature file 在做的事情 Scenario:可以描述在這個功能下你想做的事情的流程
  • #20: Feature:可以敘述一些關於此 feature file 在做的事情 Scenario:可以描述在這個功能下你想做的事情的流程