绵阳做网站的公司有哪些,免费网站建设特色,做室内设计人喜欢的网站,wordpress访问子网站摘要#xff1a;UnifiedPOS和其衍生的JavaPOS标准#xff0c;对收款机的硬件设备进行了规范。利用JUnit单元测试工具对嵌入式JavaPOS系统的设备接口进行了白盒测试#xff0c;分析了市场主流收款机的不足#xff0c;给出了嵌入式收款机的测试方法和测试用例POSDouble。测试…摘要UnifiedPOS和其衍生的JavaPOS标准对收款机的硬件设备进行了规范。利用JUnit单元测试工具对嵌入式JavaPOS系统的设备接口进行了白盒测试分析了市场主流收款机的不足给出了嵌入式收款机的测试方法和测试用例POSDouble。测试结果表明嵌入式JavaPOS系统成功地引入了JavaPOS规范规范了各种外围设备的接口定义由于采用Java语言解决了移植性、动态加载、安全性等很多方面的问题。关键词嵌入式系统税控收款机JavaPOSARM0 引 言 随着嵌入式计算机应用技术的发展嵌入式技术已经广泛应用到现代生活的方方面面。在零售系统方面零售收款机是嵌入式应用的一个重要领域。目前市场上的收款机大体上可分为三类第一类是基于PC和DOSWindows体系的这类产品目前占市场绝大多数属于高端产品价格太高适合大的商场和销售系统第二类是基于单片机(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的开发人员独立开来使得请求的一方不必知道接收请求一方的详细信息更不必知道是怎样被接收以及怎样被执行的实现系统的松耦合。[!--empirenews.page--] JunitFramework包中包含了JUnit测试类所需要的所有基类实际上这个包也是整个JUnit的基础框架。TestCase类是这个包的核心类测试人员对TestCase类进行继承开发自己的类测试驱动程序。其余的类用来支援这个TestCase类比如TestSuite用类聚合多个测试用例(Testcase)Assert类实现期望值和实际值的验证TestResult收集所有测试用例执行后的结果。Test接口是这个包的关键所在它建立了TestCase和TestSuite之间的关联同时为整个框架做了扩展预留。在J2SE下简单应用举例 右击项目名称选择新建→JUnit测试用例 (运行)调试方式→JUnit测试。图1为运行结果。 JUnit在J2SE下可以很好地应用但是在J2ME下应用存在比较大的困难因为在J2ME下没有反射机制。在实际测试中可以利用其优点来最大地发挥。2 POSDouble测试 由于MIDP 10下不支持浮点数(float)运算因此必须开发适合J2ME下的浮点数运算方法。这里主要实现了以下方法这些方法的测试都是通过JUnit进行的白盒测试测试数据的选择主要是根据市场的实际需求设定保证了现阶段的实际需求而在MIDP 20下可以支持浮点数的运算无须自己开发浮点数运算的方法。 类名POSDouble主要是用于浮点数计算主要测试以下方法 POSDouble将字符串转换为POSDouble数。 POSDoubleAdd加法。 POSDoubleSub减法。 POSDoubleMult乘法。 POSDoubleDiv除法。 POSDouble isMax比较浮点数大小。 POSDouble tolong将POSDouble数转化成长整数。 POSDouble测试用例(以POSDoubleAdd加法为例) 3 通用接口测试 由于POSDouble是在J2SE下开发的所以使用了JUnit工具而其他接口函数是在J2ME下开发的所以接口的测试采用了MUnit(JUnit的子集)工具。MUnit工具的使用方法、规则请参考《MUnit测试集编写规范》。 (1)测试框架 目录结构的总原则是源代码目录与测试代码目录分离互不干扰测试代码目录与源代码目录的分支结构一致便于查找、维护。 (2)仿真环境测试执行流程 首先编写测试代码测试代码尽量放在与源代码相对应的测试目录中。修改测试程序入口如使用ePossetFunctionFormFactory。 (3)目标环境测试执行流程 编写测试代码修改测试程序入口构建测试代码的Jar文件下载Jar文件到目标机运行。 (4)测试捷径 通常情况下在目标环境下测试需要先编写测试用例、再编译、再下载、再运行如果突然想到一个测试用例又需重复上述操作步骤就会非常耗时。为了增强测试的灵活性可以加入键盘监听事件。首先编写键盘监听类将所有的测试单步对应到不同的按键上去即按一个键执行一个操作步骤。如“a”对应open操作“b”对应claim操作“c”对应setDeviceEnable(true)操作。要执行一个完整的测试过程就分步骤按相应的按键。要想执行不同的测试用例就按不同的顺序按相应的按键这样就不再需要编写测试用例、编译、构建、下载可以节约很多时间测试效率得到很大提升。同时可以结合原有测试用例让不同的按键对应到不同的(完整的)测试用例这样不占用程序入口同样可以实现并执行原来的测试用例。[!--empirenews.page--] (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文件。先编译evmejpos两个项目编译ROMJavaWincNativeFunctionTablec用于构建Elf(含evmejpos)在LambdaIDE下构建Elf文件并优化通过LBOOT下载到目标环境中。 (4)编译测试用例的Jar文件。 (5)在目标机上根据按键执行不同的测试用例。 bug回归测试时更新DeviceService的内容重复步骤(5)即可完成回归测试。时间2009-07-13