發表文章

目前顯示的是 9月, 2016的文章

[agile meetup] 當敏捷遇上引導:在領導團隊變革遭遇什麼困難

圖片
在 David 哥 的安排之下,9/24 在台北的趨勢科技聚集了一群對敏捷導入有相當經驗的同好們,一起討論了各自在導入的過程中,遇到了什麼困難,這是一場非常舒服且厲害的討論。 直接貼上大家一起討論的結果: 1. 現在好好的幹嘛改變 2. 團隊不知道如何建立信任 3. 對敏捷的導入沒有共識 4. (主管/ScrumMaster) 的引導技巧不夠 5. 團隊溝通不夠有效 6. 高層的信任和支持不夠 7. 傳統的績效管理不適用 8. 不知道如何用 Agile 處理(範圍時程)硬梆梆的專案 9. 工程和領域的技能不夠 10. (因資源有限)角色重疊混淆 11. 讓member 感受到結果的價值 12. 缺乏跨界交流的機會 我的感想是: 1. 原來我不是孤單的,不是只有我遇到這些困難,甚至有些問題我已經有我自己的答案了。 2. 跟專業人士一起做事就是舒服,就算只是三個小時的討論。

[上課心得] 職場素養進階課

圖片
今天公司請了 陳嫦芬老師 來演講,嫦芬老師是台灣很多公司 CEO 的 Coach,而小弟,應該也算是公司內的小小 coach ,只是我是 coach 軟體開發團隊,而嫦芬老師是 coach CEO,功力強好多好多好多好多。今天講的是職場素養進階課,關於這堂課的內容,我很多都超有感覺,因為很多跟我學到的敏捷心態幾乎是一樣的,也讓我更確定敏捷是對的。課程內容可以看 天下雜誌的這篇介紹 ,而這個下午真是太震撼人心了! 我試著用 ORID 的方法 來寫寫看心得... 但我把 R 跟 I 寫在一起好了...每個有共鳴的點我都寫一個 O,然後一個 RI ,簡短的寫,最後用一個 D 結尾。 ====== 第一個 ORI ====== O: 什麼是職場? 職場是“協同合作”的地方 職場是“競技場” 職場是把人才轉化成人力資本的地方 職場沒有標準答案的考場 職場是有付出就有收穫的公平秤 職場不畏失敗,更求成功 R I: 第一點 協同合作 我們的敏捷宣言其中一點就提到了 Collaboration,為什麼不是用 Cooperation? 或是 team work? 第三點的把人才轉化成人力資本 為什麼說是 資本,為什麼不說是 Human Resource? 這個跟上 CSPO 課程的時候, Daniel 說的一樣,假如什麼都 SOP,什麼都 Waterfall,那”人”就是人力了,是可以被替代的一種 resource 了。 如何跟 agile / scrum 一樣,做出有 value 的事情,不管是負責什麼事情,才是我們這群”人”的價值,對公司或主管來說,才是資本。 第四點的沒有標準答案 完全一模模ㄧ樣樣,讓我貼上我在公司內部上課用的投影片: 第六點 不怕失敗 也是一模模一樣樣,fail early,fail fast,最後,failure 會是讓自己跟團隊變得 better 的事情。所以,假如一個 scrum 的團隊夠成熟,sprint 是越短越好。 至於第二點跟第五點說到的競技場跟公平秤,也是很有道理,但 scrum, agile 就比較沒提到這部分。 我能想到的比較接近的有兩個:第一個,在 scrum team 裡面,我們認為每個 team member 的年終考績都是一樣的,這聽起來不太公平,但我們都看得出來某些人表現就會是比較好,因為他在 scrum team 裡面會去 s

我自己常用的 git command

講到git,比起身邊的很多人,我比較不一樣。我是用打指令的方式在操作,以下我就列一下我自己常用的 git command,當作是筆記。 git 很強大 這一篇講的是指令,指令後面會接參數,在這篇文章,我會這樣表示:比如說 “$email” 就是你要填入 email 的位置的意思。 那就,開始了?

[AutomationTest] selenium + cucumber + ruby (5)

