• 0
  • 0
分享
  • 怎么样才能让回归测试变得更加轻便快捷?——软件测试圈
  • 曼倩诙谐 2022-10-21 13:11:15 字数 2487 阅读 1046 收藏 0

  经典软件测试课程免费送,点击下方链接填写测试行业调查问卷,即刻领取,还有机会获得精美测试大礼包~链接:http://vote.51testing.com/


  自动化战略

  在查看工具的许多选项和构建概念证明之前,第一步是问“为什么”这个问题。

  可以说,启动UI自动化项目的最常见原因是“回归测试花费的时间太长”。每个版本,他们有一周的时间开发新功能,然后将新代码交给测试人员,然后有一周的时间对新工作进行测试和错误修复。当一切都完成后,仍然需要有人做一些调查,希望能发现最近所有的代码变动是否引入了任何令人惊讶的问题。最后一部分,回归测试,要么花费太长时间,要么时间紧迫。这就是有人想到所有实际操作的回归测试都可以自动化并立即完成的地方。

  这样做的最终结果通常是一个中途构建的测试套件,并没有真正返回太多信息。而且,时间更短,因为进行回归测试的那群人现在正在同时进行回归测试和构建自动化。事实是回归测试花费了太多时间,因为开发流程很糟糕。

  这就是要解决的问题。

  这是UI自动化的另一种策略;使用它来推动功能更快地投入生产。

  UI自动化通常是在至少一个 sprint 的延迟上开发的。现在正在编写的测试代码可能是针对已在生产中进行了数周或数月的代码更改。充其量,这只会告诉您页面上的某些内容何时发生变化。为什么不在冲刺中构建自动化?

  自动化看起来像这样。开发人员在适当的地方编写他们的新功能,并在单元和 API 测试中进行。一旦 UI 接近完成,他们应该与测试人员更密切地合作。该测试人员可以开始构建自动化 UI 测试的骨架。他们可能会编写几行代码来导航到一个页面,然后开始填充一些文本字段,然后不得不停下来调查一个不接受 20 个字符长输入的字段。开发人员会查看那个点,修复一个错误,然后重新启动他们的本地服务器。然后测试人员会重新开始构建测试,同样写一两行,停下来调查一些有趣的事情,然后重新开始。

  到构建该功能的重要覆盖范围时,已经探索了新的代码更改并进行了多轮错误修复。当更改准备好提交时,会有单元测试、API 测试和一些自动化的 UI 测试。该功能基本上已准备好用于生产。这也有防止过多 UI 自动化的副作用。

  一旦流程到位,回归测试确实会更快,开发流程也会更加顺畅。不必在组之间进行交接,代码进入回归测试已经测试,检查通过 selenium 传递给该功能。在持续集成系统仪表板中添加一点探索和一个绿色条,团队可以为 sprint 发送代码。覆盖问题也变得容易多了。一个人不需要在 5 个不同的 Web 浏览器中执行类似的测试,而是一个脚本可以在所有浏览器中并行运行,同时一个人寻找更重要的问题。

  框架选择

  有许多 API 和工具可用于帮助人们构建 UI 自动化。对它们进行分类的一种简单方法是,构建测试的人是否记录了他们在浏览器中执行的步骤并随后添加了断言,或者他们是否正在编写代码。

  录制和回放

  Telerik Test Studio 和 HP 统一功能测试 (UFT) 是流行的记录和回放工具。使用这些工具,非技术人员可以主要靠自己来创建测试。他们可以创建对象库来引用页面元素,在必须重复执行某些系列步骤时调用可重用的函数。这些通常可以使用专有编程语言或 C# 之类的语言进行扩展。使用记录和回放工具创建稳定的测试可能很困难。

  构建测试

  使用 WebDriver 为用户管理页面构建测试的第一步是构建页面对象。该类应包含 enterFirstName()、enterLastName()、setBirthDate、deleteFirstName()、clickSubmitBtn() 等方法。这些方法中的每一种都是完全独立的。例如, enterFirstName() 将检查该元素是否存在、它是否可见并准备好进行操作,然后输入文本。

  该用户管理页面的第一个测试可能如下所示:

  enterFirstName("Justin")
  enterLastName("Rohrman")
  setBirthDate(03/02/1981)
  clickSubmitBtn()

  这些步骤之后将根据您期望页面返回的内容进行断言。

  在自动化 UI 测试中,在无法帮助您了解产品重要部分的质量的浅层测试套件和过度使用并跨越需要持续护理和喂养的门槛的套件之间存在细微的界限。(你做的检查越多,测试需要的维护就越多。)一个管理页面的单个用户创建测试可能是不够的。自动化进入您脑海的每个测试想法可能太多了。中间的一种方法,创建更新,删除 (CRUD),可能更有意义。

  此测试将执行以下操作:

  · 创建一个新用户

  · 断言新用户仍然存在并且值符合预期

  · 更新该用户个人资料上的每个可更新字段

  · 断言新值持续存在

  · 删除用户记录

  · 断言在搜索中找不到该用户

  对于 Web 测试来说,这听起来像是一个复杂的场景,它可能确实如此。良好的架构和使用页面对象等设计模式可以使其既有用又可靠。

  如果页面对象出现故障,那么当页面上的元素发生变化时,很多测试都会失败。无论使用哪种开发模式,这个问题都是真实的。页面对象模式的优势在于修复只需要在一个地方——页面对象——而不是每次测试。正确的设计模式和良好的 API 的结合意味着您只需在一个地方更改代码即可让事情再次运行。考虑到软件的本质是要改变的,这一点很重要。

  有很多方法可以使 UI 自动化正确,也有很多方法可以弄乱它。首先了解团队的目标:开发团队有什么问题以及 UI 自动化如何解决这些问题。接下来,制定符合这些目标的策略:需要多少 UI 自动化、哪些地方需要覆盖以及团队应该从哪里开始。然后,选择正确的工具,一种与工具配合使用的设计模式,并开始构建测试。在那之后,游戏提出了很好的测试想法,将它们转换为代码,知道何时改变策略……以及何时停止进行新的测试。



