用人工代替测试员?在2020年研究硒是否值得?



继续采访“还有谁需要硒?有人在2020年使用BDD吗?Selenium的机器学习»

涉及的对话:

  • Vsevolod Brekelov和Daria Manukhina(Heisenbug会议程序委员会);
  • 秋田图书馆和新Healenium工具的开发者Anna Chernyshova
  • 伊万Krutov,开发商Selenoid

在本文的最后,您可以找到Ivan和Anna的结论,即对以下问题的答案:“我应该学习硒还是选择其他东西?”。另外,我们设法谈论了:

  • 马克·曼(Marker Man),找出他是谁;
  • 公司有价值的员工;
  • 测试仪工具包;
  • 硒测试基础设施;
  • 硒的竞争对手。

如果您还没有阅读采访的第一部分,那么这里是一些让读者印象最深刻的截图:



上一篇文章简化了机器学习的问题。让我们从他开始。

-如果机器学习真的很酷,那么测试人员的哪些部分将继续存在?

安雅(Anya):首先,所有内容都需要以一种或另一种方式进行验证。当我们对机器学习解决的问题有一个明确的答案时,这很好用:是或否。根据这些是或否,机器做出决定。如果对这个问题没有明确的答案,则已经需要...-

一个特殊的标记人员。

伊万:任何机器学习都包括两个部分。

首先是训练本身,先给算法提供某种样例的学习数据,然后再应用算法。该算法的应用阶段是机器根据少量问题的正确解决方案帮助我们解决大量问题时。在当前阶段,无论如何都将对这些算法进行训练。

其次,机器学习主要是关于搜索的,Internet上的所有搜索引擎都非常活跃。为了提高这些算法的质量,必须处理大量数据。可以将一个人的角色简化为支持可以有效分析此数据的庞大的基础架构。也许算法本身会自己完成工作。但是,要确保所有条件都能够使该算法正常工作并具有良好的质量,它将仍然是人类的工作。
为了提供所有条件以使算法可以工作并具有良好的质量,它将仍然是人类的工作。
例如,要训练一些大数,一些好的算法,您需要一个分布式的计算集群,某种疯狂的MapReduce为了使它起作用,您仍然需要一些人来设置它并使其正常工作,或者还专门为此任务编写它。机器学习不是一个非常简单的话题。您越希望它更好地工作,就需要投入更多。质量的每一个下一个百分比,都是某种巨大的,令人难以置信的提高,不是按百分比而是按数量级。
在初始阶段,您可以在笔记本电脑上启动它,然后,使其运行得越好,您需要投资的越多。
-也就是说,即使有了这样的机器,我们仍然无法摆脱在某些基础设施,某些机器上运行测试的麻烦。带有测试的CI / CD不会随处可见。因此,例如,Selenoid肯定不会成为过去,但Selenium IDE不能说同样的事情。

Vanya:Selenium IDE不再灭绝,而是因为它将像我之前说过的一切一样成为一个更加利基的工具。他的团队真的很方便。有人愿意从头开始编写自动测试,有人愿意进行记录和复制。我不愿埋葬那样的一切,在我看来这是一个进化的过程。

- 嗯,是。事实证明,“ Cobol”甚至还在测试中。

Vanya:我说的是大型机!有人的Cobol,大型机,一切正常。在我看来,我们正在谈论各种技术问题,还有另一个细微差别。最后,当一切开始膨胀时,一切都会归结为金钱。

如果一切都以某种方式对我们来说疯狂增长,例如机器学习的成本,那么到某个时候,总会出现一个问题:“这些支出是否普遍合理?”

如果使用硒,我们的任务是什么?去测试。可能会发现,在某种程度上,这种机器学习开发的成本会比仅雇用坐下来打电话的人要高。

为什么团队仍然存在,有手动测试,有自动测试?为什么手动测试人员没有消失?因为有一类任务比较便宜,人们可以用手进行测试。比编写自动测试便宜。无论如何,一切都不利于经济,什么也做不了。

如果一切都以某种方式对我们来说疯狂增长,例如机器学习的成本,那么到某个时候,就会出现一个普遍的问题:“这些支出是否普遍合理?”


谁是“有帮助的员工”?


“但是,产品到达用户的速度会影响经济。”自动化只是试图缩短交货时间以增加利润和竞争优势,对吗?

