CN102662807A - 一种Java卡栈性能测试应用程序及其框架的制作方法 - Google Patents

一种Java卡栈性能测试应用程序及其框架的制作方法 Download PDF

Info

Publication number
CN102662807A
CN102662807A CN2012100645534A CN201210064553A CN102662807A CN 102662807 A CN102662807 A CN 102662807A CN 2012100645534 A CN2012100645534 A CN 2012100645534A CN 201210064553 A CN201210064553 A CN 201210064553A CN 102662807 A CN102662807 A CN 102662807A
Authority
CN
China
Prior art keywords
java
test
cap file
java card
card stack
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Pending
Application number
CN2012100645534A
Other languages
English (en)
Inventor
李莹
张凌飞
殷中科
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Zhejiang University ZJU
Original Assignee
Zhejiang University ZJU
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Zhejiang University ZJU filed Critical Zhejiang University ZJU
Priority to CN2012100645534A priority Critical patent/CN102662807A/zh
Publication of CN102662807A publication Critical patent/CN102662807A/zh
Pending legal-status Critical Current

Links

Images

Landscapes

  • Devices For Executing Special Programs (AREA)

Abstract

本发明提出一种Java卡栈性能测试应用程序及其框架的制作方法通过构建java语言编写的测试用源程序;在所述java源程序的基础上,添加循环体代码,通过编译、转换得到CAP文件;在所述CAP文件中定位“59XX01”的位置,然后向前定位“A5”的位置;根据JCVM字节码指令表将测试所需的栈操作相关的二进制代码添加入所述CAP文件中“A5”和“59XX01”之间;所述XX为java源程序中循环变量在循环测试函数作用域中的定义序号,通过在字节码层面对JavaCardCAP文件进行修改,生成的特殊JavaCardApplet可用于对Java卡栈操作进行直接测试,解决了常规JavaCardApplet无法准确测试Java卡栈性能的问题,且保证了Java卡栈性能测试结果的真实性。

Description

