使用Pickles將測試案例變成Live document

當團隊開始將需求規格實例化(Specification by Example)後,產出的Cucumber文件不單單只是可以拿來執行測試,還可以是讓整個團隊了解需求規格的文件。將需求規格文件與測試案例整合的好處,就是不用一份工作做兩次,寫一次文件後,在很多地方都可以拿來使用。除此之外,當需求有變化時,為了讓修改的功能測試可以通過,勢必會修改測試案例,讓測試能夠順利通過。透過這樣的方式,每次利用測試案例所產出來的文件也會跟著更新,這份文件就像有生命一樣會一直跟著系統功能與測試案例修改而更新,所以這樣的文件也可以稱為「Live Document」。

在很多團隊中,常常是實際的功能與需求文件對不起來,會發生這樣的情形通常是PO口頭指示工程師修改功能卻沒有一併修改需求文件。久而久之,需求文件就會跟系統有所出入,也發揮不了它的功能,就跟死了一樣。

在Visual studio 2015(2013)中可以透過安裝Specflow套件,讓開發者可以在VS2015(2013)下撰寫Cucumber文件。但是,團隊中並不是每一個人都會安裝VS2015(2013),例如PO或是QA就不太需要安裝。再者,如果可以將規格文件網頁化,每個人都可以在網頁上瀏覽需求文件,會大大增進文件使用的便利性。

接下來的內容,將會說明如何利用Pickles將VS2015(2013)中的Cucumber文件網頁化。

取得Pickles

這裡為什麼會用取得而不是安裝呢?主要是Pickles除了透過Nuget安裝在專案外,也可以透過Pickles在Github上的Repo中取得執行檔。

這邊並沒有特別推薦哪一種方法,因為後面的範例都會使用Command line的方式來產生文件,所以這兩種方式並沒有太大的差別。但是,接下來的範例會先使用Nuget安裝Pickles,再透過指令產生文件。

由於是使用command line的方式來產生文件,所以在Nuget上是安裝Pickles.CommandLine,而非Pickles

執行測試

由於Pickles產出的Live document可以跟測試結果整合,在文件上除了看到需求規格外,也能夠知道這一個需求是否有通過測試。所以,在產出Live document前必須先執行測試。當然,這邊也建議使用指令的方式來執行測試。

MsTest.exe指令參數

MsTest.exe 
/testcontainer: [project dll path]
/resultsfile: [TestResult output path]

執行

執行完畢後,可以在TestResults中看到測試結果(TestResult.trx)。有一點需要特別提醒,如果測試結果的存放位置已經有相同檔名的檔案,則會執行失敗。

執行Pickles

在執行Pickles前,先說明用到的參數設定

  • feature-directory : Feature檔的所在路徑

  • output-directory : Live document存放路徑

  • documentation-format : Live document的格式,Pickles提供了多種格是讓使用者選擇,在這裡可以看到每種格式的輸出預覽。

  • test-results-format : 整合的測試結果格式,Pickles可以整合多種測試框架或是套件的測試結果,像是NUnit、MsTest、SpecRun

  • link-results-file : 測試結果的路徑,也就是.trx(MsTest)的存放位置

以上是本篇範例中會使用到的參數,如果大家對其他參數有興趣,可以到這邊有完整的文件說明。

Pickles指令參數

pickles.exe run 
--feature-directory="C:\Users\JamisLiao\Documents\Visual Studio 2015\Projects\Pickles_Website_MsTest_Lab\Pickles_Website_MsTest_Lab.Test" 
--output-directory="C:\Users\JamisLiao\Documents\Visual Studio 2015\Projects\Pickles_Website_MsTest_Lab\PicklesResults" 
--documentation-format="dhtml" 
--test-results-format=mstest 
--link-results-file="C:\Users\JamisLiao\Documents\Visual Studio 2015\Projects\Pickles_Website_MsTest_Lab\TestResults\TestResult.trx"

執行Pickles.exe

產生的網頁檔案

產生的Live document

在每一個案例旁邊的綠色勾勾就表示該測試案例是有通過測試的。此外,在上方還提供了搜尋功能。

結論

透過 Pickles可以將需求規格文件與測試案例整合,並且可以持續的產出Live document。當需求與測試案例改變時,立即可以產生新的Live document。此外,整個執行過程都使用指令的方式,如此一來,相當容易與CI Server整合,在每次CI Server build專案時,可以一起將文件產出,並且發布為一個公開站台,讓團隊的每個人都能夠迅速地了解專案的需求規格,以及目前專案的健康狀況。

本篇範例 : Github

參考資料

免責聲明:

"文章一定有好壞,文章內容有對有錯,使用前應詳閱公開說明書"