Vanya:对。一名员工,感知到公司的活动,就好像是他的私人公司。他数钱,至少在这个主题上认为,不以实际单位数,但认为这对我们来说可能更便宜。对于在每次会议上都这样说的公司,这样的员工将永远是有价值的:“伙计们,例如,我们现在会节省,因此我们将获得更多利润。”即使他是初级开发人员。

-看来我在市场上很少见到这样的人。

Vanya:恩!他们很少。很少有人认为

-事实证明,每个人都习惯于解决问题,并拥有一套工具或已经存在的方法,但是很少有人从业务角度考虑它们是否真的是最优的。

Anya:这取决于组织的发展,取决于它为员工促进的文化。我最近读了《发现未来的组织》这本书,其中有不同类别的组织,它们按颜色划分。

未来的组织是绿松石公司,每个员工都感到不适和担忧,以便我们为用户做最大的事,每个人都包括在流程中。没有什么严格的管理等级,有低级雇员,高级雇员,每个人都有自己独立的责任领域,就像过去一样,在其他相关领域似乎没有任何地方-这不存在。所有员工之间的责任是共同的。如果一家公司开始朝这个方向发展,它将开始在其员工中推广类似的价值观,即使一个脑子里不知道这是怎么做的人,扎根于这个业务,为了业务,看着他的同事,开始为了进一步研究,如果他改变工作地点,那么这也将开始发展。这来自于现在的类似组织的数量,以及将会出现多少

2020年硒的使用


-现在如何使用硒?

Vanya:我听说过几个基本应用程序。我知道的第一件事是功能测试。这是它的预期用途:打开站点,执行一些用户脚本,验证一切正常。
我听到的第二件事是搜索引擎的使用(在Internet上爬行页面并分析其内容,屏幕截图)。这使您能够了解这是一个好网站还是一个坏网站。

Anya:您也可以将其用作UI负载测试。

瓦尼亚:有点贵。可能会有人这样做,但是原则上它很昂贵。至少这不是一个应用程序,而不仅仅是功能测试。仍然有许多任务需要使用浏览器进行简单的自动化。有些人使用这种方法,例如发送垃圾邮件。

实际上,Selenium只是一个API,它允许代码与浏览器一起使用,仅此而已。此类工具适合的任何任务都可以使用它,而不必进行任何测试。

测试仪工具包


-为了解决自动测试的问题,工程师通常会选择Selenium之外的哪些工具?他们将Java,Allure,Selenoid,Selenide融合在一起,并获得了一支好的机枪来解决他们的日常任务。还是还有其他东西?




Anya:在这里,您需要了解这种自动化方法的层次。在每个级别,您都可以结束一些乐器。

第一层是选择要写的内容;它是Java,.NET,JS吗?我使用Java进行了更多工作,我将对此进行讨论。实际上,关于构建项目的内容-Java。您可以使用Maven或Gradle进行组装。现在,Maven在YAML中拥有一个很酷的pom昵称,使用它很方便。

接下来,选择如何运行这些测试-这些是一些JUnit或TestNG。我最近一直在使用JUnit 5。

然后选择与元素的交互级别。这是硒,或硒的某种包装物,例如硒油。有了它,您可以缩短编写测试的时间。

接下来,您需要检查测试结果。这里有很多工具。您可以使用来自JUnit 5的相同断言,现在可以很方便地使用它们。还是Hamcrest,我真的很喜欢。或AssertJ还是方便的事情。当选择该运行程序来运行测试时,您需要考虑并行运行测试,如何更好地组织它。在JUnit 5中,这很方便;只需在此处进行注释即可。

然后测试编写本身,可能是一些BDD包装器,也就是相同的Cucumber。如果选择JUnit,则将需要其他内容。

加上基础设施。我最近一直在与Selenoid合作,这对我来说最方便。

更多报告。

-当然,报道是魅力吗?

安雅:好,还是ReportPortal
我可以解释什么时候诱惑力更好,什么时候ReportPortal更好。当一个小项目时,魅力很好,那么理想情况下通常会吸引它。如果这是一个大型项目,其中有100,500,000个测试,或者这是一个企业解决方案,或者您了解应该有很多测试,并且它们都应该汇总在某种报表中,那么ReportPortal很好,处理大量其中的结果更方便测试。当测试很少时,Allure更加方便。

