草庐IT

测试执行教程:包含示例和最佳实践的综合指南

科技狠活与软件技术 2023-03-28 原文
测试执行涉及验证软件应用程序中每个功能的功能,这些功能被放置在不同的场景中以验证其在这些情况下的响应。它在测试过程中起着至关重要的作用,可帮助团队创建满足最终用户要求的强大软件应用程序。

由于测试软件是一个复杂的过程,测试执行可帮助开发团队确保效率、可靠性并符合行业标准。这是测试过程的最后一步,通常在创建和审查测试用例之后执行。

什么是测试执行?

测试执行是指执行软件应用程序的测试用例,以确保它们满足预先定义的要求和规范。在这种情况下,它将预期结果与实际结果进行比较。测试执行阶段是软件测试生命周期 (STLC)和软件开发生命周期 (SDLC) 的重要组成部分。它从测试计划阶段的完成开始。

测试脚本准备就绪后,将与开发和业务分析师团队共享以供审查。然后 QA 会合并必要的更改。这标志着测试设计过程的完成。准备好测试用例后,我们需要让应用程序准备好启动测试执行过程。

除了测试用例,软件构建和测试环境也是测试执行阶段的重要方面。

下面列出的是确保测试用例有效执行的要点。

  • 确保测试设计(即定义测试用例)是完整的。
  • 测试管理工具必须可供使用。
  • 跟踪测试结果和指标的适当工作流程。
  • 每个人都应该知道要跟踪哪些数据。
  • 团队成员必须知道记录测试和报告错误的标准。

测试执行的重要性

测试执行允许软件团队达到下一个开发水平,并确保您的项目高效、顺利地运行。它还负责确保应用程序在全球市场上的竞争力。当测试执行的预期结果与实际结果相同时,软件就可以投入市场了。

测试执行评估参与开发过程的所有团队成员的努力,并回答以下一些问题:

  • 是否收集并正确解释了需求?
  • 需求是否正确地融入了设计和架构中?
  • 开发团队的软件应用是按照这些要求构建的吗?

测试执行活动

此阶段旨在在进入生产之前验证被测应用程序。为了完成这一阶段,测试团队进行不同类型的测试以确保产品质量。此外,在此过程中还会进行错误报告和重新测试。

以下是测试执行阶段的重要活动。

系统集成测试

这是被测应用程序的实际验证开始的阶段。系统集成测试是一种黑盒测试技术,用于验证系统与指定要求和测试用例的兼容性。

缺陷报告

缺陷报告是通过测试或收集客户反馈并开发产品的新版本来解决客户强调的问题来识别被测应用程序中的缺陷的过程。复杂的关键业务系统中存在数百个缺陷;监控、分析这些缺陷并确定其优先级非常困难。此外,缺陷随着时间的推移而增加,缺陷监控系统被用来帮助有效地管理它们。

缺陷映射

一旦问题被识别和记录,它应该被映射到需求可追溯性矩阵中适当的失败或阻塞的测试用例和需求。缺陷报告者负责这个映射。将测试用例和需求映射到缺陷后,利益相关者可以根据优先级和严重性分析并决定是否修复或重新安排缺陷。

重新测试

重新测试是测试单个测试用例的持续实践,以确保错误得到修复,并且软件应用程序的功能在最终执行中能够正常运行。此外,Retesting 使用同一套单元测试来确保代码的功能。换句话说,重新测试是重复相同的手动或自动测试以确保新构建完美运行的过程。

回归测试

回归测试是一种在代码提交后验证新构建的技术。测试人员在这个过程中的职责是确保没有由于软件修改和调整而将新的错误引入代码中。创建回归测试套件后,您可以使用自动化测试工具将其自动化。但是,它不适用于重新测试。

执行测试的方法

此测试执行教程部分重点介绍执行测试的多种方法。测试人员可以根据自己的需要选择首选方法。

运行测试用例

