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

UI自動化測試驅動的軟件開發方法研究

2015-04-23 06:23:16徐凱田
科技視界 2015年24期
關鍵詞:界面用戶

徐凱田

(青島科技大學,山東 青島 266061)

0 引言

測試驅動開發是一種新的軟件開發方式,它遵守測試先行的原則,既簡化了代碼,又提高了軟件的質量,已經成功的運用到各種項目的開發。現今的軟件由于越來越注重軟件的用戶體驗,對UI的測試越來越重要,而現在的測試驅動開發以測試代碼單元設計正確性為主的單元測試為主要驅動,極少考慮用戶與UI的操作對程序的影響,所以,研究UI測試在測試驅動開發中的應用有重要意義。

1 測試驅動開發

測試驅動開發(Test-Driven Development),簡稱TDD,由Kent Beck提出的一種軟件開發方式。測試驅動開發以測試作為開發過程的中心,它要求在編寫任何產品代碼之前,首先編寫用于定義產品代碼行為的測試,而編寫的產品代碼又要以使測試通過為目標。測試驅動開發要求測試可以完全自動化的運行,在對代碼進行重構前后必須運行測試。

1.1 傳統測試方法存在的問題

1)傳統的功能性測試存在著漏洞和冗余,而且同時不能被發現。功能性測試使測試人員離代碼過遠;

2)傳統的結構性測試將代碼采用有向圖表示和程序路徑公式化,掩蓋了代碼中的重要信息,這就在路徑分析的方向上走得太遠;

3)如果測試編寫人員編寫測試時所依賴的是文檔而不是代碼時,當文檔和代碼存在任何不一致的地方就會造成問題;

4)測試不是自動運行的,它們極有可能不會被頻繁、經常性地運行,或每次都以相同的方式來運行。

1.2 測試驅動開發的優點

1)從軟件開發的初始階段,TDD就強迫開發人員以測試的角度與用戶的觀點對軟件進行審視,因而更能夠對軟件有全面的認識和把握。

2)由于可以保證編寫測試和編寫代碼的是相同的程序員,降低了理解代碼所花費的成本。

3)減輕了測試的工作量。無論是否進行設計工作,測試工作都是不可避免的,先進行單元測試,可以減少后續的測試工作量。

4)讓程序員能夠更大程度地控制代碼的正確度,相當于提供了兩道的代碼審核手段,在軟件成品的質量上提供了一定的保障。

1.3 測試驅動開發步驟

1)根據軟件設計需求快速增加一個測試用例;

2)運行所有測試,新增加的測試無法通過;

3)重構代碼,做盡量少的改動讓測試通過;

4)運行所有測試,保證所有測試都能通過;

5)重構代碼,消除重復設計;

6)回到1)直到寫完系統所有的功能測試。

2 UI測試

在移動互聯網時代 ,用戶體驗是軟件的重中之重,為了保證用戶體驗的完美必須對軟件UI進行嚴格測試,ui測試主要分為可用性測試和功能性測試兩方面。對于可用性測試,是用來測試軟件的用戶界面是否符合用戶的使用習慣和使用心理,是對用戶體驗的歸納和總結。用戶體驗的好壞取決于用戶界面是否簡單、直觀和實用,良好的用戶界面可以大大減少可用性測試的成本。對于功能性測試,通過外部UI的內容和展示用來測試軟件的內部邏輯正確性。

2.1 自動化測試

根據測試是否需要引入人工干預,軟件測試可以分為手工測試和自動化測試兩大類。手工測試是指采用手動的方式輸入軟件測試的數據,然后觀察測試的結果,并對測試結果進行分析。相對于自動化測試,手工測試是一種原始的測試方法。自動化測試是指通過編寫測試腳本,對軟件進行測試,整個過程不需要人工進行干預。手工測試能夠根據軟件測試的進度,及時的調整測試的策略,改變軟件測試的方法。手工測試能夠細致的觀察到軟件運行和輸出的結果,當需要對測試結果進行主觀判斷時,手工測試具有明顯的優點。但是,手工測試也存在著自身的不足。相對于自動化測試,手工測試的效率較低,不確定的因素較多。當軟件測試需要測試大量的數據時,手工測試的局限性較為明顯。完成采用手工測試對軟件進行測試,無法滿足現代化的軟件測試需求。因此,采用手動測試加自動化測試相結合的方式對軟件進行測試,可以有效的提高測試效率,縮短測試時間,提高測試的準確性。

自動化測試相對于手工測試,主要有以下幾點優勢:

1)提高測試效率

手工測試是一個勞動密集型的工作,并且容易出錯。引入自動化測試能夠用有效、可重復的自動測試環境代替繁瑣的手工測試活動,而且能夠在更少的時間內完成更多的測試工作,從而提高了測試工程師的工作效率。

2)降低對軟件新版本進行回歸測試的開銷

對于現代軟件的迭代增量開發,每一個新版本大部分功能和界面都和上一個版本相似或完全相同,這時要對新版本再次進行已有的測試,這部分工作多為重復工作,特別適合使用自動化測試來完成,從而減小回歸測試的開銷。

