考 点:静态测试的价值
以下哪-一个静态测试的描述是正确的?
A. 检测和移除缺陷的成本低
B. 它可以使动态测试面临更少的挑战
C. 它可以尽早地发现在生命周期中运行的问题
D. 在测试安全关键系统时,静态测试价值小,因为动态测试比它更容易发现缺陷
答案:见下方评论区
知识点:静态测试基础
与动态测试相比,静态测试依赖于软件工作产品的手动检查(即评审),或工具驱动的代码或其他软件工作产品的评估(即静态分析)。两种类型的静态测试都会评审正在测试的代码或其他软件工作产品,而无需实际执行所测试的代码或软件工作产品。
静态分析对于安全关键的计算机系统(例如,航空,医疗或核控制软件)很重要,但静态分析在其他环境中也变得重要和常见。例如,静态分析是安全测试的重要部分。静态分析通常也包含在自动软件构建和分布式工具中,例如,在敏捷开发,持续交付和持续部署中。
3.1.1. 由静态测试检查的软件工作产品
几乎所有软件工作产品都可使用静态测试(评审和/或静态分析技术)进行检查,例如:
规格说明,包括业务需求、功能需求和安全性需求史诗、用户故事和验收准则架构和设计规格说明代码测试件,包括测试计划、测试用例、测试规程和自动化测试脚本用户手册web 网页合同、项目计划、进度表和预算计划配置设置以及基础设施的设置模型,如可用于基于模型测试的活动图评审可应用于任何工作产品,只要参与者能够阅读和理解这些工作产品。静态分析技术可有效地应用于具有规范结构(典型代表有代码或模型)的任何软件工作产品,可运用适当的静态分析工具。
静态分析技术甚至可借助工具评估以自然语言编写的工作产品,如需求(例如,检查拼写、语法和可读性)。
3.1.2. 静态测试的好处
静态测试技术提供了多种好处。当在软件开发生存周期的早期应用静态测试,就能够在开展动态测试之前尽早地检测缺陷(例如,在需求或设计规格说明评审,待办事项列表的细化工作等)。
早期发现的缺陷通常比软件开发生存周期后期发现的缺陷经济得多,特别是与软件部署和使用后发现的缺陷相比。
使用静态测试技术来发现缺陷然后及时修复这些缺陷几乎总是比使用动态测试在测试对象中发现缺陷然后修复它们所花费的成本要低得多,特别是在考虑到更新其他软件工作产品以及开展确认和回归测试的额外成本。
静态测试的其他好处可能包括:
在动态测试执行之前,更高效地检测和修复缺陷识别动态测试不易发现的缺陷通过发现需求中的不一致、含糊不清、矛盾、遗漏、不准确和冗余来防止设计或编码缺陷提高开发效率(例如,由于改进的设计、更易于维护的代码)降低开发成本和时间降低测试成本和时间减少在软件开发生存周期后期或上线运营后失效,从而降低了软件在整个生存周期内的总的质量成本7.在参与评审过程中改善团队成员之间的沟通
3.1.3. 静态测试和动态测试的差异
静态测试和动态测试可以具有相同的目标,例如提供对工作产品质量的评估并尽早识别缺陷。静态和动态测试通过发现不同类型的缺陷来相互补充。
静态测试和动态测试的一个主要区别在于静态测试直接发现软件工作产品中的缺陷,而动态测试是在运行软件时识别由缺陷引起的失效。
缺陷可以在软件工作产品中存在很长时间而不会导致失效。缺陷所在的路径可能很少被执行或难以到达,因此设计并执行动态测试去发现这样的缺陷并不容易。静态测试可能付出更少的工作量就能找到缺陷。
另一个区别是静态测试可用于提高软件工作产品的一致性和内部质量,而动态测试通常侧重于外部可见行为。
与动态测试相比,通过静态测试可以更早期更经济的发现和修复一些典型的缺陷,包括:
需求缺陷(例如:不一致、含糊不清、矛盾、遗漏、不准确和冗余)设计缺陷(例如:低效算法或数据库结构、高耦合、低内聚)代码缺陷(例如:未定义值的变量、已声明但从未使用的变量、无法访问的代码、重复的代码)与标准的偏差(例如:未完全遵循编码规范)错误的接口规格说明(例如:主叫系统使用的测量单位与被叫系统不同)安全漏洞(例如:对缓冲区溢出的敏感性)测试依据的可追溯性或覆盖率的差距或不准确性(例如:针对验收准则缺少测试)此外、大多数类型的维护性缺陷只能通过静态测试才能被发现(例如:没有很好的模块化、组件的可重用性较差、难以分析的代码以及很难保证修改代码而不引入新缺陷
还没有评论,来说两句吧...