面向嵌入式軟件的自動化測試研究_第1頁
面向嵌入式軟件的自動化測試研究_第2頁
面向嵌入式軟件的自動化測試研究_第3頁
面向嵌入式軟件的自動化測試研究_第4頁
面向嵌入式軟件的自動化測試研究_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、學院(部)計算機科學與技術學院題 目面向嵌入式軟件的自動化測試研究摘要1前言3第一章緒論41.1 論文研究背景與意義41.1.1 研究背景41.1.2 研究意義41.2 國內(nèi)外研究現(xiàn)狀51.3 論文研究目標與研究內(nèi)容5第二章嵌入式軟件自動化測試概述72.1 嵌入式軟件簡介72.1.1 嵌入式軟件的定義72.1.2 嵌入式軟件的歷史發(fā)展72.1.3 嵌入式軟件的特點72.2 軟件自動化測試技術分析82.2.1 軟件測試的概念82.2.2 自動化測試技術的優(yōu)勢82.2.3自動化測試工具92.2.4 自動化測試的不足102.3 本章小結10第三章 模組FOTA升級自動化測試腳本需求分析123.1 模

2、組FOTA升級相關介紹123.1.1 SSCOM串口工具的介紹123.1.2 IoT平臺的介紹143.2 自動化測試腳本需求分析153.2.1 控制交互式程序輸入功能需求分析153.2.2 版本文件下載功能需求分析163.2.3 模組重啟功能需求分析173.2.4 系統(tǒng)流程分析173.2.5 測試人員操作流程193.3 本章小結20第四章 模組FOTA升級自動化測試腳本的實現(xiàn)及測試結果214.1 模組FOTA升級自動化測試腳本的實現(xiàn)214.1.1 client端214.1.2 server端224.2 測試結果26總結28參考文獻29致謝31摘要隨著嵌入式技術的飛速發(fā)展,對嵌入式軟件測試技術的

3、研究已成為當今時代的熱點問題之一。按時且高質(zhì)量地發(fā)布軟件產(chǎn)品是軟件開發(fā)最基本的要求,而軟件測試是軟件質(zhì)量保證的最重要的手段之一。相較于傳統(tǒng)的人工測試,自動化測試的高效率、低成本等優(yōu)勢越來越顯著,可以說自動化測試技術的發(fā)展使軟件測試進入了一個新時期。先進的自動化測試技術和工具能有效提高自動化測試水平。本論文主要從嵌入式軟件出發(fā),并重點研究嵌入式軟件自動化測試技術,將傳統(tǒng)的手工測試和較為先進的自動化測試技術進行對比,突出了自動化測試技術的優(yōu)勢。簡單介紹了幾種自動化測試的工具,同時重點介紹了AT指令以及在我的日常工作中AT指令的運用方法,以一個具體的腳本代碼來展現(xiàn)我日常工作中的自動化測試技術,用腳本

4、自動去執(zhí)行IoT平臺上的命令,完成模組自動進行FOTA升級的功能。最后分析了嵌入式軟件自動化測試技術在我國發(fā)展的現(xiàn)狀以及存在的問題,并對其發(fā)展前景表達了自己的看法。總之,隨著軟件技術的發(fā)展,尤其是嵌入式軟件在生產(chǎn)、生活等各個領域應用都日漸廣泛,其設備和軟件也日趨復雜。在這樣的背景下,嵌入式軟件自動化測試的潛力不言而喻,未來關于軟件自動化測試一定依然是一個熱點問題,它一定是以后軟件行業(yè)發(fā)展的大趨勢。關鍵詞:軟件測試;自動化測試;AT指令。AbstractWith the rapid development of embedded technology, the research on embed

5、ded software testing technology has become one of the hot topics in the modern era. Publishing software products on time and with high quality is the most basic requirement for software development, and software testing is one of the most important tools for software quality assurance. Compared with

6、 traditional manual testing, the advantages of automated testing such as high efficiency and low cost are becoming more and more significant. It can be said that the development of automated testing technology has enabled software testing to enter a new era.Advanced automated testing techniques and

7、tools can effectively improve the level of automated testing. This paper mainly starts from the embedded software, and focuses on the embedded software automation testing technology. It compares the traditional manual testing with the more advanced automated testing technology and highlights the adv

