web自动化测试的智能革命:AI如何推动软件质量保证的未来

 首先这个标题不是我取的,是我喂了关键字让AI给取的,果然非常的标题党,让人印象深刻,另外题图也是AI自动生成的。

先简单回顾一下web自动化测试的一些发展阶段

QTP时代

很多年前QTP横空出世的时候,没有人会怀疑这种工具将是自动化测试的未来形态。使用者理论上不需要掌握任何编程语言就可以通过录制回放的方式实现web端的自动化测试。后来事实证明QTP向人们证明了自动化测试的可行性,然而其自身的一些限制让其渐渐被主流市场所抛弃。看看bing是怎么说的

您好,这是Bing。QTP是QuickTest Professional的简称,是一种自动化软件测试工具,主要用于功能测试和回归测试 。QTP的优点有:

支持多种编程语言和平台
基于关键字驱动的测试方法,易于编写和维护测试脚本
提供丰富的测试对象库和检查点,方便识别和验证被测系统的元素
可以与其他HP测试工具集成,实现全面的测试管理
QTP的缺点有:

商业软件,价格昂贵

对于一些复杂的界面或控件,可能无法正确识别或操作
对于一些新技术或框架,可能需要安装额外的插件或补丁
对计算机资源的消耗较大,可能影响被测系统的性能
请注意,QTP在官网已被改名为UFT(Unified Functional Testing)统一功能测试 。

selenium RC和waitir时代

后来的一段时间selenium和watir渐渐流行起来,这一次一切似乎是发生了倒退,相较于qtp提供的足够简单的录制回放模式,selenium rc和watir只能自己写代码去实现自动化里的每一步操作和断言,炫酷的未来似乎渐行渐远。看看chatgpt对selenium rc的评价,先声明这些评价内容不够准确,大家仅作为参考。

Selenium RC(Remote Control)是一个自动化测试工具,以下是 Selenium RC 的优缺点:

优点:

跨浏览器和跨平台:Selenium RC 支持在多种浏览器和操作系统上执行测试脚本,包括 Windows、Linux、Mac OS 等。
支持多种编程语言:Selenium RC 支持多种编程语言,如 Java、C#、Python 等,使得测试人员可以使用他们最熟悉的编程语言编写测试脚本。
可以与其他工具集成:Selenium RC 可以与其他测试工具和开发工具集成,如 JUnit、TestNG、Eclipse 等,以增强测试的效率和准确性。
适合大型项目:Selenium RC 可以测试大型项目,包括 Web 应用程序和企业应用程序。
可以模拟真实用户行为:Selenium RC 可以模拟真实用户的行为,如单击、输入文本、选择下拉列表等,以确保应用程序的稳定性和可靠性。
缺点:

速度较慢:Selenium RC 使用 JavaScript 与浏览器进行通信,速度比较慢,影响测试的执行效率。

对浏览器的支持有限:Selenium RC 支持的浏览器版本有限,对于最新的浏览器版本可能无法进行测试。

安装和配置较为繁琐:Selenium RC 的安装和配置相对比较繁琐,需要一定的技术知识和经验。

不支持并发测试:Selenium RC 不支持多线程和并发测试,可能需要在多台机器上进行测试。

不支持移动端应用测试:Selenium RC 不支持移动端应用程序测试,需要使用其他工具或者框架进行测试。

webdriver时代

后来就是webdriver一统江湖了,看看claude(chatgpt的竞品)对webdriver的评价。内容基本准确,不过没有提及webdriver的核心能力,就是统一了web自动化测试的标准,也就是所谓的webdriver协议。

Selenium WebDriver 的优点有:

跨浏览器支持:支持 Chrome,Firefox,Safari,IE 等主流浏览器,测试代码可以跨浏览器运行。

免费开源:Selenium 是开源免费工具,有很大的社区支持。

丰富的 API:Selenium 提供丰富的 API 用于测试 web 应用,可以操作浏览器,元素,cookies 等。

