为什么(以及如何)静态和动态测试相辅相成

软件测试 术语 静态测试 动态测试
2022-01-18 14:14:20

为什么(以及如何)静态和动态测试相辅相成?

4个回答

静态测试是审查程序代码而不执行它。其重点主要集中在以下方面:

  • 代码可维护性,即使代码更易于人类阅读;
  • 找出代码中的拼写错误和其他愚蠢的错误(如变量名中的拼写错误、一个错误等);
  • 审查程序员使用的算法。

虽然仅静态测试是不够的,但它是一种在开发周期早期防止错误的好方法。

以计算器程序的这个需求示例为例 -

计算器应该准确地做两个数字的除法。

在静态分析(测试)之后,您可能会说 - 要求不完整,因为它没有明确说明要进行小数点计算。如何进行舍入。在除以0场景等情况下会发生什么

但只有在动态测试之后你才能说,如果程序实际上 -

计算除法直到预期的小数点如果四舍五入操作正确如果确实显示了适当的提示以用于除以零的情况。

您是否看到在这种情况下静态和动态测试如何相互补充?

总的来说,我看到静态和动态测试都可以在软件生命周期中进行早期缺陷检测。

从开发人员的角度来看,静态测试是在不运行应用程序或代码本身的情况下对代码进行的测试。对代码执行静态测试的常用方法是运行代码分析工具(商业产品维基百科列表)或安全分析工具。

在更广泛的测试环境中,静态测试是不使用应用程序的任何形式的测试,这采用需求审查的常见形式。

与动态测试相比,静态测试提供的主要好处是,它发现的错误通常修复起来要便宜得多,并且可以在应用程序实际运行之前在 SDLC 的早期执行。

一旦应用程序在开发周期中取得了足够长的进展,通常会优先考虑静态测试。

我还希望测试人员只参与较晚的项目,在开发顺利进行之后,甚至可能不会考虑静态测试。

动态测试通常与测试软件某些常见动态方面的工具有关,例如检测内存泄漏、线程死锁、监控资源使用情况等。基本上这些工具会获得一个构建树(源文件、makefile)并独立处理它们——没有人需要自己定义测试。

静态和动态测试相辅相成,因为它们都测试目标,软件的共同方面与您的实现无关,但每个都使用不同的方法。

维基百科有一些工具示例