張志凱 孫 寧
(1.浙江省計(jì)量科學(xué)研究院,杭州 310013;上海交通大學(xué)軟件學(xué)院,上海 200240)
電子計(jì)價(jià)秤具有使用方便、價(jià)格便宜、攜帶便捷等優(yōu)勢,因此它在人們?nèi)粘I畹脑S多領(lǐng)域都被廣泛應(yīng)用,包括超市、農(nóng)貿(mào)市場、五金百貨店、零售專賣店等各種需要進(jìn)行計(jì)重計(jì)價(jià)的領(lǐng)域。目前市場上有一些廠商通過修改電子計(jì)價(jià)秤的程序來生產(chǎn)所謂的“鬼秤”,即計(jì)量不精確的電子秤,例如“八兩秤”來不正當(dāng)獲利,更重要的是,電子計(jì)價(jià)秤屬于低附加值商品,因此很多廠商為了壓縮成本,購買程序內(nèi)置的芯片進(jìn)行組裝,使得廠商對電子計(jì)價(jià)秤軟件的質(zhì)量無法把關(guān)。因此,對電子計(jì)價(jià)秤軟件進(jìn)行測試,以發(fā)現(xiàn)其中的缺陷和后門,對于規(guī)范電子計(jì)價(jià)秤市場具有十分重要的意義。
在國際上,已經(jīng)出臺了一些關(guān)于電子計(jì)價(jià)秤軟件的標(biāo)準(zhǔn)或意見[1-4],而國家質(zhì)量監(jiān)督檢驗(yàn)檢疫總局也出臺了計(jì)量器具軟件測試的標(biāo)準(zhǔn)規(guī)范[5-6]。這些標(biāo)準(zhǔn)和意見為電子計(jì)價(jià)秤軟件的質(zhì)量提供了明確的度量指標(biāo)和度量算法,但是它們對這些指標(biāo)的測試方法并沒有進(jìn)行詳細(xì)明確的規(guī)定。因此,對電子計(jì)價(jià)秤軟件測試技術(shù)的研究就成為了迫切的需求。
本文從測試管理、測試技術(shù)和測試人員三方面對電子計(jì)價(jià)秤軟件測試中的關(guān)鍵問題的研究和總結(jié),能夠?yàn)殡娮佑?jì)價(jià)秤軟件測試領(lǐng)域的研究提供參考,同時(shí)可以為相關(guān)計(jì)量器具軟件的測試提供借鑒。
電子計(jì)價(jià)秤通過將稱重傳感器的模擬信號轉(zhuǎn)換為數(shù)字信號傳送給CPU處理,CPU通過執(zhí)行軟件計(jì)算得到重量值,同時(shí)捕獲用戶鍵盤輸入,獲取單價(jià)和去皮、累積等操作信息,計(jì)算得到金額,最后通過LED驅(qū)動芯片去顯示重量、單價(jià)和金額等。本文從硬件和軟件兩個(gè)方面對電子計(jì)價(jià)秤的基本原理進(jìn)行介紹。
電子計(jì)價(jià)秤的硬件以CPU為核心,外圍主要包含三部分:稱重、鍵盤輸入和顯示,其硬件結(jié)構(gòu)圖如圖1所示。
圖1 電子計(jì)價(jià)秤的硬件結(jié)構(gòu)圖
電子計(jì)價(jià)秤的稱重傳感器將感知到的托盤上的重量轉(zhuǎn)換為模擬信號,傳遞給A/D轉(zhuǎn)換電路,經(jīng)由后者將模擬信號轉(zhuǎn)換成數(shù)字信號傳遞給CPU。
CPU負(fù)責(zé)所有的邏輯計(jì)算部分,包括計(jì)算重量、根據(jù)鍵盤輸入獲取單價(jià)值、計(jì)算金額等,同時(shí)負(fù)責(zé)控制A/D轉(zhuǎn)換以及數(shù)碼管顯示驅(qū)動芯片。這是整個(gè)電子計(jì)價(jià)秤的核心部件,其中的軟件正是本文所討論的主體。
鍵盤驅(qū)動電路會捕獲鍵盤輸入信號,將其轉(zhuǎn)換為CPU的預(yù)設(shè)輸入接口信號。CPU還會通過輸入輸出端口控制LED驅(qū)動芯片,向其發(fā)送指令與數(shù)據(jù),由后者驅(qū)動LED數(shù)碼管的顯示。
電子計(jì)價(jià)秤軟件通常包括6個(gè)主要模塊,分別是:
1)初始化模塊:需要對CPU、A/D轉(zhuǎn)換芯片、數(shù)碼管顯示驅(qū)動芯片和鍵盤驅(qū)動芯片等硬件進(jìn)行初始化設(shè)定,并需要對各種內(nèi)存變量賦初始值。
2)稱重傳感器數(shù)據(jù)平滑模塊:對從A/D獲取的數(shù)據(jù)進(jìn)行平滑,以防止電子計(jì)價(jià)秤數(shù)據(jù)顯示變化過快,難以穩(wěn)定,同時(shí)可以避免因稱重物快速放置而導(dǎo)致的稱重誤差等。
3)重量和金額計(jì)算模塊:對平滑之后的稱重傳感器數(shù)據(jù),根據(jù)標(biāo)定得到的重量與電壓之間的線性關(guān)系來計(jì)算重量,然后根據(jù)單價(jià)計(jì)算金額。
4)標(biāo)定處理模塊:專門處理電子計(jì)價(jià)秤的標(biāo)定。
5)按鍵處理模塊:根據(jù)輪詢得到的輸入輸出端口狀態(tài)確定按鍵值,并根據(jù)按鍵值進(jìn)行相應(yīng)的處理。
6)數(shù)碼管顯示模塊:負(fù)責(zé)將金額、重量、單價(jià)、異常代碼等信息顯示到數(shù)碼管上。
這6個(gè)模塊構(gòu)成了電子計(jì)價(jià)秤軟件,它們之間的調(diào)用關(guān)系如圖2所示。
圖2 電子計(jì)價(jià)秤的軟件流程圖
電子計(jì)價(jià)秤軟件測試涉及到測試管理、測試技術(shù)和測試人員三項(xiàng)要素,下面將從這三方面來分析電子計(jì)價(jià)秤軟件測試的關(guān)鍵問題。
電子計(jì)價(jià)秤軟件測試需要解決以下測試管理遇到的關(guān)鍵問題。
2.1.1 確定合理的測試規(guī)范
針對電子計(jì)價(jià)秤軟件的特殊性,需要在國家相關(guān)標(biāo)準(zhǔn)的基礎(chǔ)上,建立合理的軟件測試規(guī)范,從以下方面進(jìn)行標(biāo)準(zhǔn)化:
1)測試目的:對測試的目的可以分成三種,包括測試軟件本身的邏輯是否符合要求、測試某個(gè)芯片中燒制的程序是否被篡改過、通過測試軟件來發(fā)現(xiàn)電子計(jì)價(jià)秤硬件系統(tǒng)的合法性。針對不同目的,會采用不同的測試方法和設(shè)備,因此,必須明確具體的測試目的。
2)測試對象:測試目的確定后,也就確定了測試對象到底是實(shí)現(xiàn)邏輯的軟件、某個(gè)具體的程序?qū)嵗€是硬件。無論是哪一種,都需要被測試方提交相應(yīng)的待測試物和必需的文檔,它們共同構(gòu)成了測試對象。最基本的測試交付物應(yīng)該包括:
a.源代碼:這必須是包含必要的注釋的源代碼,對所有內(nèi)存變量和子程序都要注釋說明其用途和約束條件。
b. CPU接口設(shè)計(jì)文檔:對CPU的各個(gè)輸入輸出信號都必須給出明確的定義和說明,包括電平高低和翻轉(zhuǎn)代表的不同含義等。
c.軟件詳細(xì)設(shè)計(jì)文檔:包括程序流程圖和重量計(jì)算方法等核心設(shè)計(jì)思想。詳細(xì)設(shè)計(jì)文檔是判斷軟件質(zhì)量高低的重要依據(jù)。
d.電子計(jì)價(jià)秤使用說明:明確說明電子計(jì)價(jià)秤軟件支持的所有功能,以及技術(shù)指標(biāo)等信息,這些內(nèi)容是設(shè)計(jì)測試用例的依據(jù)。
3)測試項(xiàng):需要針對上述測試對象確定測試項(xiàng),包括測試項(xiàng)的數(shù)量、范圍、類型、重要程度等。
4)測試指標(biāo)與評價(jià)體系:針對各種測試項(xiàng),要確定測試指標(biāo)和評價(jià)體系。
2.1.2 建立適合的測試過程
適應(yīng)電子計(jì)價(jià)秤軟件特殊性的測試過程將有助于提高測試的效率和有效性,這其中需要解決的問題包括:
1)版本追蹤:必須建立版本追蹤機(jī)制對各種型號和批次的產(chǎn)品中使用的軟件建檔,以做到能夠準(zhǔn)確迅速地追溯待測電子秤產(chǎn)品對應(yīng)的軟件,并能夠跟蹤分析軟件演化的過程。
2)缺陷跟蹤:對測試發(fā)現(xiàn)的缺陷必須進(jìn)行跟蹤,因?yàn)殡娮佑?jì)價(jià)秤軟件的缺陷數(shù)量和嚴(yán)重程度是衡量生產(chǎn)商設(shè)計(jì)開發(fā)能力以及誠信度的重要指標(biāo),對缺陷跟蹤有利于進(jìn)行這種衡量和分析。
電子計(jì)價(jià)秤軟件測試和通常的軟件測試相比,具有其特殊性,因此必須解決以下電子計(jì)價(jià)秤軟件測試技術(shù)關(guān)鍵問題。
2.2.1 程序理解
通過程序理解對軟件測試交付物進(jìn)行分析和挖掘,以獲得必要的信息,包括下列工作:
1)硬件接口分析:根據(jù)硬件設(shè)計(jì)獲取各種輸入和輸出接口的設(shè)計(jì)。
2)程序代碼處理:對提交測試的程序代碼進(jìn)行適當(dāng)?shù)奶幚恚蕴岣叱绦蚶斫獾臏?zhǔn)確性和效率。
3)程序數(shù)據(jù)流與控制流分析:對于缺少源代碼以及必要的注釋和設(shè)計(jì)文檔,所以需要通過數(shù)據(jù)流和控制流分析來理解程序。
2.2.2 軟件校驗(yàn)與對比
對于測試目標(biāo)軟件實(shí)例是否存在篡改的情況,需要進(jìn)行軟件校驗(yàn)和對比,具體工作包括:
1)軟件校驗(yàn):對于指定的待測軟件實(shí)例,需要根據(jù)其文件格式進(jìn)行校驗(yàn),以判斷其本身是否符合可執(zhí)行代碼規(guī)范。
2)軟件對比:通過檢驗(yàn)的軟件實(shí)例需要進(jìn)一步和備案的合法軟件進(jìn)行對比,以測試軟件實(shí)例的合法性。
2.2.3 系統(tǒng)仿真測試
對于通過軟件測試來檢驗(yàn)電子計(jì)價(jià)秤硬件合法性的情況,需要使用仿真平臺進(jìn)行軟硬件聯(lián)調(diào),具體工作包括:
1)仿真平臺構(gòu)建:軟硬件聯(lián)調(diào)需要通過仿真平臺來實(shí)施,仿真平臺包括仿真器和仿真軟件。
2)仿真測試運(yùn)行方式:需要根據(jù)測試用例設(shè)置運(yùn)行斷點(diǎn)和輸入輸出等信息,然后通過在仿真時(shí)獲取內(nèi)存數(shù)據(jù)和輸入輸出信息,來判斷仿真運(yùn)行的結(jié)果。
圖3顯示了仿真測試運(yùn)行方式,其中測試平臺會根據(jù)測試用例生成用于仿真集成運(yùn)行環(huán)境的指令文件,而后者通過仿真頭與電子計(jì)價(jià)秤相連,并加載指令文件運(yùn)行程序,并根據(jù)指令文件的內(nèi)容運(yùn)行至指定斷點(diǎn)處將CPU內(nèi)存讀出生成數(shù)據(jù)文件。該數(shù)據(jù)文件將被載入到測試平臺中,并對該文件進(jìn)行分析,以判斷其是否與預(yù)期的測試結(jié)果相匹配。
圖3 仿真測試運(yùn)行方式示意圖
3)測試用例生成:電子計(jì)價(jià)秤軟件測試用例分成兩類,第一類是功能性測試用例,以產(chǎn)品說明書為依據(jù),按照黑盒測試的方式設(shè)計(jì)測試用例;第二類是非功能性測試用例,以測試軟件健壯性為目的,按照白盒測試的方式設(shè)計(jì)測試用例。
4)測試結(jié)果分析:對測試結(jié)果的分析需要以程序理解為基礎(chǔ),不但要發(fā)現(xiàn)系統(tǒng)缺陷,而且要定位系統(tǒng)缺陷,并發(fā)現(xiàn)導(dǎo)致缺陷的原因。對測試結(jié)果進(jìn)行分析有利于從軟件實(shí)現(xiàn)的角度對缺陷等級進(jìn)行評定,并且能夠支持缺陷跟蹤。
由于電子計(jì)價(jià)秤軟件測試具有前述特殊性,需要在測試人員方面解決如下關(guān)鍵問題:
1)測試人員構(gòu)成:在電子計(jì)價(jià)秤軟件測試過程中,包含測試管理、程序理解、測試用例規(guī)劃與編寫、測試執(zhí)行、測試結(jié)果分析等任務(wù)。在具體的測試中,可以根據(jù)實(shí)際需求對測試任務(wù)分組,按照分組劃分測試人員的角色,并組織測試人員隊(duì)伍。
2)測試技術(shù)培訓(xùn):對于測試人員來說,需要掌握嵌入式軟件測試的基本技能,同時(shí)要具有程序理解能力和測試管理能力,因此必須對測試人員進(jìn)行必要的培訓(xùn)。
3)測試人員協(xié)作:參與測試的所有人員必須通過協(xié)作才能完成整個(gè)軟件測試。測試人員協(xié)作一方面要靠組織保障,另一方面也需要工具支持,例如Lotus notes等協(xié)同辦公軟件。
對電子計(jì)價(jià)秤軟件進(jìn)行測試是規(guī)范市場的必要措施,但是電子計(jì)價(jià)秤行業(yè)的特征決定了其軟件測試具有特殊性,而這些特殊性導(dǎo)致在基本的軟件測試方法、技術(shù)和管理之上,需要做更多適應(yīng)其特殊性的裁剪和擴(kuò)展。本文從測試管理、測試技術(shù)和測試人員三方面對電子計(jì)價(jià)秤軟件測試中的關(guān)鍵問題進(jìn)行了研究和總結(jié),能夠?yàn)殡娮佑?jì)價(jià)秤軟件測試領(lǐng)域的研究提供參考,同時(shí)可以為相關(guān)計(jì)量器具軟件的測試提供借鑒。
[1] OIML R76-1 Non-automatic Weighing Instrument Part1: Metrological and Technical Requirement Edition 2006(E)[S].International Organization of Legal Metrology
[2] General requirements for software controlled measuring instruments[S].2008.International Organization of Legal Metrology
[3] WELMEC 2.3,Informative Document Development of Software Requirements[S].2005.European Cooperation in Legal Metrology
[4] WELMEC 7.2,Software Guide (Measuring Instruments Directive 2004/22/EC)[S].2004.European Cooperation in Legal Metrology
[5] JJF 1182—2007 計(jì)量器具軟件測評指南[S].2007
[6] JJF 1365—2012 數(shù)字指示秤軟件可信度測評方法[S].2012