支持多种语言:Selenium 支持多种编程语言,如 Java,C#,Python,JavaScript 等。

平台与操作系统无关:Selenium 可以运行在 Windows,Mac,Linux 等不同的操作系统。

Selenium 的缺点有:

不能测试移动端浏览器:Selenium 主要用于测试 web 应用,不能用于测试移动端浏览器。

学习曲线较陡:Selenium API 较多,学习起来比较困难,需要一定的学习成本。

执行速度较慢:与其他自动化测试工具相比,Selenium 的执行速度会慢一些。

无法处理 JS 库:Selenium 无法很好的处理某些 JS 库,如 React,Vue 等,在驱动这些界面时会有一定困难。

无法测试无界面场景:Selenium 需要依赖浏览器界面,无法测试 API,服务等无界面场景。

并发执行能力差:Selenium 驱动浏览器执行测试,如果测试用例量大并发执行会比较困难。

所以综上,Selenium 是一款优秀的自动化测试工具,但也有一定的不足之处,需要根据实际项目进行选择和使用

playwright及其他新一代工具

webdriver聚集于web自动化本身,但web自动化测试需要涵盖更多的方面,比如用例的组织,数据的存储,多浏览器并行测试,重试机制以及用例稳定性提升等,这就给了新一代测试工具的崛起提供了很好的土壤,可以让微软的bing评价一下自家的playwright。

Playwright是一种新一代的自动化测试工具,由微软公司于2020年初发布 。

Playwright的优点有:

支持多种主流浏览器,包括Chromium、Firefox、WebKit等
支持多种平台,包括Windows、Linux、macOS等
支持多种编程语言,包括TypeScript、JavaScript、Python、.NET、Java等
支持无头模式和有头模式,以及移动端的模拟
提供了丰富的API和文档,方便编写和维护测试脚本
Playwright的缺点有:

相对于Selenium等成熟的测试工具,Playwright还比较新,可能存在一些兼容性或稳定性的问题
Playwright需要安装额外的依赖包,可能增加了测试环境的复杂度
Playwright目前还不支持IE浏览器和Safari浏览器

二次开发的时代

无论我们选型的工具是webdriver还是playwright,很多团队都喜欢进行一些定制化的二次开发,核心的诉求就是:让不懂代码的人也可以进行web自动化测试。比如

  • 用配置文件去替代代码
  • 提供录制回放能力
  • 用写excel的方式编写用例
  • 提供web ui编写用例的方式

TaxyAI

总的看来,工具一直在进步,但自动化测试的核心诉求似乎一直都没有很好的被满足,或者说是自动化测试学习门槛相对比较高,从而参与到其中的测试人员相对较少,大部分情况下都是一群人的狂欢,大部分人的围观。

最近gpt大语言模型风靡全球,很多有意思的应用应运而生,无意间看到了一个能使用自然语言进行web自动化的实现,演示效果让人有些感叹:也许这才是web自动化测试的正确姿势。地址在这里:https://github.com/TaxyAI/browser-extension 。这是一个简单的chrome插件,安装好配置一下chatgpt4的api key之后就可以用了。

先看演示,这里直接让AI安排明天上午10点的站会,并且邀请david@taxy.ai参加

图片

因为我没有gpt4的api key,我下载下来用gpt3.5跑了一下,在简单的页面上确实可以实现用自然语言指挥浏览器干活的功能。不需要写代码,不用理解html的dom结构,直接想要做什么就让浏览器去做,这种交互是自然而高效的。

奇妙的实现方式

因为项目是开源的,所以就简单的看了一下代码,结合文档上的解释,发现工具的实现方式非常的巧妙,以后这种奇妙的实现方式可能会产生出各式各样更多的产品实现。

Taxy在网页上运行内容脚本来拉取整个DOM。它简化所收到的HTML,仅保留互动或语义上重要的元素,如按钮或文本。它为每个互动元素分配一个ID。然后,它“模板化”DOM以进一步减少token的消耗。

