- 相關(guān)推薦
UI自動(dòng)化測(cè)試驅(qū)動(dòng)的軟件開發(fā)方法研究
軟件在開發(fā)的過程中有很多方式,不同的軟件開發(fā)也需要不同的技術(shù)。下面是小編搜集整理的測(cè)試驅(qū)動(dòng)開發(fā)研究的論文范文,供大家閱讀借鑒。
【摘 要】在軟件測(cè)試中,UI測(cè)試是保證軟件質(zhì)量、提高軟件可靠性不可或缺的一部分,而基于單元的測(cè)試驅(qū)動(dòng)開發(fā)對(duì)UI的關(guān)注度不夠,本文探討了適用于測(cè)試驅(qū)動(dòng)開發(fā)的UI自動(dòng)化測(cè)試框架需要的性質(zhì)以及框架結(jié)構(gòu),并用開源框架KIF展示了UI自動(dòng)化測(cè)試在測(cè)試驅(qū)動(dòng)開發(fā)中的應(yīng)用。
【關(guān)鍵詞】軟件測(cè)試,UI測(cè)試,測(cè)試驅(qū)動(dòng),極限編程
引言
測(cè)試驅(qū)動(dòng)開發(fā)是一種新的軟件開發(fā)方式,它遵守測(cè)試先行的原則,既簡(jiǎn)化了代碼,又提高了軟件的質(zhì)量,已經(jīng)成功的運(yùn)用到各種項(xiàng)目的開發(fā)。現(xiàn)今的軟件由于越來越注重軟件的用戶體驗(yàn),對(duì)UI的測(cè)試越來越重要,而現(xiàn)在的測(cè)試驅(qū)動(dòng)開發(fā)以測(cè)試代碼單元設(shè)計(jì)正確性為主的單元測(cè)試為主要驅(qū)動(dòng),極少考慮用戶與UI的操作對(duì)程序的影響,所以,研究UI測(cè)試在測(cè)試驅(qū)動(dòng)開發(fā)中的應(yīng)用有重要意義。
1、測(cè)試驅(qū)動(dòng)開發(fā)
測(cè)試驅(qū)動(dòng)開發(fā)(Test- Driven Development), 簡(jiǎn)稱TDD, 由 Kent Beck提出的一種軟件開發(fā)方式。測(cè)試驅(qū)動(dòng)開發(fā)以測(cè)試作為開發(fā)過程的中心, 它要求在編寫任何產(chǎn)品代碼之前, 首先編寫用于定義產(chǎn)品代碼行為的測(cè)試, 而編寫的產(chǎn)品代碼又要以使測(cè)試通過為目標(biāo)。測(cè)試驅(qū)動(dòng)開發(fā)要求測(cè)試可以完全自動(dòng)化的運(yùn)行, 在對(duì)代碼進(jìn)行重構(gòu)前后必須運(yùn)行測(cè)試。
1.1 傳統(tǒng)測(cè)試方法存在的問題
1)傳統(tǒng)的功能性測(cè)試存在著漏洞和冗余, 而且同時(shí)不能被發(fā)現(xiàn)。功能性測(cè)試使測(cè)試人員離代碼過遠(yuǎn);
2)傳統(tǒng)的結(jié)構(gòu)性測(cè)試將代碼采用有向圖表示和程序路徑公式化, 掩蓋了代碼中的重要信息, 這就在路徑分析的方向上走得太遠(yuǎn);
3)如果測(cè)試編寫人員編寫測(cè)試時(shí)所依賴的是文檔而不是代碼時(shí), 當(dāng)文檔和代碼存在任何不一致的地方就會(huì)造成問題;
4)測(cè)試不是自動(dòng)運(yùn)行的, 它們極有可能不會(huì)被頻繁、經(jīng)常性地運(yùn)行, 或每次都以相同的方式來運(yùn)行。
1.2 測(cè)試驅(qū)動(dòng)開發(fā)的優(yōu)點(diǎn)
1)從軟件開發(fā)的初始階段, TDD 就強(qiáng)迫開發(fā)人員以測(cè)試的角度與用戶的觀點(diǎn)對(duì)軟件進(jìn)行審視,因而更能夠?qū)浖腥娴恼J(rèn)識(shí)和把握。
2)由于可以保證編寫測(cè)試和編寫代碼的是相同的程序員, 降低了理解代碼所花費(fèi)的成本。
3)減輕了測(cè)試的工作量。無論是否進(jìn)行設(shè)計(jì)工作, 測(cè)試工作都是不可避免的, 先進(jìn)行單元測(cè)試, 可以減少后續(xù)的測(cè)試工作量。
4)讓程序員能夠更大程度地控制代碼的正確度, 相當(dāng)于提供了兩道的代碼審核手段, 在軟件成品的質(zhì)量上提供了一定的保障。
1.3 測(cè)試驅(qū)動(dòng)開發(fā)步驟
1)根據(jù)軟件設(shè)計(jì)需求快速增加一個(gè)測(cè)試用例;
2)運(yùn)行所有測(cè)試,新增加的測(cè)試無法通過;
3)重構(gòu)代碼,做盡量少的改動(dòng)讓測(cè)試通過;
4)運(yùn)行所有測(cè)試,保證所有測(cè)試都能通過;
5)重構(gòu)代碼,消除重復(fù)設(shè)計(jì);
6)回到1)直到寫完系統(tǒng)所有的功能測(cè)試。
2、UI測(cè)試
在移動(dòng)互聯(lián)網(wǎng)時(shí)代 ,用戶體驗(yàn)是軟件的重中之重,為了保證用戶體驗(yàn)的完美必須對(duì)軟件UI進(jìn)行嚴(yán)格測(cè)試,ui 測(cè)試主要分為可用性測(cè)試和功能性測(cè)試兩方面。對(duì)于可用性測(cè)試,是用來測(cè)試軟件的用戶界面是否符合用戶的使用習(xí)慣和使用心理,是對(duì)用戶體驗(yàn)的歸納和總結(jié)。用戶體驗(yàn)的好壞取決于用戶界面是否簡(jiǎn)單、直觀和實(shí)用,良好的用戶界面可以大大減少可用性測(cè)試的成本。對(duì)于功能性測(cè)試,通過外部UI的內(nèi)容和展示用來測(cè)試軟件的內(nèi)部邏輯正確性。
2.1 自動(dòng)化測(cè)試
根據(jù)測(cè)試是否需要引入人工干預(yù),軟件測(cè)試可以分為手工測(cè)試和自動(dòng)化測(cè)試兩大類。手工測(cè)試是指采用手動(dòng)的方式輸入軟件測(cè)試的數(shù)據(jù),然后觀察測(cè)試的結(jié)果,并對(duì)測(cè)試結(jié)果進(jìn)行分析。相對(duì)于自動(dòng)化測(cè)試,手工測(cè)試是一種原始的測(cè)試方法。自動(dòng)化測(cè)試是指通過編寫測(cè)試腳本,對(duì)軟件進(jìn)行測(cè)試,整個(gè)過程不需要人工進(jìn)行干預(yù)。手工測(cè)試能夠根據(jù)軟件測(cè)試的進(jìn)度,及時(shí)的調(diào)整測(cè)試的策略,改變軟件測(cè)試的方法。手工測(cè)試能夠細(xì)致的觀察到軟件運(yùn)行和輸出的結(jié)果,當(dāng)需要對(duì)測(cè)試結(jié)果進(jìn)行主觀判斷時(shí),手工測(cè)試具有明顯的優(yōu)點(diǎn)。但是,手工測(cè)試也存在著自身的不足。相對(duì)于自動(dòng)化測(cè)試,手工測(cè)試的效率較低,不確定的因素較多。當(dāng)軟件測(cè)試需要測(cè)試大量的數(shù)據(jù)時(shí),手工測(cè)試的局限性較為明顯。完成采用手工測(cè)試對(duì)軟件進(jìn)行測(cè)試,無法滿足現(xiàn)代化的軟件測(cè)試需求。因此,采用手動(dòng)測(cè)試加自動(dòng)化測(cè)試相結(jié)合的方式對(duì)軟件進(jìn)行測(cè)試,可以有效的提高測(cè)試效率,縮短測(cè)試時(shí)間,提高測(cè)試的準(zhǔn)確性。
自動(dòng)化測(cè)試相對(duì)于手工測(cè)試,主要有以下幾點(diǎn)優(yōu)勢(shì):
1)提高測(cè)試效率
手工測(cè)試是一個(gè)勞動(dòng)密集型的工作,并且容易出錯(cuò)。引入自動(dòng)化測(cè)試能夠用有效、可重復(fù)的自動(dòng)測(cè)試環(huán)境代替繁瑣的手工測(cè)試活動(dòng),而且能夠在更少的時(shí)間內(nèi)完成更多的測(cè)試工作,從而提高了測(cè)試工程師的工作效率。
2)降低對(duì)軟件新版本進(jìn)行回歸測(cè)試的開銷
對(duì)于現(xiàn)代軟件的迭代增量開發(fā),每一個(gè)新版本大部分功能和界面都和上一個(gè)版本相似或完全相同,這時(shí)要對(duì)新版本再次進(jìn)行已有的測(cè)試,這部分工作多為重復(fù)工作,特別適合使用自動(dòng)化測(cè)試來完成,從而減小回歸測(cè)試的開銷。
3)完成手工測(cè)試不能或難以完成的測(cè)試
對(duì)于一些非功能型方面的測(cè)試,如壓力測(cè)試、并發(fā)測(cè)試、大數(shù)據(jù)量測(cè)試、崩潰性測(cè)試等,這些測(cè)試用手工測(cè)試是很難,甚至是不可能完成的。但自動(dòng)化測(cè)試則能方便的執(zhí)行這些測(cè)試,比如并發(fā)測(cè)試,使用自動(dòng)化測(cè)試工具就可以模擬來自多方的并發(fā)操作了。
4)具有一致性和重復(fù)性
每次自動(dòng)化測(cè)試運(yùn)行的腳本是相同的,所以可以進(jìn)行重復(fù)的測(cè)試,使得每次的測(cè)試具有一致性,手工測(cè)試則很難做到這點(diǎn)。
5)更好地利用資源
將繁瑣的測(cè)試任務(wù)自動(dòng)化,可以使測(cè)試人員解脫出來,將精力更多地到測(cè)試案例的設(shè)計(jì)和必要的手工測(cè)試當(dāng)中。并且理想的自動(dòng)化測(cè)試能夠按計(jì)劃完全自動(dòng)地運(yùn)行,使得完全可以利用周末和晚上的時(shí)間執(zhí)行自動(dòng)化測(cè)試,每日構(gòu)建技術(shù)日漸普遍。 6)降低風(fēng)險(xiǎn),增加軟件信任度
自動(dòng)化測(cè)試能通過較少的開銷獲得更徹底的測(cè)試效果,從而更好地提高了軟件產(chǎn)品地質(zhì)量。
2.2 自動(dòng)化測(cè)試方法與工具
現(xiàn)在存在著各種各樣的UI自動(dòng)化測(cè)試框架,例如SilkTest和UIAutomation,這類軟件和軟件的開發(fā)環(huán)境相對(duì)獨(dú)立,一般有自己專用的腳本語言和測(cè)試用例描述方法,適合于傳統(tǒng)開發(fā)模式下的先開發(fā)后測(cè)試,不符合測(cè)試驅(qū)動(dòng)開發(fā)的原則。本文用開源框架KIF展示了UI自動(dòng)化測(cè)試在測(cè)試驅(qū)動(dòng)開發(fā)中的應(yīng)用。
3、適用于測(cè)試驅(qū)動(dòng)開發(fā)的UI自動(dòng)化測(cè)試框架
3.1 測(cè)試驅(qū)動(dòng)開發(fā)對(duì)UI測(cè)試需求根據(jù)測(cè)試驅(qū)動(dòng)的開發(fā)過程和UI自動(dòng)化測(cè)試的技術(shù)的介紹,可以總結(jié)出對(duì)于適用于測(cè)試驅(qū)動(dòng)的UI測(cè)試的要求:
1)可視化:普通的單元測(cè)試對(duì)UI部分功能進(jìn)行測(cè)試,但是只能證明功能的邏輯正確性,卻無法看到該功能對(duì)UI的影響,通常需要再編譯一遍程序,手動(dòng)來測(cè)試UI的正確性。所以,UI測(cè)試應(yīng)用在測(cè)試驅(qū)動(dòng)開發(fā)時(shí),要求其必須在測(cè)試過程中可視化。
2)自動(dòng)化:即能夠模擬用戶對(duì)界面的操作,如點(diǎn)擊、滑動(dòng)、捏合等手勢(shì),這些操作可通過各平臺(tái)的accessibility功能實(shí)現(xiàn)。
語言一致性:由于測(cè)試驅(qū)動(dòng)開發(fā)遵循“測(cè)試先行”的策略,對(duì)于測(cè)試腳本的通用性要求不高,所以,采用與軟件開發(fā)一致的語言既能減少開發(fā)人員的學(xué)習(xí)成本,又能充分利用各平臺(tái)的accessibility功能。
3)集成擴(kuò)展性:由于現(xiàn)今的開發(fā)環(huán)境大都緊密集成成熟的單元測(cè)試框架,在該框架的基礎(chǔ)上集成對(duì)UI控件的訪問、操作功能,不僅能滿足UI測(cè)試的需求,還能保證測(cè)試框架功能的完備性。同時(shí),由于UI操作方式的多種多樣,要求框架必須具備靈活性,要有一定的擴(kuò)展能力。
3.2 測(cè)試框架結(jié)構(gòu)
UI自動(dòng)化測(cè)試框架的基礎(chǔ)為成熟的單元測(cè)試框架上,并對(duì)單元測(cè)試進(jìn)行擴(kuò)展,另外添加了模擬用戶操作的模擬、以及對(duì)用戶操作對(duì)象UI控件的擴(kuò)展(圖1)。
3.3 框架工作流程
根據(jù)UI測(cè)試框架架構(gòu)圖,可以清晰的看到其工作流程:
1)加載并解析測(cè)試用例(假如存在單獨(dú)的測(cè)試用例描述文件);
2)按照測(cè)試腳本所描述的操作操作方法對(duì)界面進(jìn)行輸入、點(diǎn)擊、滑動(dòng)等操作;
3)通過界面控件的屬性與期望結(jié)果對(duì)比,判斷是否執(zhí)行成功;
4)輸出測(cè)試結(jié)果。
3.4 UI自動(dòng)化測(cè)試驅(qū)動(dòng)程序開發(fā)步驟
根據(jù)測(cè)試驅(qū)動(dòng)的開發(fā)步驟,聯(lián)合以UI為測(cè)試核心的需求,總結(jié)出基于UI自動(dòng)化測(cè)試的測(cè)試驅(qū)動(dòng)開發(fā)步驟:
1)根據(jù)界面的功能以及用戶對(duì)界面的操作快速添加相應(yīng)的測(cè)試用例;
2)運(yùn)行所有測(cè)試,新增加的測(cè)試無法通過;
3)修改用戶界面以及對(duì)界面的交互代碼,做盡量少的改動(dòng)讓測(cè)試通過;
4)運(yùn)行所有測(cè)試,保證所有測(cè)試都能通過;
5)重構(gòu)代碼,消除重復(fù)設(shè)計(jì);
6)回到1)直到寫完系統(tǒng)所有的功能測(cè)試。
4、測(cè)試驅(qū)動(dòng)開發(fā)實(shí)例
本文通過一個(gè)簡(jiǎn)單的IOS系統(tǒng)的登錄界面的實(shí)例來展示UI測(cè)試驅(qū)動(dòng)開發(fā)方法。
4.1 UI界面描述
4.1.1 界面功能描述
登錄界面有兩個(gè)文本框,一個(gè)登錄按鈕。文本框分別用來輸入用戶名和密碼,登錄按鈕用來確認(rèn)并提交登錄信息。
4.1.2 用戶操作要求
1)用戶名字符數(shù)在3-6之間;
2)密碼字符數(shù)在6-8之間;
3)用戶輸入超過上限則只顯示前8位;
4)用戶輸入低于下限則讓文本框獲得焦點(diǎn)并顯示鍵盤,等待用戶繼續(xù)輸入;
5)點(diǎn)擊確認(rèn)按鈕,若用戶信息不符合要求則讓讓不符合要求的文本框獲取焦點(diǎn),若符合要求則提交驗(yàn)證;
6)點(diǎn)擊界面空白處取消焦點(diǎn)。
4.2 UI自動(dòng)化測(cè)試驅(qū)動(dòng)的開發(fā)過程實(shí)例
在界面上添加用戶控件兩個(gè)文本框和相應(yīng)的說明標(biāo)簽,一個(gè)按鈕,并設(shè)置其訪問屬性,此為程序的初始狀態(tài)。
4.2.1 用戶名輸入測(cè)試
1)根據(jù)用戶操作要求,書寫用戶輸入上限的測(cè)試代碼如下:
代碼解釋,輸入xukaitian超出了上限,所以文本框中應(yīng)該顯示期望值xukait。
2)運(yùn)行測(cè)試,此時(shí)測(cè)試失敗,查看測(cè)試日志,提示與預(yù)期結(jié)果不符:
3)修改界面控制器的代碼,給文本框添加輸入變化控制代碼如下:
4)再次運(yùn)行測(cè)試,此時(shí)測(cè)試成功:
5)重復(fù)上述步驟,分別對(duì)用戶名輸入下限測(cè)試以及其他限制條件進(jìn)行測(cè)試開發(fā)。
5、結(jié)語
測(cè)試驅(qū)動(dòng)開發(fā)在各項(xiàng)目上的成功運(yùn)用激勵(lì)了越來越多的開發(fā)者采用者這種開發(fā)方式,與此同時(shí),用戶對(duì)用戶體驗(yàn)的追求也促使開發(fā)者將越來越多的注意力放在UI界面上,本文針對(duì)這兩種現(xiàn)象,提出了UI測(cè)試在測(cè)試驅(qū)動(dòng)開發(fā)中的應(yīng)用,重點(diǎn)闡述了適用于測(cè)試驅(qū)動(dòng)開發(fā)的UI自動(dòng)化測(cè)試框架應(yīng)具有的性質(zhì)和其架構(gòu),并以IOS平臺(tái)的KIF為例展示了其實(shí)踐應(yīng)用。在本文提出的架構(gòu)中,對(duì)測(cè)試用例的描述解析考慮較少,這是下一步工作的重點(diǎn)。
【參考文獻(xiàn)】
[1]蔡長(zhǎng)霞.劉建平 基于敏捷測(cè)試的自動(dòng)化技術(shù)分析與實(shí)踐[J].工業(yè)控制計(jì)算機(jī),2011,24(10).
[2]何浩,程春玲.基于SilkTesst和XML的通用高效的用戶界面測(cè)試方法[J].計(jì)算機(jī)應(yīng)用,2013,33(1):258-261.
[3]科恩.Scrum 敏捷軟件開發(fā)[M].廖靖斌,呂梁岳,陳爭(zhēng)云,等,譯.北京:清華大學(xué)出版社,2012.
[4]Kniberg,Henrik.Scrum and XP from the Trenches,Lulu[Z].com,2007.
[5]楊怡君,黃大慶.Android 手機(jī)自動(dòng)化性能測(cè)試工具的研究與開發(fā)[J].計(jì)算機(jī)應(yīng)用,2012,32(2):554-556.
[6]Freeman Harries. Software testing.IEEE.Vol5[Z].Sep, 2002:48-50.
【UI自動(dòng)化測(cè)試驅(qū)動(dòng)的軟件開發(fā)方法研究】相關(guān)文章:
IPM驅(qū)動(dòng)和保護(hù)電路的研究03-20
軟件性能測(cè)試研究03-28
鈮酸鋰光開關(guān)的驅(qū)動(dòng)電路的研究03-07
關(guān)于面向軟件測(cè)試過程的知識(shí)管理方法的研究與實(shí)現(xiàn)03-15
軟件開發(fā)團(tuán)隊(duì)的知識(shí)創(chuàng)新研究03-19
鉭電解電容器噪聲測(cè)試方法及應(yīng)用研究11-22
選區(qū)激光燒結(jié)瞬態(tài)溫度場(chǎng)數(shù)值模擬與測(cè)試方法研究03-07
基于顧客情感和諧的情感營(yíng)銷驅(qū)動(dòng)模式研究03-22