請先服用 第一集 、 第二集 、 第三集 第四集我寫錯了~~~~ XDD ========= 前情提要 ========= 基本上我們用前三集把一個簡單的 test case 寫出來,並且不斷的優化。到了第四集,使用物件導向的概念把 Page Object 拉出來,並把一致的操作放進去。外面的 Given-When-Then 就可以專心的寫業務目標,方便不懂程式與軟體的人與開發團隊溝通。 這集我們要來說一下小技巧。 ========= 技巧 ========= 1. 只跑一個 scenario 的方法 就是加 tag 在 scenario 前面加個 @tag_name 然後在 console 下 cucumber --tags @tag_name 就可以只跑那個 scenario 2. 只跑一個 feature 檔的方法 就是指定 feature 檔的路徑就好 console 的下法是 cucumber ./features/XXX.feature 就可以只跑那個 feature 檔 3. 參見 第二集 ,如何快速跑出那黃黃的那段,而不開真正的 browser。 就是在 console 下 cucumber --dry-run cucumber 會去比對 feature 檔裡面的東西是不是都有對應的 steps 去實作。 不管是 pre-defined steps 還是 我們自己寫的。 如果有沒對到的,黃黃的就會跑出來,你就可以拿去 copy-and-paste 了。 4. 使用不同的 browser 跑測試 在 console 裡面下: 要用 chrome 的話:cucumber BROWER=chrome 要用 firefox 的話:cucumber BROWER=ff 然後會遇到一點點錯誤,不要慌,基本上照著 cucumber 的錯誤訊息,去某個地方下載某個檔案,放進路徑變數裡,就可以了,這我很久以前做過一次,現在忘了...也無法 reproduce 了。 ========= Retrospective ========= 其實這篇沒什麼好 retro 的,就只是一些指令的下法而已,連圖都沒有貼,cucumber —help 都有寫。 好啦,這大概就是我對 web automation 的所有知識了,剩下就是不斷的練習去熟悉他了。有問題或任何建議也請在下面留

[AutomationTest] selenium + cucumber + ruby (4)

圖片
請先服用 第一集 、 第二集 與 第三集 。 ========= 前情提要 ========= 在前三集中,我們寫了一個簡短的中文的 test case。 因為是中文的,所以方便溝通。 在實作部分,使用了 ruby 跟 selenium-cucumber 。 ========= 大師提點 ========= 假如有看我的臉書的,就會發現有大師來留言了: 如果是自动化测试,那么Gherkin中通常较少出现操作页面的细节,更多的是这个业务的描述。点击之类的操作通常在是step中,或者更好一点放入page object。最后,关闭浏览器用cucumber的after hook,确保每个scenario执行完后,不管结果如何都会关闭浏览器 留言的大師是Jackson Zhang,是 odd-e 上海的顧問群之一,非常厲害,是技術牛人啊! 也剛好我這篇原本想講的就是 Page 的寫法,所以就合在一起來做看看~~ 1. 业务的描述 Gherkin 就是 Given-When-Then 那些,所以我們來放業務的描述,讓他更平易近人一點。 但因為這個 scenario 實在太簡單,我只好硬著頭皮寫了 ... 程式碼在這裡: Feature: 用yahoo查到台積電的股價 Scenario: 從首頁進去 然後去查詢台積電股價 Given 從yahoo首頁進到yahoo的股市首頁 When 查詢台積電 Then 我會看到台積電的股價在 "50" 到 "500" 之間 為什麼是 50 ~ 500? 因為假設 PO 說台積電的股價超過了這個範圍就一定有問題,一定是我們系統有錯。 (假設的麻) 2. 执行完后 关闭浏览器 這個很簡單,在 support/hooks.rb 裡面,加一行 $driver.quit 即可。 3. 操作通常在是step中,或者放入page object 3-1 $driver 哪來的 有這個錢字號啊,在 ruby 裡面,就是 global 變數,他是在 support/env.rb 裡面被 assign 的。 有興趣的可以去深究,這邊我就先不追了。 3-2 拉出一個 StockPage 的類別 因為這只是個很簡單的範例,所

如何不讓 agile project 掉入 local maximum

之前在上課的時候,常常會跟學員說,要小心不要讓你的 project 掉入”區域最佳值”,做法是什麼什麼什麼什麼 (太長,先略過)。 下面這篇文章寫得更詳細了,比我說的更好,所以丟上來跟大家分享.. :) ̨

[AutomationTest] selenium + cucumber + ruby (3)

