測試工程師應知應會之行為驅動測試BDD
很多工程師都了解測試驅動開發(Test Driven Development,TDD),但是了解行為驅動開發的人卻不是很多。
行為驅動開發(Behavior Driven Development,BDD),是測試驅動開發的延伸,旨在使用簡單的,特定于領域的腳本語言(軟件外包行業的最大問題?從領域驅動設計說起),通過結構化的方法,將自然語言文本轉換為可執行的測試用例。從而在技術與實際的業務需求者之間,建立起一條易于理解的道路。這樣,不理解程序員們正在做什么的業務方,就可以更容易的理解他們的工作。
在行為驅動開發中,最關注的核心是業務的設計。而測試驅動開發,則更關心是的使用代碼來描述測試用例。因此,在行為驅動開發相關的框架中,采用了多種技術手段,構造自然語言與代碼之間的連接關系,使得關注于業務邏輯的使用者,能夠使用更容易理解的語言,向測試代碼下達他們的指令。
下面我們通過當前最為流行的BDD 框架JBehave來介紹一下BDD對于這種設計的實現。
在JBehave中,完全一個測試用例需要5個步驟。
一、編寫測試用例
在JBehave中,一個測試用例由一系列場景(Scenario)組成。而一個場景的編寫,需要符合JBehave定義的語法格式。主要格式內容如下:
在語法格式中,規定了一個測試用例的寫法,以及其中特定的關鍵字,而這種寫法力圖貼近于自然語言,并且能夠被框架所解析。
二、將測試用例映射到Java
編寫好測試用例之后,JBehave會將測試用例映射成Java。這種映射主要通過RegexStoryParser(正則表達式)或者是GherkinStoryParser這兩種解析器來實現。
通過類似于
@Given("a stock of symbol $symbol and a threshold of $threshold")
public void stock(String symbol, double threshold) {
stock = new Stock(symbol, threshold);
}
的方式,可以將測試用例中的輸入映射進Java函數的輸入參數中,盡管保持入參的名字和@Given語句中的參數名字一致是一種好的習慣,但是JBehave是按照參數的順序來賦值的,并不要求名稱完全一致。
三、配置測試用例
JBehave的核心是配置的嵌入類,這是提供給IDE的可執行入口,通過執行該嵌入類,系統可以調用框架的相關方法,從而能夠完成JBehave提供的相關功能。
JBehave提供的可嵌入類主要有ConfigurableEmbedder和InjectableEmbedder兩種。
四、運行測試用例
配置好嵌入類之后,就可以通過JUnit在IDE或者是命令行中運行測試用例了。
五、查看報告
測試用例執行完畢之后會給出測試報告,JBehave提供了多種測試報告可供使用,包括控制臺、文本文件、XML文件、HTML頁面等。