ChatGPT和百度文心一言写用例,谁更强?

文心一言发布的第一时间,就排队申请了邀请码,昨晚看了下,邀请码已经到手,索性就拿一个例子试了一下,看看哪个能够真正意义上的提高生产力,最简单的录制了个GIF动画如下:

问题:
你是一个软件测试工程师,得到一个需求:软件程序Helios会自动采集容器内的socket调用记录、ptrace调用记录、userfaultfd调用记录、connect调用记录、core_pattern调用记录。请根据软件测试方法,为上述需求写出测试点,验证Helios程序采集容器内功能的完整性,并写出测试用例,包括正常和异常场景,分别为每个用例输出python测试程序。

ChatGPT的回答:aa8859c8dd65337bd2e4601f46ad00c2.gif

百度文心一言的回答:
a11b97aaa7698427259600d8c0138a05.gif

以下是ChatGPT回复的内容:

建立测试计划:

  1. 验证Helios程序是否能够完整地采集容器内的socket调用记录

  2. 验证Helios程序是否能够完整地采集容器内的ptrace调用记录

  3. 验证Helios程序是否能够完整地采集容器内的userfaultfd调用记录

  4. 验证Helios程序是否能够完整地采集容器内的connect调用记录

  5. 验证Helios程序是否能够完整地采集容器内的core_pattern调用记录

  6. 验证Helios程序是否在容器内部运行稳定,不会发生系统崩溃等异常情况

设计测试用例 使用以下步骤检查每个测试点是否满足需求:

测试点1:验证Helios程序是否能够完整地采集容器内的socket调用记录

测试用例:

正常场景:步骤1:在容器内执行socket调用 步骤2:检查是否能够在采集结果中找到socket调用记录 预期结果:采集结果中包括所有的socket调用记录

异常场景:步骤1:在容器内关闭socket 步骤2:检查是否能够在采集结果中找到socket调用记录 预期结果:不应该有任何socket调用记录

测试点2:验证Helios程序是否能够完整地采集容器内的ptrace调用记录

测试用例:

正常场景:步骤1:在容器内执行ptrace系统调用 步骤2:检查是否能够在采集结果中找到ptrace调用记录 预期结果:采集结果中包括所有的ptrace调用记录

异常场景:步骤1:在容器内关闭ptrace 步骤2:检查是否能够在采集结果中找到ptrace调用记录 预期结果:不应该有任何ptrace调用记录

测试点3:验证Helios程序是否能够完整地采集容器内的userfaultfd调用记录

测试用例:

正常场景:步骤1:在容器内执行userfaultfd系统调用 步骤2:检查是否能够在采集结果中找到userfaultfd调用记录 预期结果:采集结果中包括所有的userfaultfd调用记录

异常场景:步骤1:在容器内关闭userfaultfd 步骤2:检查是否能够在采集结果中找到userfaultfd调用记录 预期结果:不应该有任何userfaultfd调用记录

测试点4:验证Helios程序是否能够完整地采集容器内的connect调用记录

测试用例:

正常场景:步骤1:在容器内执行connect系统调用 步骤2:检查是否能够在采集结果中找到connect调用记录 预期结果:采集结果中包括所有的connect调用记录

异常场景:步骤1:在容器内关闭connect 步骤2:检查是否能够在采集结果中找到connect调用记录 预期结果:不应该有任何connect调用记录

测试点5:验证Helios程序是否能够完整地采集容器内的core_pattern调用记录

测试用例:

正常场景:步骤1:在容器内执行core_pattern系统调用 步骤2:检查是否能够在采集结果中找到core_pattern调用记录 预期结果:采集结果中包括所有的core_pattern调用记录

异常场景:步骤1:在容器内关闭core_pattern 步骤2:检查是否能够在采集结果中找到core_pattern调用记录 预期结果:不应该有任何core_pattern调用记录

测试点6:验证Helios程序是否在容器内部运行稳定,不会发生系统崩溃等异常情况

测试用例:

正常场景:步骤1:在容器内执行正常操作 步骤2:检查容器是否运行稳定 预期结果:容器应该在正常操作下保持稳定且运行正常

异常场景:步骤1:在容器内执行一个异常操作 步骤2:检查容器是否发生崩溃等异常情况 预期结果:容器不应该发生崩溃等异常情况

以上测试点和测试用例都已经定义好了,只需要根据需求和预期结果使用Python写出测试代码即可。

追问ChatGPT:请给出你所提到的Python测试代码。

以下是一个测试用例的代码样例,可以根据需求和预期结果进行相应的修改。其他测试用例的代码类似,可以使用类似的代码格式:

导入需要使用的模块

