Java Card applet中的典型错误之一是将持久性存储器用于应该位于RAM中的临时变量。
这些错误会降低applet的速度,并引起一些严重的麻烦(例如Symptoms of EEPROM damage。
单元测试几乎无法揭示这些错误。单元测试将小程序作为黑箱访问,而他们所能做的就是检查给定输入的输出。它们可以测量时间并报告可疑的慢速命令,但是,覆盖持久性存储器中的单个字节几乎与覆盖RAM中的单个字节所需的时间相同。
除了编码时要小心,有没有其他方法可以消除这些错误?我能以某种方式检测到EEPROM的变化,并且在处理特定的APDU时完成了多少变化?
当然,好的模拟器可以胜任。但是,JCardSim(www.jcardsim.org)和NXP JCOP Tools似乎都无法报告EEPROM使用统计信息。
您知道其他可以帮助我的工具或测试技术吗?
可以执行测试命令并可以添加测试方案,这将返回可用内存。可以通过getAvailableMemory(byte memoryType);