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