• 0
  • 1
分享

摘要:

连续测试意味着您的所有测试一直在执行,从而提供有关应用程序质量和运行状况的连续反馈。为了实现连续测试,您必须首先采用正确的测试自动化策略。了解如何尽可能有效地引入所有不同类型的测试自动化实践,可以使您开始进行连续测试。

作为进入市场战略的一部分,企业越来越关注客户体验,而客户体验的关键部分是他们以快速、无缝的方式遍历软件的能力。消费者比以往任何时候都更精通技术,对缺陷的容忍度也较低,因此遭受不良行为影响的应用程序可能会对您的品牌产生极大的负面影响。

为了降低这些风险,组织将质量计划加倍,软件开发行业也将持续测试作为主流活动。

什么是连续测试?

持续测试是软件测试的一项原则,在该原则中,您的所有测试始终在执行,从而不断提供有关应用程序质量和运行状况的反馈。

为了实现连续测试,组织必须首先采用测试自动化。测试自动化的类型很多,从UI层到中间件系统,甚至到后端系统,都涵盖了应用程序的整个范围。了解如何尽可能有效地引入这些不同类型的测试自动化实践,可以使您迈向连续测试的道路。

这一切都始于制定测试自动化策略

由迈克尔·科恩(Michael Cohn)和马丁·福勒(Martin Fowler)推广的测试金字塔确定了我们应该进行不同数量的不同类型的测试活动。在基础上,我们希望建立广泛的单元测试和API测试。这些类型的测试更容易在自动化中运行,但通常需要技术技能来构建。测试金字塔的顶部具有自动UI测试和手动测试。我们希望这种类型的测试活动在顶部,因为这是确保客户体验的唯一方法。

大多数人专注于UI测试的“自动上手”方法,而单元开发则采用“开发人员应测试”的心态来关注测试金字塔的底部和顶部。尽管这些做法很重要,但专注于顶部和底部会在UI和代码之间的API层中间产生间隙。

这种差距只会继续变得更加棘手,ProgrammableWeb最近的一份报告显示,目录中有超过22000种公开可用的API,并且这个数字还在稳步攀升。API测试比以往任何时候都更为关键,它需要成为您正在构建的持续测试策略的一个组成部分。

选择正确的API测试解决方案

这一切都始于选择一个API测试解决方案,该解决方案可以随着您API测试成熟度的增长而发展。您可能需要的关键功能取决于您的行业,应用程序和组织的独特要求。但是,一旦选择了工具,该如何开始?

可以通过三个关键步骤来更快地实现功能测试自动化。

步骤1:建立您现有的自动化API的广泛测试范围

通过从Web记录和API合同构建无脚本测试,然后使用这些测试来连续验证API的运行状况,可以确保API能够按照设计的方式运行。可以将其视为对API的单元测试,但无需花费大量精力。

这不仅是一种有价值的测试技术,而且还是您可以进行的最早的功能测试验证类型之一,因为API的服务合同通常是在创建新功能或新功能时首先编写的内容之一。

举例来说,假设团队已经为我们的应用程序添加了一些新功能。第一步,开发团队发布了新的服务定义。在这种情况下,将生成Swagger文档。所添加的新服务是RequestLoan服务,该服务接受一系列输入并与贷款提供者响应以获取新贷款。

为了测试该服务,我可以使用Swagger YAML并为每个单独的操作创建一系列客户端。

1.png

这些客户之一就是请求贷款服务。我可以创建一系列输入(包括正数和负数),以验证服务的行为是否正确。然后,可以将这些测试重新用于回归目的。

当然,尽管这种测试非常有价值,但这只是API测试难题的一半,因为它无法验证API的实际使用方式。下面输入步骤2。

步骤2:弥合UI和API之间的鸿沟

API测试策略的第二部分是能够将您对应用程序的人工使用建模为完整的API测试方案。

您可以通过利用人工智能来增强您的能力,从而在用户浏览您的应用程序时了解幕后实际发生的事情,并将这些幕后事务解释为API调用,从而开始弥合测试金字塔中的空白。这种类型的测试可让您将用户体验与关键的API测试保持一致。