一种Java卡栈性能测试应用程序及其框架的制作方法
技术领域
本发明涉及智能卡技术领域,尤其是涉及一种Java卡栈性能测试应用程序及其框架的制作方法。
背景技术
近年来,Java智能卡以其良好的平台无关性、多应用的支持、良好的安全特性、面向对象的编程环境、应用开发的简易性、应用程序动态下载等优点,已经在社会生活的各个领域得到广泛的应用,在诸多领域有着广阔的应用前景。例如,国内地方金融银行卡业务发展十分迅速,全国220家发卡机构中有192家为地方金融机构,地方金融机构发卡量达3亿张,交易量占全国总量的五分之一左右。面对如此庞大的制卡系统,针对不同业务需求,选择合适的卡商对于决策者是一个艰难的选择。Java卡的这种局势促使卡片开发者和卡片供应商越来越注重于对Java卡性能的测试。
目前,市场上在Java卡运算、存取操作、稳定性、应用功能及基本安全等非物理性能的测试方面,多数采用PC/SC规范。PC/SC体系由三个主要部件组成:操作系统、读写器(IFD)、智能卡(ICC)。在测试的具体实现上较为通用的方法是,用java编写能够体现Java卡某项性能的测试小应用程序(JavaCardApplet),经过java编译器编译生成class文件,再由JCDK的转换器转为CAP文件,接着由卡外终端通过读卡器与Java卡连接,将JavaCard Applet安装到卡上,并发送一系列APDU命令对该Applet进行系统性测试,最后以卡内测试所耗时间作为Java卡性能指标。然而,由于JCVM的封装,Java卡开发者无法直接对一张现成的卡片进行栈操作。若要测试Java卡栈性能,将会涉及JCVM字节码测试,比如在字节码级修改JavaCard Applet。
事实上,Java卡栈操作是其整体性能评估的重要指标,这就要求在Java卡性能评估中必须对其栈性能进行测试,而且是独立的精确测试。据了解,目前对JCVM字节码的可测性研究方面,还没有一种有效的标准的方法,能够准确区分一条指令用于CPU上的时间和用于栈操作的时间。
发明内容
针对上述技术缺陷,本发明提出一种Java卡栈性能测试应用程序及其框架的制作方法。
为了解决上述技术问题,本发明的技术方案如下:
一种Java卡栈性能测试应用程序的制作方法,包括如下步骤:
1)构建java语言编写的测试用源程序;
2)在所述java源程序的基础上,添加循环体代码,通过编译、转换得到CAP文件;
3)在所述CAP文件中定位“59 XX 01”的位置,然后向前定位“A5”的位置;
4)根据JCVM字节码指令表将测试所需的栈操作相关的二进制代码添加入所述CAP文件中“A5”和“59 XX 01”之间;
所述XX为java源程序中循环变量在循环测试函数作用域中的定义序号。
进一步的,当所述CAP文件中“59 XX 01”的位置多余一个时,判断位置前是否存在大量成规律性重复的字节码来实现定位。
进一步的,通过在循环体内添加多条运算赋值语句使得最终产生的CAP文件具有足够的编程空间,通过采用变量交替赋值的方法,防止所述运算赋值语句被编译器优化。
进一步的,将所述CAP文件中“A5”和“59 XX 01”之间的区域的数据置为0,然后根据JCVM字节码指令表将测试所需的栈操作相关的二进制代码替换入所述CAP文件中“A5”和“59 XX 01”之间的0值,如果遇到测试空间不足时,则通过在步骤2)中增加适当的循环体代码后重新编译、转换实现测试空间的增加;反之将多余的区域保持0值。
本发明的有益效果在于:本发明在字节码层面对JavaCard CAP文件进行修改,生成的特殊JavaCard Applet可用于对Java卡栈操作进行直接测试,解决了常规JavaCard Applet无法准确测试Java卡栈性能的问题,且保证了Java卡栈性能测试结果的真实性。本发明提出一个制作JavaCard Applet的框架,利用该框架能方便地制作用于Java卡栈性能测试的JavaCard Applet,提高了Java卡栈性能测试的效率。在该框架中还能对栈操作指令进行多种组合,使测试具有多样性。
附图说明
图1是用于加法测试的java源程序基本结构图;
图2是循环体代码在cap文件中的定位和制作框架示意图。
具体实施方式
下面将结合附图和具体实施例对本发明做进一步的说明。
图1指出了一个以加法为基础的java源程序Sadd.java的基本结构,Sadd是一个继承于Applet的JavaCard小应用程序子类,函数process()负责处理APDU命令,当收到的命令类型为INS_SADD_TEST时,调用函数saddTest(),执行循环体代码的测试。该程序经过编译、转换后生成一个名为Sadd.cap的文件,本发明主要是对循环体代码在cap文件中的对应内容进行字节码指令修改,为了保证修改cap文件时不破坏文件的二进制结构,必须获得足够的编程空间。因此,在循环体内添加多条运算赋值语句(在本实施例中采用添加多条加法赋值语句进行说明)以致最终产生的cap文件具有足够的编程空间,同时为了防止这些java语句被编译器优化,采用3个变量交替赋值的方法使得每一条语句都依赖于它的前一句,将21至23行语句重复N遍,可得到3*N行java代码,然后对这个java进行编译转换,生成Sadd.cap。
图2示意了Sadd.java的基本结构的循环体代码在cap文件中的形式。一个JavaCard CAP文件是一个java源程序经过编译、转换而成的二进制流文件,内容为java源程序中java语句对应的JCVM字节码。可利用某些编辑软件(比如HexWorkshop)将cap文件打开查看:在图2左边部分中,椭圆内的“59 05 01”对应图1的java源程序循环体代码for语句中的“i++”;椭圆与粗边方框之间的所有字节码,对应java源程序中“a=(short)(b+c);b=(short)(a+c);c=(short)(b+c);”三条语句反复编写而成的循环体代码;粗边方框内的“A5 01 99”对应for语句中的if条件判断语句。当打开一个CAP文件时,首先定位到“i++”对应的位置:若java源程序中变量i的在循环测试函数作用域中的定义序号为XX(如图1的saddTest()函数体中pN、a、b、c的定义序号分别为01、02、03、04,则i的定义序号为05),那么可用编辑软件提供的“查找”功能搜索“59 XX 01”,此时可看到“59 XX 01”前面为大量成规律性重复的字节码(如图2中的“1E 1F 41 301D 1F 41 31 1E 1F 41 32 1E 1F 41 30 1D 1F 41 31 1E 1F 41 32……”),可根据图右边部分中细边方框内的“..A0..A1..A2..A0..A1..A2........”较容易的进行人为主观判断。由于这些字节码来自java源程序中循环测试语句的编译和转化,呈现的规律由测试语句的反复编写方法决定。一般“59 XX 01”只有一处,如出现多个,可根据其前面是否存在大量成规律性重复的字节码来判断,如果存在则是要求确定的位置。然后由此处向前搜索“A5”可定位到“A5 XX XX”,此时,“A5 XXXX”与“59 XX 01”之间即为java源程序循环体代码在cap文件中相应部分。
基于上述循环代码在CAP文件中的定位方法,本发明提出了一个JavaCardApplet框架的制作方法,该制作框架由图2左边部分中的粗边方框内字节码、椭圆内字节码以及两者之间的所有字节码组成。其中粗边方框和椭圆之间即为java源程序中循环执行语句在CAP文件中对应的字节码,是体现Java卡某项性能测试的主要部分。将该字节码所占的区域空间作为一个制作区,置该区域的数据为全0,对应的字节码为NOP,即空操作。然后可将测试所需的栈操作相关的二进制代码(可参照JCVM字节码指令表)填充至整个制作区空间,即可生成能进行栈性能测试的cap文件。若此框架的制作区空间不足时,可在java源程序循环体内增加适当的代码(比如在Sadd.java中循环体内增加加法语句),重新编译、转换,以生成合适的模板;反之,将多余空间保持零值。
以上所述仅是本发明的优选实施方式,应当指出,对于本技术领域的普通技术人员,在不脱离本发明构思的前提下,还可以做出若干改进和润饰,这些改进和润饰也应视为本发明保护范围内。

