沈嘯
摘要:21世紀是計算機和網絡技術高速發(fā)展的時代,目前我國的軟件行業(yè)開發(fā)程度明顯落后于歐美等發(fā)達國家,同時相對于開發(fā)工作而言,軟件的測試工作更加不被重視,導致國內很多軟件的測試僅包含不具備技術含量的手動操作測試。而隨著現代各行各業(yè)對于計算機系統(tǒng)的需求,測試工作也顯得更加重要,如果無法形成一套完備的測試體系,則會嚴重影響我國軟件行業(yè)的發(fā)展速度。文章基于Python的軟件測試自動化平臺進行研究,探討了軟件測試平臺的概念和種類,并對測試平臺的需求進行說明,最后闡述了基于Python的軟件測試自動化平臺的設計方案,以期為相關工作提供參考。
關鍵詞:Python腳本;軟件測試平臺:設計方案
在所有的軟件開發(fā)過程中,軟件測試工作均貫穿了整個研發(fā)過程,從系統(tǒng)編寫、框架構建、系統(tǒng)編碼以及整個體系的應用都需要有效的測試平臺來檢驗其有效性。根據國外的研究顯示,軟件在測試階段投入的成本量占總成本量的40%,而工作量則占總工作量的50%以上。傳統(tǒng)的測試方法周期較長,并且在出錯改動后難以進行回歸測試,測試工作一旦開始就必須連貫進行,否則無法了解己測試內容的比例。因此,必須采用自動化軟件測試平臺才能夠提高該項工作效率,減少軟件的研發(fā)周期。
1.軟件測試的概述
軟件測試就是對一個已經研發(fā)的軟件系統(tǒng)進行功能測試,是軟件運行質量和有效性的重要檢測標準。根據檢測方法的不同,可以將其分為手動檢測和自動檢測2種。其中,手動檢測主要利用鼠標對軟件的運行效果進行測試;自動測試則是利用測試程序對軟件進行深入檢測。2種方法在軟件檢測工作中都非常重要,但手動檢測工作技術含量較低,加之所檢測的內容較多,很容易出現錯漏情況,雖然很適合剛參加工作的人員,但由于單調乏味的工作內容很容易導致員工責任心降低。總而言之,手動測試的優(yōu)勢在于能夠對軟件的業(yè)務邏輯進行檢測,而自動測試則是從軟件的架構進行檢測,二者需要同時進行。
而根據檢測內容的不同,可以分為黑盒、白盒以及灰盒檢測3種。其中,黑盒檢測是將軟件視為一個黑盒,對軟件的行為能力進行檢測,但無法檢測其內部結構;而白盒則與黑盒完全相反,其主要是對軟件的內部結構進行檢測,并可以利用計算機知識對檢測數據進行引導;灰盒檢測是介于黑盒和白盒檢測之間的技術。目前,我國檢測人員最常使用的是黑盒檢測,這主要是因為白盒檢測對工作人員技能要求較高,需要參與編程工作多年的程序員才能夠進行,因此在我國發(fā)展較慢。
2.基于Python的軟件測試自動化平臺的需求
首先,在該測試平臺構建時需要至少一種常用的編程語言,因為在測試過程中操作平臺的檢測人員本身掌握的大多是比較流行的編程語言,不能為了一個測試工具而重新學習新的語言,這樣會降低檢測人員的工作效率。其次,測試平臺必須具有支持可視化圖形的操作界面,目前我國測試行業(yè)的發(fā)展仍處于起步階段,國內很多測試人員均是非計算機專業(yè)出身,為此必須為其提供可視化的操作界面才能夠簡化部分測試工作,提高工作效率。第三,需要將用例的代碼格式保存在.txt下。現代很多文件在運行時均需要在自己的環(huán)境下才可以,但.txt格式文件則屬于通用性文件格式,其在不同的環(huán)境下均可運行,避免了再次編譯導致工作量的增加。第四,需要在輸出界面中包含所有的用例執(zhí)行,而這一要求也是自動化檢測平臺的主要優(yōu)勢,只有充分解放人力才是自動化系統(tǒng)的目的所在,因此應保證結果輸出的全面性。第五,支持Windows平臺的操作。目前國內大多數計算機所使用的系統(tǒng)均為微軟的“窗口”系統(tǒng),根據不完全統(tǒng)計顯示,截至2014年,我國計算機系統(tǒng)中Windows所占比率超過90%,因此,為了滿足絕大多數計算機運行需求,必須使測試自動化平臺能夠支持Windows操作。第六,該平臺需具有較強的擴展能力,其中包括函數庫、用例庫等的擴展功能,這項需求是為了滿足現代日益加快的計算機發(fā)展速度,有效提升系統(tǒng)更新能力。
3.基于Python的軟件測試自動化平臺的設計方案
3.1c#模塊的設計
軟件測試自動化平臺下的c#模塊一般包括4個部分,分別是文件、執(zhí)行、腳本編輯以及實時信息顯示四大模塊。其中,文件模塊主要引用了using System.10,這樣就能夠保證其對多種類型的文件進行創(chuàng)建和讀取,并且在保存時也能夠為用戶提供更加方便的顯示界面。但需要注意的是,在控件使用過程中應該將默認狀態(tài)下的.Filter格式更改為.txt格式,這樣就能夠保證文件的通用性和快速選擇性。在打開文件后,需要采用逐行讀取數據的方式,并采用StreamReader.Append的方法添加文件中的字符,同時該方法還能夠在字符串連接時降低損耗。執(zhí)行模塊主要是控制系統(tǒng)的運行、暫停以及停止,并且能夠將空間使用后生成的文件轉化為.txt格式。腳本編輯模塊同樣包含3個空間,其主要在第2個分頁、出現\n字符時以及新建文件時所觸發(fā)的功能控件。信息顯示模塊共包含2個控件,其一是TabControl,主要是在第2個分頁發(fā)揮作用;其二是TextBox,其屬于復合型控件,能夠對顯示數據的輸出進行邏輯判斷。
3.2Python入口文件
Python的入口文件一般是TestSuiteExecutor.py文件,其主要負責為工作流當單引擎,但不負責實際工作執(zhí)行指令,也就是說,該入口文件僅能夠實現對接受數據參數的初始化,并按照一定順序進行各項工作。Python的入口文件主要負責的內容包括:解析命令行的邏輯問題,建立臨時目錄(所創(chuàng)建的目錄主要經由.txt格式文件編譯成的.py文件),執(zhí)行工作流,清除臨時路徑等。其中,清除的臨時路徑包括臨時目錄、臨時子文件、臨時文件夾等。
3.3工作流的詳細設計方案
基于Python的軟件測試自動化平臺的工作流一般包括5種,分別為重啟、編譯、執(zhí)行、結果、輸出。其中,重啟工作流是測試過程中所帶動的第1個工作流,該測試的執(zhí)行流程為:(1)進入臨時文件;(2)重啟臨時文件(如果選擇“否”操作則該工作流直接結束,如果選擇“是”操作則工作流繼續(xù)進行);(3)讀取現場文件;(4)刪除該現場文件;(5)在用例文件中讀取該現場文件;(6)工作流結束,其主要是對OS.path包中是否具有現場文件進行檢測。
編譯工作流是測試中所調動的第2個內容,其執(zhí)行流程包括:(1)接受參數和賦值的變化;(2)對每一個用例文件進行瀏覽;(3)對用例文件中的Case進行測試;(4)將Case封裝到模板中;(5)對.py格式文件進行輸出。在封裝的過程中需要注意,應該是將.txt格式文件封裝為.py文件,所使用的模板文件名為caseTemplate.pyCaseTmplate,這樣就能夠將模板字符串和用例的內容添加到try語句中。
執(zhí)行工作流的執(zhí)行流程包括:(1)接受參數和賦值的變化;(2)發(fā)送cmd命令對編譯器進行控制,識別.py文件;(3)測試是否存在異常,如果存在則記錄為“異常log”,如果不存在則生成結果文件;(4)對運行結果文件進行輸出。在發(fā)送emd命令時需要利用os.system進行調用。
結束工作流測試流程包括:(1)讀取結果文件;(2)將文件全部信息編譯成.xml文件;(3)對提取失敗的字符串添加.xml節(jié)點;(4)輸出.xml格式文件。
輸出工作流測試流程包括:(1)對.xml文件進行讀取;(2)對文件數據進行全部輸出;(3)顯示輸出失敗數據詳情;(4)顯示每個用例的分析時間;(5)將各數據在實時信息顯示模塊中進行輸出。
4.結語
軟件測試自動化平臺是一類能夠有效提升軟件測試效率的系統(tǒng),我國應加快這類平臺的研發(fā)和設計進程,并以此提升整體軟件研發(fā)質量和效率。