許侃+張志華+牟永敏
摘要:本論文的研究內(nèi)容就是按照軟件測試的流程對桌面linux操作系統(tǒng)的整機(jī)兼容性測試的測試需求及測試對象進(jìn)行分析,方法為通過對linux內(nèi)核的硬件管理以及電源管理功能的分析與研究,使用自動化工具結(jié)合測試腳本對整機(jī)兼容性進(jìn)行測試,這種測試方法有針對性且覆蓋了測試對象的測試點(diǎn),從而提高桌面linux操作系統(tǒng)的測試質(zhì)量。
關(guān)鍵詞:linux內(nèi)核;硬件管理;電源管理
中圖分類號:TP316.81 文獻(xiàn)標(biāo)識碼:A 文章編號:1007-9416(2017)05-0069-02
1 引言
1.1 背景
操作系統(tǒng)作為管理和控制計(jì)算機(jī)硬件與軟件資源的計(jì)算機(jī)程序,是直接運(yùn)行在計(jì)算機(jī)上的最基本的系統(tǒng)軟件,任何其他軟件都必須在操作系統(tǒng)的支持下才能運(yùn)行。
隨著社會的發(fā)展與進(jìn)步,電腦在辦公自動化中的作用愈發(fā)凸顯,使人們越來越接近并熟悉了操作系統(tǒng),尤其是微軟開發(fā)的windows操作系統(tǒng)。據(jù)市場調(diào)研結(jié)構(gòu)StarCounter公布的統(tǒng)計(jì)報(bào)告,中國目前使用的windows各個(gè)版本操作系統(tǒng)PC市場份額不低于97.1%。但是隨著2014年5月20日中央國家政府采購中心的一則通告“國家機(jī)關(guān)進(jìn)行信息類協(xié)議供貨強(qiáng)制節(jié)能產(chǎn)品采購,所有計(jì)算機(jī)類產(chǎn)品不允許安裝windows8操作系統(tǒng)”發(fā)布之后,國產(chǎn)桌面linux操作系統(tǒng)產(chǎn)業(yè)猶如雨后春筍一般大量涌現(xiàn),而作為政府采購windows操作系統(tǒng)的繼任者,國產(chǎn)桌面linux系統(tǒng)是否可以肩負(fù)起替代者的責(zé)任就是首先要面對的問題。如果拋開操作系統(tǒng)的易用性以及使用習(xí)慣等因素,與整機(jī)運(yùn)行的兼容性就稱為了桌面linux系統(tǒng)能否適應(yīng)辦公環(huán)境的重要因素。
1.2 研究內(nèi)容
操作系統(tǒng)也可以視為一種特殊的軟件,既然是軟件那么在出廠前就應(yīng)該按照軟件測試流程進(jìn)行全方位的測試。操作系統(tǒng)主要需要完成的兩個(gè)功能為:
第一,與硬件部分進(jìn)行交互,未包含在硬件平臺上的所有底層可編程部件提供服務(wù);
第二,為運(yùn)行在計(jì)算機(jī)系統(tǒng)上的應(yīng)用程序提供執(zhí)行環(huán)境;
本次研究的主要內(nèi)容是通過對操作系統(tǒng)整機(jī)兼容性測試進(jìn)行分析,找到一種較為完善的整機(jī)兼容性測試方法。只有擁有完善的測試方法,有效的指導(dǎo)測試的進(jìn)行,測試結(jié)果才是有效的且具有說服力,從而更好的保證操作系統(tǒng)的質(zhì)量,使得國產(chǎn)桌面linux操作系統(tǒng)可以在市場中長期而穩(wěn)定的存在下去,而不是僅僅作為一個(gè)傀儡在政府的強(qiáng)制約束下取代windows系統(tǒng)。
1.3 整機(jī)兼容性測試概述
兼容性測試指的是測試軟件在特定的硬件平臺上、不同的應(yīng)用軟件之間、不同的操作系統(tǒng)平臺上,不同的網(wǎng)絡(luò)等環(huán)境中是否能夠正常運(yùn)行的測試。整機(jī)兼容性測試屬于兼容性測試范疇中的硬件兼容性測試,具體到本篇報(bào)告中測試的核心內(nèi)容是測試操作系統(tǒng)是否可以在特定的整機(jī)平臺上長時(shí)間穩(wěn)定的工作。
整機(jī)兼容性測試的意義在于:
(1)使用特定硬件平臺對操作系統(tǒng)進(jìn)行測試,發(fā)現(xiàn)問題,推動操作系統(tǒng)質(zhì)量的提升;
(2)通過長時(shí)間的帶載運(yùn)行測試系統(tǒng)穩(wěn)定性,保證了系統(tǒng)存在的價(jià)值;
(3)覆蓋盡可能多的整機(jī)硬件對操作系統(tǒng)進(jìn)行測試,測試操作系統(tǒng)可實(shí)現(xiàn)硬件應(yīng)有的功能。
2 測試對象研究
2.1 操作系統(tǒng)與硬件關(guān)系概述
按照軟件測試的流程,首先要對測試對象進(jìn)行測試需求的分析。對整機(jī)兼容性測試進(jìn)行需求分析的理論基礎(chǔ),是要首先明確操作系統(tǒng)與硬件的關(guān)系,只有理解了操作系統(tǒng)與硬件的工作原理,才能有針對性的對測試對象進(jìn)行測試。
linux作為一個(gè)操作系統(tǒng)包含了最主要的內(nèi)核以及內(nèi)核提供的工具,它提供了一個(gè)完整的操作系統(tǒng)中最底層的硬件控制與資源管理結(jié)構(gòu)。linux系統(tǒng)的內(nèi)核被稱為“kernel”,硬件管理是內(nèi)核的主要工作之一,它通過設(shè)備驅(qū)動去“認(rèn)識”硬件設(shè)備對硬件進(jìn)行管理。內(nèi)核對硬件進(jìn)行管理的輸入來自于用戶通過用戶界面(包括shell,桌面,應(yīng)用等)的命令,經(jīng)過命令與內(nèi)核的溝通產(chǎn)生了系統(tǒng)調(diào)用,而最終由系統(tǒng)調(diào)用觸發(fā)內(nèi)核的函數(shù)對硬件進(jìn)行操作。
2.2 整機(jī)兼容性測試需求分析
2.2.1 硬件資源測試對象分析
整機(jī)中的硬件資源通過操作系統(tǒng)實(shí)現(xiàn)其功能的原理是:
(1)用戶通過操作系統(tǒng)界面發(fā)出操作指令;
(2)API接口程序接收用戶指令并發(fā)起系統(tǒng)調(diào)用,例如read(),write(),fork();
(3)系統(tǒng)調(diào)用通過中斷向內(nèi)核發(fā)出請求,內(nèi)核調(diào)用相關(guān)函數(shù)來完成指令,例如sys_read(),sys_write(),sys_fork();
2.2.2 電源管理模塊測試對象分析
高級電源管理(Advanced Power Manager),簡稱電源管理模塊APM。在整機(jī)兼容性測試中,電源管理模塊主要功能體現(xiàn)為:系統(tǒng)電源管理與設(shè)備電源管理。
(1)系統(tǒng)電源管理。linxu系統(tǒng)的電源管理掛起的實(shí)現(xiàn)原理為系統(tǒng)收到掛起指令后首先凍結(jié)用戶態(tài)進(jìn)程和內(nèi)核態(tài)任務(wù),按照注冊設(shè)備的注冊順序調(diào)用suspend的回調(diào)函數(shù),掛起核心設(shè)備和使CPU進(jìn)入掛起態(tài)由內(nèi)核將所有進(jìn)程設(shè)置為停止并保存所有進(jìn)程的相關(guān)信息。
掛起的具體流程見圖 1。
系統(tǒng)電源管理為掛起提供了兩種方式;
1)suspend to mem(掛起到內(nèi)存)系統(tǒng)把當(dāng)前信息儲存在內(nèi)存中,只有內(nèi)存等幾個(gè)關(guān)鍵部件通電,這時(shí)計(jì)算機(jī)處在高度節(jié)電狀態(tài),按任意鍵后,計(jì)算機(jī)從內(nèi)存中讀取信息很快恢復(fù)到原來狀態(tài),在運(yùn)行掛起操作時(shí)增加mem參數(shù)即可執(zhí)行suspend to mem操作。
2)suspend to disk(掛起到硬盤)計(jì)算機(jī)自動關(guān)機(jī),關(guān)機(jī)前將當(dāng)前數(shù)據(jù)存儲在硬盤上,用戶下次按開關(guān)鍵開機(jī)時(shí)計(jì)算機(jī)將無須啟動系統(tǒng),直接從硬盤讀取數(shù)據(jù),恢復(fù)原來狀態(tài),在運(yùn)行掛起操作時(shí)增加disk參數(shù)即可執(zhí)行suspend to disk操作。endprint
(2)設(shè)備電源管理。在Linux系統(tǒng)的硬件設(shè)備管理方面,電源管理系統(tǒng)已經(jīng)封裝好了統(tǒng)一的接口,各種類型的設(shè)備驅(qū)動只需要實(shí)現(xiàn)相關(guān)的接口函數(shù),操作系統(tǒng)在收到操作信號的時(shí)候就會通知驅(qū)動完成這些操作。在一般設(shè)備驅(qū)動基礎(chǔ)之上,使用pm_register和pm_unregister進(jìn)行注冊和注銷,使用pm_access進(jìn)行掛起的可行性檢測,使用pm_callback函數(shù)執(zhí)行狀態(tài)通知后的回調(diào)響應(yīng),以此來控制設(shè)備的供電。
2.2.3 明確測試對象
通過了以上分析,我們對操作系統(tǒng)的硬件管理功能有了更深入的了解,有了理論的支持,接下來就可以做整機(jī)硬件兼容性的測試需求分析了。整機(jī)兼容性涉及到的硬件測試對象為:
(1)中央處理器;
(2)主存儲器:內(nèi)存;
(3)外存儲器:硬盤,光驅(qū),U盤;
(4)輸出設(shè)備:顯卡等;
以上設(shè)備為普通臺式計(jì)算機(jī)包含的基本硬件,可以概括為一個(gè)測試對象既整機(jī)硬件,進(jìn)行整機(jī)兼容性測試時(shí)測試點(diǎn)與測試用例均應(yīng)涵蓋以上硬件的測試。
(5)電源管理功能作為內(nèi)核的一個(gè)重要功能獨(dú)立作為一個(gè)測試對象,對于該測試對象的測試用例既要涵蓋電源管理功能里的系統(tǒng)電源管理中不同掛起方式的測試,還有設(shè)備管理的功能實(shí)現(xiàn)。
2.3 測試點(diǎn)歸納
通過上述對測試對象的分析我們可得出結(jié)論,整機(jī)兼容性測試的測試點(diǎn)可歸納為:
(1)對硬件資源的兼容性測試可通過硬件的功能是否實(shí)現(xiàn)來驗(yàn)證。1)CPU可正常進(jìn)行處理指令、執(zhí)行操作、控制時(shí)間,處理數(shù)據(jù)等操作;2)內(nèi)存可對數(shù)據(jù)進(jìn)行讀寫;3)硬盤,光驅(qū),U盤均可實(shí)現(xiàn)數(shù)據(jù)讀寫;4)顯卡可正常顯示;
(2)對電源管理模塊的兼容性測試可通過兩部分來測試:1)系統(tǒng)電源管理可通過掛起功能是否實(shí)現(xiàn)來驗(yàn)證;2)設(shè)備電源管理可通過掛起喚醒后設(shè)備是否加電來驗(yàn)證。
3 測試設(shè)計(jì)
3.1 確定測試方法
整機(jī)的兼容性測試需要操作系統(tǒng)長時(shí)間在硬件平臺上運(yùn)行,與整機(jī)的硬件進(jìn)行充分的“磨合”,以便容易發(fā)現(xiàn)兼容性問題。通過對歸納的測試點(diǎn)分析,發(fā)現(xiàn)以下特點(diǎn):
(1)硬件資源的測試方法固定而且為單一的長時(shí)間重復(fù)性操作;
(2)電源管理模塊的測試方法為單一的長時(shí)間重復(fù)性操作;
針對上述特點(diǎn),本次測試比較符合使用自動化工具進(jìn)行測試的條件,所以可以選擇采用自動化測試工具進(jìn)行測試,好處是可以自動化工具模擬手動測試并施加測試負(fù)載,達(dá)到長時(shí)間手動測試的效果。
硬件資源的自動化測試可以選擇適合linux系統(tǒng)的“燒機(jī)”軟件進(jìn)行測試,“燒機(jī)”軟件的測試項(xiàng)基本都包含了整機(jī)的常用硬件設(shè)備,并且相應(yīng)設(shè)備的測試套件可覆蓋該硬件設(shè)備的功能測試點(diǎn)。
電源管理模塊可使用rtcwake命令來實(shí)現(xiàn)測試實(shí)施。Rtcwake命令可以用來是系統(tǒng)進(jìn)入睡眠狀態(tài),也可以在制定的時(shí)間喚醒系統(tǒng),可通過腳本的形式使用rtawake命令進(jìn)行循環(huán)來測試電源模塊的功能。關(guān)于設(shè)備電源管理測試時(shí)可著重關(guān)注板載USB接口的喚醒加電測試,所以可以在使用腳本進(jìn)行掛起測試時(shí)將板載USB接口滿插U盤測試喚醒后的加電狀態(tài)。
3.2 測試的可行性分析
在確定了整機(jī)兼容性測試方法后,我們要做的就是對該測試方法進(jìn)行可行性的分析;
適用于Linux的烤機(jī)軟件工具目前并不少見,這類軟件可同時(shí)用于計(jì)算機(jī)所有及部分子系統(tǒng)的穩(wěn)定性和兼容性測試,它會通過對各個(gè)常用硬件設(shè)備進(jìn)行帶載的持續(xù)性測試使那些間歇出現(xiàn)或隱藏的問題暴露出來,以便在測試軟件運(yùn)行過后使系統(tǒng)與整機(jī)使用起來有更大的把握。
電源管理模塊的使用rtcwake命令編寫腳本可以長時(shí)間(時(shí)間可以由腳本設(shè)置)重復(fù)進(jìn)入和離開掛起狀態(tài),并將運(yùn)行結(jié)果以日志的形式打印出來,以便于人工讀取測試結(jié)果對其進(jìn)行判斷和分析。因?yàn)閞tcwake命令使用RTC架構(gòu),可驅(qū)動任何支持標(biāo)準(zhǔn)驅(qū)動模式的設(shè)備,所以在對設(shè)備電源管理測試時(shí)同樣可使用rtcwake命令,可通過腳本實(shí)現(xiàn)每次系統(tǒng)喚醒后U盤設(shè)備需加電自動掛載,每成功掛載一次可向U盤中寫入當(dāng)前掛載次數(shù),當(dāng)測試結(jié)束后將該掛載次數(shù)與喚醒次數(shù)進(jìn)行對比來檢查設(shè)備加電情況。
4 結(jié)語
本文按照軟件測試流程對整機(jī)兼容性測試的測試對象進(jìn)行分析,通過細(xì)化測試點(diǎn)并根據(jù)其特點(diǎn)制定了采用自動化工具測試以及編寫腳本輔助測試的方法,使測試方法覆蓋了對所有測試對象。
從理論上分析,本次研究歸納的測試點(diǎn)與測試項(xiàng)基本符合整機(jī)兼容性的測試需求,測試方法基本覆蓋了測試對象的功能點(diǎn),測試工具和腳本均可運(yùn)行在linux系統(tǒng)環(huán)境下運(yùn)行,所以該整機(jī)兼容性測試方法有一定的可行性。在今后的實(shí)際測試中,可以按照該方法與思路進(jìn)行測試并在實(shí)踐中不斷完善,以期為提高桌面linux系統(tǒng)測試質(zhì)量保駕護(hù)航。
參考文獻(xiàn)
[1][美] 博韋,西斯特.深入理解LINUX內(nèi)核(第3版)[M] .(陳莉君,張瓊聲,張宏偉,譯).北京:中國電力出版社,2008.01.01 .
[2]董峰.深入剖析Linux內(nèi)核與設(shè)備驅(qū)動[M].北京:機(jī)械工業(yè)出版社,2015.03.01.
[3][英]薩莫維爾.軟件工程(第九版)[M].(程成等 譯).北京:機(jī)械工業(yè)出版社,2011.05.01.
[4][美]佩騰(Rom Patton).軟件測試(原書第二版)[M] .(張小松,王鈺,曹躍,譯).北京:機(jī)械工業(yè)出版社,2006.04.01.
[5]周煥來,賈海濤.軟件功能測試自動化實(shí)戰(zhàn)教程[M].北京:人民郵電出版社,2015.03.01.endprint