软件调试是为了解决软件中存在的缺陷,是为了解决问题(bug)。
软件的问题通过测试来发现。
软件的问题分为两类:软件功能的正确性、软件的健壮性。
一、软件功能不正确产生的原因有三种:1)数据不准确 2)算法不准确 3)流程不准确。
数据不准确的原因:1)算法不准确;2)数据的类型精度有问题;3)数据类型没有考虑到系统位数。
[NSDate dateWithTimeIntervalSince1970:[tradeTime floatValue]/1000];
[NSDate dateWithTimeIntervalSince1970:[receiveTime integerValue]/1000];
算法不准确原因:1)算法设计有问题;2)系统库对算法不支持(iOS的RSA算法)。
流程不准确:程序没有严格按照需求文档的流程开发;或者对流程的case考虑不全面。
二、软件的健壮性
软件的健壮性出现问题的特征:1)软件崩溃;2)对非法输入没有处理;
产生的原因有三种:1)非法输入未处理;2)访问非法数据;3)访问越界;
1)和3)属于防御性编程的概念;
2)数据对象的生命周期管理的概念。
三、软件的性能
软件的性能问题也是算法的问题;可以通过调试来找到算法瓶颈并改进。