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,里面有各种测试开发资料和技术可以一起交流哦。

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

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

插入排序详解(C语言)

前言 插入排序是一种简单直观的排序算法&#xff0c;在小规模数据排序或部分有序的情况下插入排序的表现十分良好&#xff0c;今天我将带大家学习插入排序的使用。let’s go ! ! ! 插入排序 插入排序的基本思想是将待排序的序列分为已排序和未排序两部分。初始时&#xff0c…

【序列化和反序列化】

&#x1f341;什么是序列化和反序列化&#xff1f; &#x1f341;典型解析&#x1f341;拓展知识仓&#x1f341;如何进行序列化和反序列化&#x1f341;未实现Serializable&#xff0c;可以序列化吗? &#x1f341;典型解析 在Java中&#xff0c;我们可以通过多种方式来创建对…

java接口限流详解

目录 1.简介1.1.为什么需要限流?1.2.限流和熔断有什么区别&#xff1f;1.3.限流和削峰有什么区别&#xff1f;1.4 缓存&#xff0c;降级&#xff0c;限流简介 2.应用级限流2.1 控制并发数量2.2 控制访问速率2.2.1 令牌桶算法2.2.2 漏桶算法 3.分布式限流4.交流群 1.简介 接口…

渗透测试——1.3计算机网络基础

一、黑客术语 1、肉鸡&#xff1a;被黑客攻击电脑&#xff0c;可以受黑客控制不被发现 2、端口&#xff08;port&#xff09;&#xff1a;数据传输的通道 3、弱口令&#xff1a;强度不高&#xff0c;容易被猜到的口令、密码 4、客户端&#xff1a;请求申请电脑&#xff08;…

宝塔mysql本地服务器状态异常如何解决

今天安装宝塔的时候突然遇到的问题 来吧 直接上bug图 答案&#xff1a;修改Mysql数据库密码

【论文阅读笔记】SegVol: Universal and Interactive Volumetric Medical Image Segmentation

Du Y, Bai F, Huang T, et al. SegVol: Universal and Interactive Volumetric Medical Image Segmentation[J]. arXiv preprint arXiv:2311.13385, 2023.[代码开源] 【论文概述】 本文思路借鉴于自然图像分割领域的SAM&#xff0c;介绍了一种名为SegVol的先进医学图像分割模型…

不同参数规模大语言模型在不同微调方法下所需要的显存总结

原文来自DataLearnerAI官方网站&#xff1a; 不同参数规模大语言模型在不同微调方法下所需要的显存总结 | 数据学习者官方网站(Datalearner)https://www.datalearner.com/blog/1051703254378255 大模型的微调是当前很多人都在做的事情。微调可以让大语言模型适应特定领域的任…

JY901S 9轴姿态角度传感器模块

JY901S 9轴姿态角度传感器模块 JY901S 简介模块特性引脚说明IIC通讯IIC读写寄存器代码示例 JY901S 简介 模块集成高精度的陀螺仪、加速度计、地磁场传感器&#xff0c;采用高性能的微处理器和先进的动力学解算与卡尔曼动态滤波算法&#xff0c;能够快速求解出模块当前的实时运…

【K8S基础】-k8s的核心概念控制器和调度器

Kubernetes是一个开源的容器编排平台&#xff0c;旨在简化和自动化容器化应用程序的部署、扩展和管理。它提供了一个强大的基础设施来管理容器化应用程序的生命周期&#xff0c;并确保它们在整个集群中高效运行。 Kubernetes的核心概念包括集群、节点、Pod、控制器、调度器等。…

360压缩安装一半不动了怎么办?

360压缩软件是我们常用的压缩软件&#xff0c;但是常常会遇到压缩安装到一半停止的情况&#xff0c;下面提供了一些可能的原因和解决办法&#xff0c;大家可以进行尝试~ 方法一&#xff1a;关闭防火墙和杀毒软件 有时候&#xff0c;防火墙和杀毒软件可能会阻止360压缩的安装过…

使用ArcMap进行实测数据处理

