鄭天 程建政
摘要:近年來我國醫(yī)療科技水平與日俱增,而超聲醫(yī)療設(shè)備由于迭代慢,測試自動化普及程度不高,主要依賴手工,可靠性測試作為電子設(shè)備出廠測試前十分重要的環(huán)節(jié)必須充分落實。而Python作為當(dāng)今最為流行的編程語言之一,能夠模擬很多的手工操作再配合部分小硬件就可以實現(xiàn)大批量的自動化測試。該文中所介紹的測試系統(tǒng)依托軟件與硬件結(jié)合,實現(xiàn)覆蓋設(shè)備全部的日常操作的批量自動化測試,自動生成測試結(jié)果報告,極大地提升了效率并減少了人力投入,且在實際試用有效且復(fù)用性高,具有很高的實用價值。
關(guān)鍵詞:Python;可靠性;自動化測試;軟件與硬件結(jié)合
中圖分類號:TP399 文獻標(biāo)識碼:A
文章編號:1009-3044(2020)10-0065-02
1背景與概述
近年來,我國科技和經(jīng)濟高速發(fā)展,越來越多的高新產(chǎn)業(yè)誕生并走向世界。以往我國醫(yī)療設(shè)備主要依賴進口,現(xiàn)如今越來越多的民族醫(yī)療設(shè)備企業(yè)公司開始自主研發(fā),多個品牌已經(jīng)走出國門,出口歐洲。而設(shè)備的測試作為研發(fā)過程中的關(guān)鍵一環(huán)直接決定了產(chǎn)品的質(zhì)量。
1.1Python概述
Python是多平臺的計算機程序設(shè)計語言。是一種面向?qū)ο蟮膭討B(tài)類型的解釋型語言。最初就是被設(shè)計來寫自動化shell腳本的,隨著版本的迭代,逐漸被開始使用于大型的、獨立的項目開發(fā),如Facebook公司在過去的幾年里幾乎從無人問津到成為該公司主流語言,如Instagramf美國最大的圖片分享社交平臺)全部使用Python開發(fā)。
Python目前主要應(yīng)用于以下領(lǐng)域:AI、教育、桌面開發(fā)、軟件開發(fā)、web前段開發(fā)、后端開發(fā)等,以其非常好的兼容性和可擴展性市場占有率逐年上升,為當(dāng)下最熱語言之一。
Python的主要定位是“優(yōu)雅”“明確”“簡單”,所以Python的程序十分簡潔,對初學(xué)者來說,不但很容易人門而且很快能深入下去。它的開發(fā)效率非常高,有著很強的第三方庫,可以說你想實現(xiàn)的任何功能,其官方的庫里都有相應(yīng)的模塊來支持,能直接通過內(nèi)置模塊pip進行下載后調(diào)用,再在該基礎(chǔ)上進行二次的開發(fā)和封裝,這可以讓開發(fā)的周期大大降低,避免做無用功。
本文中使用的主要腳本語言也是Python,用于控制腳本、串口通訊、圖像處理等。
1.2超聲醫(yī)療設(shè)備概述
根據(jù)對目前超聲設(shè)備的市場調(diào)查,國產(chǎn)的超聲設(shè)備均基于Linux來設(shè)計制造,包括彩超、血管內(nèi)超聲成像等;主要都由探頭和計算機組成。
Linux是基于POSIX和Unix的多用戶、多任務(wù)、支持多線程和多CPU的目前最主流的免費試用和自由傳播的類Unix系統(tǒng),支持32位和64位的硬件、繼承了以網(wǎng)絡(luò)為核心的設(shè)計思想,是一個性能穩(wěn)定的多用戶網(wǎng)絡(luò)操作系統(tǒng)。
目前很多的公司,包括醫(yī)療、生產(chǎn)、物聯(lián)網(wǎng)等很多的設(shè)備都采用該系統(tǒng),經(jīng)過深度的定制和再開發(fā)之后植入設(shè)計好的設(shè)備中。對于企業(yè)而言,相比于Windows,Linux的完全開源成本低、系統(tǒng)性能穩(wěn)定,其核心防火墻組件性能高效、配置簡單。這些特點使得Linux成為當(dāng)前中國高新產(chǎn)業(yè)理想的開發(fā)平臺。
2實現(xiàn)
本文采用的方案為“主控測試服務(wù)器+若干待測試設(shè)備”組成,所有設(shè)備和服務(wù)器需要在同一局域網(wǎng)下以便主控服務(wù)器與待測設(shè)備連接。
2.1開機流程
Linux的設(shè)備開機過程和Windows的計算機類似,如圖l所示。
2.2自動化實現(xiàn)模擬手動按下電源鍵實現(xiàn)
2.2.1解決方案
通常電源鍵開關(guān)采用按壓式的點觸開關(guān),則可以使用USB繼電器,將開關(guān)兩頭用導(dǎo)線引至繼電器從而使用腳本控制繼電器開合從而達到模擬手動按開關(guān)的效果。
本文采用LCUS-1型USB繼電器開關(guān):
將開關(guān)信號引人繼電器口用串口控制開合,選擇波特率為9600,以十六進制(HEX)形式發(fā)送A0 01 01 A2打開繼電器,發(fā)送A0 01 00 A1關(guān)閉繼電器。
2.2.2串口寫入腳本
在上節(jié)中已經(jīng)有了開合繼電器的方法,接下來就是將繼電器“一合一開”封裝成一個腳本文件。通過Pvthon的第三方庫serial即可實現(xiàn)往USB串口中寫入這兩個開關(guān)指令,合開間隔0.1秒模擬手按開關(guān)電源。
2.3自動化實現(xiàn)開機狀態(tài)確認
通常開發(fā)完成的Linux設(shè)備會運行一個主程序MainApp隋些設(shè)備可能還有其他的后臺程序,如:BackApp等),此時我們需要確認機器是否正常開機。
首先可以通過主控服務(wù)器遠程ssh連接待測設(shè)備輸入“ps-ef I grep MainApp”指令來判斷MainApp是否已經(jīng)正常啟動,如果有返回值則說明已經(jīng)正常啟動,反之則沒有,此時停止該臺設(shè)備的后續(xù)操作保留現(xiàn)場,留置開發(fā)人員查看,并將結(jié)果寫入日志。
然后通過Linux截圖工具scrot截圖取回并與基準(zhǔn)圖片進行對比,來確認uI界面是否正常啟動。此過程采用PIL庫完成,部分代碼如下:
如果對比結(jié)果異常則停止該臺設(shè)備的后續(xù)操作保留現(xiàn)場,留置開發(fā)人員查看,并將結(jié)果寫入日志。
2.4自動化實現(xiàn)正常開機后隨機操作測試并關(guān)機
通常成熟的設(shè)備會已經(jīng)錄制好冒煙測試腳本并內(nèi)置測試工具,在確認設(shè)備成功開機后,可通過Python調(diào)用該工具并隨機抽取腳本來執(zhí)行,并在執(zhí)行完后立刻執(zhí)行關(guān)機操作以模擬設(shè)備在日常使用中的開關(guān)機操作,為保障隨機操作后實現(xiàn)關(guān)機操作,模擬真實用戶使用場景,將原冒煙測試腳本庫中隨機抽取一個腳本,再執(zhí)行該腳本前隨機行數(shù)。
如果設(shè)備沒有開發(fā)好內(nèi)置的測試工具,則需使用Python第三方庫pyautogui自行編寫一個簡單腳本來代替,該庫可以直接模擬鼠標(biāo)和鍵盤的輸入,代碼舉例如下:
關(guān)機的方式可能根據(jù)設(shè)備不同有所差異,但利用前面的模擬按電源鍵腳本和autogui均可完成設(shè)備的模擬手動關(guān)機操作。
2.5自動化實現(xiàn)關(guān)機狀態(tài)確認
確認設(shè)備是否已經(jīng)關(guān)機的方法不難,例如用主控服務(wù)器ping待測設(shè)備,如果設(shè)備正常關(guān)機了,則不能夠ping成功;如果能夠持續(xù)ping通就說明設(shè)備沒有正常關(guān)機成功,此時停止后續(xù)測試操作保留現(xiàn)場,并寫入日志。
2.6日志
為保障測試結(jié)果的可靠性,日志是必不可少的,決定測試是否通過的直觀指標(biāo),也只能是通過一定時間或次數(shù)的測試。
2.6.1日志結(jié)構(gòu)
日志的生成直接調(diào)用Python的文件操作接口生成TXT格式文檔即可,每一行作為單次執(zhí)行記錄,每行中條目以制表符分割即可。
日志中必要的項目:時間、開機是否完成、隨機選取的測試腳本名稱及行數(shù)、關(guān)機是否成功等。
2.7報告
報告的生成以日志為依據(jù),統(tǒng)計測試的時間、次數(shù)、測試通過率、缺陷個數(shù)及分布。
3每日自動化任務(wù)
為了節(jié)省設(shè)備資源,自動化任務(wù)通常放在晚上進行,首先將當(dāng)日最新的軟件包打包完成以保證執(zhí)行自動化測試任務(wù)的設(shè)備使用的是最新版本,隨后啟動執(zhí)行任務(wù),自動化測試時間為整晚,在早上工作人員到崗前完成報告生成。
4結(jié)束語
改革開放近40年,隨著經(jīng)濟社會的快速發(fā)展,尤其是科學(xué)技術(shù)的進步,我國醫(yī)療器械行業(yè)取得長足進步。我國的醫(yī)療器械生產(chǎn)企業(yè)從改革開放之初的數(shù)百家,增加到2016年的近15,343家;醫(yī)療器械行業(yè)的總產(chǎn)值從改革開放之初的微不足道,增加到2016年的近5,000億元。今天,我國已經(jīng)成為全世界醫(yī)療器械的主要生產(chǎn)國和主要消費國之一。本文從實際出發(fā),完成了一整套基于Linux的醫(yī)療設(shè)備的自動化測試方案設(shè)計,但還可從圖像的識別、腳本的全面性上繼續(xù)改進,后續(xù)將會持續(xù)更新爭取提高更多的研發(fā)效率。