一種針對b/s架構安全軟件的自動化測試方法
【技術領域】
[0001 ] 本發(fā)明公開一種針對B/S架構安全軟件的自動化測試方法,屬于軟件自動化測試領域。
【背景技術】
[0002]強制訪問控制(Mandatory Access Control—MAC),用于將系統(tǒng)中的信息分密級和類進行管理,以保證每個用戶只能訪問到那些被標明可以由他訪問的信息的一種訪問約束機制。強制訪問控制主體通常指用戶,或代表用戶意圖運行進程或設備,是訪問操作的主動發(fā)起者,是系統(tǒng)中信息流的啟動者,可以使信息流在實體之間流動。主體有時也會成為訪問或受控的對象,如一個主體可以向另一個主體授權,一個進程可能控制幾個子進程等情況,這時受控的主體或子進程也是一種客體,客體通常是指信息的載體或從其他主體或客體接收信息的實體。
[0003]B/S架構即瀏覽器和服務器結構。在這種結構下,用戶工作界面是通過瀏覽器來實現(xiàn),極少部分事務邏輯在前端(Browser)實現(xiàn),但是主要事務邏輯在服務器端(Server)實現(xiàn),系統(tǒng)功能實現(xiàn)的核心部分集中到服務器上,簡化了系統(tǒng)的開發(fā)、維護和使用。B/S架構的強制訪問控制安全軟件,是指在主機的內核層增加文件、進程、注冊表的強制訪問控制規(guī)貝1J,使得用戶對文件、進程、注冊表進行訪問時受到對應規(guī)則約束,從而達到安全防護目的的軟件,且規(guī)則的配置過程是通過web界面完成。
[0004]而強制訪問控制安全軟件的測試需要在web界面配置規(guī)則,然后在服務器上進行文件讀、寫、刪除等操作,二者需要交叉操作,消耗大量時間和精力;客體和權限組合復雜,驗證難度大,但是現(xiàn)有的自動化工具大多基于錄制,維護成本較高,無法很好的進行雙機交叉操作。本發(fā)明提出一種針對B/S架構安全軟件的自動化測試方法,通過對B/S架構安全軟件的強制訪問控制規(guī)則配置接口 API化,使其可以被Python腳本程序調用,在無需與安全軟件開發(fā)人員溝通的情況下即可順利進行,且實現(xiàn)方法簡單;在此基礎上整理參數(shù)格式文檔后,配合開源的自動化測試管理框架,可使無開發(fā)經驗的測試人員完成自動化用例編寫和維護,減小了用例編寫和管理難度,解決了雙機交叉操作難以自動化的問題,同時支持分布式自動化用例執(zhí)行,節(jié)約了時間;也可以對Windows和Linux系統(tǒng)完美兼容,減小了自動化系統(tǒng)復雜度,更加方便測試人員部署、使用;同時如安全軟件后續(xù)版本對web接口進行小的調整,只需略微修改規(guī)則配置方法內部實現(xiàn)即可,用例仍可正常使用,減小了維護成本。
【發(fā)明內容】
[0005]本發(fā)明針對現(xiàn)有的自動化強制訪問控制安全軟件的測試工具大多基于錄制,維護成本較高,無法很好的進行雙機交叉操作的問題,提供一種針對B/S架構安全軟件的自動化測試方法,具有自動化轉化迅速、跨平臺、易于使用、支持分布式自動化用例執(zhí)行的優(yōu)點。
[0006]本發(fā)明提出的具體方案是: 一種針對B/S架構安全軟件的自動化測試方法,通過對B/S架構安全軟件的強制訪問控制規(guī)則配置接口 API化,被Python腳本程序調用;通過強制訪問控制軟件服務端所在系統(tǒng)部署的遠程系統(tǒng)命令接收執(zhí)行程序,使遠程強制訪問控制規(guī)則的驗證操作在本地腳本程序中完成;
強制訪問控制規(guī)則配置接口 API化的實現(xiàn)過程為:抓取每個強制訪問控制規(guī)則配置操作的HTTP請求,抽取需要輸入的參數(shù)形成API接口 ;使用python腳本發(fā)送強制訪問控制規(guī)則配置HTTP請求報文完成后,驗證規(guī)則是否生效;
遠程系統(tǒng)命令執(zhí)行程序在本地腳本程序中的實現(xiàn)過程為:利用發(fā)送端和接收端,接收端運行在安全軟件服務端,接收端創(chuàng)建socket對象,綁定本機端口,監(jiān)聽端口,等待發(fā)送端的連接請求,獲取連接請求的socket對象,創(chuàng)建連接處理線程,向線程函數(shù)傳入連接請求的socket對象,直到用戶終止進程,否則繼續(xù)返回調用連接請求的socket對象;
發(fā)送端運行在本地,發(fā)送端調用socket對象,向接收端發(fā)起連接請求,發(fā)送命令數(shù)據(jù),接收返回的數(shù)據(jù),如接收到結束符退出循環(huán),關閉socket,將接收到的返回數(shù)據(jù)返回,否則繼續(xù)接收返回數(shù)據(jù)。
[0007]所述HTTP請求包括:請求方法、URL、請求頭、提交的數(shù)據(jù);抽取的輸入?yún)?shù)包括IP、端口、sess1nID、Act1n為實際配置動作、Data為提交的數(shù)據(jù)。
[0008]所述HTTP請求在API內部根據(jù)Act1n進行分支判斷,確定具體的URL、請求方法及請求頭中的其他數(shù)據(jù),確定Data的具體格式,進行HTTP請求報文的組裝。
[0009]所述HTTP請求報文的組裝過程為:向規(guī)則配置API接口傳入抽取輸入的參數(shù),根據(jù)Act1n進行分支判斷,確定請求頭cookie中的sess1nID值,完成HTTP請求頭和數(shù)據(jù)構造,根據(jù)給定的IP和端口建立HTTP連接,發(fā)送構造好的HTTP請求,接收HTTP請求響應數(shù)據(jù)并轉存,關閉HTTP連接并將響應數(shù)據(jù)返回。
[0010]所述Act1n進行分支判斷的過程為:根據(jù)Act1n的參數(shù),確定URL的實際配置操作確定的相對路徑,確定請求方法及請求方法中的其他參數(shù),將Data參數(shù)值轉化為相應的用戶文件規(guī)則實際請求的數(shù)據(jù)格式。
[0011]所述Act1n進行分支判斷時當Act1n為addFileUser,則URL為/Rule/addFileUser.act1n,請求方法為P0ST,然后確定請求頭中的其他參數(shù),將Data參數(shù)值轉化為添加用戶文件規(guī)則實際請求的數(shù)據(jù)格式;或者當Act1n為getFileUser,則URL為/Rule/viewFiIeUser.act1n,請求方法為GET,然后確定請求頭中的其他參數(shù),將Data參數(shù)值轉化為獲取用戶文件規(guī)則實際請求的數(shù)據(jù)格式,拼裝在URL尾部。
[0012]連接處理線程處理連接請求的socket對象的過程為:調用連接請求socket對象的recv方法計算遠程命令,通過recv方法返回值判斷是否有數(shù)據(jù)可接收,若無,則連接處理線程結束,若有,則執(zhí)行遠程命令并返回命令執(zhí)行的輸出,構造返回數(shù)據(jù),調用socket對象的sendall方法將構造好的返回數(shù)據(jù)發(fā)送出去后繼續(xù)調用連接請求socket對象的recv方法接收遠程命令。
[0013]利用Popen方法執(zhí)行遠程命令并返回命令執(zhí)行的輸出,則輸出為標準輸出和出錯輸出,若出錯輸出為空,設置標記為0,否則設置標記為1,標記為I時構造返回數(shù)據(jù),調用socket對象的sendall方法將構造好的返回數(shù)據(jù)發(fā)送出去后繼續(xù)調用連接請求socket對象的recv方法接收遠程命令。
[0014]本發(fā)明的有益之處是:本發(fā)明在無需與安全軟件開發(fā)人員溝通的情況下即可順利進行,且實現(xiàn)方法簡單,可快速完成規(guī)則配置接口的API化。在此基礎上整理Act1n和Data對應的參數(shù)格式文檔后,配合開源的自動化測試管理框架,可使無開發(fā)經驗的測試人員完成自動化用例編寫和維護,減小了用例編寫和管理難度,解決了雙機交叉操作難以自動化的問題,同時支持分布式自動化用例執(zhí)行,節(jié)約了時間;遠程系統(tǒng)命令執(zhí)行程序也可以對Windows和Linux系統(tǒng)完美兼容,減小了自動化系統(tǒng)復雜度,更加方便測試人員部署、使用;同時如安全軟件后續(xù)版本對web接口進行小的調整,只需略微修改規(guī)則配置方法內部實現(xiàn)即可,用例仍可正常使用,減小了維護成本。
【附圖說明】
[0015]圖1強制訪問控制規(guī)則配置API接口實現(xiàn)流程示意圖;
圖2遠程系統(tǒng)命令執(zhí)行程序接收端實現(xiàn)流程示意圖;
圖3遠程系統(tǒng)命令執(zhí)行程序接收端的連接處理線程工作流程示意圖;
圖4遠程系統(tǒng)命令執(zhí)行程序發(fā)送端實現(xiàn)流程示意圖。
【具體實施方式】
[0016]結合附圖對本發(fā)明做進一步說明。
[0017]B/S架構的強制訪問控制安全軟件,是指在主機的內核層增加文件、進程、注冊表的強制訪問控制規(guī)則,使得用戶對文件、進程、注冊表進行訪問時受到對應規(guī)則約束,從而達到安全防護目的的軟件,且規(guī)則的配置過程是通過web界面完成。robot framework是一款python編寫的功能自動化測試開源框架,支持關鍵字驅動,測試人員可以使用Python創(chuàng)建自己需要的測試庫,:robot framework通過加載測試庫抽象出關鍵字,用戶使用關鍵字來進行用例的編寫和執(zhí)行。
[0018]一種針對B/S架構安全軟件的自動化測試方法,通過對B/S架構安全軟件的強制訪問控制規(guī)則配置接口 API化,被Python腳本程序調用;通過強制訪問控制軟件服務端所在系統(tǒng)部署的遠程系統(tǒng)命令接收執(zhí)行程序,使遠程強制訪問控制規(guī)則的驗證操作在本地腳本程序中完成;
強制訪問控制規(guī)則配置接口 API化的實現(xiàn)過程為:抓取每個強制訪問控制規(guī)則配置操作的HTTP請求,抽取需要輸入的參數(shù)形成API接口 ;使用python腳本發(fā)送強制訪問控制規(guī)則配置HTTP請求報文完成后,驗證規(guī)則是否生效;
其中HTTP請求包括:請求方法、URL、請求頭、提交的數(shù)據(jù);
請求方法主要根據(jù)實際配置操作內容確定,比如獲取規(guī)則表操作,一般為GET,添加、刪除、修改規(guī)則一般為POST ;
URL中主要由IP、端口、根據(jù)實際配置操作確定的相對路徑組成;
請求頭中主要可變參數(shù)為cookie中的sess1nID,referer等,其中使用sess1nID可規(guī)避登錄界面驗證碼等問題,其他參數(shù)一般比較固定;
提交的數(shù)據(jù),即Data,主要根據(jù)實際配置操作內容確定。
[0019]抽取的輸入?yún)?shù)包括IP、端口、sess1nID、Act 1n為實際配置動作、Data。Act1n根據(jù)實際操作動作自行命名,比如添加文件強制訪問規(guī)則定義為addFileUser,Data根據(jù)Act1n進行變化,數(shù)據(jù)結構封裝為統(tǒng)一格式,可以利用python字典格式,以減小接口的復雜度。
[0020]HTTP請求在API內部根據(jù)Act1n進行分支判斷,確定具體的URL、請求方法及請求頭中的其他數(shù)據(jù),確定Data的具體格式,進行HTTP請求報文的組裝。
[0021]參見圖1,以 Act1n 為 addFileUser 或者 Act1n 為 getFileUser 為例,HTTP請求報文的組裝過程為:向規(guī)則配置API接口傳入?yún)?shù),根據(jù)Act1n進行