999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于BDD的自動(dòng)化測(cè)試框架研究

2016-12-06 12:16:40楊曄
電腦與電信 2016年6期
關(guān)鍵詞:用戶

楊曄

(浙江警官職業(yè)學(xué)院信息技術(shù)與管理系,浙江 杭州 310018)

基于BDD的自動(dòng)化測(cè)試框架研究

楊曄

(浙江警官職業(yè)學(xué)院信息技術(shù)與管理系,浙江杭州310018)

敏捷開發(fā)模式的盛行掀起了自動(dòng)化測(cè)試的一輪熱潮,測(cè)試和開發(fā)合作越來越密切。本文研究的自動(dòng)化測(cè)試框架,將BDD的敏捷開發(fā)理念與軟件測(cè)試相融合,通過統(tǒng)一的Gherkin語言定義驗(yàn)收測(cè)試標(biāo)準(zhǔn),幫助業(yè)務(wù)人員、測(cè)試人員和開發(fā)人員形成對(duì)需求明確統(tǒng)一的認(rèn)識(shí),然后通過web driver測(cè)試代碼實(shí)現(xiàn)可執(zhí)行的驗(yàn)收測(cè)試,以TDD的方式實(shí)現(xiàn)產(chǎn)品代碼。該框架使用Specflow、Selenium和MsTest等測(cè)試工具,真正實(shí)現(xiàn)了自動(dòng)化測(cè)試,大大減少了手工測(cè)試的壓力,促進(jìn)開發(fā)測(cè)試過程中軟件開發(fā)涉眾之間的溝通,及時(shí)得到用戶反饋,滿足快速發(fā)布產(chǎn)品的需求,提升產(chǎn)品質(zhì)量。

自動(dòng)化測(cè)試;BDD;Specflow;Selenium;Scenario

1 引言

隨著信息化步伐不斷加快,軟件作為處理業(yè)務(wù)和提供服務(wù)的重要保障,其開發(fā)任務(wù)日趨繁重,各類管理軟件也變得越來越龐大和復(fù)雜,這就對(duì)軟件測(cè)試提出了更高的要求。為了節(jié)省大量的時(shí)間和開支,必須使用自動(dòng)化測(cè)試技術(shù)代替效率低下的手工測(cè)試,節(jié)省軟件測(cè)試成本,縮短產(chǎn)品發(fā)布周期。

雖然現(xiàn)在有很多錄制/回放的測(cè)試工具可用于自動(dòng)化測(cè)試,但是由于捕捉方式產(chǎn)生腳本的數(shù)據(jù)硬編碼問題,測(cè)試人員需要不斷地修改腳本以適應(yīng)應(yīng)用程序的變化,導(dǎo)致測(cè)試效率并沒有得到有效提高。因此本文結(jié)合敏捷測(cè)試流程和自動(dòng)化實(shí)施方法,給出基于BDD的自動(dòng)化測(cè)試框架設(shè)計(jì)和應(yīng)用分析。

2 BDD開發(fā)原理

軟件開發(fā)過程中最常見的兩個(gè)問題是需求和開發(fā)脫節(jié)、開發(fā)和測(cè)試脫節(jié)。用戶想要的功能沒有開發(fā),開發(fā)的功能并非用戶想要,用戶和開發(fā)人員所說語言不同。開發(fā)和測(cè)試被認(rèn)為是割裂的,從開發(fā)到測(cè)試周期過程,測(cè)試自動(dòng)化程度低。使用BDD(Behavior Driven Development,行為驅(qū)動(dòng)開發(fā))技術(shù)可以解決需求和開發(fā)脫節(jié)的問題,從用戶的需求出發(fā),保證程序?qū)崿F(xiàn)效果與用戶需求一致。BDD的出現(xiàn)解決了測(cè)試驅(qū)動(dòng)開發(fā)中常遇到的問題,比如從哪里開始測(cè)試,應(yīng)該測(cè)試什么,不應(yīng)該測(cè)試什么等。