圖片
請先服用 第一集 、 第二集 。 ========= 前情提要 ========= 我們用中文寫了一個可以自動執行的 test case,這樣的 test case 讓不懂程式的人有一個共同的平台與溝通方式可以溝通,然後我們就寫了 ruby 的程式來執行測試。 這一篇,我們要來仔細看看那個 ruby 程式。 ========= 手把手教學? ========= 1. 開啟yahoo首頁 這邊就是在第 8 行加入 navigate_to 的敘述,那我是怎麼知道要加這個呢? 就是去 這個連結 然後看到第一行,就覺得用用看,就中了。 2. 到 "股市" 首頁去 也是一樣,click 一個 link 以後,等待 3 秒。 其實這邊有一個 predefined step,在 這個連結 的第 21 ~ 23 行: 所以我就把它的 click 的部分拿出來用了。 後面那個 arg1 是一個參數,這裡是 ruby 的標準寫法,我就跳過不介紹了。 3. When 輸入 "台積電" 在輸入框裡面 這邊的寫法應該有很多種,你也可以像前面一樣,去找 predefined steps的實作方法,然後填入。我的寫法是,用 xpath 找到一個網頁上的 element,然後用 send_keys 這個 api,把字串傳過去,然後傳一個 enter 過去。 那這些資料是哪裡找到的呢? find_element 在 這裡 。 找到的 element 在 這裡 ,你也會在這裡找到這個 class 的 send_keys 方法 那傳一個 enter 出去呢?在 這裡 你可以找到。 4. 我會看到 "2330台積電" 的股價在 "50" 到 "500" 之間 首先,這邊會有三個字串參數傳進來:"2330台積電”、”50"與"500" 。 我分別叫他是 tsmc, low, high,來看看 code: line 23:check_element_presence 這個 method ,我也是先去找 predefined steps,然後去找他的實作,最後在 這裡 找到,在第 39 ~ 42 行,這些參數需要摸索一下XDDD。 line 25 ~ 最後面:幹,我摸索超久

[AutomationTest] selenium + cucumber + ruby (2)

圖片
請先服用 第一集 ========= 前情提要 ========= 在上一集裡面我用了應該是全球最短的篇幅就把 安裝 跟 執行 selenium, cucumber 講完了這一篇要開始把鹹豬手伸過去 ruby 那邊 ========= 中文版 test case ========= 1. 改成中文版 這是在第一集出現的程式碼: Feature: 用yahoo查到查台積電的股價 Scenario: 從首頁進去 然後去查詢台積電股價 Given I navigate to "https://tw.yahoo.com" When I click on link having text "股市" When I enter "台積電" into input field having xpath ".//*[@id='stock_id']" When I click on element having xpath ".//*[@id='ystkglonav']/table/tbody/tr[3]/td/table/tbody/tr/td[4]/label/input" Then link having text "2330台積電" should be present 我把它改成: Feature: 用yahoo查到查台積電的股價 Scenario: 從首頁進去 然後去查詢台積電股價 Given 開啟yahoo首頁 When 到 "股市" 首頁去 When 輸入 "台積電" 在輸入框裡面 Then 我會看到 "2330台積電" 的股價在 "50" 到 "500" 之間 Then I close browser 是不是平易近人許多? 2. 執行看看,然後哭哭在 console 裡面,打cucumber,結果出現一堆黃字: 3. 解決黃字的方法 囧 4. Copy-and-Paste 大法 先用你的 IDE or editor 開啟 feature/step_definition

[AutomationTest] selenium + cucumber + ruby (1)

圖片
這一篇來講講怎麼用 selenium + cucumber 來幫 tw.yahoo.com 來做測試 ========= 安裝 ========= 我是用 mac 所以 我很快的帶過安裝的部分 gem install rails gem install cucumber-rails gem install selenium-cucumber gem install selenium-webdriver gem install Selenium gem install selenium-client 假如不知道 gem 是什麼的朋友 請先去 google 一下 然後 我還裝了 firefox 跟他的兩個 plugin: firebug, firepath ========= 準備工作 ========= 1. 開 console,找個資料夾,cd過去 2. 鍵入 selenium-cucumber gen 他會問你 我要做!@#@!#$!@#$!@#$ 事情囉 你確定嗎? 就按下 enter 吧 然後 你會發現多了一個 feature 的 folder 3. cd 進去 feature folder 找一個副檔名是 .feature 的檔 通常是 my_first.feature 用你喜歡的 IDE 或 editor 打開它 我是用 eclipse 你假如發現了 有其他兩個 project 是 android_auto, iOS_auto 沒錯 大概就是他的名字暗示的 以後我再寫怎麼在 android 與 iOS 上 做自動化測試吧~ 4. cucumber 簡單的介紹 cucumber 系列的東西就是由這三個主要的詞組成:Given, When, Then 怎麼用呢? 大概可以先這樣理解: Given 後面寫的是前條件 When 是操作 Then 是預期結果 至於 Feature 跟 scenario 是給人類看的 不影響程式與執行結果 5. 開始想測試 一開始說 我要幫tw.yahoo.com做測試 因為這是第一篇 所以先簡單的: 我想測試能用yahoo查到查台積電的股價的功能 測試場景是 從首頁進去 然後去查詢台積電股價 所以我要打開首頁 按下股市 輸入台積電 螢幕上就會出現2330台積電 6. 把剛剛想的東西翻譯成 given-when-then 以下是程式