Taxy发送简化的DOM以及用户的指令给所选的LLM(当前支持GPT-3.5和GPT-4)。Taxy告知LLM有两种与网页互动的方法:

click(id)- 点击与该id关联的互动元素
setValue(id,text)- 聚焦在文本输入框,清除其现有文本,并在该输入框中键入指定的文本
当Taxy从LLM获得完成时,它会解析响应以获取操作。如果满足以下任何条件,操作周期将在此阶段结束:

LLM认为任务已完成。LLM可以返回一个指示,表示基于DOM的状态和截至此时的操作历史,它认为用户的任务已完成。
用户停止了任务的执行。用户可以在任何时间停止LLM的执行,而无需等待它完成。
出现错误。Taxy的安全优先架构会自动停止执行意外响应。
Taxy使用chrome.debugger API执行操作。

该操作添加到操作历史记录,Taxy循环回到第1步,并解析更新的DOM。所有先前的操作都作为用于确定下一个操作的提示的一部分发送给LLM。Taxy目前可以为单个任务完成最大50个操作,尽管在实践中,大多数任务需要少于10个操作。

简单总结一下就是:taxy首先把网页的html变成一个简化版本,比如只保留button,text和link之类的,并为每个dom元素分配1个id,然后把这个简化的dom和用户的意图发送给gpt,gpt根据提示给出具体的操作指令返回给taxy,然后taxy解析指令,调用chrome的api进行点击和输入文本的操作。

直接看一下taxy的prompt吧,这里是用魔法打败魔法的地方。

const systemMessage = `
You are a browser automation assistant.
You can use the following tools:
${formattedActions}
You will be be given a task to perform and the current state of the DOM. You will also be given previous actions that you have taken. You may retry a failed action up to one time.
This is an example of an action:
<Thought>I should click the add to cart button</Thought>
<Action>click(223)</Action>
You must always include the <Thought> and <Action> open/close tags or else your response will be marked as invalid.`;

所以taxy每次都把之前进行过的操作和dom发给gpt4,然后然gpt4自己去判断下一步要怎么做,嗯,原来现在代码可以这样写,学习了。

亮点

taxy目前还在进化中,所以暂时没上架google的扩展商店,不过最近看到代码有重构过,并加上了核心的单元测试,相信不久的将来我们是可以直接下载使用的。

taxy的亮点非常让人印象深刻

把html简化后交给gpt进行行为的推断,让gpt决定下一步该怎么做,这可能是以后很多工具可能采用的方式。
天生支持多语言
实现方式的脑洞很大

不足

  • dom文本就算简化后也很大,每次使用特别费token,其实就是费钱

  • 我在试用过程中发现操作可能会没有办法终止

总结

我:写一段话描述一下人工智能技术会给自动化测试带来什么,要求专业简洁,100个中文字符以内。

Claude:人工智能技术将给自动化测试带来深度变革。人工智能可自动生成测试用例,智能识别测试目标,智能分析测试结果。智能机器可学习历史测试数据,推理判断当前测试需求,进行自主化测试。这将大大提高测试效率和质量,减轻测试人员工作量。这是自动化测试发展的必然方向。

chatgpt 3.5: 人工智能技术能够提高自动化测试的效率和精度,例如自动化测试可以利用AI算法进行智能筛选和调整测试用例,同时也可以加强对于自动化测试结果的分析和挖掘。

bing: 人工智能技术可以提高自动化测试的效率和质量,减少重复工作和人为错误,实现更智能的测试过程和结果 。人工智能技术可以通过图像识别、数据分析、自动化编码等方式,模仿人类的测试行为和思维。

bard: I am an LLM trained to respond in a subset of languages at this time, so I can’t assist you with that. Please refer to the Bard Help Center for the current list of supported languages. 😭

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

