Java Card小程序中的一个典型错误是将永久内存用于临时变量,而临时变量应该在RAM中。
这些错误会减慢小程序的运行速度,并导致一些严重的问题(例如Symptoms of EEPROM damage)。
单元测试很难发现这些bug。单元测试将applet作为黑盒访问,它们所能做的就是检查给定输入的输出。当然,它们可以测量时间并报告可疑的缓慢命令,但覆盖持久存储器中的单个字节所需的时间几乎与覆盖RAM中的单个字节的时间相同。
有没有办法消除这些bug(除了在编码时要小心)?我能否以某种方式检测EEPROM更改,以及在处理特定APDU时完成了多少更改?
当然,一个好的模拟器可以完成这项工作。然而,JCardSim (www.jcardsim.org)和恩智浦JCOP工具似乎都远远不能报告EEPROM使用统计数据。
您是否知道其他可能对我有帮助的工具或测试技术?
发布于 2020-02-13 16:01:49
可以实现测试命令,并且可以添加将返回可用内存的测试场景。这可以通过getAvailableMemory(byte memoryType);来实现
https://stackoverflow.com/questions/30783573
复制相似问题