在本节中,我们将了解动态测试,这是在运行环境中执行代码时完成的。
我们还了解动态测试简介,为什么使用它,如何执行它,动态测试的不同技术是什么,动态测试的各种工具。
1. 动态测试简介
动态测试是软件测试中最重要的部分之一,用于分析代码的动态行为。
动态测试通过给出输入值并通过实现可以手动或自动化过程完成的特定测试用例来验证输出是否预期,从而与软件配合使用。
动态测试可以在运行环境中执行代码时完成。这是一个验证过程,其中执行功能测试[单元、集成、系统和用户验收测试]和非功能测试[性能、可用性、兼容性、恢复和安全测试]。
众所周知,静态测试是一个验证过程,而动态测试也是一个验证过程,它们共同帮助我们提供具有成本效益的高质量软件产品。
2. 为什么我们需要执行动态测试?
如果我们考虑动态测试可访问的特征,我们可以很容易地理解如何在STLC [软件测试生命周期]期间实现动态测试。
使用动态测试,团队可以验证软件的关键功能,但其中一些功能可能无需任何评估。它们还会影响软件产品的功能、可靠性和性能。
因此,我们可以执行动态测试来满足以下各个方面:
- 我们将执行动态测试,以检查应用程序或软件在安装应用程序期间和之后是否正常工作,没有任何错误。
-
我们可以执行动态测试来验证软件的有效行为。
-
如果我们想执行动态测试,应该编译并运行该软件。
-
通常,实现动态测试是为了定义代码的动态行为。
-
团队实现代码以在动态测试过程中在运行时环境中测试软件应用程序的性能。
-
它确保软件应用程序的并发性与客户的潜力,需求和最终用户。
-
这是一种操作技术,用于测量几种环境压力对网络、硬件等软件应用程序的影响
3. 动态测试的特点
为了理解软件测试技术的基本原理,我们必须学习它们的属性和其他几个组件。因此,以下是动态测试的一些重要特征:
- 它在整个软件测试的验证阶段实施。
-
动态测试是通过执行程序来完成的。
-
功能和非功能测试都包括在动态测试中。
-
在动态测试中,我们可以轻松识别特定软件的错误。
-
它可以帮助团队验证软件应用程序的可靠性。
-
与静态测试不同,团队实现软件的代码以在动态测试中获得预期的输出。
-
与其他测试技术相比,动态测试直接在软件应用程序上执行。
-
动态测试是一种更正式的测试方法,用于不同的测试活动,例如测试执行、覆盖率考虑、报告和测试用例识别。
4. 动态测试流程
通常,在确定方法和测试实现性能时,动态测试遵循设定的过程,并且团队可以移动以执行不同的测试活动。
在此过程的帮助下,团队可以从方法和策略中找到任何不规则之处,并帮助我们显示所有测试步骤。
在STLC中,动态测试的过程涉及不同的功能。动态测试过程中的所有功能都依赖于测试过程中早期任务的完成。
动态测试过程将通过以下步骤完成:
- 测试用例设计
-
测试环境升级
-
测试用例执行
-
测试分析和评估
- bug报告
实际的动态测试过程从软件测试生命周期中的测试用例设计开始。现在,我们将逐一讨论每个步骤,以全面了解动态测试过程。
步骤1:测试用例设计
在动态测试过程的第一步中,团队将设计测试用例。在这里,我们正在创建那些测试用例,这些用例取决于项目开始之前建立的要求和测试范围。
在此步骤中,我们可以发起测试条件,获取测试用例,提取覆盖项,并识别需要测试的特征。
步骤2:环境设置
在测试环境阶段,我们将确保测试环境应始终与生产环境并行,因为测试是直接在软件产品上实现的。
在此步骤中,动态测试过程的主要目标是安装测试环境,这有助于我们在测试机器上取得成功。
步骤3:测试执行
成功安装测试环境后,我们将执行在动态测试过程的初级阶段准备的那些测试用例。
步骤4:分析与评估
执行测试用例后,我们将分析和评估从测试中获得的结果。我们将把这些结果与预期结果进行比较。
如果执行的预期结果和实际结果不同,我们会将这些测试用例视为失败,并将
bug 记录在 bug 存储库中。
步骤5:Bug报告
在分析测试用例后,我们将向相关人员报告并记录实际结果和预期结果之间的任何错误或缺陷。相关人员将确保问题已解决并提供优质产品。
5. 动态测试示例
让我们举一个示例,了解动态测试将如何发挥作用。
因此,我们将了解任何应用程序的登录模块,例如www.Twitter.com。
假设我们要创建一个具有安全密码的新帐户,因此我们需要遵循密码字段中的一些预定义规则。
密码应包含八个字符,大写字母和至少一个特殊字符。
如果我们要测试此功能,我们将采用所有输入条件来测试此功能,然后验证输出。
我们还可设置非工作约束,例如输入 4 个字符的密码,并验证是否发生bug。
动态测试的类型
动态测试分为两种不同的测试方法,具体如下:
这两种测试技术都将帮助我们有效地执行动态测试过程,因为它们在验证软件的性能和质量方面发挥着重要作用。
让我们一一详细了解它们,也看下图:
白盒测试
白盒一词用于描述系统的核心视角。开发人员将执行白盒测试,他们将测试程序代码的每一行。
当开发人员执行白盒测试,然后将软件应用程序发送给测试团队时,测试团队将进行黑盒测试,验证应用程序以及需求。白盒测试进一步分为数据流/控制测试。
数据流测试
数据流测试用于根据程序中变量的描述和使用设置来识别程序的测试路径。它与数据流图无关。
黑盒测试
黑盒测试是一种测试技术,其中测试工程师选择一个模块并给出一个输入值来观察其功能并分析该功能是否提供预期的输出。如果函数生成了正确的输出,则特定函数将被标记为
pass。
要执行黑盒测试,测试工程师应该对软件的需求有特定的了解,而不是软件的编程知识。
然后,他们可以开发测试用例来检查软件功能的正确性。
黑盒测试进一步分为两种类型,如下所示:
功能测试
功能测试是黑盒测试中最重要的部分之一。它主要关注应用程序规范而不是实际代码,测试工程师将测试程序而不是系统。
功能测试用于验证软件应用程序的功能,功能是否按照需求规范工作。
在功能测试中,每个模块都经过测试,通过给出值,确定输出,并用期望值验证实际输出。
功能测试分为四种不同类型的测试,如下所示:
单元测试
单元测试是对软件应用程序执行任何测试的第一级功能测试。
每当应用程序准备就绪并交给测试工程师时,我们将执行单元测试。他将开始独立或逐个检查模块或应用程序的每个组件。这个过程被称为组件测试。
执行单元测试的主要目标是测试远程代码的正确性,并验证单元组件的性能。
集成测试
当我们成功完成特定软件的单元测试后,我们将进行集成测试。集成测试将帮助我们组合单个单元并作为一个组进行测试。它是功能测试的第二级。
当所有组件或模块独立工作时,我们将检查依赖模块之间的数据流,这称为集成测试。
开发人员和测试工程师执行集成测试。集成的主要目的是识别集成单元之间交互中的故障。
系统测试
系统测试用于以用户身份检查应用程序或软件的端到端流程。
系统测试也称为端到端测试,因为测试环境类似于生产环境。
在功能测试的第三级(系统测试)中,我们遍历应用程序的所有必要模块,检查最终功能或最终业务是否正常工作,并将产品作为一个整体进行测试。
用户验收测试
根据要求进行用户验收测试以认证系统。客户或客户在接受最终产品之前就这样做了。
换句话说,我们可以说UAT是由客户(领域专家)完成的,目的是让他们满意,并检查应用程序是否根据给定的业务场景和实时场景工作。
它是功能测试的最后一级,在将软件发布到两个或多个最终用户将参与的市场或生产环境之前执行。
非功能性测试
黑盒测试的另一部分是非功能测试。它用于测试非功能性约束,如负载测试、可靠性、性能和软件责任。
执行非功能测试的主要目的是根据非功能参数测试软件系统的读取速度,因为这些参数在功能测试之前从未进行测试。
在测试软件或应用程序时,非功能性测试在客户满意度方面起着至关重要的作用。
它降低了软件的生产风险和相关成本,并提供了对产品行为和所用技术的透彻了解。
此外,非功能测试分为多个部分,可以在测试级别执行。
- 性能测试
-
可用性测试
-
兼容性测试
-
恢复测试
-
安全测试
让我们一一详细了解它们:
性能测试
性能测试是最重要的非功能性类型。
一旦软件稳定并转移到生产环境中,并且可以由多个用户同时访问,我们将进行性能测试。
性能测试是测试我们通过施加一些负载来检查应用程序的行为。
众所周知,这是非功能测试,这并不意味着当应用程序功能稳定时,我们总是使用性能测试;只有这样,我们才能进行性能测试。
可用性测试
在可用性测试中,我们将检查软件应用程序的用户友好性、效率和准确性。
如果我们使用可用性测试,它可以确保开发的软件在使用系统时易于测试而不会遇到任何问题,并使最终用户的生活更轻松。
兼容性测试
下一种类型的非功能性测试是兼容性测试,用于检查应用程序在不同软件、硬件平台、网络和浏览器上的功能。
不会对所有应用程序执行兼容性测试;我们将仅对那些我们无法控制用户使用的平台的应用程序使用兼容性测试。
恢复测试
在恢复测试中,我们可以验证系统从硬件故障和崩溃中恢复的能力。
它再现了受控环境中的故障模式或基本生产故障。
执行恢复测试以确认系统具有容错能力,并且可以很好地从故障中改进。
安全测试
安全测试用于发现软件应用程序中的弱点、风险或威胁,帮助我们阻止来自外部人员的恶劣攻击,并确保我们软件应用程序的安全性。
安全测试的主要目的是识别应用程序的所有可能的不确定性和漏洞,以便软件不会停止工作。
6. 动态测试的优缺点
从检测和评估软件中的几个错误和错误到验证软件的性能,动态测试为用户和测试团队提供了服务优势。
但是,我们有动态测试的各种优点,也有一些缺点。
因此,下面我们列出了动态测试的一些优点和缺点:
优点
以下是动态测试的优点:
- 它验证软件应用程序的性能。
-
动态测试的使用确保了软件产品的可靠性和稳定性。
- 它可以借助工具自动检测测试过程中的问题和复杂bug,这些bug无法通过静态分析涵盖。
-
它可以帮助测试团队识别运行时环境的薄弱区域。
- 与静态测试相比,使用动态测试最重要的好处是可以找到相对更多的bug。
-
与静态测试相比,动态测试在计划测试级别需要的会议次数更少。
-
它端到端地实施软件,并提供无错误的软件。
-
它成为识别任何安全威胁的重要工具。
- 在动态测试中,我们可以检测可能已经逃脱审查过程的问题bug。
- 它还识别那些静态测试无法注意到的bug。
-
动态测试还可以发现安全威胁,从而确保更好、更安全的应用程序。
缺点
以下是动态测试的缺点:
- 这是一个耗时的过程,因为它实现了需要大量资源的软件应用程序或代码。
-
动态测试过程有点昂贵,因为它增加了软件的预算。
-
动态测试需要更多的人力资源来完成任务,这使得其实施成本更高。
- 通常,动态测试是在编码阶段完成后执行的,因此,在生命周期的后期会识别bug。
7. 总结
在动态测试部分,我们学习了以下主题:
- 在了解了上面的动态测试之后,我们可以很容易地说动态测试在软件测试生命周期(STLC)中的重要性是巨大的。
-
动态测试用于执行代码的动态行为。
-
我们已经了解了动态测试的过程和各种类型的动态测试。
-
在动态测试中,我们可以直接实现软件测试,以验证软件的功能性能、行为、可靠性和其他重要特性。
-
我们已经了解了动态测试的优缺点。
|