人工智能是该策略的关键组成部分,因为我们可以可靠地使用人工智能来帮助我们将这些通信分解为各种关系和模式,因此我们可以了解如何测试应用程序的业务规则。我们可以将其与我们的单元级API测试结合起来,以广泛涵盖我们的API范围。

继续我的示例,您将注意到请求贷款服务需要来自应用程序其他区域的输入:

2.png

虽然我可以从帐户中任意提供客户ID,但实际上我需要它们存在于我的应用程序中,因此,我将需要创建一个动态方案,在该方案中,我首先查询单个用户以获得客户ID和帐户ID,以便可以处理该问题。信息提供给请求贷款服务,并确保动态方案按所述方式工作。确保我正在使用真实的动态数据,以确保可以充实因API相互交互而存在的行为。

尽管这些类型的技术将使我们能够将API测试实践向左转移,并在可能的最早阶段为我们的应用程序创建广泛的覆盖范围,但这种实践的第三个关键组成部分是:我们了解并适应变化的能力。

步骤3:通过可维护的变更管理过程确保信心

我已经与很多人谈论过他们的功能测试计划,一旦他们的应用程序更改了,他们的计划就停滞了。这是常见的情况,因为测试人员将大部分时间都花在构建丰富而出色的API测试上,而只是在应用程序的API发生更改时才让它们中断。这可能会产生累积效应,从而降低对API测试策略的信心,因为测试人员将大量时间用于维护API测试,而不是建立新的价值。

变更管理是任何功能测试策略的关键部分,而AI在这里也可以成为关键的推动者。通过自动扫描服务定义(是的,与最初创建测试用例的服务定义相同)来确定您的API何时更改,您可以了解何时会受到影响,然后构建用于将现有服务迁移到新服务的模板版。

在本示例的第一部分中,我声明了将新服务添加到我的应用程序中。这实际上代表API的更改。自从我使用服务定义创建了第一轮基准测试以来,我可以相互比较服务定义的不同版本,以识别发生了什么变化并构建映射以更新现有的测试用例。

3.png

在查看更改模板后,很明显不仅添加了新服务,而且还重构了我的许多现有服务。在上图中,您会注意到“ GET客户”已添加了一系列新字段。使用变更管理工作流将使您能够主动识别服务变更,同时管理现有测试用例的更新,因此您可以尽快从变更中恢复。

可以说,这是在构建功能测试策略时必须建立的最重要的实践。从一开始就了解这一点并对质量做出承诺,将有助于您和您的组织采用这种做法。

片状测试环境如何?

凭借出色的测试自动化功能,可以轻松地在此处停止测试。但是,请说您花了很多时间来构建这种丰富而强大的功能测试策略,作为自动化的夜间连续测试过程的一部分,在您的环境中运行测试,并且在查看结果时,您会发现很大一部分您的测试因系统无法控制而失败。

这是否意味着您的测试不合格?您现在是否要对技术超出测试范围的系统负责?

这不是一个罕见的故事。我们知道功能测试只能与执行它们的测试环境一样有效。不稳定,不可用或只是普通的不稳定测试环境会降低我们从功能测试工具中获得的投资回报。因此,我必须至少简短地提到稳定测试环境的最佳方法之一:服务虚拟化。

不要与虚拟机(即硬件虚拟化)相混淆,服务虚拟化使您可以模拟在不同硬件之间进行通信的服务。例如,考虑一个调用数据库的应用程序。您在测试环境中实际上是否需要该数据库?如果没有所需的数据怎么办?通过服务虚拟化,您可以记录与数据库的事务,然后使用该记录创建该数据库的模拟版本,以及针对测试环境所需的所有行为。但是,当然,它不仅限于数据库;还包括数据库。它可以是任何类型的服务,例如SOAP或REST API,甚至是TCP和微服务。

作为制定可持续的API测试策略的一部分,您需要制定可持续的服务虚拟化策略,首先要回答以下问题:

  • 哪些服务适合虚拟化?

  • 如何创建虚拟服务?

  • 如何维护虚拟环境?

  • 如何在我的连续测试策略中部署虚拟环境?