行动吧,在路上总比一直观望的要好,未来的你肯定会感谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入群: 731789136,里面有各种测试开发资料和技术可以一起交流哦。

这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/578829.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java判断时间是否为节假日(或指定的日期),是的话返回true,否返回false

这个方法属实有点老套&#xff0c;先定义set&#xff0c;需要手动输入要判断的时间才行。 这个代码&#xff0c;就是输入一个日期&#xff0c;来判断这个日期是否为你指定的日期。如果是的话&#xff0c;返回true&#xff0c;否的话返回false。 代码&#xff1a; package Lx…

软考高级考完了,怎么评职称?

每年考试结束后&#xff0c;总有朋友问我&#xff0c;考完后怎么才能评上职称呢&#xff1f;获得证书就意味着获得了职称吗&#xff1f;让我们一起来看看具体情况吧&#xff01; 01\职称获取途径 获得职称可以通过认定、评审、国家统一考试(以考代评)、职业资格对应等多种方式…

轻松设置CentOS IP地址的最终指南:详细的分步说明

轻松设置CentOS IP地址的最终指南 一、引言二、准备工作三、手动设置IP地址四、自动分配IP地址(DHCP)五、使用网络管理工具设置IP地址5.1、使用nmtui工具进行图形化设置5.2、使用nmcli命令行工具进行设置 六、常见问题和解决方案七、总结 一、引言 CentOS操作系统是一种基于Li…

【华为OD机试真题2023CD卷 JAVAJS】电脑病毒感染

华为OD2023(C&D卷)机试题库全覆盖,刷题指南点这里 电脑病毒感染 知识点广搜 题目描述: 一个局域网内有很多台电脑,分别标注为0 - N-1的数字。相连接的电脑距离不一样,所以感染时间不一样,感染时间用t表示。 其中网络内一个电脑被病毒感染,其感染网络内所有的电脑需…

mysql怎么只允许指定IP访问

要查看MySQL数据库中连接成功的历史IP地址&#xff0c;你可以查询MySQL的日志文件或使用以下SQL查询来获取相关信息&#xff1a; 查看MySQL的日志文件&#xff1a; 打开MySQL配置文件&#xff0c;找到log-bin参数。该参数用于启用二进制日志&#xff08;Binary Logging&#x…

LLM(八)| Gemini语言能力深度观察

论文地址&#xff1a;https://simg.baai.ac.cn/paperfile/fc2138ce-cadb-4a36-b9f7-c4000dea3369.pdf 谷歌最近发布的Gemini系列模型是第一个在各种任务与OpenAI GPT系列相媲美的模型。在本文中&#xff0c;作者对Gemini的语言能力做了深入的探索&#xff0c;做出了两方面的贡献…

服务案例|CIS数据库故障问题

一、告警通知 12月20日凌晨&#xff0c;平台收到某三甲医院告警通知&#xff0c;显示核心业务CIS系统数据库tempdb实例日志文件剩余空间不足。 查看告警详情页&#xff0c;显示tempbd日志文件使用率在凌晨1:30后异常增高。 一个小tip tempdb是SQL Server实例的系统数据库&…

NC(65)元数据增加字段

以报销单主表er_bxzb表为例&#xff0c;增加15个字段字段以及两个其他业务所需字段 1、先在er_bxzb增加字段 增加字段 alter table er_bxzb add no_invoice char(1) default(N);alter table er_bxzb add is_enabled_taxation_cloud char(1) default(N);alter table er_bxzb a…

云服务器的优势

云服务器的优势 裸机云服务器&#xff0c;拥有物理机同样的性能和安全&#xff0c;也具有云主机的灵活和弹性。其最显著的优势在于&#xff0c;用户能够直接控制服务器及其资源&#xff0c;这一点与虚拟化云实例有明显区别&#xff0c;后者会将底层硬件操作对用户进行隐藏。此外…

《PySpark大数据分析实战》-20.NumPy介绍数组的生成