这是一种运行测试用例的简单方法,通常在本地机器上运行。其他测试工件,例如测试计划、测试脚本、测试环境、测试用例执行记录和测试套件,可以与测试用例耦合。

运行测试套件

测试套件是测试用例(手动和自动)的集合。启动套件时,您可以选择是顺序执行还是并行执行测试用例。使用顺序套件执行时,您可以选择在单个测试用例失败时停止套件的执行。如果最后一个测试用例的成功取决于当前测试用例的成功,这将很有帮助。

运行测试用例执行和测试套件执行记录

测试执行可以自动执行,也可以手动执行。记录测试执行是测试过程中的关键活动,有助于识别测试用例执行和测试套件执行。遵循测试执行程序非常重要,因为它们有助于使事情井井有条、减少错误并提高测试过程的效率。

生成测试结果而不执行

测试结果对于软件开发过程跟踪项目进度、识别和解决问题具有重要意义。然而,由于时间和资源有限,执行所有测试用例并不总是可行的。在这种情况下,从未执行的测试用例中生成足够的测试结果可能是获得全面测试覆盖率的有效替代策略。

修改执行变量

在您的测试脚本中,您可以使用执行变量修改特定测试运行的变量。

运行手动和自动测试

执行测试执行的方法有很多种。手动、自动和连续测试是一些最常见的软件测试方法。

安排测试工件

测试工件在执行测试执行时非常重要,因为它们记录了先前测试的结果并提供了有关在未来的测试执行中需要测试的内容的信息。测试工件可以包括屏幕截图、视频记录、数据报告等。应安全地存储测试工件,以便在需要时可以访问它们。

缺陷追踪

测试执行和缺陷跟踪是密不可分的。如果没有缺陷跟踪,测试执行往好里说会变得困难,往坏里说是不可能的。如果您不能充分跟踪测试过程中出现的缺陷,您将无法确定问题出在哪里以及原因,从而无法改进流程。

测试执行指南

在满足进入标准并交付测试目标后,下一阶段是执行测试。下面列出了测试执行过程的一些关键点,以帮助您更好地理解。

  • 执行测试用例意味着验证和验证预先确定的要求。
  • 构建(独立应用程序)是启动测试执行所必须具备的最关键的方面之一。
  • 测试执行包括三个阶段:测试策略和用例的创建、测试用例的执行以及测试结果的验证。
  • 由于测试执行发生在 QA 测试环境中,因此建议创建专门的开发和 QA 环境,以确保开发团队对代码的工作不会发生在同一位置。
  • 随着项目的进展,测试团队的规模可能会发生变化。在测试执行阶段,团队达到最大规模。
  • 根据潜在缺陷和业务需求选择测试套件。此外,他们与开发和业务团队共享,以供他们审查和反馈。
  • 一组高技能的软件测试人员通常执行测试执行。
  • 测试执行周期由两轮组成。所有测试套件或用例都在第一个周期中执行,以识别任何阻碍因素或高危缺陷。在第二个周期中,测试人员识别中型错误、纠正脚本漏洞并获得测试结果。
  • 还有一个阶段;测试准备评审发生在测试执行阶段之前和构建部署 (AUT) 之后。它是结束测试设计阶段并启动测试执行阶段的过渡步骤类型。
  • 一旦构建准备好进行测试,就会执行探索性测试,以在开始下一级测试之前消除任何关键缺陷。
  • 在部署阶段之后,将执行冒烟和完整性测试以确保当前构建正常工作。
  • 测试用例执行的输出以测试报告的形式出现,即错误报告或测试执行状态报告。
  • 团队可以手动或利用自动化工具执行测试。

测试执行期间要考虑哪些方面

测试执行教程部分将介绍执行测试用例的一些先决条件。在开始测试过程之前,QA 团队必须考虑一些可能影响测试结果的因素。其中一些如下。

  • 确保完成测试设计和测试用例创建。
  • 根据风险为这个周期选择测试套件的一个子集。
  • 对于每个测试套件,将测试用例分配给测试人员。
  • 跟踪测试状态、执行测试并持续报告错误。
  • 识别并解决出现的阻塞问题。
  • 报告每日状态、调整分配并重新评估优先级。
  • 分析并报告测试周期的结果。

