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

news2024/11/14 3:58:49

首先这个标题不是我取的,是我喂了关键字让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. 😭

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

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

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

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

相关文章

【项目管理】中途接手的项目应对实用指南

导读&#xff1a;作为项目经理中途接手项目往往不可避免&#xff0c;为了保证项目成功需要项目经理额外考虑更多的因素和处理相关问题&#xff0c;也往往带来很大的挑战性。本文提供可应对借鉴的思路&#xff0c;在一定程度上可以作为最佳实践。 目录 1、首先、了解项目项目背…

python趣味编程-5分钟实现一个俄罗斯方块游戏(含源码、步骤讲解)

Python俄罗斯方块游戏是一款基于GUI的标题匹配益智游戏,非常容易理解和使用。说到游戏玩法,一切都和真实的一样。 用户必须管理俄罗斯方块的随机序列。在这个Python 俄罗斯方块游戏项目中,我将教您如何使用 Python 制作俄罗斯方块游戏。 Python 代码中的俄罗斯方块游戏:项目…

Redux-状态管理组件

一、简介 react中的状态只属于某个组件。而Redux是一个全局管理js状态的架构&#xff0c;让组件通信更加容易。 之前是状态在所有组件间传递&#xff0c;而redux通过store来实现这个功能。 Redux特性&#xff1a; 1.Single source Of truth&#xff0c;通过store唯一维护状态…

nn.KLDivLoss,nn.CrossEntropyLoss,nn.MSELoss,Focal_Loss

KL loss&#xff1a;https://blog.csdn.net/qq_50001789/article/details/128974654 https://pytorch.org/docs/stable/nn.html 1. nn.L1Loss 1.1 公式 L1Loss: 计算预测 x和 目标y之间的平均绝对值误差MAE, 即L1损失&#xff1a; l o s s 1 n ∑ i 1 , . . . n ∣ x i…

SpringCloud 微服务全栈体系(十四)

第十一章 分布式搜索引擎 elasticsearch 四、RestAPI ES 官方提供了各种不同语言的客户端&#xff0c;用来操作 ES。这些客户端的本质就是组装 DSL 语句&#xff0c;通过 http 请求发送给 ES。官方文档地址&#xff1a;https://www.elastic.co/guide/en/elasticsearch/client/…

Amazon EC2的出现,是时代的选择了它,还是它选择了时代

目录 Amazon EC2简介 友商云服务器对比&#xff08;Amazon VS Tencent&#xff09; 友商云服务器对比&#xff08;Amazon VS Alibaba&#xff09; Amazon 云服务器的绝对优势 Amazon EC2功能 Amazon EC2 Linux 实例入门 启动实例 连接到的实例 清除的实例 终止的实例…

Android 10.0 系统修改usb连接电脑mtp和PTP的显示名称

1.前言 在10.0的产品定制化开发中,在usb模块otg连接电脑,调整为mtp文件传输模式的时候,这时可以在电脑看到手机的内部存储 显示在电脑的盘符中,会有一个mtp名称做盘符,所以为了统一这个名称,就需要修改这个名称,接下来分析下处理的 方法来解决这个问题 2.系统修改usb连…

源码分析Mybatis拦截器(Interceptor)拦截saveBatch()获取不到实体id的原因

1.背景 由于业务需求想在Mybatis拦截器层面获取insert后实体id去做相关业务。但是发现执行saveBatch()方法时&#xff0c;获取参数实体的时候&#xff0c;拿不到自增id。但是save()方法可以。 save方法之所以可以是因为&#xff1a; MybatisPlus的BaseMapper执行insert方法后…

如何在虚拟机的Ubuntu22.04中设置静态IP地址

为了让Linux系统的IP地址在重新启动电脑之后IP地址不进行变更&#xff0c;所以将其IP地址设置为静态IP地址。 查看虚拟机中虚拟网络编辑器获取当前的子网IP端 修改文件/etc/netplan/00-installer-config.yaml文件&#xff0c;打开你会看到以下内容 # This is the network conf…

java拼图小游戏