Claims (4)

1.一种Java卡栈性能测试应用程序的制作方法,其特征在于,包括如下步骤:
1)构建java语言编写的测试用源程序;
2)在所述java源程序的基础上,添加循环体代码,通过编译、转换得到CAP文件;
3)在所述CAP文件中定位“59 XX 01”的位置,然后向前定位“A5”的位置;
4)根据JCVM字节码指令表将测试所需的栈操作相关的二进制代码添加入所述CAP文件中“A5”和“59 XX 01”之间;
所述XX为java源程序中循环变量在循环测试函数作用域中的定义序号。
2.根据权利要求1所述的一种Java卡栈性能测试应用程序的制作方法,其特征在于,当所述CAP文件中“59 XX 01”的位置多余一个时,判断位置前是否存在大量成规律性重复的字节码来实现定位。
3.根据权利要求1所述的一种Java卡栈性能测试应用程序的制作方法,其特征在于,通过在循环体内添加多条运算赋值语句使得最终产生的CAP文件具有足够的编程空间,通过采用变量交替赋值的方法,防止所述运算赋值语句被编译器优化。
4.根据权利要求1所述的一种Java卡栈性能测试应用程序的框架制作方法,其特征在于,将所述CAP文件中“A5”和“59 XX 01”之间的区域的数据置为0,然后根据JCVM字节码指令表将测试所需的栈操作相关的二进制代码替换入所述CAP文件中“A5”和“59 XX 01”之间的0值,如果遇到测试空间不足时,则通过在步骤2)中增加适当的循环体代码后重新编译、转换实现测试空间的增加;反之将多余的区域保持0值。
CN2012100645534A 2012-03-13 2012-03-13 一种Java卡栈性能测试应用程序及其框架的制作方法 Pending CN102662807A (zh)

Priority Applications (1)

Application Number Priority Date Filing Date Title
CN2012100645534A CN102662807A (zh) 2012-03-13 2012-03-13 一种Java卡栈性能测试应用程序及其框架的制作方法

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
CN2012100645534A CN102662807A (zh) 2012-03-13 2012-03-13 一种Java卡栈性能测试应用程序及其框架的制作方法

Publications (1)

Publication Number Publication Date
CN102662807A true CN102662807A (zh) 2012-09-12

Family

ID=46772304

Family Applications (1)