文章目录 题目流程 题目 实验名称&#xff1a;实测数据处理 实验目的及要求&#xff1a; 1. 掌握实测点数据转为矢量点数据方法 2. 掌握数据投影变换方法 3. 掌握点数据插值方法 流程 1&#xff0c;打开ArcMap软件&#xff0c;在左菜单栏上选中File&#xff0c;然后鼠标移…

电脑开机快捷启动,启动菜单没有u盘怎么办

电脑开机快捷启动键找不到u盘怎么办 对于快捷启动键找不到u盘的问题&#xff0c;小编很了解其中的门道&#xff0c;因为开机找不到u盘是我们使用电脑时候的常见问题。那么我们到底要如何解决开机找不到u盘的问题呢?其实方法还是蛮简单的&#xff0c;下面小编就来教大家电脑开…

Maven高级篇

Maven依赖管理原则; 可选依赖&#xff1a;隐藏当前项目中的指定的包&#xff0c;如此&#xff0c;别的包引用当前包时&#xff0c;当前包中的指定包就被隐藏了&#xff0c;在别的包中无法看到隐藏的包 排除依赖&#xff1a;指定排除引用包中所包含的依赖&#xff0c;防止与当…

解决 Solidworks2021 报错(-15,10032,0)错误记录

Solidworks2021 报错"-15,10032,0"错误记录 如图所示解决方案步骤1步骤2 个人问题我的没法添加白名单&#xff0c;要是有能解决的大神给个解决方式感激不尽&#xff01;&#xff01; 如图所示 解决方案 步骤1 该问题的解决方式仅对个人有效&#xff0c;不一定通用&…

MY FILE SERVER: 1

下载地址 https://download.vulnhub.com/myfileserver/My_file_server_1.ova 首先我们需要发现ip 我的kali是59.162所以167就是靶机的 然后我们拿nmap扫一下端口 nmap -sV -p- 192.168.59.167 扫完发现有七个端口开放 按照习惯先看80 没看到有啥有用信息,用nikto扫一下 nik…

[环境配置]win11关闭病毒和威胁防护防止乱删软件

选择桌面的开始图标&#xff0c;选择“设置”功能 点击隐私和安全性功能&#xff0c;进入“Windows安全中心” 点击开启Windows安全中心。 将实时保护和其他保护功能进行关闭就可以了。

jQuery实现layer.open中按钮倒计时读秒可用的协议阅读场景

今日遇到一个系统注册页网站 条款签接受流程改动的需求&#xff0c;往日多是使用他人网站注册登录&#xff0c;看见相关协议的授权设计大同小样&#xff0c;觉得挺有意思&#xff0c;这次遇到了需要我来实现这个功能&#xff0c;但是用习惯了vue的封装&#xff0c;这次是依靠jQ…

Arduino驱动BME680四合一传感器模块

目录 一、简介二、技术参数三、使用方法四、实验现象 一、简介 点击图片购买 GYMCU680 是一款低成本空气检测模块&#xff0c;工作电压 3-5v 功耗小&#xff0c;体积小。其工作原理&#xff0c;是通过 MCU 读取 BME680传感器数据&#xff0c;经过算法得到&#xff0c;温湿度&am…

【温故而知新】css提高性能的方法都有那些

前言 CSS&#xff08;层叠样式表&#xff09;是一种用于描述HTML&#xff08;超文本标记语言&#xff09;文档外观样式的语言。它定义了如何在网页中呈现元素的布局、颜色、字体、大小等属性。CSS文件通常与HTML文件分离&#xff0c;使得修改样式更加灵活和可维护。 CSS基于选…

浅谈师范双非普本工科专业的秋招历程

本人普通师范院校通信工程专业&#xff0c;于秋招历程之中四处碰壁&#xff0c;迫于家庭等各种因素考虑&#xff0c;最终选择移动的偏远县城岗位的OFFER&#xff01;本人秋招历程之中&#xff0c;屡屡碰壁&#xff0c;也算得上“收获满满”&#xff01;我简单给各位浅谈一下我的…