作者:佚名    

来源:http://www.51testing.com/html/36/n-4479436.html

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   网络测试  我们在测试某个方法的时候可能会遇到方法内部调用了网络通信能力:  · 网络请求成功,可能刷新 UI 或者给出一些成功的提示  · 网络失败或者网络不可用则给出一些失败的提示  所以需要对网络通信去看进行模拟。  iOS 中很多网络都是基于 NSURL 系统下的类实现的。所以我们可以利用 NSURLProtocol 的能力来监控网络并 mock 网络数据。  开源项目 OHHTTPStubs  就是一个对网络模拟的库。它可以拦截 HTTP 请求,返回 json 数据,定制各种头信息。  几个主要类及其功能:HTTPStubsProtocol 拦截网络请求、HT...
            0 0 910
            分享
          • 1 引言1.1 编写目的编写该测试总结报告主要有以下几个目的:通过对测试结果的分析,得到对软件质量的评价;分析测试的过程,产品,资源,信息,为以后制定测试计划提供参考;评估测试测试执行和测试计划是否符合;分析系统存在的缺陷,为修复和预防bug提供建议。1.2 背景1.3 用户群主要读者:XX项目管理人员,XX项目测试经理其他读者:XX项目相关人员。1.4 定义严重bug:出现以下缺陷,测试定义为严重bugü 系统无响应,处于死机状态,需要其他人工修复系统才可复原;ü 点击某个菜单后出现“The page cannot be displayed”或者返回异常错误;ü 进行某个操作(增加、修改、删...
            11 11 2328
            分享
          •   你在学习python自动化测试吗?听过requests库吗?  tablib是requests库常年维护的一个可以操作Excel等多种文件格式,将他们变成一种通用数据集的第三方库。  tablib支持的主要数据格式有:  ◆ xls, 老版 office 的 excel 文件格式;  ◆ xlsx系列,新版 office 文件格式;  ◆ json  ◆ yaml  ◆ html  ◆ csv  ◆df,pandas 的 DataFrame, 需要安装 pandas  也就是说,tablib 能把不同格式的数据转化成一种通用的关系型数据格式,然后再各个格式之间无缝切换。  什么叫关系型数据...
            0 0 1001
            分享
          • 摘要:测试数据是测试过程中的主要瓶颈之一。通过简化测试数据,我们可以通过解决四个主要挑战来解决这个瓶颈。在许多组织中,当尝试实现CI/CD、敏捷、测试自动化等时,我们将测试数据视为测试过程中的主要瓶颈之一。大量的时间浪费在寻找正确的测试数据用例上,多个团队在同一个数据库上工作(随之而来的结果),时间浪费在制作和等待完整大小的副本上,所有这些都减慢了您的测试工作,更不用说它所引起的沮丧和恼怒了。如果您想知道如何解决这个测试数据瓶颈,请继续阅读。回归基础在20世纪60年代太空竞赛的高潮时期,美国宇航局的科学家们意识到钢笔无法在太空中使用。他们需要想出另一种方法让宇航员记录东西。因此,他们花了数年时...
            1 0 933
            分享
          • 前面的博客中,我介绍了appium多线程中如何获取devices的值。今天我们讲讲如何检查端口是否被占用。因为,我们要获取多线程中的多个端口,但是,在获取多个端口之前,我们得先检查端口是否被占用。思路:通过os.popen命令,接收返回的端口值,如果返回的值的长度大于0,说明端口被占用了,否则,端口就没有被占用。如上,通过创建一个类,写一个方法,检查端口是否被占用。通过对appium多线程自动化的学习,是不是发现,我们每一步动作,都是创建一个类,写一个方法,通过调用这个类中的这个方法,供后面使用。PO模型中,分层设计,后面的类都是调用前面的类中的方法,来达到目的的。多写一写,慢慢就会熟悉pyt...
            0 0 601
            分享
      • 51testing软件测试圈微信