美文网首页
测试如何进行代码走查?

测试如何进行代码走查?

作者: 时间的磨练lolo | 来源:发表于2019-05-15 10:53 被阅读0次

(1)测试为什么要做代码走查?测试真的需要做代码走查么?

话说开发同学进行代码走查是因为把缺陷扼杀在摇篮里,那测试同学进行代码走查有何意义?下面和大家分享下我对这一块儿的理解:

测试代码走查目的:

1、了解代码逻辑,补充测试设计欠缺部分。

2、确认是否有公共函数等变更,进行影响范围评估;

3、尽量发现bug;

4、确认是否有非迭代代码;

测试代码走查流程:

测试代码走查checklist

进阶代码走查项

1、编程规范

(1)按照具体编程语言的编码规范进行检查,包括命名规则、程序注释、缩进排版、声明与初始化、语句格式等;

2、面向对象设计

(1)类的设计和抽象是否合适;

(2)是否符合面向接口编程的思想;

(3)是否使用合适的设计模式;

3、性能方面

(1)在出现海量数据时,队列、表、文件在传输、上载等方面是否会出现问题,是否控制如分配的内存块儿大小、队列长度等;

(2)对hashtable、vector等集合类数据结构的选择和设置是否合适;

(3)有无滥用string对象的现象;

(4)是否采用通用的线程池、对象池等高速缓存技术以提高性能;

(5)类的接口是否定义良好,如参数类型等应避免内部转换;

(6)是否采用内存或硬盘缓冲机制以提高效率?

(7)并发访问时的应对策略;

(8)I/O方面是否使用了合适的类或采用良好的方法以提高性能(如减少序列化、使用buffer类封装流等);

(9)同步方法的使用是否得当,是否过度使用?

(10)递归方法中的迭代次数是否合适(应保证在合理的栈空间范围内);

(11)如果调用了阻塞方法,是否考虑了保证性能的措施。

(12)避免过度优化,对性能要求高的代码是否使用profile工具;

4、资源释放处理

(1)分配的内存是否释放,尤其在错误处理路径上(如c/c++);

(2)错误发生时是否所有对象被释放,如数据库链接、socket、文件等;

(3)是否同一个对象被释放多次(如c/c++);

(4)代码是否保存准确的对象引用计数;

5、程序流程

(1)循环结束条件是否准确;

(2)是否避免了死循环的产生;

(3)对循环的处理是否合适,应考虑到性能方面的影响;

6、线程安全

(1)代码中所有的全局变量是否是线程安全的;

(2)需要被多个线程访问的对象是否线程安全,检查有无通过同步方法保护;

(3)同步对象上的锁是否按相同的顺序获得和释放避免死锁,注意错误处理代码;

(4)是否存在可能的死锁或是竞争,当用到多个锁时,避免出现类似情况:线程a获得锁1,线程b获得锁2,然后锁1;

(5)在保证线程安全的同时,注意避免过度使用同步,导致性能降低;

7、数据库处理

(1)数据库设计或sql语句是否便于移植(注意与性能会存在冲突);

(2)数据库资源是否正常关闭或释放;

(3)数据库访问模块是否正确封装,便于管理和提高性能;

(4)是否采用合适的事务隔离级别;

(5)是否采用存储过程以提高性能;

(6)是否采用preparedstatement以提高性能;

8、通讯方面

(1)socket通讯是否存在长期阻塞问题;

(2)发送接收的数据流是否采用缓冲机制;

(3)socket超市处理和异常处理;

(4)数据传输的流量控制问题;

9、JAVA对象处理

(1)对象生命周期的处理,是否对象引用已失效可设置null并被回收;

(2)在对象传值和传参方面有无问题,对象的clone方法使用是否过度;

(3)是否大量经常的创建临时对象;

(4)是否尽量使用局部对象(堆栈对象);

(5)在只需要对象引用的地方是否创建了新的对象实例;

10、异常处理

(1)每次当方法返回时是否正确处理了异常,如最简单的处理是记录日志到日志文件中;

(2)是否对数据的值和范围是否合法进行校验,包括使用断言;

(3)在出错路径上是否所有的资源和内存都已经释放;

(4)所有抛出的异常是否都得到正确的处理,特别是对子方法抛出的异常,在整个调用栈中必须能够被捕捉并处理;

(5)当调用导致错误发生时,方法的调用者应该得到一个通知;

(6)不要忘了对错误处理部分的代码进行测试,很多代码在正常情况下执行良好,而一旦出错整个系统就崩溃了;

11、方法(函数)

(1)方法的参数是否都做了校验;

(2)数组类结构是否做了边界校验;

(3)变量在使用前是否做了初始化;

(4)返回堆对象的引用,不要返回栈对象的引用;

(5)方法的api是否被良好定义,即是否尽量面对接口编程,以便于维护和重构;

12、安全方面

(1)对命令行执行的代码,需要详细检查命令行参数;

(2)WEB类程序检查是否对访问参数进行合法性验证;

(3)重要信息的保存是否选用合适的加密算法;

(4)通讯时考虑是否选用安全的通讯方式;

13、其他

(1)日志是否正常输出和控制;

(2)配置信息如何获得,是否有硬编码;

测试代码走查报告

记录走查过程中发现的问题,整理自己走查的思路;

总结

测试到底需不需要进行代码走查不重要,重要的是测试的职责是保证质量,如果能更深入,更早的发现问题,何乐而不为呢?

ps:此类走查更适合迭代项目,新项目/重构项目仅供参考!

相关文章

  • 测试如何进行代码走查?

    (1)测试为什么要做代码走查?测试真的需要做代码走查么? 话说开发同学进行代码走查是因为把缺陷扼杀在摇篮里,那测试...

  • 测试人员代码走查基础要点

    代码走查,是测试人员了解代码逻辑,进行测试设计的重要环节。并且有很多bug并非需要到运行程序进行测试才能发...

  • Responsive测试

    Responsive测试 如何使用Galen进行响应式测试 使用Javascript编写测试代码 完整代码:htt...

  • 测试参与的项目过程

    测试走查,是每个测试工程师的日常工作: 版本迭代前,通过测试走查,发现现有产品的已知功能问题; 版本进行中,通过测...

  • 关于代码走查和代码审查

    代码走查和代码审查是白盒测试方法中的2种。 代码走查: 从参加人员来说,应该是项目的整体参与者,如果项目太大,整体...

  • 软件测试扫盲【教科书级】

    按测试技术划分 黑盒测试、白盒测试、灰盒测试 被测试对象是否运行 动态测试、静态测试 (文档检查、代码走查) 按不...

  • 代码走查

    目标:体系架构/设计:单一职责原则:每个类应该有且只有一个职责。更甚于此,我一般会将此原则应用于方法之上。对于某个...

  • 代码走查究竟该关注什么(三)

    在探讨完代码走查的“姿势”和“周边”后,终于要和如何落地代码走查见面了,如果说以前聊的还只是一些理论、招式的话,现...

  • junit搭配hamcrest使用

    开篇 快速进行软件编码,与功能测试应该是每个写代码的人,应该掌握的技能,如何进行优雅的写代码,把测试的时间压缩,腾...

  • 代码走查究竟该关注什么(二)

    上一篇讲到代码走查是为了写出更好的代码,提到了“望、闻、问、切”四种走查姿势,这次我们聊一聊代码走查的“周边”。 ...

网友评论

      本文标题:测试如何进行代码走查?

      本文链接:https://www.haomeiwen.com/subject/ebiuaqtx.html