测试执行状态

测试执行状态帮助团队确定测试完成和成功。测试完成率允许团队管理测试工作的剩余部分,包括潜在未发现的质量问题的风险。测试成功率有助于团队确定软件或系统是否正常运行。必须对测试执行的各种状态进行分类。

以下是一些最关键的执行状态及其分类。

  • 通过:测试程序运行并满足预期结果。
  • 失败:测试程序运行但不满足预期结果。
  • 不确定:需要进一步分析以确定测试结果。
  • :由于未满足其中一个测试用例要求,因此无法运行此测试过程。
  • Deferred:测试过程还没有执行,将安排在未来的测试发布中执行。
  • 进行中:当前正在执行测试程序。
  • 未运行:尚未运行测试。

测试执行优先级

在软件测试方面,在决定测试执行优先级时需要考虑许多因素。为了成功地选择正确的测试并有效地确定它们的优先级,我们需要知道它们是什么以及它们如何影响测试过程。

测试执行优先级是一个复杂的多维函数,需要考虑众多因素。虽然在某些行业(例如 FDA)中有正式的计划,但我认为由于系统、数据和业务目标之间的灵活性和差异,任何软件测试组织的优先级都不能正式确定。以下是已发现影响测试执行优先级的变量列表:

  • 涵盖的风险
  • 涵盖的平台
  • 测试复杂性
  • 测试用例深度
  • 测试用例广度

测试执行周期

软件测试生命周期是一个迭代的、循环的过程,旨在防止软件错误。测试活动包括分析、计划、设计、设置、执行和结束测试。同样,测试执行也是软件测试生命周期的一部分,在测试生命周期中起着至关重要的作用。

软件测试生命周期由六个不同的阶段组成。

1.需求分析

软件测试生命周期始于需求分析。作为此阶段的一部分,从测试的角度检查功能性和非功能性需求,以确定可测试的需求。客户的质量保证团队与客户、解决方案架构师、技术主管、业务分析师和其他利益相关者合作,了解客户的需求并相应地定制测试。

2. 测试计划

通过需求分析中收集的数据,QA 团队离规划测试过程又近了一步。测试计划或测试策略是软件测试生命周期中最关键的阶段。定义了在此阶段用于测试软件的所有测试策略。

测试负责人确定项目的成本估算和此阶段的工作量。在这里计划和制定一系列测试活动以及资源分析,这可以提高计划阶段的效率并有助于实现测试目标。如果没有有效的工具,软件测试就无法发挥价值,尤其是在您执行测试自动化时。

此阶段包括选择合适的软件测试平台。市场上有许多软件测试平台。

3. 测试用例设计与开发

已审查需求,并已制定测试计划作为响应。是时候发挥创造力并将这种测试方法塑造成测试用例了。测试用例是根据测试策略和特定规范创建和改进的,以检查和验证每个测试计划。

业务分析师可以创建此需求文档,其中应包含软件应用程序的所有潜在用户场景。您可以在获得需求文档后设计测试用例。

设计测试用例包括两个步骤:测试用例的识别和分析。第一阶段是发现所有可以覆盖所有用户场景的可行测试用例。然后,在审查它们之后,您需要删除不适合执行、优先级低或可能无法发现任何缺陷的测试用例。当测试设计过程完成后,质量保证团队开始设计有效的测试用例。

4. 测试环境搭建

在测试用例的设计和开发之后,软件测试过程需要一个适当的平台和环境,包括必要和必要的硬件和软件,以建立和复制理想的条件和环境因素来进行实际的测试活动。

测试环境在此阶段搭建。测试环境定义了将用于评估软件的参数。由于这是一个单独的活动,它可以与测试用例开发过程一起运行。