&#x1f4cb; 博主简介 &#x1f496; 作者简介&#xff1a;大家好&#xff0c;我是wux_labs。&#x1f61c; 热衷于各种主流技术&#xff0c;热爱数据科学、机器学习、云计算、人工智能。 通过了TiDB数据库专员&#xff08;PCTA&#xff09;、TiDB数据库专家&#xff08;PCTP…

原来count(*)是接口性能差的真凶

前言 最近我在公司优化过几个慢查询接口的性能&#xff0c;总结了一些心得体会拿出来跟大家一起分享一下&#xff0c;希望对你会有所帮助。 我们使用的数据库是Mysql8&#xff0c;使用的存储引擎是Innodb。这次优化除了优化索引之外&#xff0c;更多的是在优化count(*)。 通…

MySQL——进阶篇

二、进阶篇&#x1f6a9; 1. 存储引擎&#x1f346; 1.1 MSQL体系结构 连接层&#xff1a; 连接处理&#xff0c;连接认证&#xff0c;每个客户端的权限 服务层&#xff1a; 绝大部分核心功能&#xff0c;可跨存储引擎 可插拔存储引擎&#xff1a; 需要的时候可以添加或拔掉…

PAT 乙级 1031 查验身份证

一个合法的身份证号码由17位地区、日期编号和顺序编号加1位校验码组成。校验码的计算规则如下&#xff1a; 首先对前17位数字加权求和&#xff0c;权重分配为&#xff1a;{7&#xff0c;9&#xff0c;10&#xff0c;5&#xff0c;8&#xff0c;4&#xff0c;2&#xff0c;1&am…

configure

configure 配置软件./configure --prefix$PWD/output CCaarch64-linux-gcc --hostaarch64-linux --enable-shared --enable-staticconfig.sub 文件 这个文件用于确定主机系统的类型&#xff0c;并返回与该系统相关的标识符。它包含一系列 shell 函数&#xff0c;用于检测主机…

苹果证书p12和描述文件的创建方法

​ 苹果证书p12和描述文件的创建方法 在2020年之前&#xff0c;我们在使用appuploder创建苹果证书的时候&#xff0c;只需要注册苹果开发者账号&#xff0c;但不需要缴费成为开发者。 在2020年之后&#xff0c;需要先缴费成为苹果开发者。 假如你还没有注册苹果开发者账号&…

linux 下批量重放流量

目录 介绍实操linux方式1&#xff0c;2linux 方式3 介绍 这里介绍的是&#xff0c;如何在 linux 环境下让IDP设备告警 这里linux下流量重放的工具是&#xff1a;tcpreplay 工具的作用&#xff1a;将PCAP包重新发送&#xff0c;用于性能或者功能测试工具的使用与参数&#xff…

关于“Python”的核心知识点整理大全43

目录 ​编辑 15.2.3 使2散点图并设置其样式 scatter_squares.py 15.2.4 使用 scatter()绘制一系列点 scatter_squares.py 15.2.5 自动计算数据 scatter_squares.py 15.2.6 删除数据点的轮廓 15.2.7 自定义颜色 15.2.8 使用颜色映射 scatter_squares.py 注意 15.2.9…

Unity-GUID

Unity中的GUID(全局唯一标识符 Globally Unique Identifier)是一个十六字节的字符序列,用于标识和识别Unity中的对象和组件。GUID的生成规则如下: 1> GUID是通过使用全局唯一标识符算法(UUID)来生成的。 2> GUID由32个十六进制数字(0-9和A-F)组成的字符串表示。 …

Mysql(4事务及存储)

目录 一.事务 事务的 ACID 特性&#xff1a; 一致性问题&#xff1a; 隔离级别&#xff1a; 查看隔离级别&#xff1a; ​编辑 设置隔离级别&#xff1a; 事务管理操作&#xff1a; 看下未提交读隔离的现象&#xff1a; ​编辑 看下提交读隔离的现象&#xff1a; 看…