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

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

测试覆盖率

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

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

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

识别动态元素

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

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

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

同步测试

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

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

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

故障排除

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

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

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

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

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

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

跨浏览器测试

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

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

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

随机弹出窗口

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

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

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

重用测试组件

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

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

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

测试报告

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

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


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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   据报道,三星电子代工厂从日本人工智能芯片初创公司 PFN(Preferred Networks)获得了其尖端 2 纳米 EUV 代工节点的量产订单。据报道,这是 2 纳米节点的首个主要第三方订单。PFN 成立于 2014 年,专注于人工智能和物联网芯片,从 Preferred Infrastructure 分离出来。  三星的 2 纳米节点被称为 SF2,有望在 2025 年交付量产芯片,这意味着 2024 年的大部分时间都将用于测试、验证和风险生产,预计该节点将在年底投入使用。  与 SF3(3 纳米 EUV FinFET)相比,三星 SF2 的能效(等时钟)提高了 25%,性能提高了 ...
            0 0 1218
            分享
          •   陪审团周四表示,美光因侵犯Netlist在高性能计算内存模块技术方面的专利权,应赔偿Netlist 4.45亿美元。美国德克萨斯州东区地方法院的陪审员一致认为美光的半导体内存产品侵犯了 Netlist 的两项专利,这两项专利与提高内存模块容量和性能的技术有关。  陪审团还认定美光故意侵犯了这些专利,这可能导致法官将赔偿金最高提高三倍。  Netlist 的律师 Jason Sheasby 在一份声明中说:"我们非常感谢陪审团的服务,以及他们对 Netlist 创新重要性的认可。"  去年,Netlist 在同一家法院就高性能计算机内存专利的相关纠纷中赢得了对三星 3.0...
            0 0 729
            分享
          •   当地时间周四,社交媒体 Facebook 母公司 Meta 宣布,开始测试基于生成式人工智能的广告工具。  据悉,这些新的广告工具可以创建图像背景和变形文字等内容。Meta 高管在纽约举行的一场新闻发布会上表示。该公司计划邀请部分广告商在所谓人工智能沙盒(AI Sandbox)的“测试环境”中测试这些工具。  Meta 高管们拒绝透露一开始有多少广告商可以使用测试环境,只表示这个群体很小。  他们说,Meta 计划在今年 7 月份向更多广告商提供人工智能广告工具的访问权限,并在今年晚些时候将其中一些功能整合到普通广告产品中。  这一声明标志着 Meta 首次尝试推出使用生成式人工智能技术的...
            0 0 926
            分享
          • 零、为什么做金融类软件测试举个栗子,银行里的软件测试工程师。横向跟互联网公司里的测试来说,薪资相对稳定,加班少甚至基本没有,业务稳定。实在是测试类岗位中的香饽饽!一、什么是金融行业金融业是指经营金融商品的特殊行业,它包括银行业、保险业、信托业、证券业和租赁业往往涉及证券、银行、基金、信托、保险、投行、期货等领域二、金融行业的业务特点随着金融行业的业务不断增加,金融交易模式的不断变化,金融机构对信息化的要求也越来越高,高质量的金融软件对于金融机构来说显得尤为重要。如何保证金融行业软件的质量,对金融行业软件的测试人员来说,也提出了更高的要求1. 金融行业的业务特点数据量大数据量大,金融企业为顺应金...
            0 0 2201
            分享
          • 什么是性能测试(performancetesting)答案:系统在一定的压力情况下,查看cpu,内存,磁盘,网络带宽,TPS、响应时间、并发用户数、等各项指标,通过模拟生产运行的业务压力量和使用场景组合,测试系统的性能是否满足生产性能要求,就是在特定的运行条件下验证系统的能力状况。什么时候做性能测试答案:功能测试已完成并稳定运行,性能测试环境已搭建,项目上线前,在生产环境做性能测试。什么是负载测试(Loadtest)答案:负载测试主要是考察软件系统在既定负载下的性能表现。就是站在用户的角度去观察一定条件下软件系统的性能表现。期望结果是用户的性能指标需求得到满足。性能指标一般体现为响应时间、并发...
            0 0 1268
            分享
      • 51testing软件测试圈微信