什么是动态测试?类型、技术和示例
什么是动态测试?
动态测试 动态测试是一种用于测试软件代码动态行为的软件测试方法。动态测试的主要目的是检验软件在动态变量(即非恒定变量)存在时的行为,并找出软件运行时环境中的薄弱环节。为了测试动态行为,必须执行代码。
测试是 验证和确认验证和确认都需要进行才能完成测试。验证是通过静态测试完成的,静态测试会审查需求、设计文档和代码,但不运行它们。确认是通过动态测试完成的,动态测试会运行构建版本,并将应用程序的实际运行结果与预期运行结果进行比较。
下表使两者区别一目了然。
| 方面 | 静态测试(验证) | 动态测试(验证) |
| Code 执行 | 没有 | 是 |
| 典型活动 | Rev视图、巡视、检查、静态分析 | 在所有测试级别执行测试用例 |
| 问题已解答 | 我们制造的产品正确吗? | 我们制造的产品是否正确? |
| 发现缺陷 | 模糊的需求、违反编码规范、无用代码 | 输出错误、内存泄漏、时序错误、积分失败 |
| 开始 | 一旦文物存在 | 一旦存在可执行构建版本 |
| 修复的相对成本 | 较低,因为缺陷能更早被发现。 | 较高,因为缺陷出现得较晚。 |
动态测试示例
以下简短的示例展示了动态测试在实践中的运行方式。
假设正在测试一个登录页面。它有两个字段:用户名和密码,用户名仅限字母数字字符。
当用户输入用户名时,“Guru99”,系统会接受。当用户输入“Guru当输入“99@123”时,应用程序会抛出错误信息。这表明代码会根据用户输入动态运行。
因此,动态测试意味着使用实际系统,提供输入,并将应用程序的实际行为与预期行为进行比较——换句话说,就是使用系统来查找错误。
因此,动态测试是指在不同的环境下,像最终用户一样验证软件应用程序,以构建正确的软件的过程。
动态测试起什么作用?
动态测试的主要目的是确保软件在安装期间和安装后都能正常运行,从而交付稳定且无重大缺陷的应用程序。任何软件都不可能完全没有错误,测试可以发现缺陷,但永远无法完全消除缺陷。
动态测试还可以确保软件的一致性,正如本例所示。
银行应用程序包含多个屏幕,例如“我的账户”、“资金转账”和“银行转账”。 Bill 付款。它们都包含金额字段。
假设“我的账户”字段显示金额为 25,000 美元,“资金转账”也显示 25,000 美元,并且 Bill 支付界面显示金额为 25000 美元。金额相同,但显示方式不同,这导致软件显示不一致。
一致性不仅限于功能性,它还涵盖性能、可用性和兼容性等标准,这就是为什么动态测试如此重要的原因。
动态测试的类型
动态测试分为两类。
- 白色 Box 测试与验证
- 黑色 Box 测试与验证
下图将这两个类别与其下属的测试级别对应起来。
下面将对每种类型及其预期用途进行描述。
白色 Box 测试与验证 白盒测试是一种软件测试方法,测试人员了解系统的内部结构和设计。其主要目的是根据代码检查系统的性能。白盒测试主要由开发人员或具备编程知识的白盒测试人员执行。
黑色 Box 测试与验证 ——一种测试方法,测试人员对系统的内部结构、代码和设计一无所知。其主要目的是验证被测系统的功能。这种测试需要执行完整的测试套件,主要由测试人员执行,并且不需要任何编程知识。
黑盒测试又可分为两种类型。
- 功能测试
- 非功能测试
功能测试
功能测试 执行此操作是为了验证所有已开发的功能是否符合功能规范。它通过执行功能测试来完成。 测试用例 由质量保证团队编写。在此阶段,系统测试通过提供输入、验证输出以及将实际结果与预期结果进行比较来进行。
功能测试有不同的级别,其中最重要的有以下四个级别。
- 单元测试 单元是指一小段可测试的代码。单元测试是对软件的单个单元进行的,由开发人员执行。
- 整合测试 — 在单元测试之后执行,将各个可测试单元组合起来。它可以由开发人员或测试人员执行。
- 系统测试 — 执行此操作以确保系统运行符合要求。通常情况下,当整个系统准备就绪,并将构建版本发布给质量保证团队后,由测试人员执行此操作。
- 验收测试 — 用于验证系统是否满足业务需求并已准备好使用或部署。通常由最终用户执行。
非功能测试
非功能测试 非功能性测试是一种不关注功能方面,而是侧重于系统非功能属性(例如内存泄漏、性能或鲁棒性)的测试技术。非功能性测试贯穿所有测试级别。
非功能性测试技术有很多,其中最重要的有以下五种。
- 性能测试 — 检查系统在所需网络负载下,响应时间是否符合要求。
- 恢复测试 — 验证系统从崩溃和硬件故障中恢复的能力。
- 兼容性测试 — 验证系统在不同环境下的运行情况。
- 安全测试 — 验证应用程序的稳健性,确保只有授权用户和角色才能访问系统。
- 可用性测试 — 验证最终用户对系统的可用性,以及这些用户对系统的舒适度。
动态测试技术
类型确定之后,下一个问题是如何实际运行动态测试周期。
动态测试技术 STLC 动态测试包括测试需求分析、测试计划、测试用例设计与实现、测试环境搭建、测试用例执行、缺陷报告以及最终的测试收尾等任务。动态测试中的每个任务都依赖于前一个任务的完成。
在软件测试生命周期(STLC)中,实际的动态测试过程始于测试用例设计。下图展示了各项活动的顺序,每项活动后都将进行详细描述。
在进入动态测试流程之前,必须先确定要遵循的动态测试策略。
测试策略应主要关注可用资源和时间安排。基于这两个因素,测试目标、测试范围、测试阶段或周期、测试环境类型、可能面临的假设或挑战以及风险等都需要记录在案。
一旦策略确定并获得管理层的认可,实际的测试用例设计过程就开始了。
测试设计与实现
在此阶段,团队需要确定以下内容。
- 要测试的功能
- 测试条件由此衍生而来。
- 从测试条件中得出的覆盖项目
- 从覆盖范围项中导出的测试用例
黑盒子 测试设计技术 例如等价类划分、边界值分析、 决策表测试 和 状态转换测试 它们是将测试条件转化为一组具体的可执行用例的过程。
测试环境设置
此 测试环境 测试环境应始终与生产环境保持一致。在此阶段,构建过程将完成,测试机器也将进行管理和配置。
测试执行
在此阶段,测试用例将实际执行,无论是手动执行还是通过其他方式执行。 自动化并将实际结果与预期结果进行比较记录。
已捕获错误报告
根据执行结果,如果预期结果与实际结果不一致,则必须将测试用例标记为失败,并在系统中记录错误。 缺陷管理 的过程。
动态测试的优点
- 动态测试可以发现那些被认为太难或太复杂而无法发现的缺陷,而静态分析则完全无法涵盖这些缺陷。
- 该软件实现了端到端的执行,从而提高了产品和项目的质量。
- 动态测试是检测运行系统中安全威胁的重要手段。
- 运行时才会出现的故障,例如内存泄漏、计时问题和集成失败,只会在这里出现,不会在其他任何地方出现。
动态测试的缺点
- 动态测试很耗时,因为执行应用程序或代码需要大量资源。
- 因为它没有在软件生命周期的早期阶段启动,所以会增加项目的成本,而且在后期阶段修复的问题成本更高。
- 类似生产环境和真实的测试数据是先决条件,而这两者都需要付出努力来构建和维护。