8、antages of the automated testing technology. It briefly introduces several tools for automated testing. At the same time, it focuses on the AT commands and how to use the AT commands in my daily work. I use a specific script code to demonstrate the automated testing technology in my daily work and u

9、se script to automatically Execute the commands on the IoT platform to complete the module's automatic FOTA upgrade. Finally, the status quo of the development of embedded software automation testing technology in China and the existing problems are analyzed, and their own development views are

10、expressed.In short, with the development of software technology, especially the application of embedded software in various fields such as production and daily life, the equipment and software are becoming increasingly complex. In this context, the potential of embedded software automation testing i

11、s self-evident. The future of software automation testing must remain a hot issue. It must be the future trend of software industry development.Keywords: software testing; automated testing; AT commands.前言隨著當代科學技術的迅猛發(fā)展,軟件產(chǎn)品在社會的各個領域中得到了越來越廣泛的應用,在我們的日常生活中,到處能看到軟件的影子,甚至離開了某些軟件,我們的生活都會受到不小的影響。因此,如何保證軟件產(chǎn)

12、品的質(zhì)量就顯得極其重要。一般來說,我們都會采用軟件測試來保證軟件產(chǎn)品的質(zhì)量問題,那如何提高軟件測試的效率,同時又能降低軟件測試的成本就是一個十分重要的話題。以前,我們更習慣用傳統(tǒng)的人工測試,但是經(jīng)過長期的發(fā)展,人工測試的弊端日益明顯:效率低下,成本較高。而且隨著軟件行業(yè)的不斷發(fā)展,人工測試越來越無法滿足當今軟件測試的需求。因此,自動化測試技術應運而生。自動化測試技術,取消了對人力的占用,依靠人工開發(fā)的工具,按照設定的邏輯測試軟件產(chǎn)品,這樣能解放測試工作人員,同時又大大提高了測試工作的效率。本論文主要研究SERCOM(中磊電子蘇州技術研發(fā)中心)做的模組的相關測試工作,介紹下其中涉及的自動化測試工

13、作。主要關于模組的FOTA升級自動化測試腳本的分析、代碼編寫和實現(xiàn)。第一章 緒論1.1 論文研究背景與意義1.1.1 研究背景隨著軟件行業(yè)的迅速發(fā)展,各式各樣的軟件產(chǎn)品充滿了我們的生活,幾乎各個領域都有著各種軟件產(chǎn)品的存在,軟件得到了越來越廣泛的應用,它們極大地方便了我們的生活,甚至促進著各行各業(yè)的發(fā)展。在軟件影響力如此巨大的社會中,軟件的質(zhì)量問題就顯得極其重要。如何保證軟件的質(zhì)量,是每個企業(yè)必須面對的問題。大多數(shù)企業(yè)都會有各自的開發(fā)流程,而他們的目標幾乎是一樣的,那就是要盡早發(fā)現(xiàn)問題,盡早解決問題,縮減成本。因此,軟件測試技術已然成為一個十分熱門的課題。軟件測試的目的就是發(fā)現(xiàn)軟件產(chǎn)品中的錯誤

14、,并及時更正,從而提高軟件產(chǎn)品的質(zhì)量。然而隨著軟件行業(yè)的不斷發(fā)展,如今的軟件已不像當年,巨大的規(guī)模和復雜的結構,使得軟件測試工作變的越來越繁重,傳統(tǒng)的手工測試的方法已經(jīng)很難保證測試工作的進度。因此,自動化測試的出現(xiàn)就顯得十分必要。1.1.2 研究意義如今發(fā)展自動化測試技術已經(jīng)成為軟件測試領域的總趨勢,若企業(yè)在這個領域中走在前列,那會大大提高軟件產(chǎn)品的市場競爭力,企業(yè)也將在行業(yè)中占據(jù)主導地位,這會使得他們在業(yè)內(nèi)競爭中有著巨大的優(yōu)勢,能極大推動企業(yè)的發(fā)展。由此可見,自動化測試對于企業(yè)而言有著極大的現(xiàn)實意義。好的自動化測試工具能夠極大提升自動化測試的效率,但一個優(yōu)秀的自動化測試人才更是重要。他具備很

