大模型真的会让软件测试人员下岗吗?

在今年3月写过一篇文章:又一次被震惊:从生成和细化需求到应用各种方法设计测试用例 ,展示了chatGPT生成测试用例,而且可以用不同的方法生成测试用例,在我们的引导下它还能补充测试用例、完善测试用例。半年之后,chatGPT的能力强大许多,而且是多模态的,如下面例子所表现,所以我们更能借助LLM完成从生成验收标准、生成测试计划、生成测试用例、生成测试脚本到生成测试报告等全测试周期所需的交付件。

图片

(基于简单的描述生成非常规范、完整的测试用例。)

图片

基于流程图生成E2E的测试用例

自然不能用这些相对简单的例子(基于流程图生成E2E的测试用例也不简单,是真实案例)或几行字来回答标题所提出的问题:大模型真的会让软件测试人员下岗吗?即使大模型真的有潜力让软件测试人员下岗,也不是现在,而是3-5年后。为什么这么说呢?那是因为在长沙、在沈阳,一些专家和学者在讨论“大模型会成为软件工程的银弹吗?” 多数人认为很有可能,而且在未来3-5年或更长时间(10年)这一时刻会出现。

类似开发人员,人们会说:大模型会淘汰码农,但不会淘汰软件工程师。也就是说,如果你只是一个平庸的程序员,缺乏业务素质、工程能力、沟通协调能力,只会写代码、完成具体功能的代码实现,很有可能被淘汰,因为具体任务的代码很有可能由AIGC自动生成。虽然现在代码采用率不高,但可以由资深程序员来review和完善,因为有40-50%的工作被LLM干了,人员是可以优化的。如果要优化,那么上面说的“码农”被优化掉的可能性很大。

测试人员也有类似的场景,如果只是能干一些简单的测试设计、测试执行的工作,那很有可能会被淘汰。因为在普遍使用LLM情况下,大量的验收标准、测试用例、测试脚本、测试计划、测试报告被自动生成,测试团队自然也会被优化,而能力弱的、只会干简单工作的测试人员被优化掉的可能性也是很大的。

从这个角度看,其实是会用大模型的测试人员淘汰不会用大模型的测试人员。

我们如何成为会用大模型的测试人员呢?简单地说,就是拥抱大模型,躬身入局,不断实践、应用大模型,不断学习新的知识和新的工具,与时俱进,持续进取。具体说,分三步走。

第一步就是一面学习提示工程、一面在chatGPT或相应的工具上去实践。

提示工程,可以好好理解下面两张图,理解提示的结构和技巧(Few-shot Prompting)。如果可能,可以进一步了解思维链(CoT)等内容。还可以加约束,设置输出模板或Markdown格式。

图片

图片

例如,生成按文档模板要求的、规范的测试计划、测试用例。

图片

图片

图片

第2步,在这基础上,可以多了解其他同事、其他公司的一些优秀实践,或多看一些和测试领域应用大模型技术相关的论文,例如Adaptive Test Generation Using a Large Language Model,了解Transformer机制、预训练和fine-tuning等方面的知识,深度了解如何训练出一个测试大模型,提升自己的理论水平

图片

第3步,尝试部署开源大模型(如Llama 2),在此基础上,尝试用自己的测试数据精调(fine-tuning)出自己的测试大模型,应用于实际工作中。这一步,的确有挑战,从数据的准备、清洗和优化到数据构造,然后开始进行fine-tuning。在fine-tuning过程中,可以调整模型的超参数,如温度系数、学习率、窗口大小等,甚至可以学习高效微调技术(如LoRA)。然后使用验证数据集对fine-tuning后的模型进行验证,以评估模型的性能。这个过程会经过多次训练、验证,最终达到一个好的性能才算结束,最后将模型部署到研发环境中,供大家使用。

图片

经过这样一个过程,自己以后就拥有了一个强大的测试助手,自然对公司的价值更大,使自己立于不败之地。

当然,也没有这么简单,看了一篇简单的文档,自己就飞起来了,不可能。需要在工作中要脚踏实地去实践、去思考、再实践;需要走出去,多取经、多学习。

点击 “阅读原文”,获得更多的指导和学习。

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

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

相关文章

北邮22级信通院数电:Verilog-FPGA(10)第十周实验 实现移位寄存器74LS595

北邮22信通一枚~ 跟随课程进度更新北邮信通院数字系统设计的笔记、代码和文章 持续关注作者 迎接数电实验学习~ 获取更多文章,请访问专栏: 北邮22级信通院数电实验_青山如墨雨如画的博客-CSDN博客 目录 一.代码部分 二.管脚分配 三.实现过程讲解及效…

关于爬虫中的hook(defineProperty,hook cookies, hook载荷数据,hookXHR)

关于爬虫中的hook: defineProperty var people {age: 19, }; var count20; console.log(people.age) // 参数:对象 属性名字 函数 Object.defineProperty(people, age, {get: function () {console.log(获取值!);return count;},// set: …

SOME/IP 协议介绍(五)指南

指南(信息性) 选择传输协议 SOME/IP直接支持互联网上使用最广泛的两种传输协议:用户数据报协议(UDP)和传输控制协议(TCP)。UDP是一种非常简洁的传输协议,仅支持最重要的功能&#…

在电脑PC端可以分类记笔记的软件选择哪个?

选择用电脑来记录笔记是比较便捷的,电脑屏幕比较大,操作起来比较便捷。但是很多人用电脑来记录笔记,通常会使用电脑上自带的记事本、文档记事工具来整合笔记,打开文档记事本类的软件,密密麻麻的文字呈现出来。 选择用…

Cesium点位弹窗