BDD在繼承TDD(Test Driven Development,測(cè)試驅(qū)動(dòng)開發(fā))的基礎(chǔ)上,通過為驗(yàn)收測(cè)試創(chuàng)建測(cè)試,實(shí)現(xiàn)關(guān)注點(diǎn)分離,優(yōu)化過程管理。BDD開發(fā)關(guān)注用戶情景以及圍繞這些情景建立邏輯和測(cè)試,通過領(lǐng)域特定語言(Domain Specific Language,DSL)來描述系統(tǒng)行為,再以這些行為為驅(qū)動(dòng),編寫產(chǎn)品代碼來實(shí)現(xiàn)這些行為。通過Domain的表達(dá)方式,來描述系統(tǒng)的Feature與用戶的Scenario,并依據(jù)這些Scenario來產(chǎn)生對(duì)應(yīng)的code flow template,接著可結(jié)合單元測(cè)試的3A原則,即Arrange-Act-Assert,來驗(yàn)證系統(tǒng)功能是否有滿足這些Scenario。

3 基于BDD的自動(dòng)化測(cè)試框架設(shè)計(jì)

自動(dòng)化測(cè)試框架融合框架開發(fā)思想,結(jié)合測(cè)試流程和工具,能夠?qū)崿F(xiàn)自動(dòng)化測(cè)試的規(guī)模化,提高測(cè)試效率,保證測(cè)試質(zhì)量。自動(dòng)化測(cè)試框架的好壞直接影響到自動(dòng)化測(cè)試的成功與否。一個(gè)完整的自動(dòng)化框架能夠?yàn)闇y(cè)試人員提供測(cè)試用例的設(shè)計(jì)、開發(fā)、執(zhí)行、結(jié)果分析的界面,為測(cè)試過程提供數(shù)據(jù)保存的場(chǎng)所,為測(cè)試執(zhí)行提供驅(qū)動(dòng)。在此基礎(chǔ)上,才能為測(cè)試實(shí)現(xiàn)自動(dòng)化提供技術(shù)可能,加上團(tuán)隊(duì)、流程、管理的配合,最終形成一個(gè)完整的軟件測(cè)試自動(dòng)化解決方案。本文提出的基于BDD的自動(dòng)化測(cè)試框架圖如圖1所示。

圖1 基于BDD的自動(dòng)化測(cè)試框架圖

該框架融合BDD的開發(fā)流程和分層測(cè)試的理念,能夠適應(yīng)敏捷開發(fā)的測(cè)試流程,將測(cè)試活動(dòng)前置,實(shí)現(xiàn)了需求的實(shí)例化和可執(zhí)行,真正實(shí)現(xiàn)了自動(dòng)化驗(yàn)收測(cè)試帶來的收益,從而讓團(tuán)隊(duì)真正享受到自動(dòng)化測(cè)試帶來的收益。同時(shí)該框架使及時(shí)全面的回歸測(cè)試、穩(wěn)定性測(cè)試、兼容性測(cè)試成為可能,為持續(xù)集成提供基礎(chǔ),便于重現(xiàn)或校驗(yàn)偶發(fā)性缺陷。

在框架中,首先獲取客戶的商業(yè)目標(biāo),找到特征功能,編寫用戶故事,定義與管理用戶需求。然后編寫驗(yàn)收測(cè)試用例,定義用戶故事的完成事項(xiàng),使用BDD規(guī)范的Feature和Scenario,描述驗(yàn)收測(cè)試用例所對(duì)應(yīng)的系統(tǒng)行為,這樣在驗(yàn)證軟件的同時(shí),自動(dòng)升級(jí)了技術(shù)和功能文檔,更容易開發(fā)出高質(zhì)量的代碼,易于使用、維護(hù)和測(cè)試。使用UI測(cè)試和Service測(cè)試技術(shù)編寫相應(yīng)的Step Template,生成自動(dòng)化的驗(yàn)收測(cè)試用例,這樣就形成了可執(zhí)行的需求規(guī)范。然后進(jìn)入TDD的循環(huán)過程,以測(cè)試驅(qū)動(dòng)完成生產(chǎn)代碼的編寫,同時(shí)完成Unit測(cè)試。