瓦尼亚:我不知道您是否也参加了第一届Allure。最初,如众所周知的那样,Allure出现在Yandex上,但最终证明这些家伙是分开去做的。结果,它们只是ReportPortal所具有的功能,各种复杂的东西:历史存储等等,它们开始作为单独的商业产品来使用,因此在通常的诱惑力中不会出现。他们正试图出售它。如果您想要一些用于大量测试的开源报告,则可能是ReportPortal,尽管我本人从未尝试过。在我看来,对于某种诱惑力的小型项目而言,它是吸引眼球的。

所有这些工具都是针对具有相当长场景的复杂测试编写的,在这些场景中,必须很好地可视化测试过程中完成的所有步骤。这些报告不是特别适合于单元测试,因为只有“是/否”的答案,下降了-没有下降。

硒测试基础设施


-Vanya,您能告诉我们更多有关服务器部分的信息,人们需要多久接触一次? (对于质量检查工程师,DevOps)。


图片:Unsplash

Vanya:服务器端是什么?它必须是实现Selenium标准的某种Web应用程序。这样我们就可以将符合Selenium标准的命令发送给客户端,并且该服务器执行我们要为我们执行的所有检查。对于Selenium,现在有几种工具可以实现它。

有相同的Selenium常规旧版,Selenium或Selenium Grid或Selenium Server-这是用Java编写的应用程序,它在功能方面是最古老且最容易的。三年前,根据Selenium标准,来自Selenium网格的Zalenium项目萌芽。他已经知道如何在Docker容器中运行浏览器。该项目实施了整个标准,支持录像的可能性,存储日志的能力,具有比标准Selenium更好的界面。

我们从头开始做了一个名为Selenoid的项目。这也是Selenium协议的完全独立的实现。它是用Go编写的,不需要Java安装,不需要任何东西,它只从二进制文件开始,并且需要Docker。

除了开源之外,我们还为Kubernetes实现了一个实现,这就是Moon。这也是一个完全独立的实现,如果您有Kubernetes,则需要此实现。我们强调说,只有几个团队才能轻松部署基础架构。人们之所以喜欢它,是因为您进入了两个团队,并且一切都已经为您服务。

如果您不想自己部署Selenium,则有各种各样的Selenium在线平台。您可以使用云服务,它们非常昂贵,但是它们却很受欢迎。

安雅:我在SauceLabs上有经验,那里的一切也很方便。您只需指出要在哪个浏览器中运行,它们甚至支持移动测试。然后启动。但是它们很昂贵。

跨浏览器和移动浏览器测试


-从跨浏览器兼容性和手机的角度来看,Selenium如何起作用,并且与此相关的基础架构是否存在任何问题?我知道有些人会在手机上测试某些浏览器。幸运的是,我没有用手在Selenium中进行测试,我不知道设置所有内容有多么困难。

Vanya:这是痔疮,而且很贵。目的是测试如果我们在某些手机,某些移动Chrome中打开我们的应用程序,那么一切对我们来说都是相同的。自然,我们希望与台式机浏览器一样,使用代码来完成此操作。

最初的简单想法是购买不同型号的手机,并将其放在桌子上。有现成的工具,例如Appium实现硒标准的产品。这也是Selenium扩展的实现,它使您可以仅使用移动设备。最初,这只是针对真正的手机和平板电脑的农场。问题在于,仅此类电话服务器场的操作经验表明它非常昂贵。它不断崩溃,您需要更换这些手机,电池膨胀,它需要为这些手机充电的非常特殊的系统,您需要在此处进行更新,确保没有损坏。

现在,一切都在缓慢地朝着在仿真器中启动它们的方向发展。有一些特殊程序-模拟器,可以在普通计算机或服务器的屏幕上完全显示用户在手机或平板电脑上看到的相同内容。有适用于Android和iOS的模拟器。问题是,从Android的角度来看,这些是虚拟机,此类模拟器无法在任何硬件上运行。如果您需要Android模拟器,则需要使用坚固的服务器,这很昂贵。

如果要在iOS模拟器上进行测试,则需要使用Apple硬件,即MacMini,MacPro,MacBook或类似的东西,它也很昂贵。这是由于Apple的许可限制。因此,原则上可以在移动设备上进行测试,很清楚如何进行基础架构测试。即使在Docker中,您也可以运行Android,但价格昂贵。如果人们想这样做,他们需要认真思考。