15、強的編程能力,寫出的腳本相對完善,出錯較少,并且用例覆蓋率高,這在一定程度上能夠提高測試效率,因此,企業(yè)也需要加強對該方面人才的引進和培養(yǎng)。一方面,國內(nèi)的自動化測試技術發(fā)展較慢,國內(nèi)的許多企業(yè)在國際軟件測試領域的競爭力毫無優(yōu)勢;另一方面,國內(nèi)對自動化測試技術的研究還不夠透徹,沒有相關技術支持。加緊對自動化測試技術的研究十分必要1.2 國內(nèi)外研究現(xiàn)狀目前,在軟件自動化測試技術的研究領域中,國外仍然走在前列。早在上世紀末,國外就已經(jīng)開始對自動化測試的研究,并且也取得了一定的成就,出現(xiàn)了一些較為優(yōu)秀的自動化測試工具。但遺憾的是,軟件自動化測試在國內(nèi)尚未發(fā)育成型,尤其缺乏理論支持。再加上技術能力不足、

16、資金短缺等原因,很少有企業(yè)能有自己的自動化測試系統(tǒng),運用第三方的自動化測試工具是當前很多企業(yè)的常態(tài),他們對如何設計自動化測試系統(tǒng)認識不足,只能一昧地借鑒國外的技術,缺乏自己的理解。對于這個問題的具體分析,有以下幾種見解:1) 還沒有意識到自動化測試的重要性的,仍然大量采用手工測試,耗時耗力,測試工作效率低下,成本高。2) 實施自動化測試技術,但由于自身條件限制,測試用例設計不完善,測試日志不夠全面,沒有完全發(fā)揮出自動化測試帶來的優(yōu)勢。3) 自動化測試實施較為成功,大力發(fā)展測試自動化技術,研發(fā)自己的自動化測試系統(tǒng),但由于技術原因仍然無法在國際上排到前列,需要進一步改善。1.3 論文研究目標與研究

17、內(nèi)容本論文的課題來源于我在SERCOM公司實習期間所參與的項目。本公司主要從事模組的開發(fā),在實習期間,我根據(jù)平時工作的測試用例,編寫了一個用于測試FOTA升級的自動化測試腳本,使模組在駐留到核心網(wǎng)、注冊到IoT平臺上后,能夠自動地進行版本的升級,用于測試其升級的穩(wěn)定性。主要的研究內(nèi)容為:嵌入式軟件自動化測試技術的研究以及FOTA升級自動化測試腳本的設計和編碼,包括需求分析,功能實現(xiàn),編寫腳本等。第二章 嵌入式軟件自動化測試概述2.1 嵌入式軟件簡介2.1.1 嵌入式軟件的定義嵌入式系統(tǒng)是指用于執(zhí)行獨立功能的專用計算機系統(tǒng),它本質(zhì)上是以應用為中心,以計算機技術為基礎,軟硬件可裁剪,適應應用系統(tǒng)對

18、功能、可靠性、成本、體積、功耗等嚴格要求的專用計算機系統(tǒng)。IEEE(Institute of Electrical and Electronics Engineers,美國電氣和電子工程師協(xié)會)對嵌入式系統(tǒng)的定義為:“用于控制、監(jiān)視或者輔助操作機器和設備的裝置?!?.1.2 嵌入式軟件的歷史發(fā)展從最早的20世紀70年代開始單片機的出現(xiàn),嵌入式系統(tǒng)的發(fā)展歷程已經(jīng)差不多有近40年,到后來出現(xiàn)的微處理器、微控制器等。1976年,Intel公司的8048出現(xiàn)了,這也是最早的單片機。雖然有些地方還不是很完善,但隨后Intel在它的基礎上又成功研制出8051,大大提高了性能,這可以說是單片機歷史上的里程碑

19、。哪怕在現(xiàn)在,51系列的單片機仍然應用十分廣泛。單片機的出現(xiàn),使許多東西得到了更加的使用性能,包括工業(yè)機器、汽車、通信裝置等各種各樣的產(chǎn)品,他們可以通過內(nèi)嵌電子裝置,從而使其變得更容易使用、效率更高、成本更低。隨后,隨著軟件行業(yè)的迅猛發(fā)展,軟件的規(guī)模逐步擴大,這個時候,更多的公司意識到嵌入式系統(tǒng)的無限潛力,都開始大力研究自己的嵌入式系統(tǒng),因此出現(xiàn)了嵌入式Linux,Lynx等嵌入式操作系統(tǒng)。2.1.3 嵌入式軟件的特點嵌入式系統(tǒng)是面向用戶、面向產(chǎn)品、面向應用的,它必須與具體應用相結合才更具備優(yōu)勢。與傳統(tǒng)的計算機系統(tǒng)不同相比,嵌入式系統(tǒng)有著自己特點:1) 實時性強由于它是直接嵌入到硬件中,嵌入式