4 基于BDD的自動(dòng)化測(cè)試工具

進(jìn)行BDD實(shí)踐首先要解決兩個(gè)問題,一是如何實(shí)現(xiàn)一個(gè)能夠描述系統(tǒng)行為(業(yè)務(wù)價(jià)值)、非技術(shù)人員可讀的測(cè)試,二是如何讓這個(gè)測(cè)試變得可執(zhí)行。目前有很多工具可在開發(fā)過程中實(shí)現(xiàn)BDD,包括Jbehave、Cucumber、Lettuce、Rspec和SpecFlow等。這些BDD框架各自提供了一套DSL,開發(fā)人員可以使用DSL描述業(yè)務(wù)需求。同時(shí),這些框架都依賴于Web Driver,BDD框架通過Web Driver調(diào)用瀏覽器的接口,模擬用戶輸入,讀取瀏覽器頁面上顯示的內(nèi)容用于驗(yàn)證。

在本文中的BDD工具,我們將采用ASP.NET MVC框架進(jìn)行開發(fā),IDE使用Microsoft Visual Studio。在測(cè)試框架中,我們將采用SpecFlow和WebDriver工具Selenium實(shí)現(xiàn)自動(dòng)化驗(yàn)收測(cè)試,Service測(cè)試和Unit測(cè)試將采用MSTest。

5 自動(dòng)化測(cè)試案例應(yīng)用

已知某單位的設(shè)備管理系統(tǒng),可以實(shí)現(xiàn)對(duì)設(shè)備的信息管理、報(bào)修處理等功能。現(xiàn)將使用基于BDD的自動(dòng)化測(cè)試框架,實(shí)現(xiàn)并測(cè)試登錄模塊。

(1)用SpecFlow描述業(yè)務(wù)價(jià)值

在自動(dòng)化驗(yàn)收測(cè)試層,我們首先安裝配置好BDD測(cè)試框架工具SpecFlow,然后根據(jù)用戶需求故事和驗(yàn)收條件,編寫Features和Scenarioes腳本。當(dāng)前登錄功能可以劃分為以下幾個(gè)場(chǎng)景:

1)用戶名密碼匹配,登錄成功;

2)用戶名或密碼不匹配,登錄失敗,并給出相應(yīng)提示。

BDD使用Gherkin語言來定義系統(tǒng)行為。Gherkin是一種領(lǐng)域特定語言,它允許我們?cè)诓唤忉尵唧w執(zhí)行細(xì)節(jié)的情況下,詳細(xì)描述應(yīng)用應(yīng)該如何執(zhí)行。需求的大部分內(nèi)容是由自由文字組成,只有幾個(gè)特定的Gherkin關(guān)鍵字:Feature、Scenario、Given、When、And和Then,其他的都是自由文字,并且主要記錄了功能特性是如何被使用的。Gherkin是一種基于行的編程語言,場(chǎng)景中的每一行(Line)就是一個(gè)步驟(Step)。

以用SpecFlow的DSL描述登錄成功任務(wù)作說明,其他情況相同,得到測(cè)試場(chǎng)景代碼如下:

Feature:User Login

In order to access my account As a user of the website

I want to log into the website

Background:There is a user with the following login detail:

|LoginName|Password|

|my@example.com|test|

Scenario:Login succeed

Given the user is at the login page

When the user fill in the account information:

|LoginName|Password|

|my@example.com|test|

And the user click the login button

Then the user should be at thepage: |right|

|http://localhost:57499/Consumer/Index|

And the page should display theinforma-tion:

|pageContent|

|我的設(shè)備管理系統(tǒng)|

