3.1静态测试基础

与需要运行被测软件的动态测试不同,静态测试依赖于对工作产品的手工检查(即评审)或对代码或其他工作产品的工具驱动的评估(即静态分析)。静态测试的两种类型都评估代码或被测的其他工作产品,而不是实际运行被测代码或工作产品。
静态分析对于安全关键的计算机系统(如航空、医疗或核软件)很重要,但静态分析在其他环境中也变得重要和普遍。例如:静态分析是安全测试的一个重要组成部分。静态分析也经常被纳入自动化构建和交付系统,例如在敏捷开发、持续交付和持续部署中。
3.1.1 静态测试可以检查的工作产品
几乎所有工作产品都可以使用静态测试(评审和/或静态分析)来检查,例如:
• 规格说明,包括业务需求、功能需求和安全需求
• 史诗、用户故事和验收准则
• 架构和设计规格说明
• 代码
• 测试件,包括测试计划、测试用例、测试规程和自动测试脚本
• 用户指南
• 网页
• 合同、项目计划、时间进度表和预算
• 可用于基于模型测试的模型,如活动图(见ISTQB-MBT基础级基于模型的测试人员扩展大纲和Kramer 2016)
评审可以应用于参与者能阅读和理解的任何工作产品。在有适当的工具支持的情况下,静态分析可以有效地应用于任何具有正式结构(通常是代码或模型)的工作产品,假如针对这些工作产品存在适当的静态分析工具。静态分析通过工具,甚至可以应用在评估用自然语言写的工作产品上,例如需求(例如拼写、语法和可读性检查)。
3.1.2 静态测试的收益
静态测试技术可以带来各种好处。软件开发生命周期早期应用静态测试,可以在动态测试之前及早发现缺陷(例如:在需求或设计规格说明评审、产品代办列表改进等方面)。早期发现缺陷通常比生命周期后期发现缺陷的修复的成本低得多,特别是与软件部署和实际使用后发现的缺陷相比。使用静态测试技术发现缺陷,然后迅速修复这些缺陷,对组织而言几乎总是比使用动态测试发现测试对象中的缺陷然后修复它们要便宜得多,尤其是在考虑与更新其他工作产品和执行确认和回归测试相关的额外成本时。
静态测试的其他好处包括:
• 在动态测试执行之前更有效地检测和修复缺陷
• 识别在动态测试中不易发现的缺陷
• 通过发现需求中的不一致、模糊不清、矛盾、遗漏、不准确和冗余,防止设计或编码中出现缺陷
• 提高开发生产率(例如:由于改进了设计,使代码更易于维护)
• 减少开发成本和时间
• 减少测试成本和时间
• 在整个软件生命周期内降低总的质量成本,因为在生命周期后期或交付运行后出现的失效较少
• 在参与评审过程中改善团队成员之间的沟通
3.1.3 静态测试和动态的区别
静态测试和动态测试具有共同目标(见1.1.1节),例如评估工作产品的质量和尽早发现缺陷。静态和动态测试通过发现不同类型的缺陷来相互补充。
两者的主要区别之一是静态测试直接发现工作产品中的缺陷,而不是识别软件运行时由缺陷造成的失效。缺陷可以在工作产品中存在很长时间而不会导致失效。缺陷所在的路径可能很少被执行或很难到达,因此构建和执行动态测试以发现缺陷是一件不容易的事情。静态测试可以以更少的工作量发现缺陷。
两者的另一个区别是静态测试可以用来改进工作产品的一致性和内部质量,而动态测试通常侧重于外部可见的行为。
与动态测试相比,通过静态测试更容易发现和修复的典型缺陷包括:
• 需求缺陷(例如:不一致、模糊不清、矛盾、遗漏、不准确和冗余)
• 设计缺陷(例如:算法或数据库结构效率低下、高耦合、低内聚)
• 编码缺陷(例如:未定义值的变量、已声明但从未使用的变量、无法到达的代码、重复的代码)
• 偏离标准(例如:不遵守编码标准)
• 不正确的接口规格说明(例如:呼叫系统使用的计量单位与被呼叫系统使用的计量单位不同)
• 安全漏洞(例如::易受缓冲溢出的影响)
• 测试依据可追溯性或覆盖率的不足或不准确(例如::针对验收准则缺少测试)
此外,大多数可维护性缺陷类型只能通过静态测试发现(例如:,不适当的模块化,组件的重用性差,代码在不引入新缺陷的情况下难以分析和修改)。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值