第一步是创建项目 项目名自拟 第二部创建个包名 来规范class 然后是创建类 创建一个代码类 和一个运行类 代码如下&#xff1a; package heima;import java.awt.event.ActionEvent; import java.awt.event.ActionListener; import java.awt.event.KeyEvent; import jav…

深入理解注意力机制(下)——缩放点积注意力及示例

一、介绍 在这篇文章中&#xff0c;我们将重点介绍 Transformer 背后的 Scaled Dot-Product Attention&#xff0c;并详细解释其计算逻辑和设计原理。 在文章的最后&#xff0c;我们还会提供一个Attention的使用示例&#xff0c;希望读者看完后能够对Attention有更全面的了解。…

将word中的表格无变形的弄进excel中

在上篇文章中记录了将excel表拷贝到word中来&#xff1a; 记录将excel表无变形的弄进word里面来-CSDN博客 本篇记录&#xff1a;将word中的表格无变形的弄进excel中。 1.按F12&#xff0c;“另存为...”&#xff0c;保存类型&#xff1a;“单个文件页面”&#xff0c;保存。…

Java读写Jar

Java提供了读写jar的类库Java.util.jar&#xff0c;Java获取解析jar包的工具类如下&#xff1a; import java.io.File; import java.io.IOException; import java.net.URL; import java.net.URLClassLoader; import java.util.Enumeration; import java.util.HashMap; import …

【C++入门到精通】新的类功能 | 可变参数模板 C++11 [ C++入门 ]

阅读导航 引言一、新的类功能1. 默认成员函数2. 类成员变量初始化3. 强制生成默认函数的关键字default4. 禁止生成默认函数的关键字delete5. override 和 final&#xff08;1&#xff09;override&#xff08;2&#xff09;final 二、可变参数模板递归函数方式展开参数包逗号表…

C# Winform围棋棋盘

C# Winform简单的围棋棋盘vs2008winform小游戏C#vs2010winform棋盘C#窗体小游戏 这是一个简单的围棋棋盘小游戏&#xff0c;使用C# Winform编写棋盘界面&#xff0c;玩家可以在空白的交叉点上下棋子 项目获取&#xff1a; 项目获取&#xff1a;typora: typora/img (gitee.co…

支付宝沙箱支付

支付宝沙箱支付 支付宝沙箱&#xff08;Alipay Sandbox&#xff09;是支付宝提供的一个模拟环境&#xff0c;用于开发者在不影响真实交易的情况下进行支付宝相关功能的测试和调试。在软件开发中&#xff0c;沙箱环境通常指的是一个隔离的测试环境&#xff0c;可以模拟真实环境…

【论文阅读】MAG:一种用于航天器遥测数据中有效异常检测的新方法

文章目录 摘要1 引言2 问题描述3 拟议框架4 所提出方法的细节A.数据预处理B.变量相关分析C.MAG模型D.异常分数 5 实验A.数据集和性能指标B.实验设置与平台C.结果和比较 6 结论 摘要 异常检测是保证航天器稳定性的关键。在航天器运行过程中&#xff0c;传感器和控制器产生大量周…

Python 自动化(十八)admin后台管理

admin后台管理 什么是admin后台管理 django提供了比较完善的后台数据库的接口&#xff0c;可供开发过程中调用和测试使用 django会搜集所有已注册的模型类&#xff0c;为这些模型类提供数据管理界面&#xff0c;供开发使用 admin配置步骤 创建后台管理账号 该账号为管理后…

2023年中职“网络安全“—Web 渗透测试①

2023年中职"网络安全"—Web 渗透测试① Web 渗透测试任务环境说明&#xff1a;1.访问地址http://靶机IP/task1&#xff0c;分析页面内容&#xff0c;获取flag值&#xff0c;Flag格式为flag{xxx}&#xff1b;2.访问地址http://靶机IP/task2&#xff0c;访问登录页面。…

【每日一题】三个无重叠子数组的最大和

文章目录 Tag题目来源题目解读解题思路方法一&#xff1a;滑动窗口 写在最后 Tag 【滑动窗口】【数组】【2023-11-19】 题目来源 689. 三个无重叠子数组的最大和 题目解读 解题思路 方法一&#xff1a;滑动窗口 单个子数组的最大和 我们先来考虑一个长度为 k 的子数组的最…