测试环境因组织而异。有时,开发人员或测试人员创建测试环境;在其他情况下,客户根据他们的需要和期望创建测试环境。

当客户或开发人员设置测试环境时,测试团队准备进行冒烟测试。冒烟测试旨在通过确定测试环境的就绪性和稳定性来验证测试环境。

5. 测试执行

QA 团队现在可以进行一些适当的测试活动,因为他们拥有测试用例、测试数据和测试环境。在这个阶段,测试团队根据前面阶段准备的测试用例和测试计划,如测试计划和测试用例设计,来执行测试用例。

为每个通过的测试用例分配一个分数。当测试用例失败时,开发团队会收到缺陷或问题的通知。为了将来参考,这些错误可以链接到测试用例。

理想情况下,每个失败的测试用例都与一个缺陷相关联。在开发团队解决错误以确保它确实已修复并按预期工作后,将重新运行相同的测试用例。该报告显示通过、阻止、失败或未运行的测试用例数。

6. 测试收尾

测试结束阶段从测试执行阶段和软件产品交付的完成开始。这是审查整个周期的阶段。除了测试结果之外,还会考虑和分析其他与测试相关的方面,例如所获得的质量、测试覆盖率、测试指标、项目成本、遵守最后期限等。

该团队还审查软件测试生命周期过程的哪些组件表现良好,哪些可以改进。生成测试用例报告以确定问题的严重性。测试周期完成后,生成测试指标和关闭报告。

测试执行报告

软件测试执行报告是在完成软件测试和开发过程后提供给客户的重要交付物之一。它提供了一个全面的测试过程摘要,其中包含准确的详细信息和信息。报告应组织良好,简明扼要地提供所有重要信息。

它通常遵循一组模板,其中包含测试计划、测试用例、验证测试期间遇到的问题、缺陷列表和缺陷跟踪信息的概述、摘要和分析。该报告还包括有关用于测试的各种工具的详细信息,以及它们在发现开发的软件产品中的关键缺陷方面的有效性。

典型的测试报告具有以下模板:

  • 测试总结报告标识符
  • 概括
  • 方差
  • 综合评价
  • 结果总结
  • 评估
  • 活动总结
  • 赞同

如何实现更快的测试执行周期?

发布周期的持续时间已成为软件应用程序开发的关键因素。上市时间 (TTM) 在动态变化的商业环境中变得至关重要,因为您总是想跟上竞争对手的步伐。在发布项目、提供更新或吸引客户方面迟缓会侵蚀市场。

初创公司和大型企业正在寻找工具和方法来帮助他们加快开发和测试工作流程。关于本地测试,您可能同意复杂、可扩展的基础设施设置和维护成本会显着提高您的消耗率。如果您有一个每个人都坐在同一个房间的小型 QA 团队,或者分散在多个地方的大型分布式团队,那么基于云的测试对每个人都有用。它甚至有助于解决最复杂的远程测试挑战。

云测试有很多好处。然而,用户经常提出一个问题——云基础设施不如本地基础设施快。另一方面,本地设置缺乏基于云的设置的功能。

结论

在软件开发生命周期中,测试执行在识别系统中的缺陷、错误和问题方面起着至关重要的作用。它也是所有测试活动的一部分。通过测试执行,团队可以创建满足最终用户要求并提供不同类型服务的产品。

