静态测试和动态测试浅析

发表于:2011-6-15 10:14

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:赖因斯坦(sinablog)    来源:51Testing软件测试网采编

  静态测试

  静态方法是指不运行被测程序本身,仅通过分析或检查源程序的文法、结构、过程、接口等来检查程序的正确性。静态方法通过程序静态特性的分析,找出欠缺和可疑之处,例如不匹配的参数、不适当的循环嵌套和分支嵌套、不允许的递归、未使用过的变量、空指针的引用和可疑的计算等。静态测试结果可用于进一步的查错,并为测试用例选取提供指导。

  动态测试

  动态方法是指通过运行被测程序,检查运行结果与预期结果的差异,并分析运行效率和健壮性等性能,这种方法由三部分组成:构造测试实例、执行程序、分析程序的输出结果。

  它们只是一个测试的不同分类角度而已,同一个测试,既有可能属于黑盒测试,也有可能属于测试;既有可能属于静态测试,也有可能属于白盒测试。而且它们之间还有包括交叉的关系,总结以下4句话:

  ● 黑盒测试有可能是动态测试(运行程序,只看输入和输出),也有可能是静态测试(不运行程序,只是查看界面)

  ● 白盒测试有可能是动态测试(运行程序,并分析代码结构),也有可能是静态测试(不运行程序,只是静态查看代码)

  ● 动态测试有可能是黑盒测试(运行程序,只看输入和输出),也有可能是白盒测试(运行程序,并分析代码结构)

  ● 静态测试有可能是黑盒测试(不运行程序,只是查看界面),也有可能是白盒测试(不运行程序,只是静态查看代码)

  区别一:静态测试是用于预防的,动态测试是用于矫正的

  区别二:多次的静态测试比动态测试要效率和效益高

  区别三:静态测试综合测试程序代码

  区别四:在相当短的时间里,静态测试的覆盖度能达到100%,而动态测试经常是只能达到50%左右,原因动态测试发现的bug大部分只是在测试实际执行的那部分代码

  区别五:动态测试比静态测试更花时间

  区别六:静态测试比动态测试更能发现 bug

  区别七:静态测试的执行可以在程序编码编译前,动态测试只能在编译后才能执行

  区别八:静态测试能发现动态测试所不能发现的一些:“Syntax error,code that hard to maintain,code that hard to test,code that does not confirm to coding standard, and ANSI violations”

  静态测试的和动态测试浅析

  根据程序是否运行,测试可以分为静态测试和动态测试。静态测试就是静态分析,对模块的源代码进行研读,查找错误或收集一些度量数据,并不需要对代码进行编译和仿真运行。静态测试采用人工检测和计算机辅助静态分析手段进行检测,只进行特性分析。

  ● 人工检测:人工检测是指不依靠计算机而完全靠人工审查或评审软件。人工检测这种方法可以有效地发现逻辑设计和编码错误,发现计算机不易发现的问题。

  ● 计算机辅助静态分析:利用静态分析工具对被测程序进行特性分析,从程序中提取一些信息,以便检查程序逻辑的各种缺陷和可疑的程序构造。如用错的局部变量和全局变量,不匹配的参数,潜在的死循环等。静态分析中还可以用符号代替数值求得程序结果,阻便对程序进行运算规律的检验。

  静态测试包括对软件产品的设计规格说明书的审查,对程序代码的阅读、审查等。静态分析的查错和分析功能是其他方法所不能替代的.已被当做一种自动化的代码校验方法。

  动态测试是通过观察代码运行时的动作,来提供执行跟踪、时间分析,以及测试覆盖度方面的信息。动态测试通过真正运行程序发现错误。通过有效的测试用例,对应的输入脚出关系来分析被测程序的运行情况。

  不同的测试方法各自的目标和侧重点不一样,在实际工作中。应将这两种方法结合起来运用,以达到更完美的效果。

  以上的测试方法各有所长,每种方法都可设计出一组有用的例子,用这组测试用例可以比较容易地发现某种类型的错误,却不易发现另一种类型的错误。因此在实际测试中,应结合各种测试方法,形成综合策略。在单元测试主要用白盒测试;在系统测试时主要用黑盒测试,或者以黑盒测试为主要测试方法,白盒测试为辅助方法等。

《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号