基于嵌入式芯片和操作系统的POSDouble测试研究

随着嵌入式计算机应用技术的发展,嵌入式技术已经广泛应用到现代生活的方方面面。在零售系统方面,零售收款机是嵌入式应用的一个重要领域。目前,市场上的收款机大体上可分为三类:第一类是基于pc和dos/windows体系的,这类产品目前占市场绝大多数,属于高端产品,价格太高,适合大的商场和销售系统;第二类是基于单片机(51系列居多)的,基本上没有操作系统的支持,功能也较弱,主要用于餐饮娱乐,占据中低档市场;第三类是正在快速发展的基于嵌入式芯片和嵌入式操作系统的,价格较低,功能较强,适用于中高档市场,这类产品将是未来市场的主体。以上三类收款机的开发平台形形色色,基本上是每一款就是一种开发平台,没有统一的规范、开发和调试平台。系统升级和移植困难,尤其对于一体机等需要第三方开发软件的应用,造成开发上更大的难度。虚拟机vm的改进,java应用的速度已经不是太大的问题。
1 junit分析与应用
munit是junit的子集,使用方法类似junit,在这里只对junit做分析。junit是一个开源的java测试框架,它是xunit测试体系架构的一种实现。在junit单元测试框架的设计时,设定了三个总体目标,第一个是简化测试的编写,这种简化包括测试框架的学习和实际测试单元的编写;第二个是使测试单元保持持久性;第三个则是可以利用既有的测试编写相关的测试。所以这些目的也是为什么使用模式的根本原因。junit的设计使用以patterns generate architectures的方式来架构系统。其设计思想是通过从零开始应用设计模式,然后一个接一个,直至获得最终合适的系统架构。junit是一个测试framework,测试人员只需开发测试用例,然后把这些测试用例(testcase)组成请求(可能是一个或者多个),发送到junit,然后由junit执行,最后报告详细测试结果。其中,包括执行的时间、错误方法、错误位置等。这样测试用例的开发人员就不需知道junit内部的细节,只要符合它定义的请求格式即可。从junit的角度考虑,它并不需要知道请求testcase的具体操作信息,仅把它当作一种命令来执行,然后把执行测试结果发给测试人员。这样就使junit框架和testcase的开发人员独立开来,使得请求的一方不必知道接收请求一方的详细信息,更不必知道是怎样被接收,以及怎样被执行的,实现系统的松耦合。
junit.framework包中包含了junit测试类所需要的所有基类,实际上这个包也是整个junit的基础框架。testcase类是这个包的核心类,测试人员对testcase类进行继承开发自己的类测试驱动程序。其余的类用来支援这个testcase类,比如testsuite用类聚合多个测试用例(testcase),assert类实现期望值和实际值的验证,testresult收集所有测试用例执行后的结果。test接口是这个包的关键所在,它建立了testcase和testsuite之间的关联,同时为整个框架做了扩展预留。在j2se下简单应用举例:
右击项目名称选择新建→junit测试用例
junit在j2se下可以很好地应用,但是在j2me下应用存在比较大的困难,因为在j2me下没有反射机制。在实际测试中可以利用其优点来最大地发挥。
2 posdouble测试
由于midp 1.0下不支持浮点数(float)运算,因此必须开发适合j2me下的浮点数运算方法。这里主要实现了以下方法,这些方法的测试都是通过junit进行的白盒测试,测试数据的选择主要是根据市场的实际需求设定,保证了现阶段的实际需求;而在midp 2.0下可以支持浮点数的运算,无须自己开发浮点数运算的方法。
类名:posdouble,主要是用于浮点数计算,主要测试以下方法:
3 通用接口测试
由于posdouble是在j2se下开发的,所以使用了junit工具,而其他接口函数是在j2me下开发的,所以接口的测试采用了munit(junit的子集)工具。munit工具的使用方法、规则请参考《munit测试集编写规范》。
(1)测试框架
目录结构的总原则是:源代码目录与测试代码目录分离,互不干扰;测试代码目录与源代码目录的分支结构一致,便于查找、维护。
(2)仿真环境测试执行流程
首先编写测试代码,测试代码尽量放在与源代码相对应的测试目录中。修改测试程序入口,如使用epos.set.functionformfactory。
(3)目标环境测试执行流程
编写测试代码,修改测试程序入口,构建测试代码的jar文件,下载jar文件到目标机运行。
(4)测试捷径
通常情况下,在目标环境下测试,需要先编写测试用例、再编译、再下载、再运行,如果突然想到一个测试用例,又需重复上述操作步骤,就会非常耗时。为了增强测试的灵活性,可以加入键盘监听事件。首先编写键盘监听类,将所有的测试单步对应到不同的按键上去,即按一个键执行一个操作步骤。如:“a”对应open操作,“b”对应claim操作,“c”对应setdeviceenable(true)操作。要执行一个完整的测试过程,就分步骤按相应的按键。要想执行不同的测试用例就按不同的顺序按相应的按键,这样就不再需要编写测试用例、编译、构建、下载,可以节约很多时间,测试效率得到很大提升。同时可以结合原有测试用例,让不同的按键对应到不同的(完整的)测试用例,这样不占用程序入口,同样可以实现并执行原来的测试用例。
(5)快速回归测试
bug修正后需要做回归测试,为了在目标环境上回归测试,必须经过以下步骤:
①从cvs更新最新源码;
②将java源码编译成c文件;
③构建elf文件;
④下载elf文件;
⑤执行测试用例做回归测试。
其中的步骤②~④将耗费很多时间。为了提升回归测试效率,将设备的deviceservices从elf文件中剥离出来,单独生成一个jar文件,如果只有deviceser-vices更新,只需要重新编译deviceservices的jar文件,不需更改elf文件。更新jar文件比更新elf文件从步骤及时间上都高效得多。
4 示例
(1)占用一个入口,加入键盘监听事件,如图2所示。
(2)在keyboardlistener中编写按键对应的测试用例或方法,如图3所示。
(3)编译构建elf文件。先编译evm,ejpos两个项目;编译romjavawin.c,nativefunctiontable.c用于构建elf(含evm,ejpos);在lambdaide下构建elf文件并优化;通过lboot下载到目标环境中。
(4)编译测试用例的jar文件。
(5)在目标机上根据按键执行不同的测试用例。
bug回归测试时,更新deviceservice的内容,重复步骤(5)即可完成回归测试。


华为鸿蒙系统怎么升级?
电力公司遇上物联网技术会有什么故事发生
新能源汽车:“双超”制霸局势亦非一日,未来谁会打破这一格局?
未来纯电动车型的电池密度和效率将会越来越高
点焊机的变压器你们了解吗
基于嵌入式芯片和操作系统的POSDouble测试研究
PLC程序移植具体是怎么操作的
三款经典7.4v锂电池充电电路图详解(7.4v锂电池充电芯片)
PCB设计软件输出装配图的3个方法
区块链智能经济怎样发展起来
太阳能电池充电器电路图
解析OPPO的UWB健康监控专利
智能家居所发展的多个方向哪一个才是正确的
石墨烯电池概念股排名_石墨烯电池概念股龙头一览
通信电源中的环境检测传感器有哪些?
哪些内存检测工具比较好
财富最受赞赏公司排行榜揭晓:苹果谷歌居首
谐波都来自哪里?都有何影响?如何抑制?
传真机中步进电机结构
温湿度传感器对药品的存储有着重大作用