张志凯 孙 宁
(1.浙江省计量科学研究院,杭州 310013;上海交通大学软件学院,上海 200240)
电子计价秤具有使用方便、价格便宜、携带便捷等优势,因此它在人们日常生活的许多领域都被广泛应用,包括超市、农贸市场、五金百货店、零售专卖店等各种需要进行计重计价的领域。目前市场上有一些厂商通过修改电子计价秤的程序来生产所谓的“鬼秤”,即计量不精确的电子秤,例如“八两秤”来不正当获利,更重要的是,电子计价秤属于低附加值商品,因此很多厂商为了压缩成本,购买程序内置的芯片进行组装,使得厂商对电子计价秤软件的质量无法把关。因此,对电子计价秤软件进行测试,以发现其中的缺陷和后门,对于规范电子计价秤市场具有十分重要的意义。
在国际上,已经出台了一些关于电子计价秤软件的标准或意见[1-4],而国家质量监督检验检疫总局也出台了计量器具软件测试的标准规范[5-6]。这些标准和意见为电子计价秤软件的质量提供了明确的度量指标和度量算法,但是它们对这些指标的测试方法并没有进行详细明确的规定。因此,对电子计价秤软件测试技术的研究就成为了迫切的需求。
本文从测试管理、测试技术和测试人员三方面对电子计价秤软件测试中的关键问题的研究和总结,能够为电子计价秤软件测试领域的研究提供参考,同时可以为相关计量器具软件的测试提供借鉴。
电子计价秤通过将称重传感器的模拟信号转换为数字信号传送给CPU处理,CPU通过执行软件计算得到重量值,同时捕获用户键盘输入,获取单价和去皮、累积等操作信息,计算得到金额,最后通过LED驱动芯片去显示重量、单价和金额等。本文从硬件和软件两个方面对电子计价秤的基本原理进行介绍。
电子计价秤的硬件以CPU为核心,外围主要包含三部分:称重、键盘输入和显示,其硬件结构图如图1所示。
图1 电子计价秤的硬件结构图
电子计价秤的称重传感器将感知到的托盘上的重量转换为模拟信号,传递给A/D转换电路,经由后者将模拟信号转换成数字信号传递给CPU。
CPU负责所有的逻辑计算部分,包括计算重量、根据键盘输入获取单价值、计算金额等,同时负责控制A/D转换以及数码管显示驱动芯片。这是整个电子计价秤的核心部件,其中的软件正是本文所讨论的主体。
键盘驱动电路会捕获键盘输入信号,将其转换为CPU的预设输入接口信号。CPU还会通过输入输出端口控制LED驱动芯片,向其发送指令与数据,由后者驱动LED数码管的显示。
电子计价秤软件通常包括6个主要模块,分别是:
1)初始化模块:需要对CPU、A/D转换芯片、数码管显示驱动芯片和键盘驱动芯片等硬件进行初始化设定,并需要对各种内存变量赋初始值。
2)称重传感器数据平滑模块:对从A/D获取的数据进行平滑,以防止电子计价秤数据显示变化过快,难以稳定,同时可以避免因称重物快速放置而导致的称重误差等。
3)重量和金额计算模块:对平滑之后的称重传感器数据,根据标定得到的重量与电压之间的线性关系来计算重量,然后根据单价计算金额。
4)标定处理模块:专门处理电子计价秤的标定。
5)按键处理模块:根据轮询得到的输入输出端口状态确定按键值,并根据按键值进行相应的处理。
6)数码管显示模块:负责将金额、重量、单价、异常代码等信息显示到数码管上。
这6个模块构成了电子计价秤软件,它们之间的调用关系如图2所示。
图2 电子计价秤的软件流程图
电子计价秤软件测试涉及到测试管理、测试技术和测试人员三项要素,下面将从这三方面来分析电子计价秤软件测试的关键问题。
电子计价秤软件测试需要解决以下测试管理遇到的关键问题。
2.1.1 确定合理的测试规范
针对电子计价秤软件的特殊性,需要在国家相关标准的基础上,建立合理的软件测试规范,从以下方面进行标准化:
1)测试目的:对测试的目的可以分成三种,包括测试软件本身的逻辑是否符合要求、测试某个芯片中烧制的程序是否被篡改过、通过测试软件来发现电子计价秤硬件系统的合法性。针对不同目的,会采用不同的测试方法和设备,因此,必须明确具体的测试目的。
2)测试对象:测试目的确定后,也就确定了测试对象到底是实现逻辑的软件、某个具体的程序实例还是硬件。无论是哪一种,都需要被测试方提交相应的待测试物和必需的文档,它们共同构成了测试对象。最基本的测试交付物应该包括:
a.源代码:这必须是包含必要的注释的源代码,对所有内存变量和子程序都要注释说明其用途和约束条件。
b. CPU接口设计文档:对CPU的各个输入输出信号都必须给出明确的定义和说明,包括电平高低和翻转代表的不同含义等。
c.软件详细设计文档:包括程序流程图和重量计算方法等核心设计思想。详细设计文档是判断软件质量高低的重要依据。
d.电子计价秤使用说明:明确说明电子计价秤软件支持的所有功能,以及技术指标等信息,这些内容是设计测试用例的依据。
3)测试项:需要针对上述测试对象确定测试项,包括测试项的数量、范围、类型、重要程度等。
4)测试指标与评价体系:针对各种测试项,要确定测试指标和评价体系。
2.1.2 建立适合的测试过程
适应电子计价秤软件特殊性的测试过程将有助于提高测试的效率和有效性,这其中需要解决的问题包括:
1)版本追踪:必须建立版本追踪机制对各种型号和批次的产品中使用的软件建档,以做到能够准确迅速地追溯待测电子秤产品对应的软件,并能够跟踪分析软件演化的过程。
2)缺陷跟踪:对测试发现的缺陷必须进行跟踪,因为电子计价秤软件的缺陷数量和严重程度是衡量生产商设计开发能力以及诚信度的重要指标,对缺陷跟踪有利于进行这种衡量和分析。
电子计价秤软件测试和通常的软件测试相比,具有其特殊性,因此必须解决以下电子计价秤软件测试技术关键问题。
2.2.1 程序理解
通过程序理解对软件测试交付物进行分析和挖掘,以获得必要的信息,包括下列工作:
1)硬件接口分析:根据硬件设计获取各种输入和输出接口的设计。
2)程序代码处理:对提交测试的程序代码进行适当的处理,以提高程序理解的准确性和效率。
3)程序数据流与控制流分析:对于缺少源代码以及必要的注释和设计文档,所以需要通过数据流和控制流分析来理解程序。
2.2.2 软件校验与对比
对于测试目标软件实例是否存在篡改的情况,需要进行软件校验和对比,具体工作包括:
1)软件校验:对于指定的待测软件实例,需要根据其文件格式进行校验,以判断其本身是否符合可执行代码规范。
2)软件对比:通过检验的软件实例需要进一步和备案的合法软件进行对比,以测试软件实例的合法性。
2.2.3 系统仿真测试
对于通过软件测试来检验电子计价秤硬件合法性的情况,需要使用仿真平台进行软硬件联调,具体工作包括:
1)仿真平台构建:软硬件联调需要通过仿真平台来实施,仿真平台包括仿真器和仿真软件。
2)仿真测试运行方式:需要根据测试用例设置运行断点和输入输出等信息,然后通过在仿真时获取内存数据和输入输出信息,来判断仿真运行的结果。
图3显示了仿真测试运行方式,其中测试平台会根据测试用例生成用于仿真集成运行环境的指令文件,而后者通过仿真头与电子计价秤相连,并加载指令文件运行程序,并根据指令文件的内容运行至指定断点处将CPU内存读出生成数据文件。该数据文件将被载入到测试平台中,并对该文件进行分析,以判断其是否与预期的测试结果相匹配。
图3 仿真测试运行方式示意图
3)测试用例生成:电子计价秤软件测试用例分成两类,第一类是功能性测试用例,以产品说明书为依据,按照黑盒测试的方式设计测试用例;第二类是非功能性测试用例,以测试软件健壮性为目的,按照白盒测试的方式设计测试用例。
4)测试结果分析:对测试结果的分析需要以程序理解为基础,不但要发现系统缺陷,而且要定位系统缺陷,并发现导致缺陷的原因。对测试结果进行分析有利于从软件实现的角度对缺陷等级进行评定,并且能够支持缺陷跟踪。
由于电子计价秤软件测试具有前述特殊性,需要在测试人员方面解决如下关键问题:
1)测试人员构成:在电子计价秤软件测试过程中,包含测试管理、程序理解、测试用例规划与编写、测试执行、测试结果分析等任务。在具体的测试中,可以根据实际需求对测试任务分组,按照分组划分测试人员的角色,并组织测试人员队伍。
2)测试技术培训:对于测试人员来说,需要掌握嵌入式软件测试的基本技能,同时要具有程序理解能力和测试管理能力,因此必须对测试人员进行必要的培训。
3)测试人员协作:参与测试的所有人员必须通过协作才能完成整个软件测试。测试人员协作一方面要靠组织保障,另一方面也需要工具支持,例如Lotus notes等协同办公软件。
对电子计价秤软件进行测试是规范市场的必要措施,但是电子计价秤行业的特征决定了其软件测试具有特殊性,而这些特殊性导致在基本的软件测试方法、技术和管理之上,需要做更多适应其特殊性的裁剪和扩展。本文从测试管理、测试技术和测试人员三方面对电子计价秤软件测试中的关键问题进行了研究和总结,能够为电子计价秤软件测试领域的研究提供参考,同时可以为相关计量器具软件的测试提供借鉴。
[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 计量器具软件测评指南[S].2007
[6] JJF 1365—2012 数字指示秤软件可信度测评方法[S].2012