• 0
  • 0
分享
  • 应对自动化测试9大挑战
  • FunTeste 2023-03-30 09:58:59 字数 2480 阅读 821 收藏 0

Web 应用程序的动态、快速变化和关键业务的重要性不断挑战传统自动化测试和测试框架的极限。 本文讨论了最常遇到的关键挑战,以及如何帮助简单地或自动地应对这些挑战。

测试覆盖率

测试覆盖率是通过测试验证的重要指标之一。当人们表示他们在构建测试覆盖率方面遇到挑战时,通常意味着他们没有足够的资源来足够快地编写测试以跟上测试需求的增长。

解决挑战的尝试通常涉及招更多人活着将上线时间推迟,通常来说几乎不可能有立竿见影的解决方案。

低代码工具可以通过最小化复杂性和消除特定技能的门槛来帮助加速测试。与记录和回放的早期工具功能相比,现代主流的工具框架捕获测试用例更容易访问、更准确、更稳定。AI 驱动的工具有助于对被测应用程序进行建模、了解 DOM 元素之间的关系并使用多个属性来提高稳定性。通过加快测试速度,帮助许多敏捷团队赶上迭代速度。

识别动态元素

传统的测试自动化框架通过 CSS 属性或其在页面上的位置来识别应用程序中的可视元素。当这些属性在正常的开发活动发生变化时,通常会破坏相关的 UI 测试用例的有效性和稳定性。修复损坏的测试通常称为维护,通常维护成本随着自动化项目的复杂程度和用例数量的增加而指数增加。对传统开源框架的维护可能会消耗团队高达 40% 的优质资源。

识别动态元素的几种方法包括使用备用定位、相对定位、模糊定位或计算机视觉。

最稳定的测试来自人工智能驱动的工具,这些工具可以深入检查和理解应用程序的元素、属性以及元素之间的关系。如果应用程序从测试运行中学习并调整以反映应用程序随时间的变化,那就更好了。

同步测试

当测试在自动化平台中执行时,测试步骤的时间必须与应用程序的时间相匹配,否则测试将找不到正确的元素。使测试和应用程序保持同步的技术包括添加基于时间的等待(可以是每个步骤或测试)和基于事件的等待,以防止在事件发生之前执行下一步操作或者断言。可以参考Selenium等待:sleep、隐式、显式和Fluent

但是,添加等待会减慢执行速度。关键是添加尽可能少的等待以实现所需的稳定性,同时尽量减少对速度的影响。还有第二个相关的权衡:调整测试所花费的时间与获得稳定性和速度的最佳组合的平衡点。可以使用并行测试解决此问题:Selenium并行测试基础、Selenium并行测试最佳实践

部分公司正在尝试使用计算机视觉来识别页面何时准备好进行下一步以处理这些技术。但是,在该技术成熟之前,还是需要使用不同的基于时间、基于事件和条件等待的选项。

故障排除

当测试失败发生时,需要快速诊断它们,排除故障。这些工具应该使团队中的任何人都可以轻松确定测试失败的原因。团队还需要工具来帮助确定工作的优先级并指出可能影响多个测试的重复错误。

寻找在每个测试步骤中提供之前/之后屏幕截图而不需要额外编码的工具。视频可能会有所帮助,但加载速度较慢,并且通常无法快速查明问题所在。网络和控制台日志可能有利于额外的诊断,但应自动包含在测试结果中,而不是单独执行任务。

高级工具不仅会告诉您它在哪里坏了——它们还会告诉你它为什么坏了。智能工具还可以通过汇总常见错误并显示测试的最近结果历史记录来帮助对工作进行分类。

使用代码自定义无代码测试

市场上有许多低代码或无代码测试自动化工具,它们通过使用基于模型或记录/回放的方法来编写测试来简化 UI 测试编写。其中一些严重限制了测试人员对测试执行的操作范围,以及对功能到修改以适配自家的应用程序。

将代码添加到无代码测试应该是一项必备功能,以确保测试工程师能够灵活地满足独特的用例。确保添加代码的语言是团队成员都能力理解和使用的语言。更重要的考虑是选择与低代码和无代码工具所支持的语言。

跨浏览器测试

关于跨浏览器测试的重要性的文章很多,但许多开发团队只关注 Chrome。为什么?

其中一个重要大原因是:构建跨浏览器兼容测试框架和系统成本很高。

用户以不同的浏览器访问网站,那么应该至少执行跨浏览器测试覆盖主流的浏览器和系统组合矩阵,以确保网站在大部分用户使用时能够正常运行。有两个选项可以让这更容易:使用具有内置跨浏览器测试网格的工具,或者将测试与设备场或虚拟测试网格服务集成。前者往往更简单、更便宜,而后者将为您提供更广泛的设备和浏览器类型配置。

随机弹出窗口

弹出窗口是可能时造成自动化测试失败的最大的困扰。因为弹框的类型多种多样,通常难以不测,会阻止测试的顺利运行。

许多工具要求编写测试用例时候知道弹出窗口的位置,切换到活动窗口,将其关闭,然后再切换回应用程序的主窗口。虽然这些对预期的警告弹出窗口很有帮助,但它们对来自集成工具的随机弹出窗口没有帮助,这些工具可能会阻止元素直到关闭。

对于那些,需要寻找在每个步骤之前搜索弹出窗口的解决方案,然后通过关闭/取消来处理它们。 通常这种问题在编码阶段推行统一编码规范解决会具有更高的roi。

重用测试组件

