• 14
  • 14
分享

尽管在很多情况下测试自动化是有意义的,但一些测试场景是不应该使用自动化测试工具的,比如Selenium、WebDriver。

下面有10个示例,来解释为什么自动化在这种情况下使用时没有意义的,我还将为您提供每种方法的替代方法。

验证码

CAPTCHA是完全自动的公共的图灵测试,以区分计算机和人类之间的区别的简称,它的存在是为了防止自动化,因此甚至不值得尝试。

在测试过程中,有两种主要策略可以解决CAPTCHA检查问题。如下:

  • 在测试环境中禁用CAPTCHA。这可能是被测软件中的简单配置。或者甚至可以在测试的URL参数中配置;

  • 添加一个挂钩,以允许测试绕过验证码。

外观测试

视觉自动化测试意味着检查页面如何呈现和呈现给最终用户。这对于检查多种设备和屏幕分辨率非常有价值。我们中的许多人试图通过使用代码检查单个页面上是否存在数十个甚至数百个元素来做到这一点。WebDriver不是正确的工具。

相反,最好使用专用的视觉测试工具。这是我以最受欢迎的屏幕分辨率测试网站的示例:


7.png


实现代码:


8.png

双因素认证

您不应该通过UI自动化的另一种情况是双因素身份验证(或2FA)。即使用“身份验证器”移动应用(例如Google Authenticator或Microsoft Authenticator)生成一次密码,并通过SMS或电子邮件发送一次密码的地方。

在Selenium中自动化它是一个巨大的挑战,但这并不意味着它无法完成。尽管可以自动化,但它是要添加的另一层,并不安全。因此,最好避免完全自动化。

解决2FA检查的三个选项如下:

  • 在测试环境中为某些用户禁用2FA,因此您可以在自动化中使用这些用户凭据。

  • 在测试环境中禁用2FA。

  • 如果您从某些IP登录,请禁用2FA(通过这种方式,您可以配置测试计算机的IP来避免这种情况)。

文件下载

通过API自动执行文件下载不是理想的方法,因为API不会公开下载进度。下载文件不被视为模拟用户与Web平台交互的必要方面。

因此,您应该考虑完成此解决方法:

使用Selenium和任何必需的cookie查找链接,并将其传递给HTTP请求库,例如REST保证 (Java),fetch (JavaScript)或 libcurl (跨平台) 。

HTTP响应代码

HTTP状态代码是Internet上网站服务器给出的标准响应代码。当网页或其他资源无法正确加载时,这些代码有助于确定问题的原因。在自动化功能测试中,检查状态码不是测试失败的特别重要的细节;之前的步骤更为重要。

最好将API测试保留在这一层。WebDriver不是API测试工具。因此,您可以使用诸如 REST Assured(Java),fetch(JavaScript)和 RestSharp(.NET)之类的库。

Gmail、电子邮件和Facebook登录

您不应该通过UI自动化的另一种情况是Gmail,电子邮件和Facebook登录。不建议使用WebDriver登录这些类型的网站。这违反了使用条款,而且速度慢且不可靠。

一般而言,较长的测试更加脆弱且不可靠,这使您面临测试失败的风险。对超过20亿次测试的研究证实,持续时间超过2分钟的测试失败的可能性是原来的两倍。

相反,最好使用电子邮件提供商提供的API,或者对于Facebook,使用 公开显示用于创建测试帐户的API的开发人员工具服务(Gmail API在这里)。

使用API似乎有些额外的工作,但是您将获得速度,可靠性和稳定性的回报。API也不太可能更改。但是,网页和HTML定位器经常更改,并且需要您更新测试框架。

性能测试

通常不建议使用Selenium和WebDriver进行性能测试,因为它并未针对工作进行优化,因此您不太可能获得有价值的结果。WebDriver测试受到许多外部和内部脆弱性的影响,而这超出了您的控制范围。

其中包括浏览器的启动速度,HTTP服务器的速度,托管JavaScript或CSS的第三方服务器的响应以及WebDriver实现本身的检测损失等。它将导致结果变化。您将获得较慢的性能测试,其中包括后端和前端性能。

而是使用免费工具(例如 Google Lighthouse) 来提高前端性能。然后,使用免费工具(如Apache JMeter)执行单独的负载或压力测试 。

为了发现需要改进的地方,您需要能够独立于环境差异来分析总体性能,识别不良的代码实践并分解单个资源(即CSS或JavaScript)的性能。

链接爬虫

我不建议使用WebDriver进行链接爬虫,换句话说,通过链接来爬网。您可以做到,但是WebDriver绝对不是此任务的理想工具,因为它需要一些时间才能启动。这可能需要一分钟的时间,具体取决于测试的编写方式,只是要转到页面并遍历文档对象模型。

此外,编写遍历页面和捕获链接的逻辑只是浪费时间。

除了使用WebDriver,还有许多更简单的方法。可以搜索这两个免费工具:

  • www.brokenlinkcheck.com,它在几分钟之内就找到了我网站上所有断开的链接。

  • www.deadlinkchecker.com 。

视频流

如今,视频流越来越流行,但是您可能不想通过UI对其进行自动化。Selenium通常无法识别视频控件。JavaScript Executor和flex-ui-selenium可以在某种程度上起作用,但是它们并不完全可靠。

