吴 键,张志凯,邵建文
(浙江省计量科学研究院,杭州 310013)
电子计价秤作为人们日常生活中最常见的民生计量器具之一,一直在百姓生活中扮演着非常重要的作用,但近些年市场上一些黑心商人利用电子计价秤软件作弊,使出售的货物缺斤少两,同时关于电子计价秤作弊的投诉也越来越多,因此电子计价秤软件测试的研究显得非常重要。
据国家质检总局2012年的数据显示,电子计价秤质量抽样合格率仅为63.3%。电子计价秤硬件装置主要由称重传感器、按键、主板、LED数码管或液晶显示屏构成。在电子秤硬件上的作弊比较容易察觉,而软件上的作弊隐藏较深不易发现,因此目前市场上电子计价秤多是通过修改软件进行作弊[1]。
2008年,国际法制计量组织(OIML)正式发布了《计量器具软件通用要求》的法制管理文件,对计量器具的软件检测提出了相应的要求。2007年,国家质检总局下达指示制定了计量器具软件测评指南(中华人民共和国国家计量技术规范JJF1182-2007[2]),尤其是对电子计价秤的软件测评方法提出了新要求,接着于2012年实施了《数字指示秤软件可信度测评方法JJF 1365-2012》[3]。文献[4-5]提出了一种嵌入式计量器具便于欺骗性使用的黑盒检测方法,但前期测试准备过于繁琐。文献[6]对嵌入式软件的计量器具防作弊系统进行了研究,将检测时提取的软件内部信息与审批前标识的软件特征信息进行比对,来检测计量器具的软件作弊。由于电子计价秤的软件标识涉及到生产厂商利润,该方法操作具有一定的难度。
为解决电子计价秤软件测试遇到的难题,文中搭建了一套电子计价秤的软件仿真测试系统,基于VC++编写了电子计价秤仿真测试程序,对市场上普遍流通的电子计价秤软件进行了测试,实验结果表明该套系统能够对密码作弊类电子计价秤进行有效检测,同时也验证了文中仿真测试程序的有效性。
电子计价秤主要包括称重模块、显示模块以及按键模块3部分,本软件仿真测试系统用软件驱动的仿真器来代替真实的运行环境,模拟真实运行环境的各种功能。其硬件结构主要由可编程多路继电器、电压源及机器视觉系统组成,继电器用来模拟电子计价秤的按键功能,电压源用来模拟电子计价秤的称重传感器信号输入,机器视觉系统则是用来捕获电子计价秤的输出信息。整体电子计价秤的软件仿真测试系统硬件结构如图1所示。
图1 系统硬件结构Fig.1 Hardware structure of system
目前,常用电子计价秤的称重传感器一般是由弹性体、接成传感桥路的电阻应变片和向桥路供电的直流稳压电源构成。当压力作用在传感器上时,微小的电流变化通过惠斯通电桥转化成微小的电压变化,通过A/D转换,量化显示在显示屏上。针对这一原理,本系统将电子计价秤电路板上与电桥压差输出端相连的部分断开并重新连接至外部电压源上,使用电压源输出微小压差模拟称重。
显示模块电子计价秤显示屏分LED数码显示和LCD显示2种,一般可采用读取显示屏电路管脚高低电平来获取数据并显示,但是这种方法连线复杂、不易操作、容易出错,且不同电子计价秤的LED数码管引脚封装不同,连线也会产生一定的变化。针对这一现象,本系统采用机器视觉系统,通过摄像头读入电子计价秤的显示屏信息,最后利用图像识别算法进行字符识别,并将结果发送到上位机显示。在恒定光照条件下,对字符识别正确率进行了测试,字符识别正确率达到98%以上,表明该系统具有良好的实用性和通用型。
按键模块主流电子计价秤使用的是矩阵式键盘,针对此类键盘的特点,本系统采用可编程控制的多路继电器,通过串口通信协议,发出指令控制继电器通断,实现电子计价秤面板上所有按键功能。
电子计价秤的软件自动仿真测试系统软件流程如图2所示。
图2 测试流程Fig.2 Flow chart of testing
程序开启后先根据试验人员的设置完成初始化,随后,分别开启称重信号模拟软件模块、键盘模拟软件模块、图像识别软件模块,试验人员可进行相应的调试检测。调试完毕后,试验人员可分别选择进行包括手动测试、自动测试、综合作弊查找测试等。系统在自动测试结束后自动生成测试报告。
软件开发平台为VS2010[7],采用VC++编写仿真测试软件上位机手动测试界面及自动测试界面分别如图3、图4所示。
图3 仿真软件手动测试界面Fig.3 Manual test interface of simulation testing system
图4 仿真软件自动测试界面Fig.4 Automatic test interface of simulation testing system
手动测试模块试验人员可对整套系统对被测电子计价秤进行初步的检测,包括按键控制、质量控制及数据的采集。
自动测试模块试验人员先分别对需用到的按键、每次按键个数、用例个数及允许误差进行设置。完成设置后,试验人员可选择单价及质量的输出模式,质量输出模式包括固定输出、随机输出和间隔输出,其中,随机输出和间隔输出均需设置载荷区间;单价输出模式包括固定输出和随机输出。
完成设置后,开始测试,试验人员可根据实际情况分别进行暂停测试、停止测试、重新测试、保存结果等操作。
从表1可以看出,在5组连续50次按键仿真测试试验中,试验结果正确率接近100%,出现1次正确率为98%是由图像识别系统字符识别错误造成的。
表1 连续50次按键仿真测试结果正确率Tab.1 Accuracy of 50 consecutive times key-press simulation
针对密码作弊类电子计价秤的测评,需在综合作弊查找模块中进行,综合作弊查找模块界面如图5所示。
综合作弊查找模块,试验人员先勾选相应的组合、预设计的标准称重、按键时长及按键时间间隔,本系统最多可测试4位数字配3位功能键的密码组合。点击开始测试,系统将自动控制电子计价秤进行按键,每次按键后,系统会控制电压源输入标准称重,并附以固定单价。
图5 综合作弊查找模块界面Fig.5 Interface of comprehensive cheating search
若最后总价显示误差在10%以内即为合格,若出现不合格情况,则将当前按键组合保存为可疑项在测试结果中显示。试验人员将在试验结束后使用校验键盘进行校验,以检查作弊码是否已找到。
电子计价秤软件仿真测试系统基于VC++编写软件测试界面,采用机器识别系统对显示部分进行字符识别,系统测试包含三大功能:手动测试、自动测试、综合作弊查找测试。测试结果表明该系统可用于不同电子计价秤软件作弊功能测试,具有一定的实用性和通用性。电子计价秤是关于民生计量的一种计量器具,该套系统研制体现了计量的公正性,后期将继续对电子计价秤软件可靠性和评价体系进行更深入的研究。
[1]黄松涛.电子计价秤软件作弊功能分析及对策[J].上海计量测试,2009(9):35-37.
[2]国家质量监督检验检疫总局.JJF1182-2007计量器具软件测评指南[S].北京:中国质检出版社,2007.
[3]国家质量监督检验检疫总局.JJF1365-2012数字指示秤软件可信度测评方法[S].北京:中国质检出版社,2007.
[4]崔伟群.电子计价秤软件自动测试系统[J].现代测量与实验室管理,2011(2):3-6.
[5]崔伟群.电子计价秤方便于欺骗性使用的黑盒检测方法[J].中国计量,2011(5):98-100.
[6]陈洪军,黄卫祖.嵌入软件的计量器具防弊系统研究[J].计算机仿真,2012,29(12):397-400.
[7]柳胜.软件自动化测试框架设计与实践[M].北京:人民邮电出版社,2009.