随着新的一年即将来临,这里是一个有可能占据主导地位的测试自动化趋势。
DevOps比以往任何时候都更加依赖。由于采用DevOps存在强大的市场驱动因素,因此对测试自动化的需求也从未如此强烈。但DevOps之后的下一步是什么?
嗯,新的趋势年复一年,其中一些很快消失。但我们在这里是因为我们不想错过留下并重塑行业的那些人。
在本文中,我将列出与测试自动化相关的驱动因素,趋势,以及在我们进入新的一年及更长时间时影响我们的技术变化。此外,我还提出了许多问题的观察和预测,例如:
人工智能可以做什么,不能做什么来解决测试自动化问题?
Progress Web Apps即将推出,它对Test Automation意味着什么?
Selenium-less Automation是否是正确的解决方案?
测试自动化中的新趋势和技术将如何影响您的组织?
然而,在我们开始讨论2019年令人兴奋的事情之前,让我们来看看2018年发生的事情。
2018年测试自动化的现状
自动化仍然是实现DevOps的主要动力
持续交付采用的增加仍然是当今自动化的主要驱动力,远远超过了主要的好处 - 自动化本身的ROI。许多公司采用自动化,因为他们需要做DevOps,这是他们CTO议程的一部分。
这些过程非常依赖于测试自动化,如果它们被破坏或消失,它们将不存在或起作用。没有它们,就没有自动化,没有持续交付,没有DevOps,没有。自动化损坏意味着连续交付中断 自动化已成为采用DevOps的最大障碍。这导致新软件整体上改善了自动化并减少了任何问题发生的可能性。
Selenium 4将作为W3C标准推出.
如果您还没有听说过,Selenium WebDriver是领先的测试自动化工具。
转向开源已经灌输了这样的想法:公司越来越多地寻求免费增值选项,以满足他们的需求更好的定制,以及节省成本的明显好处。
最后,符合并成为W3C标准的更新协议的Selenium 4 将于今年12月推出。除了WebDriver中的协议更改之外,Selenium Grid和Selenium IDE还将进行改进。从现在开始,实际的自动化交互(查找元素,单击等)由浏览器供应商正式负责。
提高测试人员的编码技能期望
由于类似Selenium的受欢迎程度,QA测试人员应该知道编码。这不一定是坏事,但它确实让当前的测试人员没有这种技能集合。最终,对于测试人员及其雇主的未来,他们可以编码。测试人员知道这会更好,因为这可以帮助他们提升自己的技能和职业生涯成为SDET(测试中的软件开发工程师)。
然而,这说起来容易做起来难。在敏捷环境中,测试团队从未有足够的时间进行测试,更不用说时间来吸收新的自动化和编码知识。这种差距可以通过支持测试团队中不同技术水平的正确工具和方法来弥补。
除了编码之外,测试人员还需要充分了解底层系统的工作原理以及良好的测试自动化设计,以避免测试剥落。
AI-Powered测试自动化工具
我们正处于范式转变之中,全球范围内所有行业和规模的企业都在努力采用人工智能来发挥其竞争优势。测试自动化行业也不例外。有一波新的自动化工具已经将自己称为“AI自动化”或“机器学习自动化”。
目前,大多数这些新工具都专注于使用AI来解决有关定位Web元素的问题。他们吹嘘诸如“无代码自动化”或“自我修复自动化”等行业术语下的测试记录和回放等功能。一些工具还能够使用NLP(自然语言处理)将以纯文本编写的手动测试用例“翻译”为自动测试。
但是,当涉及到修改生成的Automation脚本以供将来重用/参数化时,事情变得不那么令人兴奋。其中一些工具不允许你这样做。有些通过UI提供此功能,与真正的IDE相比,这非常繁琐且无效。
观看这些工具如何成熟并在测试自动化方面取得突破非常有趣。
2019年观看的趋势
2019年的AI-Powered测试自动化工具:成败?
由于这些工具已经进入市场一段时间了,2019年是他们成败的一年。让我解释一下原因。
从历史上看,在测试自动化中使用AI并不新鲜。作为AI伞的一部分的计算机视觉技术,例如OCR或KeyPoint,已经被用于UI元素识别目的很长时间。当测试自动化工具无法识别对象级别的UI元素时,建议将这些技术用作替代/解决方案。有两个原因:
首先,与基于对象的识别相比,基于图像的元素识别是非常慢的。
其次,当应用程序的表示发生变化时,依赖于视觉识别的测试流程很容易中断 - 这种情况一直在发生。
思考并确定哪种方法更可靠,并且是识别按钮的最有效方法:使用开发人员分配的唯一“id”或使用其可见文本。您知道,准确性,速度和可靠性是自动化,自动化的基础。
随着人工智能技术每天变得更好,人工智能的潜力不应仅仅停留在定位网络元素上。在我看来,AI,特别是机器学习和自然语言处理,有可能解决测试自动化的数据相关问题。这些结果将包括以下内容:
通过在UI和代码级别主动检测UI映射更改,以自动方式减少UI更改导致的测试失败
为CD管道中的新代码提交选择并执行受影响的测试
节省测试人员自动聚合和分析测试结果的时间,特别是对于每晚进行数千次测试的项目
根据不同来源生成自动化测试:纯文本测试用例,应用程序日志文件,测试结果等。
预测:一般而言,AI可以帮助我们完成实际工作,也可以提供相关信息以帮助我们做出更好的决策。对我来说,后者就是自动化的情况:人工智能将通过改进数据驱动的建议来大幅提高自动化工程师的工作效率,而不是实际的UI交互工作。
奖金预测:遗憾的是,“AI将取代测试自动化工程师吗?”的问题将不会被测试自动化工程师询问。
强大的网络变得更好
借助Progressive Web Apps或Web Bluetooth等新技术,Web应用程序可以像移动本机应用程序一样提供出色的用户体验。
根据维基百科的说法,“渐进式Web应用程序(PWA)是像常规网页或网站一样加载的Web应用程序,但可以提供用户功能,例如脱机工作,推送通知和设备硬件访问,传统上只适用于本机移动应用程序。PWA是一种新兴技术,它结合了现代浏览器提供的Web开放标准,以提供丰富的移动体验“。
Web蓝牙和物理Web等开源项目允许Web应用程序通过蓝牙低功耗(BLE)等通信标准直接与移动设备进行交互。
预测:PWA将逐步接管移动本机应用程序,因为开发人员可以更轻松地跨设备提供出色且一致的用户体验。这对于移动测试自动化来说是个好消息,因为网络是如此标准,以至于担心设备覆盖所需的工作量要少得多。另一方面,Web测试自动化的测试计划需要扩展到蓝牙和硬件通信测试。
JavaScript自动化只能更受欢迎
JavaScript是WebDriver在过去几年中下载次数最多的绑定语言。这是JavaScript和NodeJS流行的合理结果。
今天的新应用程序开发项目使用JavaScript框架。Test Automation的语言选择只是遵循这一趋势。
现在新的WebDriver 3.8即将推出公开发布,使用JavaScript自动化浏览器将非常有意义。这主要是由于它已经随浏览器一起发布,并且像我们之前提到的那样,它也符合W3C标准。
预测:JavaScript(或其超集TypeScript)将成为新自动化项目的权威脚本语言。
Selenium-Less自动化
正如商业中经常发生的那样,人们已经在谈论Selenium-Less自动化。赛普拉斯就是一个例子。它开发了自己的基于JavaScript的自动化库,它在浏览器中运行,而不是使用WebDriver。它的主要优点是能够访问被测应用程序的内部对象/模型,这意味着可以更灵活地为测试设置应用程序状态。它也比WebDriver运行得更快,因为它没有像Selenium Server那样的“代理”层。
预测:我们将看到开发人员越来越多地采用这些非Selenium WebDriver工具。我们还不知道,因此,它的可行性。这取决于它是否获得了第三方工具的生态系统,以便从后面支持它们 - 大型项目必须拥有的,以及大规模采用。
区块链测试
如果你一直在阅读头条新闻,你可能听说过比特币或以太坊。这些加密货币是区块链技术的典型应用并获得最多的压力,但这并不意味着您应该排除区块链。区块链在金融,物流,医疗保健等行业中具有更广泛的通用应用。
根据维基百科的说法,区块链是“一种开放的,分布式的分类账,能够以可验证和永久的方式有效地记录双方之间的交易”。而且通过设计,“区块链可以抵抗数据修改”。区块链的主要用例是当需要消除单点故障时,即“分散化”。
IBM,甲骨文和亚马逊等公司已经为区块链市场推出了他们的产品。尽管该技术目前处于炒作周期的“早期采用者”阶段,但我们期望看到越来越多的区块链应用程序正在开发中。
区块链应用程序的测试非常不同。设置测试环境非常具有挑战性。它还需要广泛了解安全性,法律,价值交换,分布式编程等。
预测:企业/企业中的区块链采用将会增加,测试自动化可以很好地适应这种环境。
失效注入测试(混沌工程)将成为新的测试浪潮
根据由Netflix发起的社区http://principlesofchaos.org,“混沌工程”是在分布式系统上进行试验的学科,以建立对系统抵抗生产中湍流条件的能力的信心,因此需要失败注射测试。
混沌工程从业者使用Simian Army等工具模拟故障,以测试其生产系统的可靠性,安全性和弹性。Simian Army能够通过服务器的运行状况检查执行任务,以完全模拟某些Amazon区域的服务不可用情况。
预测:目前,此类灾难模拟主要由SysAdmin或DevOps Engineers完成。在未来,我希望看到这种特殊类型的测试由开箱即用工具支持的测试人员完成。
使用弹性堆栈测试结果管理
对于每天生成数千个测试结果的大型自动化项目,您可能需要一些报告和仪表板解决方案来帮助您分析和管理这些结果。此功能通常由传统的测试管理软件提供,该软件不是为测试自动化而设计的。这些工具可以很好地处理标准和原始数据,例如测试用例状态,但它们无法帮助您识别自动化错误,无论是脚本问题还是应用程序更改。
如果它听起来很熟悉,你需要像Elastic Stack,以前的ELK Stack。它是三个开源项目的集合:Elasticsearch,Logstash和Kobana,允许您收集,搜索,分析和可视化从不同计算机合并的日志。
使用Elastic Stack可以更快地分析测试失败,因为测试结果已经整合,并且可以使用强大的搜索和分析功能进行分析。当你知道你正在寻找什么,从分析到趋势时,弹性堆栈会非常有用,但是当你不知道时,它可能会更有用。它可以检测罕见的常见或统计上不寻常的测试结果数据。这些统计异常通常表示需要您注意的有趣事项。
通过将弹性搜索与机器学习和自然语言处理等AI技术相结合,可以实现自动根本原因分析。完成后,它可以节省您的时间,系数为X.
预测:弹性堆栈或类似的日志管理平台将被测试自动化行业广泛采用。
智能自动化工具将迎来崛起
虽然市场上有许多工具,但它们往往是孤立的。开源工具和框架变得越来越强大且易于扩展。但是,许多人对具有多种技术技能水平的团队没有很多开箱即用的支持。同时,商业工具往往具有更多可立即使用的功能,用于测试设计和测试管理。然而,在某些情况下,它们不能相互协作,甚至不能与WebDriver协同工作。
假设我喜欢工具A的记录功能,工具B的基于模型的测试功能,工具T和Selenium Automation的基于动作的测试功能。我想要所有这些东西一起工作,以及我的开发人员选择的DevOps技术。怎么可能?
预测:鉴于WebDriver正在成为W3C标准,并且随着开源软件和AI的进步,我认为将围绕WebDriver构建一系列小型实用程序,以改善测试自动化中的Selenium(等)体验周期。领域包括但不限于:测试管理,测试设计,页面对象存储库,自主测试执行,测试结果管理等。
结论
期待看到更多新的和令人兴奋的方法和工具,也许,在更小的包中提供。SDET(测试软件开发工程师),全栈测试自动化或技术测试工程师将比以往任何时候都更需要。这些关键趋势包括DevOps的测试自动化,API测试,AI,JavaScript自动化等等,所有这些都需要新的技术专业知识,只有现代SDET类型的测试人员才能实现。QA组织今天需要重新配置现有团队,同时尝试引入更多SDET,以便为未来做好充分准备。
年复一年的新趋势,我希望你发现它们有用和鼓舞人心。
一些趋势仍在重塑整个行业,其中一些趋势很快消失。花点时间问自己哪些测试自动化趋势对您和您的组织在未来一年中最重要?