import subprocess

定义测试用例

def test_socket():
  # 在容器内执行socket调用
  subprocess.call(["docker", "exec", "container_name", "python", "-c", "import socket; s = socket.socket(); s.bind(('localhost', 1234)); s.listen(5);"])


  # 读取Helios程序采集的结果
  with open("helios_result.txt", "r") as file:
      helios_result = file.read()


  # 检查是否采集到了socket调用记录
  assert "socket.bind((\'localhost\', 1234))" in helios_result
  assert "socket.listen(5)" in helios_result


  # 关闭socket连接
  subprocess.call(["docker", "exec", "container_name", "python", "-c", "s = socket.socket(); s.connect(('localhost', 1234)); s.close()"])


  # 读取Helios程序采集的结果
  with open("helios_result.txt", "r") as file:
      helios_result = file.read()


  # 检查是否没有采集到socket调用记录
  assert "socket.connect((\'localhost\', 1234))" not in helios_result

运行测试用例

test_socket()

在这个测试用例中,我们使用了Python的subprocess模块去控制Docker容器的内部执行,并读取Helios程序采集的结果,然后通过断言语句检查每个测试预期结果是否满足预期。需要注意的是,这个测试用例是以单个测试点为例的,其他测试用例的代码类似。

以下是百度文心一言的回复:

  1. 测试点:采集容器内的socket调用记录、ptrace调用记录、userfaultfd调用记录、connect调用记录、core_pattern调用记录。

  2. 正常场景:输出Helios程序采集到的数据,包括socket调用记录、ptrace调用记录、userfault fd调用记录、connect调用记录和core_pattern调用记录。

  3. 异常场景:当发现Helios程序没有输出相应的数据时,需要进行确认测试验证其完整性。

  4. 测试用例:

class TestHelio:  
    def test_collect(self):  
        # input = ["localhost:12345", "somehost2:23456", ...]  
        input = ["stdio-recv0*16+0*8[0x7ff00000,0x3f3fffff]\x00|i64 00=0x7ffffbe60d802'r;R>e$7fh!?o7i@2g~qz%^{y#w}vZYuDxqy&dV<u4BkcJQXp/Ia" \  
=\  
,82WNmrOtIjU1nSG67PvFg3kslIZCeAzubBu8IWdHKoRgcsLwRS5Il+ @9rprt) (11hkbsic9iqnt/ j28anE> pPy$ \l; xIdoSM - g' G? )bCu= +OTep / mWe + s1T /fA3< 6 !~ M- ]Q!  B "  
        expected = [  
            '127.0.0.1socklenght=32 addrtype=SocketAddr sockaddrLen=24 family=AFamily id=5 pid=52 time stamp=0x52f4e54a16c40 readahead cnt=0 writeback cnt=0 cpu占用率%dpcs freq msec num rx bytes tx bytes mi register select | 100000000 00000000000000 00000000 0007f000000 00442d304a5ff000 000000000000000166c91000 00000200064e9400020e6cbc5ab38f678f73ba922c38cbd7e92e588ad5b6ed414e4a3a208baac1dccdfe2ecd96ed34d562aa09a8cca3a55af4f45e768aea65ca37bb46db16ef2bf22e9bea39bcf375b347c001f579cd27ce15d18a80b8dc43ee63d923da73abc7d58`  
        ]  
        assert type(input) is list and len(input) > 0, str(input)  
        for i in range(len(input)):  
            res = util.getallsocketcallrecord(  
                int(input[i][31:25]),  
                int(input[i][26:28]),  
                int(input[i][29:30]),  
                int(input[i][23:22]),  
                int(input[i][21:20]),  
                int(input[i][19:18]),  
                int(input[i][17:16]),  
                int(input[i][15:14]),  
                int(input[i][13:12]),  
                int(input[i][11:10]),  
                int(input[i][9:8]),  
                int(input[i][7:6]),  
                int(input[i][5:4]),  
                int(input[i][3:2]),  
                int(input[i][1:0])  
            )  
            print(res)  


    def test_collect_failure(self):  
        # in

回复速度:ChatGPT明显快很多;

回复精准度上:ChatGPT明显是真正的理解了输入这段文字的意思,并且逐一做出了回复,而且回复的内容精准度较高,可以作为一个提效工具去使用,相比文心一言,做的回复就很粗糙,所以说只能是个小玩具,也可能是引导回答的方式不对。

虽然还有一定差距,但是百度已经很努力了,被强者牵引之后,相信百度能够很快赶上,精神可嘉,毕竟是第一个迎面而上的男人,希望文心一言一样也变强,变成一个强有力的提效工具。

回到软件测试人员甚至程序员会不会被替代这个问题上,很难说,如果不学习,还不到被AI提到就早已经被别人替代了,所以还是要坚持学习的;至少,当前还不会,因为将人工智能应用到不用人为干预就完成用例输出还需要一定的适应和转换成本,所以说学会如何借助人工智能把用例写的更好,这才是核心;

另外一点是可以借助ChatGPT更快速高效的写代码,当然前提是使用者懂代码,如果不懂代码,也不一定能够很好的利用起来,毕竟你也不知道AI给你的代码正确性如何,再或者你想修改代码,还是得知道代码怎么修改,整体而言,对懂代码的人、对懂测试用例的人,无论是ChatGPT还是文言一心,无疑都是好帮手,毕竟,强者恒强,借助人工智能去创新创造才是根本。

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

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

相关文章

Web前端:6种基本的前端编程语言

如果你想在前端web开发方面开始职业生涯&#xff0c;学习JavaScript是必须的。它是最受欢迎的编程语言&#xff0c;它功能广泛&#xff0c;功能强大。但JavaScript并不是你唯一需要知道的语言。HTML和CSS对于前端开发至关重要。他们将帮助你开发用户友好的网站和应用程序。什么…

【Linux】动静态库

认识动静态库静态库&#xff08;.a&#xff09;&#xff1a;程序在编译链接的时候把库的代码链接到可执行文件中。程序运行的时候将不再需要静态库动态库&#xff08;.so&#xff09;&#xff1a;程序在运行的时候才去链接动态库的代码&#xff0c;多个程序共享使用库的代码。一…

MySQL注入秘籍【绕过篇】

MySQL注入秘籍【绕过篇】1.通用方法2.绕过空格3.绕过引号4.绕过逗号,5.绕过等号6.绕过and/or7.绕过注释符8.绕过函数检测1.通用方法 编码 编码无非就是hex、url等等编码&#xff0c;让传到数据库的数据能够解析的即可&#xff0c;比如URL编码一般在传给业务的时候就会自动解码…

【沐风老师】3DMAX交通流插件TrafficFlow使用方法详解

TrafficFlow交通流插件&#xff0c;模拟生成车流、人流动画。 【版本要求】 3dMax 2008及更高版本 【安装方法】 无需安装直接拖动插件脚本文件到3dMax视口中打开。 【快速开始】 1.创建车辆对象和行车路径。 2.打开TrafficFlow插件&#xff0c;先选择“车辆”对象&#xff0…

大数据处理学习笔记2.1 初识Spark

文章目录零、本节学习目标一、Spark的概述&#xff08;一&#xff09;Spark的组件1、Spark Core2、Spark SQL3、Spark Streaming4、MLlib5、Graph X6、独立调度器、Yarn、Mesos&#xff08;二&#xff09;Spark的发展史1、发展简史2、目前最新版本二、Spark的特点&#xff08;一…

对void的深度理解

作者&#xff1a;小树苗渴望变成参天大树 作者宣言&#xff1a;认真写好每一篇博客 作者gitee:gitee 如 果 你 喜 欢 作 者 的 文 章 &#xff0c;就 给 作 者 点 点 关 注 吧&#xff01; void前言一、 void 关键字二、 void修饰函数返回值和参数三、void指针3.1void * 定义的…

BeanPostProcessor原理分析

文章目录一、BeanPostProcessor的作用1. 源码2. 使用案例二、Spring生命周期中的BeanPostProcessor三、BeanPostProcessor对PostConstruct的支持四、BeanPostProcessor中的顺序性五、总结一、BeanPostProcessor的作用 BeanPostProcessor提供了初始化前后回调的方法&#xff0c;…

百度文心一言正式亮相

OpenAI 刚发布了 GPT-4&#xff0c;百度预热已久的人工智能生成式对话产品也终于亮相了。昨天下午&#xff0c;文心一言 (ERNIE Bot)—— 百度全新一代知识增强大语言模型、文心大模型家族的新成员&#xff0c;正式在百度总部 “挥手点江山” 会议室里发布。 发布会一开场&…

Linux第一个小程序git三板斧

目录 1.Linux项目自动化构建工具 - make/makefile 1.1.makefile原理 1.2.项目清理 2.第一个小程序 - 进度条 3.git三板斧 1.Linux项目自动化构建工具 - make/makefile make是一条命令&#xff0c;makefile是一个文件&#xff0c;两个搭配使用&#xff0c;完成项目自动化构建。 …

HashData携手新炬网络 共推国产云数仓产业发展

3月22日&#xff0c;酷克数据宣布与国内知名IT智能运维服务商新炬网络签署战略合作协议&#xff0c;新炬网络成为酷克数据核心战略合作伙伴。 双方约定&#xff0c;将通过优势互补、资源共享的方式&#xff0c;建立长期合作模式和信息共享机制&#xff0c;在数据库相关领域展开…

Prometheus监控实战之Blackbox_exporter黑盒监测

1 Blackbox_exporter应用场景 blackbox_exporter是Prometheus官方提供的exporter之一&#xff0c;可以提供HTTP、HTTPS、DNS、TCP以及ICMP的方式对网络进行探测。 1.1 HTTP 测试 定义 Request Header信息 判断 Http status / Http Respones Header / Http Body内容 1.2 TC…

第二十二章 opengl之高级OpenGL(几何着色器)

OpenGL使用几何着色器用点造物体爆破物体法向量可视化在顶点和片段着色器之间有一个可选的几何着色器(Geometry Shader)&#xff0c; 几何着色器的输入是一个图元&#xff08;如点或三角形&#xff09;的一组顶点。几何着色器可以在顶点发送到下一着色器阶段之前对它们随意变换…

基于YOLOv5的疲劳驾驶检测系统(Python+清新界面+数据集)

摘要&#xff1a;基于YOLOv5的疲劳驾驶检测系统使用深度学习技术检测常见驾驶图片、视频和实时视频中的疲劳行为&#xff0c;识别其闭眼、打哈欠等结果并记录和保存&#xff0c;以防止交通事故发生。本文详细介绍疲劳驾驶检测系统实现原理的同时&#xff0c;给出Python的实现代…

第十四届蓝桥杯三月真题刷题训练——第 19 天

第 1 题&#xff1a;灌溉_BFS板子题 题目描述 小蓝负责花园的灌溉工作。 花园可以看成一个 n 行 m 列的方格图形。中间有一部分位置上安装有出水管。 小蓝可以控制一个按钮同时打开所有的出水管&#xff0c;打开时&#xff0c;有出水管的位置可以被认为已经灌溉好。 每经过一分…

一文带你看懂电压放大器和功率放大器的区别

很多人对于电压放大器和功率放大器总是分不太清&#xff0c;在实际应用过程中&#xff0c;电压放大器和功率放大器所起到的作用都是相同的。对于功率放大器和电压放大器的区别&#xff0c;今天就让安泰电子来带我们一起看看。功率放大器和电压放大器的主要区别是&#xff1a;功…

花青染料Sulfo-Cyanine7 N3,Cy7 azide,Sulfo-Cy7 N3,用于点击化学的水溶NIR azide染料

●中文名&#xff1a;磺化花青素Cyanine7叠氮&#xff0c;磺化花青素Cy7叠氮●英文名&#xff1a;Sulfo-Cyanine7 azide&#xff0c;Sulfo-Cyanine7 N3&#xff0c;Sulfo-Cy7 azide&#xff0c;Sulfo-Cyanine7 N3【产品理化指标】&#xff1a;CAS号&#xff1a;N/A分子式&#…

应用层协议 HTTP HTTPS

目录 应用层 再谈 "协议" 序列化和反序列化 关于 json库 request序列化 request反序列化 response序列化 response反序列化 PS&#xff1a;命令宏 HTTP协议 认识URL urlencode和urldecode HTTP协议格式 HTTP请求 HTTP响应 请求方法 ​编辑 HT…

自动化测试学习(七)-正则表达式,你真的会用吗?

目录 一、正则表达式在python中如何使用 二、用正则表达式匹配更多模式 三、常用字符分类的缩写代码 总结 所谓正则表达式&#xff08;regex&#xff09;&#xff0c;就是一种模式匹配&#xff0c;学会用正则匹配&#xff0c;就可以达到事半功倍的效果。 一、正则表达式在…

幸福的烦恼:显卡算力太高而pytorch版本太低不支持

NVIDIA GeForce RTX 3090 with CUDA capability sm_86 is not compatible with the current PyTorch installation. The current PyTorch install supports CUDA capabilities sm_37 sm_50 sm_60 sm_70.写在最前面项目场景&#xff1a;问题描述原因分析&#xff1a;解决方案&am…

Linux(网络基础---数据链接层)

文章目录0. 前言1. 以太网的帧格式2. 再谈局域网原理3. 汇总整体通信流程&#xff0c;补全细节3-1 理解MAC地址和IP地址3-2 MTU1. 认识MTU2. MTU对IP协议的影响3. MTU对UDP协议的影响4. MTU对于TCP协议的影响3-3 ARP协议1. 基本概念2. ARP协议的作用3. ARP数据报的格式4. 简述a…
最新文章