亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于Docker的嵌入式軟件測試研究

        2020-02-04 07:12:24李耀周亞明羅輝黎毅輝
        電子技術(shù)與軟件工程 2020年12期

        李耀 周亞明 羅輝 黎毅輝

        (威勝信息技術(shù)股份有限公司 湖南省長沙市 410205)

        嵌入式軟件是運(yùn)行在嵌入式系統(tǒng)上的一組針對特定硬件而設(shè)計的應(yīng)用程序,這些應(yīng)用程序通常是為了滿足客戶特定需求而預(yù)先定義的一套專用的軟件,它不僅受制于特定的硬件資源限制,比如:CPU 頻率、內(nèi)存空間、存儲空間等等,而且其功能還受限于接入嵌入式系統(tǒng)的外圍硬件電路、元器件等所帶來的影響。為實(shí)現(xiàn)電子設(shè)備設(shè)定的功能、成本、體積、功耗等要求,嵌入式軟件必須強(qiáng)調(diào)軟硬件的協(xié)同性、可靠性和可裁剪性,因此,針對嵌入式軟件的測試遠(yuǎn)比傳統(tǒng)軟件的測試要更加復(fù)雜和困難。本文主要是結(jié)合嵌入式軟件的特點(diǎn),討論如何利用Docker 容器技術(shù)具有的一些優(yōu)勢和特性對傳統(tǒng)嵌入式軟件測試過程中被測試對象的交付、安裝和部署方法,對嵌入式軟件測試環(huán)境搭建,測試工具使用等方面進(jìn)行的改進(jìn)和優(yōu)化。最后通過在臺區(qū)智能終端的應(yīng)用,驗(yàn)證基于Docker 的嵌入式軟件測試可有效降低測試復(fù)雜性、提升測試效率和提高資源利用率。

        1 嵌入式軟件測試面臨的問題

        隨著物聯(lián)網(wǎng)時代的到來,以及設(shè)備智能化的推廣應(yīng)用,嵌入式軟件的質(zhì)量和可靠性日益成為人們關(guān)注的焦點(diǎn),與之相關(guān)的測試技術(shù)也逐漸受到研發(fā)人員和檢測機(jī)構(gòu)的重視。由于嵌入式軟件的應(yīng)用越來越廣泛和深入,使得這些軟件的規(guī)模與復(fù)雜度不斷增長,不僅導(dǎo)致開發(fā)難度加大,而且針對嵌入式軟件的測試也變得越來越復(fù)雜。但傳統(tǒng)的軟件測試技術(shù)還沒有完全適應(yīng)這種變化,已凸顯出一些不足之處:

        1.1 嵌入式軟件測試難度越來越大

        嵌入式軟件測試是一項(xiàng)復(fù)雜性高、 綜合性強(qiáng)的工作,不僅受制于特定硬件設(shè)計,而且受限于系統(tǒng)資源,需要測試人員具備較高的業(yè)務(wù)水平和較強(qiáng)的專業(yè)知識,才能發(fā)現(xiàn)被測對象可能存在的缺陷。同時,由于被測試嵌入式軟件的交付大多是基于可執(zhí)行程序或軟件壓縮包方式進(jìn)行,需要手動搭建測試環(huán)境并配置各種所需的依賴關(guān)系,操作起來十分繁瑣。隨著電子設(shè)備的功能不斷增多,其中的嵌入式軟件規(guī)模與復(fù)雜度還在不斷提高,依賴關(guān)系和包含的組件也越來越復(fù)雜。

        1.2 嵌入式軟件測試效率跟不上發(fā)布

        隨著開發(fā)迭代速度的加快,嵌入式軟件更新頻率已由原來以月、年為單位發(fā)展到現(xiàn)在的以天、周為單位,但嵌入式軟件測試環(huán)境搭建復(fù)雜且不靈活,測試不同的軟件或版本時,需要重復(fù)搭建多套測試環(huán)境,設(shè)置不同的相關(guān)參數(shù),搭配各種不同的外接設(shè)備和檢測工具,測試人員需要進(jìn)行大量復(fù)雜的手工操作,有時還會因此產(chǎn)生錯誤或遺漏。測試的軟件質(zhì)量以及項(xiàng)目進(jìn)度往往比預(yù)計的差很多,因而導(dǎo)致測試效率跟不上軟件發(fā)布的節(jié)奏。

        1.3 嵌入式軟件測試環(huán)境利用率低

        盡管搭建嵌入式軟件測試的環(huán)境非常繁瑣,但一套測試環(huán)境往往沒辦法并行測試多個不同版本或功能的嵌入式軟件,因?yàn)榇蟛糠智度胧杰浖紩?dú)占系統(tǒng)的資源,同時彼此之間還會相互影響,這就導(dǎo)致搭建出來的測試環(huán)境利用率并不高,在相關(guān)硬件和配套外接設(shè)備都較為短缺時,這種情況更是雪上加霜。雖然還可以基于虛擬機(jī)方式搭建嵌入式軟件測試環(huán)境,但這項(xiàng)技術(shù)本身非常消耗宿主機(jī)的資源,從而又會導(dǎo)致系統(tǒng)資源利用率降低。

        圖1:Docker 的總體架構(gòu)

        圖2:嵌入式軟件測試環(huán)境

        圖3:Docker 環(huán)境安裝驗(yàn)證

        圖4:容器并行測試

        目前面臨的測試環(huán)境搭建復(fù)雜、測試效率不高、資源利用率較低的問題已成為嵌入式軟件測試亟待解決的問題。在此情況下,結(jié)合嵌入式軟件的特點(diǎn),研究如何利用新的測試技術(shù)和方法來構(gòu)建嵌入式軟件測試過程,對降低測試復(fù)雜度、提升測試效率和提高測試資源利用率具有十分重要的意義。

        2 嵌入式軟件測試的相關(guān)研究

        由于存在對硬件有較高的依賴性、受限于系統(tǒng)資源不足、開發(fā)環(huán)境與運(yùn)行環(huán)境不一致等問題,針對嵌入式軟件的測試通常會比傳統(tǒng)的軟件測試更加復(fù)雜。國外研究嵌入式軟件測試技術(shù)開始于上個世紀(jì)七十年代,Robert L.Glass 在1980年發(fā)表的一篇文章[1],論述了嵌入式軟件測試技術(shù)落后于傳統(tǒng)軟件測試技術(shù)的原因并給出了一些解決方案,對嵌入式軟件測試技術(shù)的發(fā)展影響深遠(yuǎn)。國內(nèi)研究首先是在國防領(lǐng)域開始對嵌入式軟件測試技術(shù)和工具進(jìn)行的。針對艦船嵌入式軟件的特點(diǎn),韓新宇等人[2]提出測試用例自動驅(qū)動方案,并基于此方案設(shè)計出測試用例自動驅(qū)動平臺。王浩宇等人[3]在雷達(dá)嵌入式軟件測試領(lǐng)域?qū)崿F(xiàn)對Cuttle ISE 的應(yīng)用。之后肖永健等人[4]研究出一種基于軟件故障注入的邏輯覆蓋測試平臺。盡管嵌入式軟件測試技術(shù)已得到廣泛應(yīng)用,但目前國內(nèi)對嵌入式軟件測試技術(shù)和工具的研究仍處于起步階段,特別是很少考慮嵌入式軟件測試環(huán)境搭建復(fù)雜、測試效率不高和資源利用率低的問題,這些問題卻是影響嵌入式軟件開發(fā)進(jìn)度和成本的關(guān)鍵因素,仍需要進(jìn)行深入的研究。

        3 容器技術(shù)及工具的研究

        3.1 容器技術(shù)的介紹

        容器技術(shù)(Container)是一種新型的虛擬化技術(shù),它是操作系統(tǒng)中一組受到資源限制且彼此間相互隔離的獨(dú)立進(jìn)程。相比傳統(tǒng)的虛擬機(jī)技術(shù),容器技術(shù)資源利用率更高效、軟件封裝性更簡單、軟件遷移和擴(kuò)展更方便。Docker 是依托于Linux 內(nèi)核的容器技術(shù)而發(fā)展起來的一種目前主流的容器引擎,它將底層系統(tǒng)、依賴環(huán)境、應(yīng)用程序等進(jìn)行統(tǒng)一打包,并形成一個整體的鏡像文件,最后作為一個獨(dú)立的容器部署在其他的平臺或宿主機(jī)上。

        3.2 Docker的總體架構(gòu)

        Docker 主要是實(shí)現(xiàn)應(yīng)用軟件層的虛擬化,通過沙盒機(jī)制可以保證在容器中運(yùn)行的任何應(yīng)用軟件都是獨(dú)立的,與外界的軟件接口都是可控的,從而保障了數(shù)據(jù)的安全性和運(yùn)行的可靠性。不同于其他虛擬化技術(shù),Docker 直接運(yùn)行在宿主機(jī)的操作系統(tǒng)之上,底層硬件并沒有虛擬化,因而可用最小的硬件開銷達(dá)到更高的計算能力,這也為Docker 在嵌入式系統(tǒng)上應(yīng)用提供了理論依據(jù)和技術(shù)可行性。如圖1 所示,Docker 的架構(gòu)是基于Client-Server 模式設(shè)計的,服務(wù)端啟動后會在宿主機(jī)上運(yùn)行一個守護(hù)進(jìn)程,客戶端通過這個守護(hù)進(jìn)程來遠(yuǎn)程控制Docker 容器的創(chuàng)建、運(yùn)行、停止、刪除等操作。

        3.3 Docker的文件系統(tǒng)

        Docker 的鏡像文件是基于分層結(jié)構(gòu)設(shè)計的,但其中并沒有包含Linux 內(nèi)核,只包含了運(yùn)行所需要的文件系統(tǒng)結(jié)構(gòu)。Docker 容器是鏡像文件的運(yùn)行態(tài)體現(xiàn),Docker 容器的文件系統(tǒng)大部分來自鏡像文件,其他為鏡像新建的內(nèi)容可分為初始層和讀寫層。初始層主要包括在初始化容器環(huán)境時產(chǎn)生的相關(guān)默認(rèn)文件,而Docker 容器內(nèi)的進(jìn)程只能對讀寫層擁有寫權(quán)限,其他層對進(jìn)程而言都是只讀的。這樣從操作系統(tǒng)層面上就避免了軟件被誤刪或破壞的可能性,即便被強(qiáng)制破壞,也可以通過Docker 的初始化命令恢復(fù)到初始狀態(tài)。Docker 還使用了寫入時復(fù)制技術(shù)(Copy-On-Write),所有運(yùn)行中的容器可以先共享一個基礎(chǔ)文件系統(tǒng),當(dāng)需要向文件系統(tǒng)進(jìn)行寫操作時,就引導(dǎo)它寫到與該容器相關(guān)的另一個特定文件系統(tǒng)中,從而避免意外刪除或修改基礎(chǔ)文件系統(tǒng),同時也避免通過文件系統(tǒng)改變自身容器以外的內(nèi)容。

        3.4 Docker的隔離與安全

        不同于傳統(tǒng)意義上的虛擬化技術(shù),應(yīng)用軟件的隔離性與安全性是在操作系統(tǒng)之上由Docker 引擎來提供保證的。由于應(yīng)用軟件運(yùn)行在容器中,并與其他容器中的應(yīng)用軟件和根文件系統(tǒng)進(jìn)行隔離,因而宿主機(jī)的系統(tǒng)基本不會被應(yīng)用軟件或異常操作破壞。如果應(yīng)用軟件因受到外部攻擊而癱瘓,只需要重啟容器或啟動一個新的容器即可恢復(fù),并不需要重新啟動宿主機(jī),也不會影響到其他容器的正常運(yùn)行。我們可以用Docker 在不同的容器中并行運(yùn)行不同的應(yīng)用軟件,如果不再需要某個應(yīng)用軟件,就可以通過刪除容器中的這個應(yīng)用軟件來完成,并且操作系統(tǒng)上不會因此留下任何臨時文件。此外,Docker 還能確保每個應(yīng)用軟件只能使用分配給它的資源,包括CPU、內(nèi)存、網(wǎng)絡(luò)、存儲空間等,不會因?yàn)槌绦蛉毕莼驉阂庑袨檎加玫较到y(tǒng)全部的可用資源,避免了因此導(dǎo)致系統(tǒng)性能降低或被拖垮。

        4 Docker對嵌入式軟件測試的改進(jìn)

        4.1 降低嵌入式軟件測試的復(fù)雜性

        測試人員不再需要為測試某個版本的應(yīng)用軟件重復(fù)安裝操作系統(tǒng)、配置運(yùn)行環(huán)境和設(shè)置相關(guān)參數(shù),這些手動或半自動的復(fù)雜操作,極容易人為引入一些操作錯誤或遺漏某些步驟?;贒ocker 鏡像的嵌入式軟件測試已將這些復(fù)雜的配置過程封裝起來,不僅減少了重復(fù)的操作,還讓測試過程的整體復(fù)雜性最小化。

        4.2 提高嵌入式軟件測試環(huán)境利用率

        基于Docker 的嵌入式軟件測試可使得一套測試環(huán)境能夠同時用于多個不同軟件的測試中,而且彼此之間并不會受到太多相互影響。特別是在樣機(jī)測試階段,相關(guān)的硬件和配套的外圍設(shè)備都較為短缺,此時不僅可以提高測試環(huán)境和專用設(shè)備的利用率,而且還降低了為搭建多套測試環(huán)境所產(chǎn)生的費(fèi)用。

        4.3 提升嵌入式軟件的測試效率

        由于不再需要重復(fù)搭建多套測試環(huán)境、也不需要準(zhǔn)備過多的硬件檢測設(shè)備,只需要通過容器管理工具將包含測試對象的Docker鏡像文件部署到測試環(huán)境中,就可以很快在相關(guān)的應(yīng)用場景中開始測試。因而嵌入式軟件測試的效率得到極大提升,特別是在做回歸測試和現(xiàn)場驗(yàn)證時,相比傳統(tǒng)的方式更有優(yōu)勢。

        5 基于Docker的嵌入式軟件測試

        臺區(qū)智能終端是一種由我司研制的用于配網(wǎng)供用電信息采集、電能表和各類傳感器數(shù)據(jù)收集、設(shè)備狀態(tài)監(jiān)測等功能于一體的智能化電力電子設(shè)備。它的核心主板硬件提供了ARM Cortex-A7 架構(gòu)四核CPU、2GB DDR3L 內(nèi)存、4GB eMMC 存儲器,目前搭載的操作系統(tǒng)是ARM 32bit 版本的Ubuntu16.04 發(fā)行版。同時配有4 個UART 接口、載波模塊、時鐘芯片、4G 模塊、GPIO、以太網(wǎng)等豐富的接口和外接器件。如圖2 所示,以下將基于臺區(qū)智能終端搭建一整套嵌入式軟件測試環(huán)境。臺區(qū)智能終端安裝在電氣柜的左上角,下方通過RS485 接入了漏電保護(hù)器、智能開關(guān)、三相電能表、末端感知裝置及負(fù)載,臺區(qū)智能終端的操作系統(tǒng)上部署了Docker,同時通過自編寫的C/C++應(yīng)用程序,實(shí)現(xiàn)數(shù)據(jù)的采集與存儲。

        5.1 Docker環(huán)境的搭建

        首先通過以太網(wǎng)登陸到臺區(qū)智能終端的Linux 控制臺,并在設(shè)備的宿主機(jī)中安裝Docker 服務(wù)。可以通過Docker 官方指導(dǎo)文檔進(jìn)行遠(yuǎn)程安裝Docker 服務(wù),具體操作命令為:“curl -fsSL get.docker.com -o get-docker.sh”和“sh get-docker. sh”,安裝完成后如圖3 所示??梢酝ㄟ^命令“docker exec -it c_data /bin/bash”進(jìn)入運(yùn)行中的Docker 容器,查看應(yīng)用程序在容器內(nèi)部的執(zhí)行情況。另外,還可以在PC 主機(jī)的交叉編譯環(huán)境下編譯ARM 版本的應(yīng)用程序,再采用Dockerfile 的方式將生成可執(zhí)行程序和運(yùn)行所需的配置文件整合打包進(jìn)Docker 鏡像文件中,最后通過部署該鏡像文件到啟動Docker容器中,就能實(shí)現(xiàn)自己編寫的應(yīng)用程序在Docker 容器中運(yùn)行。

        5.2 容器并行測試驗(yàn)證

        使用Docker 主要就是為了能夠在不同的容器中同時運(yùn)行多個應(yīng)用程序,這樣就可以提高嵌入式軟件測試環(huán)境的利用率,提升嵌入式軟件測試的效率。如圖4 所示,以下利用自己編寫的三個嵌入式程序打包生成的Docker 鏡像:數(shù)據(jù)中心c_data、數(shù)據(jù)采集c_base和IEC104 協(xié)議c_104,連同搭載Docker 的臺區(qū)智能終端組成一套測試驗(yàn)證環(huán)境。驗(yàn)證的思路是先后啟動容器加載這三個Docker 鏡像,分別利用數(shù)據(jù)采集c_base 完成數(shù)據(jù)的收集,利用數(shù)據(jù)中心c_data 完成數(shù)據(jù)的存儲,利用IEC104 協(xié)議c_104 完成數(shù)據(jù)上送到主站。由于Docker 下的容器運(yùn)行采用的是沙盒機(jī)制,因而各容器是互相獨(dú)立的,并且互不影響。首先由數(shù)據(jù)采集c_base 收集外接設(shè)備的各類電參量實(shí)時數(shù)據(jù),并寫入數(shù)據(jù)到數(shù)據(jù)中心c_data,交由數(shù)據(jù)中心c_data 完成數(shù)據(jù)的存儲。此時主站可通過IEC104 協(xié)議c_104 同時向臺區(qū)智能終端召測所需數(shù)據(jù),然后由IEC104 協(xié)議c_104 向數(shù)據(jù)中心c_data 發(fā)出讀取數(shù)據(jù)的命令,并由數(shù)據(jù)中心c_data 完成讀取數(shù)據(jù)的返回。三個嵌入式程序分別安裝在不同的容器中,相互之間收發(fā)數(shù)據(jù)都只允許通過TCP 或UDP 的網(wǎng)絡(luò)連接進(jìn)行。

        利用Docker 容器技術(shù),可以實(shí)現(xiàn)運(yùn)行于不同環(huán)境下的嵌入式程序在同一臺宿主機(jī)中共存,Docker 通過隔離底層操作系統(tǒng)與應(yīng)用軟件,做到了嵌入式軟件運(yùn)行環(huán)境的統(tǒng)一,不僅降低了嵌入式軟件開發(fā)過程中依賴運(yùn)行環(huán)境所做的大量移植工作,而且通過Docker的核心組件還可以為應(yīng)用軟件的組合、鏡像文件的制作提供便利的工具和方案。

        6 結(jié)束語

        嵌入式軟件因其架構(gòu)的特殊性,測試起來并不像傳統(tǒng)軟件那樣簡單容易。而隨著物聯(lián)網(wǎng)的蓬勃發(fā)展、各類設(shè)備功能的日益強(qiáng)大,業(yè)務(wù)需求的不斷增加,也導(dǎo)致針對嵌入式軟件的測試愈發(fā)復(fù)雜。在眾多測試方案中,基于Docker 的嵌入式軟件測試優(yōu)勢明顯,不僅占用系統(tǒng)資源少、運(yùn)行環(huán)境統(tǒng)一,而且啟動速度快、安裝部署方便,大幅降低測試人員的工作量。通過在臺區(qū)智能終端上驗(yàn)證基于Docker 的嵌入式軟件測試環(huán)境,充分挖掘出其應(yīng)用潛能,并為降低嵌入式軟件測試的復(fù)雜度,提升嵌入式軟件的測試效率,提高測試環(huán)境和測試資源的利用率帶來幫助。

        国产日韩欧美911在线观看| 亚洲欧美日韩另类精品一区| 在线欧美中文字幕农村电影| 日韩无码无播放器视频| 亚洲精品美女久久久久99| 久久国产精品免费专区| 日本动漫瀑乳h动漫啪啪免费| 久久久久久久久久久国产| 99久久国内精品成人免费| 国产偷国产偷亚洲高清| 欧美性生交大片免费看app麻豆| 人妻少妇猛烈井进入中文字幕| 成人无码av一区二区| 丰满五十六十老熟女hd| 亚洲欧洲一区二区三区波多野| 国产理论亚洲天堂av| 国色天香中文字幕在线视频| 精品久久久久久中文字幕| 免费va国产高清不卡大片 | 成人av毛片免费大全| 亚洲精品粉嫩美女一区| 精品乱码久久久久久久| 亚洲AV无码乱码1区久久| 开心五月激动心情五月| 欧美伦费免费全部午夜最新| 亚洲熟伦熟女新五十路熟妇| 亚洲色四在线视频观看| 精彩视频在线观看一区二区三区| 欧美狠狠入鲁的视频777色| 一本大道香蕉最新在线视频| 秀人网嫩模李梓熙大尺度| 中国少妇久久一区二区三区| 亚洲av无码久久精品狠狠爱浪潮| 综合网五月| 色偷偷亚洲精品一区二区| 深夜福利啪啪片| 婷婷开心深爱五月天播播| 亚洲av成人在线网站| 亚洲熟妇一区二区蜜桃在线观看| 少妇人妻综合久久中文字幕| 免费网站国产|