20、系統(tǒng)的實時性很強,能十分迅速的進行計算,這也是嵌入式系統(tǒng)相對于其他系統(tǒng)的一個很重要的優(yōu)勢,這也正好適應了當今軟件發(fā)展的趨勢。在如今軟件規(guī)模如此龐大的環(huán)境下,若實時性不強,都是不適應發(fā)展,會被淘汰的。2) 專用性嵌入式系統(tǒng)由于直接嵌入到硬件中,軟件和硬件的關聯(lián)性很強,這也就造成了這個系統(tǒng)只適用于這個地方,而無法正常工作在其他的硬件中,哪怕是同一類型的產(chǎn)品,只要硬件有些許的不同,就無法直接適用。3) 系統(tǒng)精簡 嵌入式系統(tǒng)的內(nèi)核小,系統(tǒng)組成十分簡單,這樣又能節(jié)約成本,同時也能保證系統(tǒng)安全。4) 較依賴硬件由于一個嵌入式系統(tǒng)可以說是為某個硬件量身打造的,因此系統(tǒng)的發(fā)展升級直接與硬件相關,生命周期長。5

21、) 并發(fā)處理多進程嵌入式系統(tǒng)能同時處理數(shù)個進程。這樣能大大提高系統(tǒng)處理的效率。2.2 軟件自動化測試技術分析2.2.1 軟件測試的概念軟件測試是指在軟件產(chǎn)品正式投入運行之前,鑒定軟件的正確性、完整性、安全性和質(zhì)量的過程。也就是在規(guī)定的條件下對程序進行操作,以發(fā)現(xiàn)程序錯誤,衡量軟件質(zhì)量,并對其是否能滿足設計要求進行評估的過程。2.2.2 自動化測試技術的優(yōu)勢隨著軟件行業(yè)的快速發(fā)展,軟件產(chǎn)品的規(guī)模正逐步擴大,產(chǎn)品內(nèi)部結構也變得越來越復雜,若繼續(xù)采用傳統(tǒng)的手工測試方法,不僅需要測試人員大量的時間和精力,還會大大增加測試工作的成本,導致測試工作的效率極低,顯然這已經(jīng)無法滿足如今軟件行業(yè)的需求。正因為這

22、樣的趨勢下,自動化測試技術的出現(xiàn)就很好地應對這樣的問題。自動化測試(Automated Test)是相對于手工測試而存在的概念,由手工一條一條執(zhí)行用例的操作過程被測試工具或系統(tǒng)自動執(zhí)行的過程代替,包括自動生成輸入數(shù)據(jù)、驗證結果、自動發(fā)送測試報告等。主要是通過所開發(fā)的軟件測試工具、腳本等來實現(xiàn),具有良好的可重復性和可操作性。相對于手工測試,自動化測試的優(yōu)勢就相當明顯。1) 運行速度快、執(zhí)行效率高、降低測試成本;2) 不會疲勞,可以不間斷工作;3) 測試結果準確。人工測試有時可能會有測量誤差,但自動化測試則不會出現(xiàn)這樣的問題;4) 可復用。對同一產(chǎn)品的不同版本的測試用例是大體相似的,若采用手工測試

23、能浪費了大量的時間,而自動化測試就很好地解決了這個問題;5) 可靠。手工測試可能會出現(xiàn)誤差,但自動化測試則不會出現(xiàn)這種問題;6) 某些手工測試做不到的地方,自動化測試可以做到。2.2.3自動化測試工具自動化測試的工具主要分為白盒測試工具和黑盒測試工具。白盒測試工具,顧名思義,就是針對白盒測試所使用的測試工具,主要對程序的內(nèi)部結構、代碼以及對象屬性進行測試,能夠及時發(fā)現(xiàn)代碼中的錯誤,并且直接定位到代碼行。以便研發(fā)人員進行調(diào)試。常見的白盒測試工具有Jtest和C+ Test等。黑盒測試工具,一般則用于黑盒測試。黑盒測試工具一般以GUI(圖形用戶界面)來呈現(xiàn),測試人員能直觀地了解整個測試的過程。它的

