劉冠梅
摘要:測試驅動開發是一種強調測試先行開發的軟件開發方式。本文先介紹測試驅動開發TDD的特點,基于TDD實現圖形用戶界面的難點主要闡述了測試驅動開發在天大語言TJUL整個圖形界面GUI的實現應用,最后對此次TDD實踐效果進行評估。相比傳統手工測試,采用TDD方式實現GUI是一種有序、效率高的開發方法。
關鍵詞:測試驅動開發 TJUL 圖形用戶界面
中圖分類號:TP31 文獻標識碼:A 文章編號:1007-9416(2014)08-0171-01
1 引言
現今社會,快速變化和多樣性已成為時代的特點。人們尋求各種途徑來保證軟件的質量。測試驅動開發TDD的出現,將測試工作提高到一個新的高度——測試先于編碼。關于TDD的研究及實踐大部分集中在德國和美國,在亞洲還沒有盛行開來。[1]盡管TDD在國內軟件開發行業還沒有得到很好的實踐和驗證,但它至少可能是一個解決當前問題值得嘗試的途徑。本文先分析測試驅動實現GUI的難點所在及解決辦法,然后結合實際采用測試驅動開發TDD方法實現TJUL語言圖形化界面GUI,最后對實踐效果進行評估。
2 GUI實現
2.1 測試驅動GUI實現的難點
圖形用戶界面GUI的測試是一種比較特殊的測試。它不完全是對邏輯的驗證、對運算結果的判斷,還包括很強的與用戶的交互性。圖形界面被測目標除了包括點擊按鈕觸發事件之類的客觀內容外,還有很多是與用戶的主觀因素緊密結合的:如顯示字體的大小、顏色是否美觀、比例是否勻稱等。GUI測試要求操作的順序性、規律性強,如層疊的下拉菜單。對于圖形界面的實現,若繼續按照原有方式來驅動實現,則會導致待顯示的GUI內部部件變成外部可存取的。
一方面要保證面向對象設計的數據封裝性,另一方面又要滿足TDD自動化回歸測試要求。鑒于圖形用戶界面測試的特殊性,需要轉換測試策略,改用模擬測試方法,即通過模擬查找、觸發本應由傳統測試人員手工進行的GUI部件事件:如點擊按鈕、給文本框輸入信息、鼠標雙擊事件等,從而實現了測試的自動化。
2.2 測試驅動實現GUI
在最高層次上開始測試,應考慮應用程序將做什么而不是考慮單個方法如何實現。通過功能劃分進行測試,盡量為它所做的每件事編寫測試。
這里以“文件-打開”菜單項操作部分為例,說明如何測試驅動實現圖形用戶界面GUI。對于打開文件這一項測試任務,需做的測試如下:
測試1:當點擊打開菜單項時,當且僅當只彈出一個文件選擇對話框,并且對話框為打開類型。
測試2:編輯文本區域置空,結果和錯誤文本區域回到初始化狀態。
測試3:標題、打開的默認路徑是否正確,文本字段、確定、取消按鈕等部件是否顯示得當。
測試4:當從對話框中選擇了一文件并點擊確定后,文本編輯區能將其內容顯示出來,同時文件選擇對話框消失。
測試5:當從文本框中輸入一文件名并點擊確定后,文本編輯區能將其內容顯示出來,同時文件選擇對話框消失。
測試6:當輸入一個不存在的文件時,應彈出一個消息對話框,提示此文件不存在。
測試7:當選擇取消按鈕之后,將什么也不做,即各個文本編輯區仍為初始狀態,同時文件選擇對話框消失。
針對上述測試任務集,創建測試用例TestOpenFileItemAction,讓它派生自JFCTestCase類,首先在setUp()布置模擬測試環境:
當布置完測試預置環境Fixture后,依據上述測試任務單,編寫相應測試方法。例如testTextContents()模擬測試點擊打開后,各文本區域是否回到初始態;測試方法testDialogCompents()模擬測試當前是否僅彈出一個文件選擇對話框,以及對話框的各個部件是否存在、顯示得當;testOpenFromInputFile()模擬測試從文本字段中輸入要打開的文件,比較文本編輯區內容是否與源文件匹配;testReadWrongFile()模擬測試從文本字段中輸入不存在的文件的情況;testCancel()模擬測試選擇取消按鈕之后,文本編輯仍為空,并且文件選擇對話框立即消失等等。這里列舉選擇文件的測試方法:
為使編譯測試通過,需在圖形界面框架類AnalyFrame的初始化工作中增加相應的菜單、監聽器及響應菜單事件的處理。等綠條出現測試得以通過后,對代碼進行重構。
3 結語
本文先介紹了TDD開發方法的特點,然后結合實際,重點闡述了TDD實現圖形用戶界面GUI的難點及特殊性,并以一菜單項事件響應功能為例具體介紹如何模擬測試驅動實現整個圖形用戶界面,最后對此次實踐結果進行評估。從評估結果來看,整個測試集的運行在很短時間內就可完成,這比傳統手工測試要快很多,而且優勢性還體現在后期功能需擴充完善時,無需像傳統手工測試一樣要重新一步步測試一遍。
參考文獻
[1]陳果.基于測試驅動開發的軟件測試管理系統的研究[D].北京:中國科學院空間科學與應用研究中心,2004.endprint
摘要:測試驅動開發是一種強調測試先行開發的軟件開發方式。本文先介紹測試驅動開發TDD的特點,基于TDD實現圖形用戶界面的難點主要闡述了測試驅動開發在天大語言TJUL整個圖形界面GUI的實現應用,最后對此次TDD實踐效果進行評估。相比傳統手工測試,采用TDD方式實現GUI是一種有序、效率高的開發方法。
關鍵詞:測試驅動開發 TJUL 圖形用戶界面
中圖分類號:TP31 文獻標識碼:A 文章編號:1007-9416(2014)08-0171-01
1 引言
現今社會,快速變化和多樣性已成為時代的特點。人們尋求各種途徑來保證軟件的質量。測試驅動開發TDD的出現,將測試工作提高到一個新的高度——測試先于編碼。關于TDD的研究及實踐大部分集中在德國和美國,在亞洲還沒有盛行開來。[1]盡管TDD在國內軟件開發行業還沒有得到很好的實踐和驗證,但它至少可能是一個解決當前問題值得嘗試的途徑。本文先分析測試驅動實現GUI的難點所在及解決辦法,然后結合實際采用測試驅動開發TDD方法實現TJUL語言圖形化界面GUI,最后對實踐效果進行評估。
2 GUI實現
2.1 測試驅動GUI實現的難點
圖形用戶界面GUI的測試是一種比較特殊的測試。它不完全是對邏輯的驗證、對運算結果的判斷,還包括很強的與用戶的交互性。圖形界面被測目標除了包括點擊按鈕觸發事件之類的客觀內容外,還有很多是與用戶的主觀因素緊密結合的:如顯示字體的大小、顏色是否美觀、比例是否勻稱等。GUI測試要求操作的順序性、規律性強,如層疊的下拉菜單。對于圖形界面的實現,若繼續按照原有方式來驅動實現,則會導致待顯示的GUI內部部件變成外部可存取的。
一方面要保證面向對象設計的數據封裝性,另一方面又要滿足TDD自動化回歸測試要求。鑒于圖形用戶界面測試的特殊性,需要轉換測試策略,改用模擬測試方法,即通過模擬查找、觸發本應由傳統測試人員手工進行的GUI部件事件:如點擊按鈕、給文本框輸入信息、鼠標雙擊事件等,從而實現了測試的自動化。
2.2 測試驅動實現GUI
在最高層次上開始測試,應考慮應用程序將做什么而不是考慮單個方法如何實現。通過功能劃分進行測試,盡量為它所做的每件事編寫測試。
這里以“文件-打開”菜單項操作部分為例,說明如何測試驅動實現圖形用戶界面GUI。對于打開文件這一項測試任務,需做的測試如下:
測試1:當點擊打開菜單項時,當且僅當只彈出一個文件選擇對話框,并且對話框為打開類型。
測試2:編輯文本區域置空,結果和錯誤文本區域回到初始化狀態。
測試3:標題、打開的默認路徑是否正確,文本字段、確定、取消按鈕等部件是否顯示得當。
測試4:當從對話框中選擇了一文件并點擊確定后,文本編輯區能將其內容顯示出來,同時文件選擇對話框消失。
測試5:當從文本框中輸入一文件名并點擊確定后,文本編輯區能將其內容顯示出來,同時文件選擇對話框消失。
測試6:當輸入一個不存在的文件時,應彈出一個消息對話框,提示此文件不存在。
測試7:當選擇取消按鈕之后,將什么也不做,即各個文本編輯區仍為初始狀態,同時文件選擇對話框消失。
針對上述測試任務集,創建測試用例TestOpenFileItemAction,讓它派生自JFCTestCase類,首先在setUp()布置模擬測試環境:
當布置完測試預置環境Fixture后,依據上述測試任務單,編寫相應測試方法。例如testTextContents()模擬測試點擊打開后,各文本區域是否回到初始態;測試方法testDialogCompents()模擬測試當前是否僅彈出一個文件選擇對話框,以及對話框的各個部件是否存在、顯示得當;testOpenFromInputFile()模擬測試從文本字段中輸入要打開的文件,比較文本編輯區內容是否與源文件匹配;testReadWrongFile()模擬測試從文本字段中輸入不存在的文件的情況;testCancel()模擬測試選擇取消按鈕之后,文本編輯仍為空,并且文件選擇對話框立即消失等等。這里列舉選擇文件的測試方法:
為使編譯測試通過,需在圖形界面框架類AnalyFrame的初始化工作中增加相應的菜單、監聽器及響應菜單事件的處理。等綠條出現測試得以通過后,對代碼進行重構。
3 結語
本文先介紹了TDD開發方法的特點,然后結合實際,重點闡述了TDD實現圖形用戶界面GUI的難點及特殊性,并以一菜單項事件響應功能為例具體介紹如何模擬測試驅動實現整個圖形用戶界面,最后對此次實踐結果進行評估。從評估結果來看,整個測試集的運行在很短時間內就可完成,這比傳統手工測試要快很多,而且優勢性還體現在后期功能需擴充完善時,無需像傳統手工測試一樣要重新一步步測試一遍。
參考文獻
[1]陳果.基于測試驅動開發的軟件測試管理系統的研究[D].北京:中國科學院空間科學與應用研究中心,2004.endprint
摘要:測試驅動開發是一種強調測試先行開發的軟件開發方式。本文先介紹測試驅動開發TDD的特點,基于TDD實現圖形用戶界面的難點主要闡述了測試驅動開發在天大語言TJUL整個圖形界面GUI的實現應用,最后對此次TDD實踐效果進行評估。相比傳統手工測試,采用TDD方式實現GUI是一種有序、效率高的開發方法。
關鍵詞:測試驅動開發 TJUL 圖形用戶界面
中圖分類號:TP31 文獻標識碼:A 文章編號:1007-9416(2014)08-0171-01
1 引言
現今社會,快速變化和多樣性已成為時代的特點。人們尋求各種途徑來保證軟件的質量。測試驅動開發TDD的出現,將測試工作提高到一個新的高度——測試先于編碼。關于TDD的研究及實踐大部分集中在德國和美國,在亞洲還沒有盛行開來。[1]盡管TDD在國內軟件開發行業還沒有得到很好的實踐和驗證,但它至少可能是一個解決當前問題值得嘗試的途徑。本文先分析測試驅動實現GUI的難點所在及解決辦法,然后結合實際采用測試驅動開發TDD方法實現TJUL語言圖形化界面GUI,最后對實踐效果進行評估。
2 GUI實現
2.1 測試驅動GUI實現的難點
圖形用戶界面GUI的測試是一種比較特殊的測試。它不完全是對邏輯的驗證、對運算結果的判斷,還包括很強的與用戶的交互性。圖形界面被測目標除了包括點擊按鈕觸發事件之類的客觀內容外,還有很多是與用戶的主觀因素緊密結合的:如顯示字體的大小、顏色是否美觀、比例是否勻稱等。GUI測試要求操作的順序性、規律性強,如層疊的下拉菜單。對于圖形界面的實現,若繼續按照原有方式來驅動實現,則會導致待顯示的GUI內部部件變成外部可存取的。
一方面要保證面向對象設計的數據封裝性,另一方面又要滿足TDD自動化回歸測試要求。鑒于圖形用戶界面測試的特殊性,需要轉換測試策略,改用模擬測試方法,即通過模擬查找、觸發本應由傳統測試人員手工進行的GUI部件事件:如點擊按鈕、給文本框輸入信息、鼠標雙擊事件等,從而實現了測試的自動化。
2.2 測試驅動實現GUI
在最高層次上開始測試,應考慮應用程序將做什么而不是考慮單個方法如何實現。通過功能劃分進行測試,盡量為它所做的每件事編寫測試。
這里以“文件-打開”菜單項操作部分為例,說明如何測試驅動實現圖形用戶界面GUI。對于打開文件這一項測試任務,需做的測試如下:
測試1:當點擊打開菜單項時,當且僅當只彈出一個文件選擇對話框,并且對話框為打開類型。
測試2:編輯文本區域置空,結果和錯誤文本區域回到初始化狀態。
測試3:標題、打開的默認路徑是否正確,文本字段、確定、取消按鈕等部件是否顯示得當。
測試4:當從對話框中選擇了一文件并點擊確定后,文本編輯區能將其內容顯示出來,同時文件選擇對話框消失。
測試5:當從文本框中輸入一文件名并點擊確定后,文本編輯區能將其內容顯示出來,同時文件選擇對話框消失。
測試6:當輸入一個不存在的文件時,應彈出一個消息對話框,提示此文件不存在。
測試7:當選擇取消按鈕之后,將什么也不做,即各個文本編輯區仍為初始狀態,同時文件選擇對話框消失。
針對上述測試任務集,創建測試用例TestOpenFileItemAction,讓它派生自JFCTestCase類,首先在setUp()布置模擬測試環境:
當布置完測試預置環境Fixture后,依據上述測試任務單,編寫相應測試方法。例如testTextContents()模擬測試點擊打開后,各文本區域是否回到初始態;測試方法testDialogCompents()模擬測試當前是否僅彈出一個文件選擇對話框,以及對話框的各個部件是否存在、顯示得當;testOpenFromInputFile()模擬測試從文本字段中輸入要打開的文件,比較文本編輯區內容是否與源文件匹配;testReadWrongFile()模擬測試從文本字段中輸入不存在的文件的情況;testCancel()模擬測試選擇取消按鈕之后,文本編輯仍為空,并且文件選擇對話框立即消失等等。這里列舉選擇文件的測試方法:
為使編譯測試通過,需在圖形界面框架類AnalyFrame的初始化工作中增加相應的菜單、監聽器及響應菜單事件的處理。等綠條出現測試得以通過后,對代碼進行重構。
3 結語
本文先介紹了TDD開發方法的特點,然后結合實際,重點闡述了TDD實現圖形用戶界面GUI的難點及特殊性,并以一菜單項事件響應功能為例具體介紹如何模擬測試驅動實現整個圖形用戶界面,最后對此次實踐結果進行評估。從評估結果來看,整個測試集的運行在很短時間內就可完成,這比傳統手工測試要快很多,而且優勢性還體現在后期功能需擴充完善時,無需像傳統手工測試一樣要重新一步步測試一遍。
參考文獻
[1]陳果.基于測試驅動開發的軟件測試管理系統的研究[D].北京:中國科學院空間科學與應用研究中心,2004.endprint