3)完成手工測試不能或難以完成的測試

對于一些非功能型方面的測試,如壓力測試、并發測試、大數據量測試、崩潰性測試等,這些測試用手工測試是很難,甚至是不可能完成的。但自動化測試則能方便的執行這些測試,比如并發測試,使用自動化測試工具就可以模擬來自多方的并發操作了。

4)具有一致性和重復性

每次自動化測試運行的腳本是相同的,所以可以進行重復的測試,使得每次的測試具有一致性,手工測試則很難做到這點。

5)更好地利用資源

將繁瑣的測試任務自動化,可以使測試人員解脫出來,將精力更多地到測試案例的設計和必要的手工測試當中。并且理想的自動化測試能夠按計劃完全自動地運行,使得完全可以利用周末和晚上的時間執行自動化測試,每日構建技術日漸普遍。

6)降低風險,增加軟件信任度

自動化測試能通過較少的開銷獲得更徹底的測試效果,從而更好地提高了軟件產品地質量。

2.2 自動化測試方法與工具

現在存在著各種各樣的UI自動化測試框架,例如SilkTest和UIAutomation,這類軟件和軟件的開發環境相對獨立,一般有自己專用的腳本語言和測試用例描述方法,適合于傳統開發模式下的先開發后測試,不符合測試驅動開發的原則。本文用開源框架KIF展示了UI自動化測試在測試驅動開發中的應用。

3 適用于測試驅動開發的UI自動化測試框架

3.1 測試驅動開發對UI測試需求根據測試驅動的開發過程和UI自動化測試的技術的介紹,可以總結出對于適用于測試驅動的UI測試的要求:

1)可視化:普通的單元測試對UI部分功能進行測試,但是只能證明功能的邏輯正確性,卻無法看到該功能對UI的影響,通常需要再編譯一遍程序,手動來測試UI的正確性。所以,UI測試應用在測試驅動開發時,要求其必須在測試過程中可視化。

2)自動化:即能夠模擬用戶對界面的操作,如點擊、滑動、捏合等手勢,這些操作可通過各平臺的accessibility功能實現。

語言一致性:由于測試驅動開發遵循“測試先行”的策略,對于測試腳本的通用性要求不高,所以,采用與軟件開發一致的語言既能減少開發人員的學習成本,又能充分利用各平臺的accessibility功能。

3)集成擴展性:由于現今的開發環境大都緊密集成成熟的單元測試框架,在該框架的基礎上集成對UI控件的訪問、操作功能,不僅能滿足UI測試的需求,還能保證測試框架功能的完備性。同時,由于UI操作方式的多種多樣,要求框架必須具備靈活性,要有一定的擴展能力。

3.2 測試框架結構

UI自動化測試框架的基礎為成熟的單元測試框架上,并對單元測試進行擴展,另外添加了模擬用戶操作的模擬、以及對用戶操作對象UI控件的擴展(圖1)。

圖1

3.3 框架工作流程

根據UI測試框架架構圖,可以清晰的看到其工作流程:

1)加載并解析測試用例(假如存在單獨的測試用例描述文件);

2)按照測試腳本所描述的操作操作方法對界面進行輸入、點擊、滑動等操作;

3)通過界面控件的屬性與期望結果對比,判斷是否執行成功;

4)輸出測試結果。

3.4 UI自動化測試驅動程序開發步驟

根據測試驅動的開發步驟,聯合以UI為測試核心的需求,總結出基于UI自動化測試的測試驅動開發步驟:

1)根據界面的功能以及用戶對界面的操作快速添加相應的測試用例;

2)運行所有測試,新增加的測試無法通過;

3)修改用戶界面以及對界面的交互代碼,做盡量少的改動讓測試通過;

4)運行所有測試,保證所有測試都能通過;

5)重構代碼,消除重復設計;

6)回到1)直到寫完系統所有的功能測試。

4 測試驅動開發實例

本文通過一個簡單的IOS系統的登錄界面的實例來展示UI測試驅動開發方法。

4.1 UI界面描述

4.1.1 界面功能描述

登錄界面有兩個文本框,一個登錄按鈕。文本框分別用來輸入用戶名和密碼,登錄按鈕用來確認并提交登錄信息。

4.1.2 用戶操作要求

1)用戶名字符數在3-6之間;

2)密碼字符數在6-8之間;

3)用戶輸入超過上限則只顯示前8位;

4)用戶輸入低于下限則讓文本框獲得焦點并顯示鍵盤,等待用戶繼續輸入;

5)點擊確認按鈕,若用戶信息不符合要求則讓讓不符合要求的文本框獲取焦點,若符合要求則提交驗證;

6)點擊界面空白處取消焦點。

4.2 UI自動化測試驅動的開發過程實例

在界面上添加用戶控件兩個文本框和相應的說明標簽,一個按鈕,并設置其訪問屬性,此為程序的初始狀態。

4.2.1 用戶名輸入測試

1)根據用戶操作要求,書寫用戶輸入上限的測試代碼如下:

代碼解釋,輸入xukaitian超出了上限,所以文本框中應該顯示期望值 xukait。