24、原理一般是利用腳本的錄制與回放,模擬用戶的操作過程,根據(jù)用戶輸入的不同的參數(shù)輸出不同的結果,再把輸出的結果同預期結果作比較,得出結論。一般這種測試工具的復用性相對較好,一般適合那些不同版本之間的測試,因為同一個產(chǎn)品不同的版本之間的測試用例應該是十分類似的。常見的黑盒測試工具主要有HP公司的Quick Test Professional、IBM Rational Funtional tester等。2.2.4 自動化測試的不足雖然自動化測試技術的優(yōu)勢十分明顯,但不可否認它依然有著一定的不足之處,主要體現(xiàn)在以下幾個方面:1) 企業(yè)沒有建立正確的觀念有些人盲目對自動化測試技術持有過于樂觀的態(tài)度,沒有

25、建立起一個正確的自動化測試觀念,或者對自動化測試技術期望值過高,結果往往適得其反。2) 缺乏專業(yè)的測試人員某些企業(yè)不重視對專業(yè)軟件測試人員的招募與培養(yǎng),寧可話費巨大財力在測試工具的引進和研發(fā)上。其實這是不對的,測試工具固然重要,但一個有著豐富經(jīng)驗和良好素質(zhì)的測試人員的價值要遠大于測試工具本身,他們不僅熟悉產(chǎn)品的特性,而且具備良好的編程能力,還有很強的學習能力,這能讓測試工作的效率大大提高,從長遠角度看更有價值。3) 對測試人員培訓不足測試人員在軟件測試工作中是十分關鍵的存在,若收到充分的培訓,他們能更熟練地運用軟件自動化測試工具,能編寫出更完善的腳本,降低測試出錯率,提高測試效率。4) 測試工

26、具本身存在一定的問題在通常情況下,一般不會對自動化測試的腳本進行系統(tǒng)化的測試,這就使得自動化測試腳本的質(zhì)量完全依賴于編寫該腳本人員的能力,若腳本存在問題,少考慮了某些情況,遺漏了某些問題,都將對測試結果造成不小的影響。2.3 本章小結本章主要介紹了嵌入式軟件的發(fā)展歷程,軟件測試的重要性以及在當代社會軟件行業(yè)發(fā)展如此迅速的情況下,發(fā)展自動化測試的必要性。自動化測試相比于傳統(tǒng)的手工測試,有著十分明顯的優(yōu)勢,它效率高、成本低、復用性高,對企業(yè)來說有著非比尋常的現(xiàn)實意義,可以說,誰在自動化測試領域走在了前列,那他在整個軟件行業(yè)里的地位絕不會低。自動化測試工具有許多種,大致可分為白盒測試工具和黑盒測試工

27、具,如何選對自動化測試工具進行測試十分重要。最后,雖然自動化測試技術的優(yōu)勢巨大,但它依然有著一定的局限性,我們應理智分析,正確看待,才能發(fā)揮其最大的作用。第三章 模組FOTA升級自動化測試腳本需求分析3.1 模組FOTA升級相關介紹3.1.1 SSCOM串口工具的介紹SSCOM串口工具是一個用于發(fā)送AT命令進行測試的工具,界面如圖3-1所示。只需用USB數(shù)據(jù)線將模組與pc連接起來,SSCOM端端口號上選這Standard端口,就能使用AT命令對模組進行測試。SSCOM能夠查詢模組當前的狀態(tài)以及內(nèi)部的一些設置情況,比如是否開啟自動駐留、設置模組的IMEI號等。圖3-1與它同時使用的另一個工具叫做