在移动设备上进行测试的主要任务是找到仅在移动设备上播放的错误。有多种方法可以使其更便宜。可以启动桌面浏览器(例如Chrome),在其中浏览用户代理,并浏览所需的屏幕分辨率。是否在手机上的真实仿真器上进行测试应根据您是否只能在仿真器或手机上捕获错误来做出决定。
应根据是否只能在仿真器或电话上捕获错误来决定是否在真实的仿真器或电话上进行测试。

硒竞争者


-顺便说一下,有各种工具,例如Puppeteer,Playwright,可让您准确地仿真并进行跨浏览器测试,包括在移动浏览器中。也许很长一段时间他们都搬家或移植了?

Vanya:主持人,没有其他人感动。

Anya:这些都是很酷的东西,但是在跨浏览器兼容性方面有限制。赛普拉斯的Firefox似乎即将更新。您可以非常快速地编写测试,一切都很方便,但仅受Chromium限制。

Vanya:让我们从赛普拉斯开始。在2004-2005年间,Selenium的工作方式如下。

启动了浏览器,并在其中加载了特殊扩展名,用于自动执行浏览器的命令被推入其中。 15年后,出现了看着它的家伙。 Selenium放弃了这种方法,因为并不是所有的事情都可以借助扩展来完成。由于使用Javascript,因此无法在浏览器中执行所有操作;您无法访问文件系统上的文件。 Selenium切换到本机方法,开始编写独立于浏览器的独立二进制文件。 15年过去了。 JavaScript的人做了类似的工具。

木偶是完全一样的。 Puppeteer是Chromium的Google Chrome浏览器,它实现了与此调试面板配合使用的特殊协议。 Chrome具有调试面板,因此您可以在控制台中观看消息,网络请求等。

-当然,开发人员工具非常酷。

Vanya:是的,对于开发人员来说很方便。事实证明,这件事是使用特殊协议与浏览器进行交互的。主要思想是不要在此协议中单击鼠标,而是以与Selenium中相同的方式发送命令。伙计们刚刚编写了一个实现协议的Javascript库。

Anya:在我看来,这些工具可能非常适合组件测试,而前端测试人员将自己进行测试。我知道这样的应用案例;它们进行得很好。

瓦尼亚:总体来说,这些工具很好,很正常。它们只是利基市场,非常适合前端供应商,因为它们有自己的任务,可以在本地快速运行一些测试,但是问题在于它们不能满足已经存在的要求。

有很多测试,例如,用Java编写的测试-疯狂的卷,它们需要快速运行,它们需要快速扩展,依此类推。这个问题没有解决。

我并不是说这些工具是不好的。实际上,即使是制造赛普拉斯的团队或制造木偶的团队也说这与Selenium相同。有格列布·巴赫穆托夫Gleb Bakhmutov)有人问赛普拉斯是谁?他被问到:赛普拉斯硒吗?他回答说,这是前端开发人员的普通利基工具,我同意。在我看来,它们具有某种通用功能,可以解决一些通用问题,但是它们仍具有不同的应用领域。

-伙计们,您在使用Selenium方面有丰富的经验,如果您刚刚开始测试UI,那么您现在将选择哪种工具?从哪里开始更好?

安雅:无论如何,我将从硒开始。因为这是一个标准。

-Java和Selenium,对吗?

安雅:好吧,您不能使用Java,您可以使用.NET,Python,但仍然可以使用Selenium,因为他活着,活着并且将继续生活。

硒生活,将继续生活。


伊万:假设我们需要砍一些木板,一个人是木匠。
首先,他需要学习如何使用标准的东西,要学习如何用锯来锯,然后需要某种复杂的专用机床。

硒是每个人都可以执行的简单工具。有1005亿人将告诉您如何用锯子锯木。一方面,切入某些细分市场会很酷,但是对于通用任务而言,硒仍然是目前最好的。

Anya:硒是您需要了解的基础,以便能够进一步发展并向其中添加一些有趣的面包。

- 谢谢!我希望收到的信息对我们的读者有用。

我们提醒您,Heisenbug 2020 Piter会议在线举行在这里,您可以与Vanya和Anya进行交谈,并了解有关Healenium,Selenoid以及Kubernetes集群中Chrome DevTools协议的使用的更多信息。

对于那些想扩大视野并参加多个会议(但要立即参加8个会议)的人,我们已经准备了一些东西

All Articles