AI测试的迷思
近年来,我一直关注AI相关的测试,并积极参与多个全国性测试社区和社群。在这些社区中,我与不同公司和领域的测试专家交流探讨AI测试相关话题,包括业界顶尖公司的专家和国内知名测试学者。我也参加了多个大会,聆听了许多关于AI测试的主题分享,并尝试了多款AI相关的测试工具,从中获得了许多知识和感悟。
在这些测试社区和社群中,我遇到了许多关于AI测试的问题,例如什么是AI测试,如何进行AI测试,AI测试有哪些工具与方法等。然而,当我在网上搜索AI测试相关的书籍时,却发现大量的AI开发相关书籍,却鲜有专门介绍AI测试的书籍。这说明测试业界仍在混沌中不断摸索前进。
为了分享我所学到的AI测试相关知识和经验,我梳理了自己的学习经历,尝试回答了一些我遇到的关于AI测试的常见问题,并将这些内容整理成文章,与大家一起交流探讨。
AI测试的迷思
在讨论AI测试时,通常存在两种理解:
第一种是利用AI辅助当前的软件测试,例如使用AI系统学习测试分析和测试设计,进而自动生成测试用例并自动化实现这些测试用例。
第二种则是对AI系统进行测试。尽管业界对于AI系统进行测试仍然使用常规测试手段,如功能测试、性能测试和安全测试等,但测试其功能有效性时往往难以获取明确的测试数据和验收条件。这种情况下,只能通过对算法的深入理解和根据经验生成或寻找数据,并大致评估功能测试结果的有效性来进行测试。
而利用AI辅助当前的自动化测试则是一个新兴领域。使用AI(如深度学习)系统来帮助测试工作绝对是近几年最热门的测试趋势之一,其中包括自动生成并执行自动化测试、大规模测试结果分析、自动化探索性测试、缺陷定位等。
美国已经有多家公司推出了商用的AI测试工具。在朱少民老师的公众号“软件质量报道”中,有一篇名为《未来已来,人工智能测试势不可挡:介绍9款AI测试工具》的文章,介绍了9款基于AI的测试工具。但这些AI测试工具普遍存在测试用例准确性和大规模测试用例可维护性等问题。
第一个问题:AI辅助测试真的能用吗?
虽然许多公司已经开始研究AI辅助测试,并有许多工具问世,但它们都有一个显著问题:准确性。由于现有的AI学习算法本身的限制,学习并生成的测试用例和验证条件的准确率都不是非常高。我曾参加过几个大会,其中一些中国一线互联网厂商分享的AI辅助测试的准确率仅略高于80%,不到90%。这种准确率在金融等某些对精度要求高的系统中很难得到认可。
其次,当自动化测试用例规模很大时,测试用例的维护工作很难依靠人工完成,只能依靠工具。由于AI测试工具的不准确性,导致维护工作的准确性也不是十分理想。
尽管如此,在质量要求不高的大型系统中,AI辅助测试可以极大地降低测试成本,因此在这些系统中,AI辅助自动化测试已经得到应用。此外,在质量要求高并且资源充足的项目中,AI辅助测试可以作为人工自动化测试的扩展,作为自动化探索性测试的一种工具,可以进一步保证软件质量。
第二个问题:AI辅助测试已经发展到什么程度了?
目前,AI辅助测试仍处于初级阶段。我将AI辅助测试分为三个阶段:
第一阶段是通过深度学习模型自动产生测试用例的输入,然后通过人工验证输出结果的正确性。
第二阶段是通过深度学习模型自动产生测试用例的输入,并通过规则模型自动验证输出结果的正确性。
第三阶段是通过深度学习模型自动产生测试用例的输入和输出,并自动验证输出结果的正确性。
目前业界已经基本实现了第一阶段,有一些公司也已经开始实现第二阶段。然而,只有极少数的大公司已经实现了第三阶段,并且这些公司的准确性还有待提高。因此,AI辅助测试仍有很长的路要走。
第三个问题:哪些软件系统能用AI辅助测试?
理论上,任何软件系统都可以使用AI来辅助自动化测试工作。然而,由于目前AI测试系统的现状,它还不能真正用于所有类型的软件系统。许多实际项目只在某些特定系统的特定接口层上使用AI测试,例如Web Service API等。
在不同行业领域中,AI测试的使用情况也不同。例如,在金融和军工等对质量要求很高的行业中,AI测试目前只能作为当前已有功能自动化测试的扩展部分。而在互联网等质量要求不高的行业中,一些技术能力强的公司已经将AI测试作为主要的自动化测试方式之一。不过,AI辅助自动化测试无疑是自动化测试的未来!
总结
通过上面对于问题的回答,希望能解决大家对于AI测试的困惑,包括了解什么是AI测试,自己的项目是否适合使用AI测试,以及未来是否需要在AI测试上投资等问题。
综上所述,AI测试目前仍处于发展初期,因此不适合大规模使用,只有在特定项目中才可以考虑使用。无论是使用AI还是人工方式实施自动化测试,核心都是测试的有效性和测试结果的准确性,以及测试用例的可维护性。这些是大规模自动化测试成功与否的关键因素。
因此,无论是AI自动测试还是人工自动测试,其核心本质都是一样的:靠知识学习、分析、总结等一系列人的思维来解决测试分析、测试设计和自动化测试实现的工作。但目前AI系统本身的发展还不足以很好地替代人在测试分析和测试设计方面的工作,导致AI实现的自动化测试的准确性以及可维护性比人工方式更差。不过,AI测试在时间和成本方面有明显的优势,这也是其越来越受欢迎的原因。
因此,在测试领域,AI需要更加努力才能真正替代人的工作。在考虑使用AI测试之前,应该仔细评估项目的特定需求和条件,以确定是否适合使用AI测试。未来,随着AI技术的不断发展和完善,AI测试将成为自动化测试的重要趋势,而投资于AI测试的相关技术和人才也将是一个明智的选择。
文/Thoughtworks 刘冉
阅读原文:https://insights.thoughtworks.cn/what-is-ai-testing/
相关文章:
AI测试的迷思
近年来,我一直关注AI相关的测试,并积极参与多个全国性测试社区和社群。在这些社区中,我与不同公司和领域的测试专家交流探讨AI测试相关话题,包括业界顶尖公司的专家和国内知名测试学者。我也参加了多个大会,聆听了许多…...
[ 红队知识库 ] 一些常用bat文件集合
🍬 博主介绍 👨🎓 博主介绍:大家好,我是 _PowerShell ,很高兴认识大家~ ✨主攻领域:【渗透领域】【数据通信】 【通讯安全】 【web安全】【面试分析】 🎉点赞➕评论➕收藏 养成习…...
Qt广告机服务器(上位机)
目录功能结构adSever.promain.cpptcp_MSG.h 共用Tcp传输信息adsever.h 服务器adsever.cpp 服务器addate.h 时间处理addate.cpp 时间处理adtcp.h 客户端Socket处理adtcp.cpp 客户端Socket处理client.h 客户端信息类client.cpp 客户端信息类admsglist.h 信息记录模块admsglist.cp…...
SOA架构的理解
1. SOA概述 SOA(Service-Oriented Architecture,面向服务的架构)是一种在计算机环境中设计、开发、部署和管理离散模型的方法。SOA不是一种新鲜事物,它是在企业内部IT系统重复构建以及效率低下的背景下提出的。在SOA模型中&#x…...
如何选择一款数据库?
1主流数据库技术介绍常见的数据库模型主要分为SQL关系型数据库和NoSQL非关系型数据库。其中关系型数据库分为传统关系数据库和大数据数据库,非关系型数据库分为键值存储数据库、列存储数据库、面向文档数据库、图形数据库、时序数据库、搜索引擎存储数据库及其他&am…...
week2
蓝桥2 递归*树的遍历约数之和分形之城并查集亲戚连通块中点的数量*食物链银河英雄传说哈希笨拙的手指模拟散列表单调队列剪裁序列滑动窗口最大子序和KMP周期递归 *树的遍历 中序遍历: 遍历左子树,根节点,右子树 后序遍历:遍历左子树,右子树,根节点 一个二叉树,树中每个…...
JavaScript的学习
一、引言 1.1 JavaScript简介 JavaScript一种解释性脚本语言,是一种动态类型、弱类型、基于原型继承的语言,内置支持类型。它的解释器被称为JavaScript引擎,作为浏览器的一部分,广泛用于客户端的脚本语言,用来给HTML网…...
用gin写简单的crud后端API接口
提要使用gin框架(go的web框架)来创建简单的几个crud接口)使用技术: gin sqlite3 sqlx创建初始工程新建文件夹,创建三个子文件夹分别初始化工程 go mod如果没有.go文件,执行go mod tidy可能报错(warning: "all" matched no packages), 可以先不弄,只初始化模块就行(…...
CF大陆斗C战士(三)
文章目录[C. Good Subarrays](https://codeforces.com/problemset/problem/1398/C)题目大意题目分析code[C. Boboniu and Bit Operations](https://codeforces.com/problemset/problem/1395/C)题目大意题目分析code[C. Rings](https://codeforces.com/problemset/problem/1562/…...
TTS | 语音合成论文概述
综述系列2021_A Survey on Neural Speech Synthesis论文:2106.15561.pdf (arxiv.org)论文从两个方面对神经语音合成领域的发展现状进行了梳理总结(逻辑框架如图1所示):核心模块:分别从文本分析(textanalysi…...
HTML第5天 HTML新标签与特性
新标签与特性文档类型设定前端复习帮手W3Schoool常用新标签datalist标签,与input元素配合,定义选项列表fieldset元素新增input表单文档类型设定 document – HTML: 开发环境输入html:4s – XHTML: 开发环境输入html:xt – HTML5: 开发环境输入html:5 前…...
java ee 之进程
目录 1.进程的概念 2.进程管理 3.进程属性(pcb) 3.1pid 3.2内存指针 3.3文件描述符 3.4进程调度 3.4.1进程状态 3.4.2 进程的优先级 3.4.3进程的上下文 3.4.4进程的记账信息 5.进程间通信 1.进程的概念 一个运行起来的程序,就是进程 .exe是一个可执行文件(程序),双…...
Linux学习记录——십사 进程控制(1)
文章目录1、进程创建1、fork函数2、进程终止1、情况分类2、如何理解进程终止3、进程终止的方式3、进程等待1、进程创建 1、fork函数 fork函数从已存在进程中创建一个新进程,新进程为子进程,原进程为父进程。 #include <unistd.h> pid_t fork(vo…...
使用 create-react-app 脚手架搭建React项目
❀官网 1、安装脚手架:npm install -g create-react-app 2、查看版本:create-react-app -V !!!注意 Node版本必须是14以上,不然会报以下错误。 3、创建react项目(项目名不能包含大写字母&…...
inquirerjs
inquirerjs inquirerjs是一个用来实现命令行交互界面的工具集合。它帮助我们实现与用户的交互交流,比如给用户一个提醒,用户给我们一个答案,我们根据用户的答案来做一些事情,典型应用如plop等生成器工具。 npm install inquirer…...
[数据库]内置函数
●🧑个人主页:你帅你先说. ●📃欢迎点赞👍关注💡收藏💖 ●📖既选择了远方,便只顾风雨兼程。 ●🤟欢迎大家有问题随时私信我! ●🧐版权:本文由[你帅…...
shell基本知识
为什么学习和使用Shell编程 什么是Shell shell的起源 shell的功能 shell的分类 如何查看当前系统支持的shell? 如何查看当前系统默认shell? 驼峰语句 shell脚本的基本元素 shell脚本编写规范 shell脚本的执行方式 shell脚本的退出状态 …...
Http长连接和短连接
http1.0以前,默认使用的是短连接,客户端与服务器之间每进行一次http操作,就会建立一次连接,例如,打开一个网页,包括html文件,js,css,每获取一次资源,就需要进…...
[SQL Statements] 基本的SQL知识 之DDL针对表结构和表空间的基本操作
[SQL Statements] 基本的SQL知识 之DDL针对表结构和表空间的基本操作 什么是数据库的表以及表空间 在MySQL中,一个数据库可以包含多个表,每个表是由若干个列(column)和行(row)组成的。表是存储数据的基本…...
Git版本控制工具(详解)
Git版本控制工具 Git常见命令速查表 集中式版本控制 cvs和svn都是属于集中式版本控制系统 他们的主要特点是单一的集中管理服务器 保存所有文件的修订版本协同开发人员通过客户端连接到这台服务器 取出最新的文件或者提交更新 优点每个人都可以在一定程度上看到项目中的其他…...
Vim 调用外部命令学习笔记
Vim 外部命令集成完全指南 文章目录 Vim 外部命令集成完全指南核心概念理解命令语法解析语法对比 常用外部命令详解文本排序与去重文本筛选与搜索高级 grep 搜索技巧文本替换与编辑字符处理高级文本处理编程语言处理其他实用命令 范围操作示例指定行范围处理复合命令示例 实用技…...
大话软工笔记—需求分析概述
需求分析,就是要对需求调研收集到的资料信息逐个地进行拆分、研究,从大量的不确定“需求”中确定出哪些需求最终要转换为确定的“功能需求”。 需求分析的作用非常重要,后续设计的依据主要来自于需求分析的成果,包括: 项目的目的…...
脑机新手指南(八):OpenBCI_GUI:从环境搭建到数据可视化(下)
一、数据处理与分析实战 (一)实时滤波与参数调整 基础滤波操作 60Hz 工频滤波:勾选界面右侧 “60Hz” 复选框,可有效抑制电网干扰(适用于北美地区,欧洲用户可调整为 50Hz)。 平滑处理&…...
多场景 OkHttpClient 管理器 - Android 网络通信解决方案
下面是一个完整的 Android 实现,展示如何创建和管理多个 OkHttpClient 实例,分别用于长连接、普通 HTTP 请求和文件下载场景。 <?xml version"1.0" encoding"utf-8"?> <LinearLayout xmlns:android"http://schemas…...
【磁盘】每天掌握一个Linux命令 - iostat
目录 【磁盘】每天掌握一个Linux命令 - iostat工具概述安装方式核心功能基础用法进阶操作实战案例面试题场景生产场景 注意事项 【磁盘】每天掌握一个Linux命令 - iostat 工具概述 iostat(I/O Statistics)是Linux系统下用于监视系统输入输出设备和CPU使…...
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据
微软PowerBI考试 PL300-在 Power BI 中清理、转换和加载数据 Power Query 具有大量专门帮助您清理和准备数据以供分析的功能。 您将了解如何简化复杂模型、更改数据类型、重命名对象和透视数据。 您还将了解如何分析列,以便知晓哪些列包含有价值的数据,…...
算法:模拟
1.替换所有的问号 1576. 替换所有的问号 - 力扣(LeetCode) 遍历字符串:通过外层循环逐一检查每个字符。遇到 ? 时处理: 内层循环遍历小写字母(a 到 z)。对每个字母检查是否满足: 与…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
系统掌握PyTorch:图解张量、Autograd、DataLoader、nn.Module与实战模型
本文较长,建议点赞收藏,以免遗失。更多AI大模型应用开发学习视频及资料,尽在聚客AI学院。 本文通过代码驱动的方式,系统讲解PyTorch核心概念和实战技巧,涵盖张量操作、自动微分、数据加载、模型构建和训练全流程&#…...
Vue 模板语句的数据来源
🧩 Vue 模板语句的数据来源:全方位解析 Vue 模板(<template> 部分)中的表达式、指令绑定(如 v-bind, v-on)和插值({{ }})都在一个特定的作用域内求值。这个作用域由当前 组件…...