28、UEMonitor,如圖3-2 。UEMonitor可以抓取模組與server端數(shù)據(jù)傳輸?shù)膌og。圖3-2LTE系統(tǒng)主要由UE、eNode B(接入網(wǎng))和MME(核心網(wǎng))三部分組成。而UE和核心網(wǎng)之間有著一層NAS信令實現(xiàn)數(shù)據(jù)傳輸,UE和eNodeB之間有通過RRC層、PDCP層、RLC層、MAC層、PHY層,而UEMonitor能在其中抓取相關log,從而讓我們更直觀地看到數(shù)據(jù)是否傳輸?shù)侥康牡?。比如,UE想要駐留到核心網(wǎng)上,就需要與核心網(wǎng)進行數(shù)次數(shù)據(jù)交換,UE先向核心網(wǎng)發(fā)起駐留請求(ATTACH_REQ),核心網(wǎng)收到請求后回復ID_REQ、AUTH_REQ、SECURITY_MODE_CMD

29、確認信息,UE一一回復確認,最終核心網(wǎng)接受駐留請求(ATTACH_ACCEPT),駐留過程才算完成(ATTACH_COMPLETE),如圖3-3 。圖3-33.1.2 IoT平臺的介紹IoT平臺(圖3-4)是一種黑盒測試工具,將模組注冊到IoT平臺上后,測試人員只需點擊相應的按鈕就能實現(xiàn)上下行數(shù)據(jù)傳輸、FOTA升級、查詢版本等功能,它比命令行更直觀,操作簡便。圖3-43.2 自動化測試腳本需求分析本腳本主要要實現(xiàn)的功能有三點:1) 利用腳本,控制交互式程序的輸入。2) 后臺啟動coap server,提供版本文件下載。3) 對于狀態(tài)異常的nbiot模組,對模組重啟,重配置。3.2.1 控制交互

30、式程序輸入功能需求分析原先需要測試人員手動輸入AT命令進行測試,但利用Python的expect模塊,能夠讀取lwm2mserver程序的實時輸出,從而判斷程序當前的狀態(tài),并代替人工,自動輸入相關的命令,完成測試。如圖3-5。圖3-53.2.2 版本文件下載功能需求分析測試人員提前把所需要測試的版本文件上傳至server端,并在后臺啟動coap server,為系統(tǒng)提供版本文件的下載支持,并且通過配置文件,決定了當前版本和需要升級版本之間的映射關系,從而實現(xiàn)循環(huán)升級。如圖3-6.圖3-63.2.3 模組重啟功能需求分析在實際測試的過程中,往往會有模組會出現(xiàn)一些異常情況。對于這些異常的模組,可以

31、利用Python的遠程控制模塊,發(fā)送AT指令,使模組重啟,重配置,使其重新駐留到核心網(wǎng)并與lwm2mserver恢復連接。如圖3-7. 圖3-73.2.4 系統(tǒng)流程分析系統(tǒng)大致的流程如圖3-8所示:系統(tǒng)等待模組成功注冊到IoT平臺上,然后讀取模組當前的版本信息,并與server端的版本文件相比對,然后通過coap協(xié)議下載正確的版本文件,運行腳本,進入FOTA升級流程。待升級完成后模組自動重啟,并自動注冊到IoT平臺,系統(tǒng)返回測試結果,并檢測當前模組的狀態(tài),若狀態(tài)正常,則返回讀取升級文件的流程,進行循環(huán)升級,在環(huán)境不變、測試人員不主動停止腳本的情況下,可以一直執(zhí)行下去。 圖3-83.2.5 測試

32、人員操作流程測試人員首先需要登錄到IoT平臺,根據(jù)實際需要修改好腳本文件的參數(shù),并將需要循環(huán)升級的兩個版本文件上傳至server端,這樣一切準備工作已就緒。接下來只需將模組注冊到IoT平臺上,執(zhí)行測試腳本,等待腳本運行。圖3-9. 圖3-93.3 本章小結本章通過幾個小節(jié)的介紹,主要闡述了自動化測試腳本的功能需求以及系統(tǒng)的執(zhí)行流程和測試人員的測試流程等內(nèi)容,描述了實現(xiàn)自動化測試的主要步驟。在下一章節(jié)將介紹FOTA升級自動化測試腳本的實現(xiàn)以及實際的測試結果。第四章 模組FOTA升級自動化測試腳本的實現(xiàn)及測試結果4.1 模組FOTA升級自動化測試腳本的實現(xiàn)整個腳本由server端和client端兩