這些代碼計(jì)劃就是遵循了一定格式的英語,即使看不懂代碼的產(chǎn)品經(jīng)理、業(yè)務(wù)分析師也能夠通過此文檔和開發(fā)人員順暢地交流。用Specflow把一個(gè)需求的不同場(chǎng)景描述出來,也是從不同角度闡述了這個(gè)需求的業(yè)務(wù)價(jià)值。Specflow的目標(biāo)就是書寫可執(zhí)行的,能夠表述業(yè)務(wù)價(jià)值的文檔。

(2)Web Driver與頁面交互

接下來需要讓文檔執(zhí)行起來,Specflow提供了把業(yè)務(wù)邏輯轉(zhuǎn)換為可執(zhí)行代碼的機(jī)制Step Definition。然后我們使用Web Driver,像真實(shí)用戶那樣打開瀏覽器,輸入用戶名密碼,點(diǎn)擊提交按鈕,驗(yàn)證登錄是否成功。這里我們選用了比較流行的Web Driver框架Selenium 2,具體Step Definition實(shí)現(xiàn)代碼如下:

[Binding]

public class UserLoginSteps

{

private IWebDriver driver;

[Given(@"the user is at the login page")]

public void GivenTheUserIsAtTheLoginPage()

{

driver=new FirefoxDriver();

driver.Navigate().GoToUrl("http://localhost:57499/Account/Login");

}

[When(@"the user fill in the account information:")]

public void WhenTheUserFillInTheAccountInformation (Table table)

{

driver.FindElement(By.Id("LoginName")).SendKeys(table.Rows[0][0]);

driver.FindElement(By.Id("Password")).SendKeys(table. Rows[0][1]);

}

[When(@"the user click the login button")]

public void WhenTheUserClickTheLoginButton()

{

driver.FindElement(By.Id("loginSubmit")).Click();

}

[Then(@"the user should be at the(.*)page:")]

public void ThenTheUserShouldBeAtThePage(string p0, Table table)

{

var expectedURL=table.Rows[0][0];

var actualURL=driver.Url;

Assert.AreEqual(expectedURL,actualURL,"沒有跳轉(zhuǎn)到{0}的頁面。",p0);

} [Then(@"the page should display the(.*)information:")] publicvoid ThenThePageShouldBeDisplayedCorrectly (string p0,Table table)

{

string expectedWords=table.Rows[0][0];

string actualWords=driver.FindElement(By.XPath("html/body/div[1]/div/h1")).Text;

bool isContained=actualWords.Contains(expected-Words);

Assert.IsTrue(isContained,"頁面中沒有找到要檢查的詞語{0}",p0);

driver.Close();

driver.Quit();

driver=null;

}

這段代碼將打開瀏覽器,訪問地址 http://localhost: 51426/Account/Login/,在郵件輸入框輸入“my@example. com”,在密碼輸入框輸入“test”,點(diǎn)擊“登錄”按鈕,驗(yàn)證測(cè)試結(jié)果是否正確跳轉(zhuǎn)到“http://localhost:51426/Consumer/Index”,并且打開的頁面包含登錄成功后的“學(xué)生后臺(tái)管理首頁”字樣,如果成功,則測(cè)試通過,否則失敗。

Web Driver通過調(diào)用瀏覽器的支持自動(dòng)化的API,模擬真實(shí)用戶在瀏覽器上的操作。把這段代碼放在上面的Step Definition中,當(dāng)Specflow測(cè)試運(yùn)行的時(shí)候,這段代碼就會(huì)運(yùn)行,完成登錄操作。

(3)運(yùn)行自動(dòng)化驗(yàn)收測(cè)試

通過Specflow對(duì)需求進(jìn)行編碼,并使用Selenium將其轉(zhuǎn)換成驗(yàn)收測(cè)試,這樣真正實(shí)現(xiàn)了和代碼相關(guān)的驗(yàn)收測(cè)試,并且可以不依賴具體實(shí)現(xiàn),而是從UI層上進(jìn)行確認(rèn)。運(yùn)行驗(yàn)收測(cè)試的方法可以使用Visual Studio的測(cè)試資源管理器,同時(shí)使用MSTest。此處以MSTest為例,結(jié)果如下:

*****KnowledgeDot.Test.Specs.Features.LoginFeature.Login-SucceedAsStudent_Given I am at the login page

->done:LoginSteps.GivenIAmAtTheLoginPage()(8.3s)

When I fill in the account information:

---table step argument---

|UserName|Password|Role|

|stu|stu|學(xué)生|

->done:LoginSteps.WhenIFillInTheFollowingForm(

) (1.2s)

And I click the login button

->done:LoginSteps.WhenIClickTheLoginButton()(1.5s)

Then I should be at the right page:

---table step argument---

|Role|Page

|學(xué)生|http://loca1host:51426/Student/Index|

->done:LoginSteps.ThenIShouldBeAtTheTeacherPage(

)(0.0s)

And the page should be displayed correctly:

---table step argument---

|Role|CheckWords|

|學(xué)生|學(xué)生管理后臺(tái)首頁|

->done:LoginSteps.ThenThePageShouldBeDisplayedCorrectly (

)(0.0s)

6 總結(jié)與展望

本文采用BDD理論構(gòu)建自動(dòng)化測(cè)試框架。BDD框架通過提供DSL,幫助業(yè)務(wù)人員、測(cè)試人員和開發(fā)人員定義需求的驗(yàn)收標(biāo)準(zhǔn),共同得到一個(gè)明確的需求完成的定義。通過和webdriver集成,使這個(gè)驗(yàn)收標(biāo)準(zhǔn)變得可執(zhí)行,大大減少了手工測(cè)試的壓力,當(dāng)軟件通過了這個(gè)驗(yàn)收標(biāo)準(zhǔn),則意味著這個(gè)需求已經(jīng)開發(fā)完成。結(jié)合Service測(cè)試和Unit測(cè)試,構(gòu)成了系統(tǒng)的自動(dòng)化測(cè)試框架,使軟件真正實(shí)現(xiàn)自動(dòng)化測(cè)試,大大減少手工測(cè)試的壓力,并能促進(jìn)開發(fā)測(cè)試過程中軟件開發(fā)涉眾之間的溝通,及時(shí)得到用戶反饋,滿足快速發(fā)布產(chǎn)品的需求,提升產(chǎn)品質(zhì)量。

[1]John Ferguson Smart.BDD IN ACTION:Behavior-driven development for the whole software lifecycle[M].Manning Publications,2014.

[2]Matt Wynne,Aslak Hellesoy.THE CUCUMBER BOOK:Behaviour-Driven Development for Testers and Developers[M].The Pragmatic Bookshelf,2012.

[3]Gojko Adzic.SPECIFICATION BY EXAMPLE:How Successful Teams Deliver the Right Software.Manning Publications,2011.

[4]Lisa Crispin,Janet Gregory.AGILE TESTING:A Practical Guide FOR Testers And Agile Teams.Addison Wesley Publications,2009.

[5]Zhimin Zhan.PRACTICAL WEB TEST AUTOMATION:Test Web Applications Wisely.Leanpub.2014.

Research on theAutomatic Testing Frameset Based on BDD

Yang Ye
(Zhejiang Police VocationalAcademy,Hangzhou 310018,Zhejiang)

The popular Agile development pattern sets off an upsurge of automatic testing.It makes the cooperation of development and testing become more and more closely.This paper creates an automated testing frameset that can combine BDD agile development concept and software testing together.First we use Gherkin language to define acceptance criteria,which helps the business personnel,testing engineer and development engineer to form a clear and unified understanding of the system requirement. Then we use the web driver testing codes to realize the specific acceptance test,and write the product codes based on TDD.The frameset adopts the Specflow,Selenium and MsTest testing tools.It truly realizes the automated testing,and greatly reduces the manual test pressure.Meanwhile it facilitates the communication of software development stakeholders during development and testing process,gets the feedback from users in time,meets the needs of the rapid release of the product,and also improve the quality of the product.

automatic testing;BDD;Specflow;Selenium;Scenario

TP311.55

A

1008-6609(2016)06-0030-04

楊曄,女,浙江諸暨人,碩士,副教授,研究方向:軟件工程。

本文是省教育廳科研項(xiàng)目課題:“司法行政系統(tǒng)軟件的自動(dòng)化驗(yàn)收測(cè)試研究與應(yīng)用”,項(xiàng)目編號(hào):Y201328693。

猜你喜歡
用戶
雅閣國內(nèi)用戶交付突破300萬輛
車主之友(2022年4期)2022-08-27 00:58:26
您撥打的用戶已戀愛,請(qǐng)稍后再哭
關(guān)注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
關(guān)注用戶
商用汽車(2016年5期)2016-11-28 09:55:15
兩新黨建新媒體用戶與全網(wǎng)新媒體用戶之間有何差別
關(guān)注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關(guān)注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
挖掘用戶需求尖端科技應(yīng)用
Camera360:拍出5億用戶
100萬用戶
主站蜘蛛池模板: 欧美国产日产一区二区| 永久成人无码激情视频免费| 试看120秒男女啪啪免费| 中文字幕va| 亚洲最大综合网| 久久人搡人人玩人妻精品一| 巨熟乳波霸若妻中文观看免费| 在线看免费无码av天堂的| 99中文字幕亚洲一区二区| 精品福利视频导航| 日本五区在线不卡精品| 中国国产高清免费AV片| 欧美第二区| 97av视频在线观看| 亚洲天堂.com| 亚洲伦理一区二区| 亚洲综合色婷婷中文字幕| 青青青国产精品国产精品美女| 亚洲不卡无码av中文字幕| 91香蕉视频下载网站| 中文字幕在线播放不卡| 国产精品香蕉| 欧美亚洲另类在线观看| 久久99久久无码毛片一区二区| 夜夜操天天摸| 亚洲视频四区| 91精品国产无线乱码在线| 亚洲不卡av中文在线| 深爱婷婷激情网| a级毛片在线免费| 色网站在线视频| 一级毛片免费观看不卡视频| 日韩欧美成人高清在线观看| 久久久噜噜噜| 日韩午夜片| 国产精品午夜福利麻豆| 18禁色诱爆乳网站| 国产无码网站在线观看| 中文字幕日韩视频欧美一区| 国产第八页| 色综合天天综合中文网| 亚洲中文字幕无码mv| 免费观看国产小粉嫩喷水| 91免费国产高清观看| 免费国产好深啊好涨好硬视频| 午夜啪啪福利| 国产精品欧美在线观看| 国产精品人莉莉成在线播放| 亚洲视频二| 久久香蕉国产线看观看亚洲片| 国产精品第| 狠狠色丁香婷婷综合| 亚洲欧美成人在线视频| 成人另类稀缺在线观看| 最近最新中文字幕免费的一页| 99久久国产综合精品女同| 日韩东京热无码人妻| 国产精品欧美激情| 国产在线精品99一区不卡| 色偷偷一区二区三区| 欧美一级夜夜爽| 免费人成网站在线观看欧美| 福利在线一区| 国产精品视频系列专区| 无码一区18禁| 亚洲娇小与黑人巨大交| 一本色道久久88亚洲综合| 在线五月婷婷| 欧美一级黄片一区2区| 本亚洲精品网站| 欧洲精品视频在线观看| 91视频青青草| 国产精品第页| 久久黄色免费电影| 伊人久久福利中文字幕| 国产天天色| 在线欧美a| 国产精品人成在线播放| 免费国产不卡午夜福在线观看| av在线手机播放| 亚洲精品片911| 国产精品亚洲五月天高清|
      • <tr id="sssss"></tr>
      • <nav id="sssss"></nav>
        <nav id="sssss"></nav>