不要重复自己,是一个也适用于测试的编码概念。如果测试包含在其他步骤中经常重复的步骤,则对基础元素的更改意味着需要更新许多测试。相反,如果这些步骤或组在测试中共享和重用,则可以更新一次以修复所有相关测试。

为了鼓励重用,编写测试的人需要快速轻松地访问那些可重用的组件,不然很难将重用的威力发挥出来。可重用组件应该足够灵活,以允许在特定测试中进行一些修改,无论是通过参数化、特殊处理等。如果是对于某一功能的封装,最好是提供丰富的API给使用者。

寻找一种可以轻松创建和共享可重用组件的工具。确保无论是在创作过程中还是在后续的编辑步骤中,都可以轻松找到这些组件并将其添加到测试中。即使它是一个低代码测试平台,它也应该启用某种形式的测试重构来清理重复项并用可重用的组件替换它们。

测试报告

通过/失败报告并不能让所有人都理解测试的结果。随着添加更多测试、测试类型(烟雾、回归等)以及用户评估结果,它的价值会继续降低。较大的项目需要更复杂的报告,以帮助说明质量的整体状态和方向。

寻找易于在团队中频繁运行和共享的内置报告,例如每周一次。通过过滤和排序来寻找灵活性,以创建不同视图。测试报告还需要提供访问更新详细的测试信息的功能。


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 1.HTTPS协议HTTPS协议是由SSL+HTTP协议构建的可进行加密传输、身份认证的网络协议。简单来说, HTTP是超文本传输协议 ,信息是明文传输。SSL 是指安全套接字层,它是一项标准技术,使用加密算法打乱传输中的数据,可确保互联网连接安全。所以HTTPS是超文本传输安全协议。TLS(传输层安全)是更为安全的升级版 SSL。由于 SSL 这一术语更为常用,因此我们仍然将我们的安全证书称作 SSL。如果某个网站受 SSL 证书保护,其相应的 URL 中会显示 HTTPS,单击浏览器地址栏的挂锁图标,即可查看证书详细信息,包括颁发机构和网站所有者的公司名称。1.1Https的优点:认证用户...
            14 14 1428
            分享
          • 原文阅读地址(手机阅读体验更佳):https://mp.weixin.qq.com/s/X6bmh9EaSk5F4TeZbc54rQ 初看不知画中意,再见已是画中人。小时候看过的很多故事,总觉得故事里讲的都是别人,长大后才发现,故事分明说的就是自己。记得有一个小毛炉过河的故事,印象深刻:那是夏天的一天,天气很热。小毛驴驮着两袋沉甸甸的盐赶路。烈日下赶路很辛苦,小毛驴累的浑身是汗,大气一口接着一口地喘。就在小毛驴快要坚持不住的时候,出现了一条小河,小毛驴高兴坏了,赶紧奔跑过去。河水很清澈,水底铺满了漂亮的鹅卵石。小毛驴顾不上欣赏这些,贪婪的大口大口的喝着水,水清凉甘甜,迅速缓解了身心的疲惫。小毛...
            1 1 670
            分享
          • 1、哪一刻,让你想起了自动化作为一名大厂测开,编写自动化脚本,嫣然成为一种必备的技能。但是,什么情况下使用自动化,使用自动化的前提条件,却不是很多人都熟知。这就好比,拿到驾照会开车的人很多,但车子何时需要做养护,每个阶段养护内容是什么,应该不是所有驾驶员都知道。所以,为了能彻底搞懂自动化的来龙去脉,我们今天就来聊一聊,自动化的场景及成本维护等…1.1 执行回归测试问:在日常测试工作中,由于新追加的需求(不允许怼产品经理)或者修复BUG,如何确定是否因其而引起新的BUG?答:我们常用做法,就是 回归测试。问:那么在每次修复bug或新增需求时,都需要手动去回归吗?在没有更多的成本、资源、时间时,依...
            0 1 4205
            分享
          • 引入问题相信不少开发看到测试提的bug单都少不了吐槽:这题的是什么玩意啊?也相信不少测试工程师在测试过程中,遇到问题不做二次确认,直接提个bug单。接下来,让我们作为旁观者,看看张三的问题: 张三在发现bug之后,立马给开发提了bug,不去排查bug产生的原因。这样就会产生三个问题:张三未经过二次验证确认问题的有效性,可能会导致把无效的问题提给开发。张三不去排查问题出现的原因,可能会将问题指给错误的开发。影响彼此工作的效率好不容易发现了有效的问题,简单一句话将问题描述并提单,又出了问题:在提问题单的时候,如果描述不清楚的话,开发很难复现问题。影响彼此工作的效率:开发无法复现问题,又需...
            10 10 1741
            分享
          •   还在上大学的时候就听说开发和测试不能和平相处,因为一个是提bug的,一个是改bug的,但是实际情况真的是这样吗?答案是:并不是这样。  开发和测试的关系取决于个人解决问题的方式。下面来说一下,怎样才能让开发和测试和平共处。  注意沟通方式  沟通方式是真的非常重要的。  作为测试,跟开发的沟通非常频繁,那么在沟通的过程中,沟通方式的不同可能会产生不同的结果。  比如说测试去找开发沟通一个问题,应该先说一下需求是什么样的,自己是怎样理解的,现在的功能是怎样的,并且委婉的说一下是不是在开发过程中漏掉了这一点,或者是不是我们理解有偏差,这样把问题摆出来之后,开发人员也会自己反思是不是自己的问题,...
            0 0 731
            分享
      • 51testing软件测试圈微信