② 屏蔽法(排除法)
当调试某个功能的代码时,为缩小查找范围,可以注释掉与其无关的其他代码,或者注释掉该段代码的某个分支,验证问题是否仍然存在,从而加快找到问题的根源。
③ 减少变量法
当排查一个复杂问题,变量较多时,需要尽量减少变量,提高问题排查效率。例如:浏览器升级新内核后内存占用增大,这个版本客户端有很多改动,不便于排查问题,因此可通过Demo对比的方式,对比Demo接入旧内核、新内核情况下的内存值(排除客户端对内存的影响)。
④ 单一变量法
每次只修改一个变量,查看修改后问题是否仍然出现,从而确定与问题有关的一个或几个变量。
3、寻找原因
① 日志打印:变量控制开关、Debug日志、日志正确性经过自测。
② “假设—验证—结论”:假设一个问题原因,明确验证原因的具体方法,进行验证并得出结论,根据验证结果继续下一轮假设。
错误修改的原则
1、不要试着改:不要当只查到了一些征兆,原因还没有查清,便想试着改动某个语句。这种盲目行为成功概率很小。因某些错误征兆的修改并没有治本。有时会把某些新的错误掺加到程序中,造成调试的混乱。
2、修改了一个错误,可能还会有别的错误:一般错误是密集的,修改了一个错误后,还应检查它的近邻还有没有别的错误,或者在程序中还有无类似的错误。
3、修改错误的过程将迫使人们暂时回到设计阶段:修改错误是程序设计的一个重要内容和形式。一般来说,在设计过程中所使用的各种方法应能应用于错误修改过程。
4、修改完毕,需进行回溯测试:因为——纠正错误的概率不是100%;纠正错误时可能引入新错误;修改代码比原有的代码更易出错。
源自公众号 软件测试启示录