2)運行測試,此時測試失敗,查看測試日志,提示與預期結果不符:

3)修改界面控制器的代碼,給文本框添加輸入變化控制代碼如下:

4)再次運行測試,此時測試成功:

5)重復上述步驟,分別對用戶名輸入下限測試以及其他限制條件進行測試開發。

5 結語

測試驅動開發在各項目上的成功運用激勵了越來越多的開發者采用者這種開發方式,與此同時,用戶對用戶體驗的追求也促使開發者將越來越多的注意力放在UI界面上,本文針對這兩種現象,提出了UI測試在測試驅動開發中的應用,重點闡述了適用于測試驅動開發的UI自動化測試框架應具有的性質和其架構,并以IOS平臺的KIF為例展示了其實踐應用。在本文提出的架構中,對測試用例的描述解析考慮較少,這是下一步工作的重點。

[1]蔡長霞.劉建平 基于敏捷測試的自動化技術分析與實踐[J].工業控制計算機,2011,24(10).

[2]何浩,程春玲.基于SilkTesst和XML的通用高效的用戶界面測試方法[J].計算機應用,2013,33(1):258-261.

[3]科恩.Scrum 敏捷軟件開發[M].廖靖斌,呂梁岳,陳爭云,等,譯.北京:清華大學出版社,2012.

[4]Kniberg,Henrik.Scrum and XP from the Trenches,Lulu[Z].com,2007.

[5]楊怡君,黃大慶.Android手機自動化性能測試工具的研究與開發[J].計算機應用,2012,32(2):554-556.

[6]Freeman Harries.Software testing.IEEE.Vol5[Z].Sep,2002:48-50.

[7]Elfriede Dustin,Jeff Rashka,John Paul.自動化軟件測試:入門、管理與實現[M].北京:淸華大學出版社,2003.

猜你喜歡
界面用戶
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
空間界面
金秋(2017年4期)2017-06-07 08:22:16
電子顯微打開材料界面世界之門
關注用戶
商用汽車(2016年11期)2016-12-19 01:20:16
人機交互界面發展趨勢研究
關注用戶
商用汽車(2016年6期)2016-06-29 09:18:54
關注用戶
商用汽車(2016年4期)2016-05-09 01:23:12
手機界面中圖形符號的發展趨向
新聞傳播(2015年11期)2015-07-18 11:15:04
Camera360:拍出5億用戶
創業家(2015年10期)2015-02-27 07:55:08
主站蜘蛛池模板: 伊人久久综在合线亚洲2019| 免费人成又黄又爽的视频网站| 无遮挡一级毛片呦女视频| 久久久黄色片| 久久国产亚洲欧美日韩精品| www.av男人.com| 国产91蝌蚪窝| 国产精品尹人在线观看| 中文毛片无遮挡播放免费| 欧美日韩午夜| 毛片免费在线视频| 久久中文无码精品| 国产成人综合在线视频| 福利一区在线| 亚洲中文字幕在线一区播放| 国产亚洲欧美在线人成aaaa| 丁香综合在线| 在线观看国产精品第一区免费| 日本精品影院| 国产精品yjizz视频网一二区| 日韩精品亚洲一区中文字幕| 性做久久久久久久免费看| 天天摸天天操免费播放小视频| 91久久偷偷做嫩草影院| 99九九成人免费视频精品| 一本大道在线一本久道| 国产精品一区二区在线播放| 久久夜色精品| 99视频在线免费观看| 精品欧美一区二区三区在线| 国产97区一区二区三区无码| 青青热久麻豆精品视频在线观看| 日韩精品一区二区三区大桥未久 | 97亚洲色综久久精品| 日韩av电影一区二区三区四区| 色噜噜在线观看| 亚洲人成日本在线观看| 国产一区在线观看无码| 伊大人香蕉久久网欧美| 91亚瑟视频| 国产69精品久久| 四虎影院国产| 亚洲无码高清一区二区| 一区二区三区国产| 免费a级毛片视频| 亚洲三级电影在线播放| 日韩 欧美 小说 综合网 另类| 3344在线观看无码| 国产免费黄| 青青操视频在线| 97狠狠操| 人妻少妇久久久久久97人妻| 国产麻豆另类AV| 一级毛片免费的| 欧美黄网站免费观看| 色婷婷在线影院| 久久久精品久久久久三级| 久久精品aⅴ无码中文字幕| 伊人无码视屏| 日日拍夜夜操| V一区无码内射国产| 国产成人精品第一区二区| 日本成人在线不卡视频| 99中文字幕亚洲一区二区| 青草视频久久| 国产黑丝视频在线观看| 为你提供最新久久精品久久综合| 国产一区二区三区精品欧美日韩| 国禁国产you女视频网站| 国产亚洲视频免费播放| 国产青榴视频| 久久夜色精品国产嚕嚕亚洲av| 亚洲国产91人成在线| 在线看片免费人成视久网下载| 国产不卡国语在线| 中文一区二区视频| 婷婷在线网站| 欧美国产中文| 日本三级欧美三级| 亚洲精品日产精品乱码不卡| 91青青视频| 一级看片免费视频|