我们会对软件的所有代码进行动态测试,是不是就不需要对代码进行静态分析了? -凯发官方首页

我们会对软件的所有代码进行动态测试,是不是就不需要对代码进行静态分析了?
问题4. 我们会对软件的所有代码进行动态测试,包括单元测试、集成测试和回归测试,是不是我们就不需要对代码进行静态分析了?
 
:不是的,代码的动态测试和静态分析是两种截然不同的测试方法,他们的测试原理不同,测试代码中的问题也不同,对代码质量提升所起的作用也不同。对代码进行在充分的动态测试,也无法取代对代码的静态分析工作。
        对代码的动态测试,通常是指通过运行代码,观察代码执行的动作,比较代码的实际运行结果和预期结果,从而判断代码的逻辑功能是否正确,并了解代码覆盖度等方面的信息。
        对代码的静态测试,通常是指通过对代码进行研读,查找一些潜在缺陷或收集一些度量数据,无需对代码进行编译和运行。
        通过代码动态测试和静态测试的原理可以看到,它们的运行原理和测试的内容都有明显的区别。下面详细说明一下代码动态测试和静态分析的不同:
        1. 代码动态测试应该开始于已经完成代码编写的阶段,因为在这个阶段代码才可以正常运行,因此才能判断其逻辑是否正确;而对代码进行静态分析不需要执行代码,所以静态分析工作应该开始于开始写代码的阶段,这样可以尽快发现代码中的潜在缺陷,减少修复bug所消耗的成本;
        2.测试人员是对代码进行动态测试的主力人员,他们需要根据代码的设计文档尽可能地设计出各种合理的测试用例,用来排查代码中的逻辑错误;而开发人员是对代码进行静态分析的主力人员,他们需要确保生产出高质量的代码,在代码进行动态测试之前尽可能地排除那些由于代码不规范、逻辑过于复杂、可读性差、可测试性差等原因所带来的潜在缺陷,通过对代码的静态分析,既有效减少了动态测试过程中所发现的bug数量,同时也能够明显节省修复bug所需要的时间。
        3.动态测试的测试内容偏向于代码的功能、可靠性、可用性和高效性;而静态分析更关注与代码的可靠性、可测试性、可维护性和轻便性。
        4.动态测试的前提是需要人为提供一些测试用例,因此动态测试效果很大程度上取决于这些测试用例。由于人工无法穷举所有可能的测试用例,所以动态测试工作也无法覆盖到所有的测试用例;而静态分析不需要测试用例作为前提,它仅需要我们确定按照什么样的编码规范或者标准(如misra标准、gjb5369标准等)对代码检查,就能对代码进行非常全面的分析,在不需要人工参与的情况下就能够发现很多的代码缺陷。
        由此可见,代码静态分析和动态测试分别侧重于对代码不同方面的测试,从测试阶段上来说,应该优先进行代码静态分析,在进行动态测试,才能在对大程度上优化测试工作,获得良好的测试效果。
 

 

凯发官方首页-凯发娱乐登录
用户登录
用户注册
*

请输入您常用的邮箱地址,错误的地址将影响功能使用

*
*
*
    性别    男   
*
网站地图