移动应用软件测试技术与实践
上QQ阅读APP看本书,新人免费读10天
设备和账号都新为新人

2.3 静态测试和动态测试

白盒测试可分为静态测试和动态测试。静态测试和动态测试的相关内容如下。

1.静态测试

静态测试是一种不通过执行软件而进行测试的技术,它仅通过分析或检查源软件的文法、结构、过程、接口等来检查其正确性。静态测试从项目立项即可开始,并且贯穿整个测试过程。

最常见的静态测试目的是找出源代码的语法错误,可由编译器来完成。因编译器可逐行分析检验软件的语法,找出错误并报告;除此之外,测试人员须采用人工方法来检验软件,主要有代码检查法、静态结构分析法等。

静态测试可以帮助识别代码中的缺陷,测试由具有良好编码知识且训练有素的软件开发人员进行,这也是查找和修复缺陷的快速简便方法。静态测试可以使用自动化工具,使扫描和查看软件变得非常快。通过静态测试可以在开发生命周期的早期阶段发现缺陷,从而降低修复成本。但是静态测试通过手动完成,需要大量时间,而特定的自动化工具仅适用于少数编程语言,并且可能会出现误报和漏报;另外,自动化工具仅扫描代码,无法查明可能在运行时产生问题的缺陷。

2.动态测试

在动态测试中,执行代码以检查软件在运行时环境中的执行方式,测试其功能行为,以及CPU使用情况和整体性能等。动态测试的目的是确保最终产品的设计符合客户提供的业务要求,也称为“验证”或“执行测试”。

最常见的动态测试技术有单元测试、集成测试、系统测试、验收测试和回归测试等。

动态代码分析有助于识别运行时环境中的薄弱区域,即使测试人员没有实际代码,动态测试也支持应用软件分析。它确定了静态代码分析难以找到的薄弱环节,允许验证静态代码分析结果,还可以应用于任何应用软件。但动态代码分析也受到了一定限制,自动化工具可能会给出错误的结果,产生误报和漏报。动态测试使用预期结果验证输出,可在所有级别进行,可以是黑盒或白盒测试。

3.静态测试与动态测试的主要区别

(1)静态测试用于预防,动态测试用于矫正。

(2)多次的静态测试比动态测试效率高。

(3)静态测试综合测试软件代码。

(4)在相当短的时间内静态测试的覆盖率能达到100%,而动态测试经常只能达到50%左右。

(5)动态测试比静态测试更费时间。

(6)静态测试比动态测试更能发现缺陷。

(7)静态测试的执行可以在软件编码编译前,动态测试只能在编译后才能执行。