服务虚拟化是可持续的连续测试策略的关键推动力,但是了解在何处,何时引入它以及如何使其尽可能有效是成功的关键。

持续测试入门

现在,您已经更好地了解了如何将API测试集成为持续测试策略的一部分,下一步就是开始!与API测试工具供应商合作,并从第一步开始。在开始时了解最终目标将有助于您一路做出明智的选择。


版权声明:本文出自51Testing会员投稿,51Testing软件测试网及相关内容提供者拥有内容的全部版权,未经明确的书面许可,任何人或单位不得对本网站内容复制、转载或进行镜像,否则将追究法律责任。

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   软件在各行各业的日益普及,软件质量问题引起的不良后果越来越严重,软件质量的重要性日益凸显。软件测试作为保证软件产品质量最直接、最有效的手段,越来越多的企业和用户认识到软件测试的重要性。  作为软件开发环节的一部分,软件测试的风险是显而易见的,软件测试项目风险管理是一种特殊的项目风险管理形式。若能够进行风险管理,重视风险评估,制定积极的风险应对计划,就能最大程度地避免风险或减少因风险而造成的损失。  正式投入市场之前,软件需要经过技术人员的反复测试。如软件有任何质量问题,以便技术员追查问题根源,并及时消除;如没有任何质量问题,经过技术人员的检验,才能真正做到“防患于未然”,这也是企业和个人使...
            0 0 1089
            分享
          • 在我们的测试工作中,除了需要不断的学习新知识外,还有一个可能常常被我们忽视的工作,那就是反思。反思的重要性不言而喻,可以帮助我们总结过往的经验教训,可以帮助我们重新复盘过去工作中的得失,可以让我们通过曾经犯下的错误找到未来需要规避的问题,可以通过积累的经验获取后续工作中更高效的方法。那么问题来了,做测试的我们,该反思什么呢?在我们团队的日常工作中,每隔一段时间我们就会组织召开一次学习总结会。在这个会上,我们会去回顾过去一段时间工作中大家遇到的问题、学到的新知识、沉淀的经验和方法。在这个过程中,大家互相交流,互相碰撞,互相提问,互相弥补。通过这样的讨论学习,每个人都能感受到这些碰撞出的火花带来的...
            0 1 2268
            分享
          • 设置postman测试环境(Environment)为什么要设置postman的环境呢?当然是为了提高测试效率,减少频繁的重复操作设置Environment前:举例:这里我们看到,我的接口地址是正确的,并且send接口之后,也是成功响应,说明接口跑通了设置Environment后:举例:这个时候,如果有100个接口需要测试,并且这些接口需要在两个服务器上都再测试一遍,一个服务器地址是172.16.99.1一个服务器地址是172.16.99.5,这个时候如果不设置测试环境,那测试起来就会做很多重复的操作好处 :可以减少重复的输入相同的基地址,减少输入是的误操作几率,全部使用变量名url代替基地址...
            16 17 3266
            分享
          • 在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postman中设置环境变量这个功能了;在postman中,可以利用tests将接口返回的response设置为环境变量,供后续接口使用(类似参数化的概念)获取环境变量需要具体方法如下图所示;var jsonData =JSON.parse(responseBody);//获取body中返回的所有参数 postman.setEnvironmentVariable("appKey&...
            0 1 5807
            分享
          •   据报道,当地时间周二,沃尔玛向员工发出明确指令,要求不得将任何与沃尔玛相关的信息分享至ChatGPT等生成式人工智能系统内。  在发给员工的内部邮件中,沃尔玛负责技术和软件工程的部门沃尔玛全球科技表示,“在注意到给公司造成风险的活动之后”,该部门此前屏蔽了ChatGPT一段时间。“随后,我们花时间评估和制定了一套关于生成式人工智能系统的使用指南,目前已经在沃尔玛内部网络中开放了ChatGPT的使用。”  关于该公司何时屏蔽了ChatGPT,以及所谓的有风险活动是什么性质,沃尔玛发言人没有做出回应,仅仅在声明中称:“大多数新技术既能带来新的帮助,也会制造新的风险。对我们来说,评估这些新技术并...
            0 0 858
            分享
      • 51testing软件测试圈微信