33、個部分,采用了server/client模型。每個部分都有一個config.ini文件和一個py文件。4.1.1 client端Client部分主要用來實現(xiàn)處理異常狀態(tài)的模組的功能,當系統(tǒng)發(fā)現(xiàn)有模組狀態(tài)異常的時候,則能夠接受server端longrun_with_remote_at腳本發(fā)來的AT指令,打開電腦的COM口,將AT指令寫進去,使模組重啟并重配置,重新駐留到核心網(wǎng),并且與lwm2mserver恢復連接。Client部分的配置文件config.ini很簡單,主要是用來確定端口號和波特率。若實際測試環(huán)境有變化,則測試人員可根據(jù)實際需求更改參數(shù)。remotenb.py文件主要由一個Remo

34、teNb類組成。其中包括_init_函數(shù)、serve_forever函數(shù)、get_atcmd_response函數(shù)、send_atcmd函數(shù)和test函數(shù)。1) get_atcmd_response函數(shù) def get_atcmd_response(self, atcmd, timeout=1): print('AT '.format(time.ctime(), atcmd) print('timeout '.format(timeout) self.logfile.write('AT n'.format(time.ctime(), atcmd)

35、 self.logfile.write('timeout n'.format(timeout) response = '' if self.gconfig'at''send_new_line' = 'yes': atcmd += 'rn' self.ser.timeout = timeout self.ser.write(atcmd.encode() try: response = self.ser.read(AT_RESP_BUFF_LEN).decode().split() self.logfi

36、le.write(str(response) + 'n') print(str(response) except UnicodeDecodeError: print('Recieve Non-UTF-8 character') self.logfile.write('Recieve Non-UTF-8 charactern') response = '' self.logfile.flush() return response該函數(shù)能根據(jù)配置文件中的COM口號接收到server端longrun_with_remote_at腳本發(fā)來

37、的請求,并讀取相應的AT命令。2) send_atcmd函數(shù) def send_atcmd(self, atcmd): print(atcmd) self.logfile.write('AT n'.format(time.ctime(), atcmd) if AT_SEND_NEWLINE: atcmd += 'rn' self.ser.write(atcmd.encode() self.logfile.flush()send_atcmd函數(shù)用來向那些異常的模組發(fā)送相應的AT指令,使其脫離異常狀態(tài)或直接重啟,重新注冊到平臺。4.1.2 server端server

38、端是腳本的主體部分。實現(xiàn)了腳本的大部分的功能。包括自動讀取lwm2mserver程序的實時輸出,判斷當前狀態(tài)并輸入相應指令和完成版本文件的下載,實現(xiàn)循環(huán)升級。server端包括logger函數(shù)、nb_reset函數(shù)、nb_get_version函數(shù)、nb_write_fw_uri函數(shù)、nb_wait_download_complete函數(shù)、nb_do_upgrade函數(shù)等函數(shù)。接下來主要看一下幾個主要流程的函數(shù):1)首先是nb_get_version函數(shù)def nb_get_version(process, config): '''Read /3/0/3 to get

39、current version ''' logger('read 0 /3/0/3') process.sendline('read 0 /3/0/3') process.expect('COAP_205_CONTENT', timeout=NEVER_TIMEOUT) process.expect(LWM2M_PROMPT) response = process.before if 'ID: 3 type: Resource Value' not in response: logger('Get

40、current version failed, no valid response') logger(response, timestamp=False) return version = get_data_from_content(response) if not version: logger('Get current version failed, no version info in response') logger(response, timestamp=False) return if version not in config'upgrade_p

41、ath': logger('Unknow version: '.format(version) logger(response, timestamp=False) returnreturn version該函數(shù)的功能是讀取模組當前的版本號。利用了Python的expect模塊讀取程序的實時輸出,發(fā)送read 0 /3/0/3的命令,并接收到系統(tǒng)的返回值,即當前的版本號,并顯示到屏幕上。2) nb_write_fw_uri函數(shù)def nb_write_fw_uri(process, fw_uri): '''Set FW URI to /5/0/1

42、''' logger('write 0 /5/0/1 '.format(fw_uri) process.sendline('write 0 /5/0/1 '.format(fw_uri) # Wait write success # Client #0 /5/0/1 : 2.04 (COAP_204_CHANGED) process.expect('COAP_204_CHANGED', timeout=NEVER_TIMEOUT)寫入版本文件。原理幾乎相同,同樣利用expect模塊,根據(jù)當前的版本號,選擇合適的版本文件進行

43、寫入。3)nb_wait_download_complete函數(shù) logger('Wait download complete') process.expect('32 2', timeout=NEVER_TIMEOUT) process.expect(LWM2M_PROMPT)通過coap協(xié)議對確定的版本文件進行下載。4) do_test函數(shù) test_loop_cnt = 0 time_start_upgrade = time.time() while True: if test_loop_cnt = int(config'test''

44、;loop'): break test_loop_cnt += 1 stat'test_loop_start' += 1 # Wait Register request with end point name nb_wait_register(lwm2mserver, remotenb, config, stat) if test_loop_cnt > 0: stat'time_upgrade_total' += time.time() - time_start_upgrade if test_loop_cnt > 1: nb_cancel_

45、observe_5_0_3(lwm2mserver) # Read FW version version = nb_get_version(lwm2mserver, config) if not version: break # Observe /5/0/3 nb_observe_5_0_3(lwm2mserver) # Write the URI of new firmware to /5/0/1 fw_to_upgrade = config'upgrade_path'version fw_uri = 'coaps:/address:port/fw'.form

46、at(*config'coap', fw=fw_to_upgrade) nb_write_fw_uri(lwm2mserver, fw_uri) time_start_download = time.time() # Wait download fw complete nb_wait_download_complete(lwm2mserver) stat'time_download_total' += time.time() - time_start_download time_start_upgrade = time.time() nb_do_upgrade(

47、lwm2mserver) stat'test_loop_end' += 1 # Exit stop the lwm2mserver lwm2mserver.sendline('q') time.sleep(1) lwm2mserver.close()該函數(shù)定義了一個test_loop_cnt變量表示循環(huán)次數(shù),每完成一次循環(huán)測試次數(shù)就加一,主要用于測試過程中對循環(huán)升級的次數(shù)和所花費的時間進行一個統(tǒng)計。4.2 測試結果本次測試的端口號為35690,server端IP地址為192.168.2.1,模組初始版本為RD1006180503-CAUT03,兩個版本文件分別為

48、 RD1006_to_RD1005.bin以及RD1005_to_RD1006.bin。圖4-1為server端配置文件。圖4-1經(jīng)過持續(xù)六小時的測試,腳本運行狀況正常。測試結果如圖4-2 。圖4-2測試總時長為6小時14分,一共循環(huán)測試28次。由于網(wǎng)絡環(huán)境的不穩(wěn)定和測試環(huán)境,尤其是核心網(wǎng)的信號強度不穩(wěn),再加上周圍其他測試的干擾,使得在下載版本文件的時候偶爾會出現(xiàn)重傳現(xiàn)象,另外,版本文件相對較大,造成執(zhí)行升級的過程時間超過2分鐘(圖4-2中UE didnt register for 120s),不過對測試結果影響不大??偨Y互聯(lián)網(wǎng)與計算機的發(fā)展給所有人的生活帶來了一場革命。在當代生產(chǎn)生活中,我們

49、越來越離不開計算機和互聯(lián)網(wǎng)的支持。在如此一個高度依賴軟件產(chǎn)品的科技時代,軟件產(chǎn)品的質(zhì)量把握著企業(yè)的命脈,質(zhì)量的保證與否,甚至如何高效、低成本地保證軟件的質(zhì)量,已是一個十分重要的課題。本文通過對嵌入式軟件自動化測試技術的研究,以IoT平臺上模組FOTA升級自動化測試腳本為例,對其進行需求分析和編碼,利用Python的expect模塊,實現(xiàn)監(jiān)聽lwm2mserver的實時輸出,輸入相應命令的功能。在實現(xiàn)階段,首先,我們需要對系統(tǒng)進行需求分析,明確其各個需求;其次,進行代碼設計,編寫出自動化測試腳本;最后進行腳本測試,測試其最終結果是否滿足預期值。本自動化測試腳本是在實習公司環(huán)境下研究,目前公司大部分測試用例仍然采用手工測試,自動化測試技術仍然還不完善。公司在軟件自動化測試領域依然處于初級發(fā)展階段,但隨著對自動化測試技術的深入研究,我相信未來具有很好的發(fā)展空間。本自動化測試腳本的設計是一個很好的起點。參考文獻【1】1Stefanis Sesia,Issam Toufik,Matthew Baker.LTE/LTE-Advanced-

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論