鄭文鈺 廖圣龍
摘要:為了提高軟件測試的效率,降低軟件測試的成本,針對具有穩(wěn)定軟件架構(gòu)的樣本程序進行自動化測試技術(shù)的研究。通過分析軟件的數(shù)據(jù)流程和用戶需求,結(jié)合行業(yè)或領(lǐng)域的歷史數(shù)據(jù),構(gòu)建軟件測試平臺和相關(guān)工具庫,以此為基礎(chǔ),實現(xiàn)自動生成測試用例和測試腳本,進而完成自動化測試。自動化測試平臺具有可繼承性和可擴展性,對于不斷變化的用戶需求和軟件版本,更新維護更加靈活方便。
關(guān)鍵詞:軟件測試;數(shù)據(jù)庫;測試用例; Selenium; Python
中圖分類號:TP311.56 ? ? ? ?文獻標識碼:A
文章編號:1009-3044(2020)17-0033-02
Abstract:In order to improve the efficiency of software testing and reduce the cost of software testing, the automatic testing technology was studied for the sample program with stable software architecture. By analyzing the data flow and user requirements of the software, and combining with the historical data of the industry or field, the software test platform and relevant tool library are built. On this basis, test cases and test scripts are automatically generated to complete automated tests. The automation test platform has the inheritability and the extensibility, the software maintenance is more flexible and convenient.
Key words: software testing; database; test case; Selenium; Python
1 引言
在互聯(lián)網(wǎng)技術(shù)的快速發(fā)展背景下,社會的各行各業(yè)對軟件產(chǎn)品的需求都在不斷地增加,并且對軟件的功能要求也越來越多,軟件的版本迭代的越來越快,因此軟件測試的時間就會被壓縮,也就是面臨測試工作量加大和測試時間縮短的壓力??紤]人工測試的時間成本,軟件自動化測試將在現(xiàn)代軟件測試行業(yè)中扮演更加重要的角色。
為了提高軟件總體開發(fā)效率,相同行業(yè)或相同領(lǐng)域的軟件研發(fā)在發(fā)展過程中將趨于成熟,開發(fā)過程也越來越規(guī)范,軟件的架構(gòu)也愈加穩(wěn)定,成熟穩(wěn)定的軟件架構(gòu)是軟件測試自動化的基礎(chǔ),這種軟件程序也可以被稱為樣本程序[1]。除了穩(wěn)定的軟件架構(gòu),自動化軟件測試的實現(xiàn)還需要各行業(yè)軟件運行過程中積累的海量行業(yè)數(shù)據(jù)[2],并從中提取有效的樣本數(shù)據(jù)作為生成測試用例的樣本庫,結(jié)合軟件架構(gòu)和相對應(yīng)的樣本庫構(gòu)建自動化測試平臺。
目前,軟件自動化測試工具的類型有很多,例如Selenium[3]、QTP[4]等。這些測試工具本身就具有很強功能,但對于不斷的用戶需求變化和軟件產(chǎn)品更新迭代,其并不能提供便捷的自動化腳本編寫方案,為了自動化測試工具更加專業(yè)化[5],因此本文研究了一種基于成熟穩(wěn)定軟件架構(gòu)的樣本程序的自動化測試平臺框架,利用穩(wěn)定的軟件架構(gòu)和行業(yè)數(shù)據(jù),自動提取測試用例和生成測試腳本,對軟件進行自動化測試。
2 軟件自動化測試平臺框架
自動化測試平臺構(gòu)建首先要確定該行業(yè)或領(lǐng)域軟件的數(shù)據(jù)流程,即細化各個功能模塊之間的數(shù)據(jù)流以及數(shù)據(jù)的行為參數(shù)(用戶需求);然后以數(shù)據(jù)流和行為參數(shù)為基礎(chǔ)從該行業(yè)或領(lǐng)域數(shù)據(jù)中提取各個模塊的測試數(shù)據(jù);最后建立相應(yīng)的工具庫。軟件自動化測試平臺工作框圖如圖1 所示。
2.1 數(shù)據(jù)流
軟件是由多個模塊組成,數(shù)據(jù)流就是各個模塊之間的輸入輸出關(guān)系,每個數(shù)據(jù)流可以定義成一個由數(shù)據(jù)元素和數(shù)據(jù)關(guān)系組成的結(jié)構(gòu)體,包括模塊、輸入來源模塊、輸出接收模塊、輸入數(shù)據(jù)元素、輸出數(shù)據(jù)元素、功能關(guān)鍵字以及行為參數(shù)關(guān)鍵字,其中行為參數(shù)關(guān)鍵字是根據(jù)用戶需求定義的規(guī)則參數(shù)。
以軟件系統(tǒng)中基本的增刪改查模塊中的修改功能為例(系統(tǒng)中有修改權(quán)限限制)。輸入來源模塊是系統(tǒng)菜單中的“操作界面”,輸入數(shù)據(jù)包括“操作人員信息”“操作對象”和“操作內(nèi)容”,輸出接收模塊是“顯示界面”和“后臺數(shù)據(jù)庫”,輸出數(shù)據(jù)包括“操作對象”“操作內(nèi)容”和“操作結(jié)果”,功能描述的關(guān)鍵字為“修改”,行為參數(shù)關(guān)鍵字是“人員權(quán)限級別”。該數(shù)據(jù)流結(jié)構(gòu)表示為:
{“增刪改查”;“操作界面”;“顯示界面”,“后臺數(shù)據(jù)庫”;“操作人員信息”,“操作對象”,“操作內(nèi)容”;“操作對象”,“操作內(nèi)容”,“操作結(jié)果”;“修改”;“人員權(quán)限級別”}。
2.2 行為參數(shù)
行為參數(shù)主要是從用戶需求中提取出來,用于約束軟件的數(shù)據(jù)流,就是輸入各種數(shù)據(jù)后輸出的結(jié)果都必須滿足用戶需求,否則即測試不合格。行為參數(shù)用于反推出對應(yīng)模塊的數(shù)據(jù)流具有幾種輸入數(shù)據(jù),以此覆蓋所有測試用例,達到充分測試的目的。
同樣以修改功能為例,該模塊數(shù)據(jù)流中的行為參數(shù)是“人員權(quán)限級別”,從輸入數(shù)據(jù)中“操作人員信息”中獲取“人員權(quán)限級別”,如果操作人員的“人員權(quán)限級別”具有修改的權(quán)限,操作成功并將“操作內(nèi)容”和“操作結(jié)果”發(fā)送“顯示界面”和“后臺數(shù)據(jù)庫”;如果沒有權(quán)限,則操作不成功,將“操作結(jié)果”發(fā)送“顯示界面”。此數(shù)據(jù)流可以生成2種測試用例,也就是至少需要2組測試數(shù)據(jù)來進行充分測試。
此外,數(shù)據(jù)流可能包含多個行為參數(shù),生成的測試用例數(shù)量就由各個行為參數(shù)排列組合種類數(shù)決定。
2.3 測試數(shù)據(jù)
測試的流程就是通過輸入各類測試數(shù)據(jù)后,判斷得到的輸出數(shù)據(jù)是否正確或者滿足需求。因此在確定整個軟件的數(shù)據(jù)流和行為參數(shù)后,以此為基礎(chǔ)從大量的實際數(shù)據(jù)中提取具有代表性并能完全覆蓋各類輸入輸出情況的數(shù)據(jù)作為最終的測試數(shù)據(jù)。
以修改功能為例,至少可以提取出2組測試數(shù)據(jù)。如輸入數(shù)據(jù):操作人員信息(張三,等級1),操作對象(顯示界面),操作內(nèi)容(顏色)。輸出數(shù)據(jù):操作對象(顯示界面),操作內(nèi)容(顏色),操作結(jié)果(成功);輸入數(shù)據(jù):操作人員信息(李四,等級7),操作對象(顯示界面),操作內(nèi)容(顏色),輸出數(shù)據(jù):操作對象(無),操作內(nèi)容(無),操作結(jié)果(失?。?。
2.4 工具庫
由軟件自動化測試平臺工作框圖中可以看出,通過軟件架構(gòu)、用戶需求和行業(yè)數(shù)據(jù)可以依次提取數(shù)據(jù)流庫、行為參數(shù)庫和測試數(shù)據(jù)庫,這三種庫組成了自動化測試平臺的工具庫。其中數(shù)據(jù)流庫和行為參數(shù)庫是需要根據(jù)軟件的版本更新和用戶需求的變化進行同步更新,然后再以新的數(shù)據(jù)流庫和行為參數(shù)庫為依據(jù)從行業(yè)數(shù)據(jù)提取測試數(shù)據(jù)并更新測試數(shù)據(jù)庫。
數(shù)據(jù)庫采用了MySQL數(shù)據(jù)庫,作為一種開源的結(jié)構(gòu)化查詢語言(SQL)數(shù)據(jù)庫管理系統(tǒng),它還具有性能卓越、服務(wù)穩(wěn)定、安裝簡單、易于維護、支持多種開發(fā)語言和平臺以及維護成本低等優(yōu)點[6]。
3 自動化測試工具
本文實現(xiàn)自動化測試工具的腳本開發(fā)是基于Python語言[7],測試工具以Selenium為基礎(chǔ)框架。通過從工具庫抽取待測試模塊的數(shù)據(jù)流和行為參數(shù),匹配出測試數(shù)據(jù),生成測試用例,然后組裝出自動化測試腳本,配置測試工具的參數(shù),調(diào)用測試程序,輸出測試結(jié)果和相應(yīng)的測試問題報告,完成自動化測試。整個自動化測試的流程如圖2所示。
3.1 腳本語言
可用于實現(xiàn)自動化測試的編程語言有很多種,目前軟件測試工程師使用的語言主要有Python、Java等。其中Java語言開發(fā)應(yīng)用最為廣泛,目前在各個領(lǐng)域的軟件開發(fā),Java都是比較主流的選擇,它具有很好兼容性的優(yōu)點,因此很多主流的測試工具都是用Java開發(fā)出來的。
本文采用的是Python語言,作為一種語法簡單、適合初學(xué)編程者的編程語言,近幾年來Python生態(tài)的發(fā)展很迅猛,在數(shù)據(jù)分析、Web開發(fā)、人工智能以及自動化測試等領(lǐng)域都有涉及。Python語言優(yōu)勢在于靈活,而測試行業(yè)就是用戶需求不斷變化,可以充分利用Python廣泛的第三方庫來快速靈活的開發(fā)或更新自動化測試工具,提高測試效率。Python語言的劣勢是執(zhí)行效率比較慢,在測試行業(yè)中這一點并不明顯。
3.2 測試工具
采用Selenium作為自動化測試工具主要看重其強于其他測試工具的四個優(yōu)點。第一,它支持多種語言(Python、PHP、Java等)、平臺(windows、Linux等)以及各類瀏覽器(Firefox、IE、Safari等);第二,它可集成各種開發(fā)平臺,如TestNG、SauceLabs和Jenkins等;第三,可移動測試;第四,具有大型插件庫,可通過各種插件擴展其更多功能[8]。
4 結(jié)論
目前使用的軟件自動化測試的各類工具,在每次進行新的測試項目時,都需要耗費大量的時間和人力成本進行測試用例提取和測試腳本編寫。針對這一情況,本文研究了一種可以自動化提取測試用例和生成測試腳本的軟件自動化測試平臺框架,以行業(yè)或領(lǐng)域軟件的數(shù)據(jù)流程、用戶需求和測試數(shù)據(jù)為基礎(chǔ),建立相應(yīng)的工具庫,最后實現(xiàn)自動化測試腳本的組裝,完成自動化測試。而且同一行業(yè)或領(lǐng)域的自動化測試平臺具有很好可繼承性和可擴展性,便于后期用戶需求變更后的更新維護,進而提高整個自動化測試流程的效率。
參考文獻:
[1] 王致富.基于樣本程序和規(guī)則庫的代碼自動化檢查工具[D].北京:中國科學(xué)院研究生院,2011.
[2] 周惠群,左春,蔡玉寶. 特定領(lǐng)域的數(shù)據(jù)參考模型建模方法研究[J]. 計算機工程與設(shè)計, 2009, 30(3): 605-609.
[3] 莊文龍,陳惠娟. 基于Selenium2的自動化測試應(yīng)用[J]. 福建電腦, 2019, 15(8): 21-24.
[4] 李玉,尉雙梅,汪添生. 基于QTP的企業(yè)級應(yīng)用軟件自動化測試方法[J]. 計算機系統(tǒng)應(yīng)用, 2016, 25(6): 219-224.
[5] 王津,左春,張正. 基于樣本程序的自動化測試工具[J]. 計算機工程, 2019, 25(6): 211-218.
[6] 劉曉光. 基于MySQL的分布式SQL數(shù)據(jù)庫的設(shè)計與實現(xiàn)[D]. 北京:中國科學(xué)院大學(xué),2016.
[7] 孟聰. 基于Python的軟件測試自動化平臺研究[J]. 信息與電腦(理論版), 2019, 5(16): 45-51.
[8] 姜文,劉立康. 基于Selenium的web軟件自動化測試[J]. 計算機技術(shù)與發(fā)展, 2018, 6(9): 29-32.
【通聯(lián)編輯:代影】