Application Number Title Priority Date Filing Date
CN2012100645534A Pending CN102662807A (zh) 2012-03-13 2012-03-13 一种Java卡栈性能测试应用程序及其框架的制作方法

Country Status (1)

Country Link
CN (1) CN102662807A (zh)

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649009A (zh) * 2016-11-30 2017-05-10 北京中电华大电子设计有限责任公司 一种java卡字节码引用访问测试方法
CN106845225A (zh) * 2016-12-20 2017-06-13 北京中电华大电子设计有限责任公司 一种java卡帧的边界检查方法
CN108875376A (zh) * 2018-05-25 2018-11-23 北京中电华大电子设计有限责任公司 一种智能卡平台联合攻击的精准定位方法
CN109308263A (zh) * 2018-09-29 2019-02-05 北京云测信息技术有限公司 一种小程序测试方法、装置及设备

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN101976211A (zh) * 2010-09-26 2011-02-16 北京握奇数据系统有限公司 一种在cap文件中替换函数的方法、装置及系统
US8065662B1 (en) * 2007-03-30 2011-11-22 Oracle America, Inc. Compatibility testing of an application programming interface

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US8065662B1 (en) * 2007-03-30 2011-11-22 Oracle America, Inc. Compatibility testing of an application programming interface
CN101976211A (zh) * 2010-09-26 2011-02-16 北京握奇数据系统有限公司 一种在cap文件中替换函数的方法、装置及系统

Cited By (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
CN106649009A (zh) * 2016-11-30 2017-05-10 北京中电华大电子设计有限责任公司 一种java卡字节码引用访问测试方法
CN106845225A (zh) * 2016-12-20 2017-06-13 北京中电华大电子设计有限责任公司 一种java卡帧的边界检查方法
CN108875376A (zh) * 2018-05-25 2018-11-23 北京中电华大电子设计有限责任公司 一种智能卡平台联合攻击的精准定位方法
CN109308263A (zh) * 2018-09-29 2019-02-05 北京云测信息技术有限公司 一种小程序测试方法、装置及设备

Similar Documents

Publication Publication Date Title
Stockhammer Wage-led versus profit-led demand: what have we learned? A Kaleckian–Minskyan view
CN101601012B (zh) 具有场景支持的面向生成器图的编程框架
CN101589366B (zh) 面向生成器图的编程框架中的并行化和植入
CN109445842A (zh) 规则生成方法、装置、计算机设备和存储介质
CN101617292A (zh) 面向生成器图形的编程和执行
Lake et al. Use of factor analysis to develop OOP software complexity metrics
CN107133174A (zh) 测试用例代码自动生成装置与方法
CN104035873A (zh) 测试代码生成方法及生成装置
CN110287002A (zh) 一种以太坊虚拟机缺陷检测方法及系统
CN101650652B (zh) 一种业务流程开发的方法及装置
CN102799529A (zh) 一种动态的二进制代码测试用例生成方法
CN103605606B (zh) 一种可自动转换的嵌入式软件测试用例批量执行方法
CN104268074A (zh) 一种基于dcs系统应用软件在线调试方法
CN102662807A (zh) 一种Java卡栈性能测试应用程序及其框架的制作方法
CN101814052A (zh) 一种自动化测试的方法
CN108415708A (zh) 应用程序安装包大小的处理方法、装置、设备和存储介质
CN104391731A (zh) 一种基于c#的与数据类型无关的编辑方法
CN110413507A (zh) 系统测试方法、装置、计算机设备和存储介质
CN110008119A (zh) 报表测试方法、装置、计算机设备和存储介质
CN100504761C (zh) 在不同种类的体系结构中映射调试信息的方法
CN108196937A (zh) 字符串对象的处理方法、装置、计算机设备和存储介质
Zaman et al. Energy governance in resource-poor settings: The case of Bangladesh
Barbie et al. Assessing aggregate tests of efficiency for dynamic economies
CN103049313B (zh) 用于浏览器的标签关闭装置和方法
US7716646B2 (en) Loading a chain of processors from an XML file

Legal Events

Date Code Title Description
C06 Publication
PB01 Publication
C10 Entry into substantive examination
SE01 Entry into force of request for substantive examination
C12 Rejection of a patent application after its publication
RJ01 Rejection of invention patent application after publication

Application publication date: 20120912