相反,请查看 StreamTest,它是一个免费工具,可以衡量最终用户的体验质量。您甚至可以添加监视。

崩溃恢复

恢复测试是一种软件测试技术,可验证软件从故障(例如软件和硬件崩溃)中恢复的能力。您可能要测试应用程序的崩溃恢复。最好手动测试。这并不是说您不能使用Selenium进行测试,但是这样做并不可行或无益。

对于可靠性测试,从开发的各个阶段(例如设计和操作阶段)收集数据。由于成本和时间等限制,测试受到限制。

总结

以上是您不应该通过UI自动化的十大场景。包括验证码测试、外观测试、双因素验证、视频、崩溃、链接爬虫、性能测试、文件下载、http状态码、电子邮件登录。

您可以在工作时参考它们,并尝试在开发,编码和测试时确定最佳的方法。

尽管在某些情况下有变通办法,但首先考虑为什么不应该自动化这些特定元素的原因。


原文链接:https://mp.weixin.qq.com/s/vmFWvfexUcQdXUUqBzviLQ

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          • 据报道,当地时间周四,美国交通部表示,他们正在调查埃隆·马斯克(Elon Musk)的脑机接口公司Neuralink涉嫌非法运输危险病原体一事。  美国交通部发言人称,他们之所以决定启动调查,是因为美国责任医师协会(PCRM)周四早些时候致信交通部长皮特·布蒂吉格(Pete Buttigieg),提醒其注意他们获得的相关记录。  PCRM称,他们获得的邮件和其他文档显示,Neuralink从猴子大脑中取出的植入物存在不安全包装和运输问题。这些植入物可能携带传染病病原体,因而违反美国联邦法律。  美国交通部发言人称,他们“非常重视”PCRM的指控:“我们正在进行调查,确保Neuralink完全遵...
            0 0 684
            分享
          • 扫盲内容:什么是接口?接口都有哪些类型?接口的本质是什么?什么是接口测试?问什么要做接口测试?怎样做接口测试?接口测测试点是什么?接口测试都要掌握哪些知识?其他相关知识?1、什么是接口?接口测试主要用于外部系统与系统之间以及内部各个子系统之间的交互点,定义特定的交互点,然后通过这些交互点来,通过一些特殊的规则也就是协议,来进行数据之间的交互。2、接口都有哪些类型?接口一般分为两种:程序内部的接口;系统对外的接口;系统对外的接口:比如你要从别的网站或服务器上获取资源或信息,别人肯定不会把数据库共享给你,他只能给你提供一个他们写好的方法来获取数据,你引用他提供的接口就能使用他写好的方法,从而达到数...
            12 12 1644
            分享
          •   一、引言  对于大厂的同学来说,接口自动化是个老生常谈的话题了,毕竟每年的MTSC大会议题都已经能佐证了,不是大数据测试,就是AI测试等等(越来越高大上了)。不可否认这些专项的方向是质量智能化发展的方向,但是凡事都遵循2/8定律,80%的从事软件测试的同学或许对这些并不感冒,因为大部分测试同学分布于中小厂,而他们大多停留在如何更好更快地进行接口自动化的阶段。  小厂质量团队地位低,在团队中发言分量轻,项目中往往处于劣势,项目的测试时间不能保证,更别提搞什么高大上的质量专项了,能把接口自动化测试做好就是大事一件,节省不少时间了。  因此,聊聊接口自动化还是非常有必要的。  二、“JMeter...
            0 0 362
            分享
          •   正常情况下,有了四年的测试工程师经历,应该可以达到中级测试工程师的水平了。作为一个初中级测试工程师下一步是转开发还是继续做测试,个人建议是做测试开发!  本篇文章将由以下四个部分来展开:  ·可以继续做测试吗?  ·转行做开发可以吗?  ·为何说建议转行测试开发?  ·如何走向测试开发,有什么靠谱的办法?  一、可以继续做测试吗?答案是行不通  这里所说的测试是指普通的“手工测试”,如果只是做普通的手工测试,只是每天机械的进行“点点点”,想拿高薪是不太现实的。即使工作的时间长了,但是大部分人员还是停留在初级测试工程师的阶段。并且随着年龄的增长你会发现你越来越没有了竞争力,比你年轻、有活力、...
            0 0 1668
            分享
          • 一般我面试的过程都是这样的:首先,先来个简单的自我介绍吧,简单讲下都参与了项目中的哪个阶段,对测试的理解,实战一个测试用例设计,最后是一些个人兴趣探讨。而我心目中的完美答案是这样的,如果能达到这样基本就会很满意~~测试阶段~需求分析阶段:确认需求和要求,参与需求评审会议和软件概要设计评审会议。测试计划阶段:编写测试计划,根据概要设计确认测试重点,安排每个版本要测试的内容。编写测试用例:编写测试用例并安排评审。测试执行阶段:搭建环境,进行测试,管理缺陷。输出测试报告:输出测试报告,给出能否上线结论。~测试设计~除了一些客观条件,我在面试时都会问一个点,地址,这个功能怎么测?地址这个点看似简单,实...
            3 3 7697
            分享
      • 51testing软件测试圈微信