1.弹窗没法向加入点位一样加入到地图内部,entity没法实现 2.使用绝对定位,将地图组件通过定位加入到地图上,注意弹窗层级一定在地图上 3.通过判断点击位置是否是点位来获取entity信息,将信息显示在弹窗 4.将点击处点位的经纬度转为…

RHCSA --- Linux存储管理

存储管理 Boot:可引导操作系统的分区(必须是主分区) 分区 ll /dev/nvme0n* 表示的是 nvme接口的磁盘 0n1 1 0n2 2 0n3 3 brw-rw----. 1 root disk 259, 0 Nov 15 19:31 /dev/nvme0n1 磁盘1 brw-rw----. 1 ro…

算法之冒泡排序

算法之冒泡排序 冒泡排序Bubble Sort 交换排序相邻元素两两比较大小,有必要则交换。元素越小或越大,就会在数列中慢慢的交换并“浮”向顶端,如同水泡咕嘟咕嘟往上冒。 核心算法 排序算法,一般都实现为就地排序,输出…

vscode c++ 报错identifier “string“ is undefined

vscode c 报identifier “string” is undefined 问题 新装了电脑, 装好vsc和g等, 发现报错 但开头并没问题 解决 shiftctrlp选择 C/C Edit:COnfigurations (JSON)自动生成打开 c_cpp_properties.json添加g路径等 "cStandard": "c11","cppStanda…

【数据结构(二)】单链表(3)

文章目录 1. 链表介绍2. 单链表应用实例2.1. 顺序添加方式2.1.1. 思路分析2.1.2. 代码实现 2.2. 按照编号顺序添加方式2.2.1. 思路分析2.2.2. 代码实现 3. 单链表节点的修改3.1. 思路分析3.2. 代码实现 4. 单链表节点的删除4.1. 思路分析4.2. 代码实现 5. 单链表常见面试题5.1.…

Universal adversarial perturbations(2017 CVPR)

Universal adversarial perturbations----《普遍对抗扰动》 通俗UAP算法步骤理解:对于 x i ∈ X {x_i} \in X xi​∈X 的每个采样数据点,比较 k ^ ( x i v ) \hat k({x_i} v) k^(xi​v) 与 k ^ ( x i ) \hat k({x_i}) k^(xi​) ,如果 k…

Rust与其他语言对比:优势在哪里?

大家好!我是lincyang。 今天,我们将深入探讨Rust语言与其他编程语言比较的优势,并通过具体的代码示例和性能数据来加深理解。 Rust与其他语言的比较 1. 内存安全性 Rust:采用所有权系统,编译器在编译时检查内存安全…

西南科技大学814考研二

C语言数据结构与算法 线性表 顺序表(静态分配内存) #include <stdio.h> #include <stdbool.h> //静态顺序表 #define MAX_SIZE 8 //顺序表储存的数据类型 typedef int ElemType; typedef struct {ElemType data[MAX_SIZE];int length; }SeqList; //初始化顺序表…

redis 非关系型数据库

redis 非关系型数据库&#xff0c;缓存型数据库。 关系型数据库和非关系型数据库的区别 关系型数据库是一个机构化的数据库&#xff0c;行和列。 列&#xff1a;声明对象 行&#xff1a;记录对象属性。 表与表之间是有关联&#xff0c;使用sql语句&#xff0c;来对指定的表…

Oracle 存储过程数据插入临时表慢以及SQL语句查询慢

/*parallel*/ 解释: 一般表数据量比较大&#xff08;超过100万&#xff09;时&#xff0c;可以使用parallel强制启动并行度来提升查询速度 用法&#xff1a;/*parallel(table_short_name,cash_number)*/ 可以加到insert、delete、update、select的后面来使用 比如&#xff…

Linux:安装MySQL服务(非docker方式)

1、下载安装包 下载MySQL安装包&#xff0c;需要Oracle官网的账号 下面是网友提供的账号及密码&#xff0c;亲测有效。 账户&#xff1a;3028064308qq.com 我用的这个&#xff0c;可以登陆 密码&#xff1a;OraclePassword123!Oracle Account: 602205528qq.com Oracle Pass…

计算机毕业设计选题推荐-掌心办公微信小程序/安卓APP-项目实战

✨作者主页&#xff1a;IT毕设梦工厂✨ 个人简介&#xff1a;曾从事计算机专业培训教学&#xff0c;擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Py…

分形简单版

我的代码&#xff1a; #include<bits/stdc.h> using namespace std; const int N1000; int n; char s[N][N]; void work(int x) {if(x1) {s[0][0]*;return;}work(x-1);for(int i0;i<(1<<x-2);i)for(int j(1<<x-2);j<(1<<x-1);j) s[i][j]s[i][j-(…

Java的IO流-打印流

打印流 PrintStream public void println&#xff08;&#xff09;自动换行 PrintWriter package com.itheima.println;import java.io.FileInputStream; import java.io.PrintStream; import java.io.PrintWriter;public class Test2 {public static void main(String[] arg…

【Linux】第十九站:进程替换

文章目录 一、单进程版---最简单的程序替换二、进程替换的原理三、多进程的程序替换1.多进程的程序替换实例2.那么程序在替换时候有没有创建子进程呢3.再谈原理4.一个现象5.我们的CPU如何得知程序的入口地址&#xff1f; 四、各个接口的介绍1.execl2.execlp3.execv4.execvp5.ex…

【Spring Boot】使用WebSocket协议完成来单提醒及客户催单功能

1 WebSocket介绍 WebSocket 是基于 TCP 的一种新的网络协议。它实现了浏览器与服务器全双工通信(双向传输)——浏览器和服务器只需要完成一次握手&#xff0c;两者之间就可以创建持久性的连接&#xff0c; 并进行双向数据传输。 1.1 HTTP协议和WebSocket协议对比 1、HTTP是短…