有关测试执行教程:包含示例和最佳实践的综合指南的更多相关文章

  1. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  2. ruby-openid:执行发现时未设置@socket - 2

    我在使用omniauth/openid时遇到了一些麻烦。在尝试进行身份验证时,我在日志中发现了这一点:OpenID::FetchingError:Errorfetchinghttps://www.google.com/accounts/o8/.well-known/host-meta?hd=profiles.google.com%2Fmy_username:undefinedmethod`io'fornil:NilClass重要的是undefinedmethodio'fornil:NilClass来自openid/fetchers.rb,在下面的代码片段中:moduleNetclass

  3. ruby - 解析 RDFa、微数据等的最佳方式是什么,使用统一的模式/词汇(例如 schema.org)存储和显示信息 - 2

    我主要使用Ruby来执行此操作,但到目前为止我的攻击计划如下:使用gemsrdf、rdf-rdfa和rdf-microdata或mida来解析给定任何URI的数据。我认为最好映射到像schema.org这样的统一模式,例如使用这个yaml文件,它试图描述数据词汇表和opengraph到schema.org之间的转换:#SchemaXtoschema.orgconversion#data-vocabularyDV:name:namestreet-address:streetAddressregion:addressRegionlocality:addressLocalityphoto:i

  4. ruby - 检查 "command"的输出应该包含 NilClass 的意外崩溃 - 2

    为了将Cucumber用于命令行脚本,我按照提供的说明安装了arubagem。它在我的Gemfile中,我可以验证是否安装了正确的版本并且我已经包含了require'aruba/cucumber'在'features/env.rb'中为了确保它能正常工作,我写了以下场景:@announceScenario:Testingcucumber/arubaGivenablankslateThentheoutputfrom"ls-la"shouldcontain"drw"假设事情应该失败。它确实失败了,但失败的原因是错误的:@announceScenario:Testingcucumber/ar

  5. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  6. ruby - Ruby 的 Hash 在比较键时使用哪种相等性测试? - 2

    我有一个围绕一些对象的包装类,我想将这些对象用作散列中的键。包装对象和解包装对象应映射到相同的键。一个简单的例子是这样的:classAattr_reader:xdefinitialize(inner)@inner=innerenddefx;@inner.x;enddef==(other)@inner.x==other.xendenda=A.new(o)#oisjustanyobjectthatallowso.xb=A.new(o)h={a=>5}ph[a]#5ph[b]#nil,shouldbe5ph[o]#nil,shouldbe5我试过==、===、eq?并散列所有无济于事。

  7. ruby - RSpec - 使用测试替身作为 block 参数 - 2

    我有一些Ruby代码,如下所示:Something.createdo|x|x.foo=barend我想编写一个测试,它使用double代替block参数x,这样我就可以调用:x_double.should_receive(:foo).with("whatever").这可能吗? 最佳答案 specify'something'dox=doublex.should_receive(:foo=).with("whatever")Something.should_receive(:create).and_yield(x)#callthere

  8. ruby - Chef 执行非顺序配方 - 2

    我遵循了教程http://gettingstartedwithchef.com/,第1章。我的运行list是"run_list":["recipe[apt]","recipe[phpap]"]我的phpapRecipe默认Recipeinclude_recipe"apache2"include_recipe"build-essential"include_recipe"openssl"include_recipe"mysql::client"include_recipe"mysql::server"include_recipe"php"include_recipe"php::modul

  9. ruby - Sinatra:运行 rspec 测试时记录噪音 - 2

    Sinatra新手;我正在运行一些rspec测试,但在日志中收到了一堆不需要的噪音。如何消除日志中过多的噪音?我仔细检查了环境是否设置为:test,这意味着记录器级别应设置为WARN而不是DEBUG。spec_helper:require"./app"require"sinatra"require"rspec"require"rack/test"require"database_cleaner"require"factory_girl"set:environment,:testFactoryGirl.definition_file_paths=%w{./factories./test/

  10. ruby-on-rails - 迷你测试错误 : "NameError: uninitialized constant" - 2

    我遵循MichaelHartl的“RubyonRails教程:学习Web开发”,并创建了检查用户名和电子邮件长度有效性的测试(名称最多50个字符,电子邮件最多255个字符)。test/helpers/application_helper_test.rb的内容是:require'test_helper'classApplicationHelperTest在运行bundleexecraketest时,所有测试都通过了,但我看到以下消息在最后被标记为错误:ERROR["test_full_title_helper",ApplicationHelperTest,1.820016791]test

随机推荐