在测试的过程中,有时会针对一些前端的代码片段进行走读,发现一些潜在的bug。但是回顾这个过程,发现基本是纯天然的走读,没有代码走读的一些标准或流程作为参考,于是上网搜了一些资料,希望可以在以后的实践中能将代码走读规范应用完善起来。
测试进行代码走读的意义有哪些?
1.发现bug
2.确认公共函数是否变更,评估影响范围,加强影响范围的功能测试
3.扩展了定位问题的思路
4.了解功能内部实现,更加熟悉功能
5.增强测试质量的信心
代码走读要注意哪些事情?
设计
本次变更的代码段与系统的其他部分可以良好地集成吗?这个变更应该属于代码库,还是属于某个包?现在是引入这个变更的好时机吗?
在设计层面上,我理解的是整个代码的架构设计、设计模式方面的东西。具体到实践中的例子,有一些新增的方法可能会影响之前的方法的逻辑,有逻辑重复的地方,需要对两个方法做已调整。或者暂时不用的变量是否需要出现之类的。在这块,我暂时不能提出什么更好的建议,究其原因,还是编程能力太弱,如果熟悉这个东西,提不出更多好的建议也是可想而知的事情。
功能
功能是否正确,逻辑是否全面合理,是否有异常处理,是否对数据的值和范围是否合法进行校验,是否有并发问题等
对于这一块,我认为测试可以做很多工作。对于功能实现,可以查看是否和需求、设计文档或接口文档描述一致,对于一些逻辑分支,可以查看(有流程图的可参考流程图)是否覆盖了所有的逻辑分支、逻辑判断的表达式是否正确。
命名
开发人员是否使用了良好的命名方式?好的命名要能够充分表达一个项(变量、类名等)是什么或者用来做什么,但又不至于让人难以阅读。
这块也可以大概查看一下,看看命名是否有意义,是不是有相似命名的方法或接口,会有混淆之类的。
搜到一个js命名规范,可以看一下:
js命名规范
注释
开发人员有没有用自然语言写出清晰的注释?他们所写的注释都是必需的吗?
这块在逻辑比较复杂、或者重点方法(别的代码中会经常使用)需要详细而且清晰的注释,便于别人阅读。
文档
确保代码实现和相关文档保持一致。
日志
是否记录了关键日志,方便定位问题。
测试
是否有适当的单元测试。
复杂度
是否难以理解,或者过度设计。
综上,测试中可以针对功能(逻辑、数据合法性校验、异常处理)、命名、注释、文档、日志等进行关注。
代码走读进阶
可在以下链接中查看:
代码走读原则
测试如何进行代码走查?
这些文章分别从程序结构、函数检查、资源、服务、架构、程序流程、性能、线程安全、数据库处理等方面做了详细的描述。
目前要全部达到这些还很难,但是有些还是可以来使用和实践,可以向这些方向去思考,看代码中有没有先关的问题。
不同的语言、不同的框架有通用的一些东西,也有自己特别的点,不可能有统一的规范,找到并完善适合的规范流程显得很重要,继续在实践中总结吧。
网友评论