草庐IT

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

软测小生 2023-04-08 原文

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

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

ChatGPT的回答:

百度文心一言的回答:

以下是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还是文言一心,无疑都是好帮手,毕竟,强者恒强,借助人工智能去创新创造才是根本。

有关ChatGPT和百度文心一言写用例,谁更强?的更多相关文章

  1. 亚特兰蒂斯的回声(中文版): chatGPT 的杰作 - 2

    英文版英文链接关注公众号在“亚特兰蒂斯的回声”中踏上一段难忘的冒险之旅,深入未知的海洋深处。足智多谋的考古学家AriaSeaborne偶然发现了一件古代神器,揭示了一张通往失落之城亚特兰蒂斯的隐藏地图。在她神秘的导师内森·兰登教授的指导和勇敢的冒险家亚历克斯·默瑟的帮助下,阿丽亚开始了一段危险的旅程,以揭开这座传说中城市的真相。他们的冒险之旅带领他们穿越险恶的大海、神秘的岛屿和充满陷阱和谜语的致命迷宫。随着Aria潜在的魔法能力的觉醒,她被睿智勇敢的QueenNeria的幻象所指引,她让她为即将到来的挑战做好准备。三人组揭开亚特兰蒂斯令人惊叹的隐藏文明,并了解到邪恶的巫师马拉卡勋爵试图利用其古

  2. 智能客服 | 浅谈人工智能聊天机器人ChatGPT - 2

    2022年底,OpenAI的预训练模型ChatGPT给人工智能领域的爱好者和研究人员留下了深刻的印象和启发,他展现的惊人能力将人工智能的研究和应用热度推向高潮,网上也充斥着和ChatGPT的各种聊天,他可以作诗、写小说、写代码、讨论疫情问题等。下面就是一些他的神回复:人命关天的坑: 写歌,留给词作者的机会不多了。。。 回答人类怎么样面对人工智能: 什么是ChatGPT?借用网上的一段介绍,ChatGPT是由人工智能研究实验室OpenAI在2022年11月30日发布的全新聊天机器人模型,一款人工智能技术驱动的自然语言处理工具。它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动

  3. 【ChatGPT】ChatGPT 的 N 种用法 - 2

    目录ChatGPT简介技术原理应用未来发展ChatGPT的10 种用法ChatGPT简介ChatGPT是一种基于深度学习的大型语言模型,由OpenAI公司开发。技术原理GPT是GenerativePre-trainedTransformer的缩写,意为生成式预训练变压器。它的技术原理是使用了一个基于注意力机制的变压器(Trans

  4. Ruby 并发/异步处理(简单用例) - 2

    我一直在研究ruby​​的并行/异步处理能力,并阅读了许多文章和博客文章。我查看了EventMachine、Fibers、Revactor、Reia等。不幸的是,我无法为这个非常简单的用例找到简单、有效(且非IO阻塞)的解决方案:File.open('somelogfile.txt')do|file|whileline=file.gets#(R)ReadfromIOline=process_line(line)#(P)Processthelinewrite_to_db(line)#(W)WritetheoutputtosomeIO(DBorfile)endend你看到了吗,我的小脚本正

  5. 「想体验ChatGPT中文聊天?」那快进来,你用不上算我输 - 2

    ♥️作者:白日参商🤵‍♂️个人主页:白日参商主页♥️坚持分析平时学习到的项目以及学习到的软件开发知识,和大家一起努力呀!!!🎈🎈加油!加油!加油!加油🎈欢迎评论💬点赞👍🏻收藏📂加关注+!「想体验ChatGPT中文聊天?」那快进来,你用不上算我输项目场景:项目条件一、那就开始吧1、安装ChatGPT-Desktop2、OpenAPI设置二、使用实例恭喜你!!!配置成功了!!!API和URL都是博主免费提供给大家的!!!恭喜你!!!配置成功了!!!API和URL都是博主免费提供给大家的!!!🎈🎈加油!加油!加油!加油🎈欢迎评论💬点赞👍🏻收藏📂加关注+!项目场景:近几个月可以说ChatGPT是火得一

  6. ruby - 如何在 MiniTest 中的所有测试中的每个测试用例之前运行代码? - 2

    我需要在MiniTest中的所有测试中的每个测试之前运行代码。在我做之前:MiniTest::Unit::TestCase.add_setup_hookdo...codetorunbeforeeachtestend在我将MiniTest升级到4.7.2版本后,它显示以下错误:undefinedmethod`add_setup_hook'forMiniTest::Unit::TestCase:Class(NoMethodError)我正在使用RubyMRI2.0.0p0。解决方案moduleMyMinitestPlugindefbefore_setupsuper#...codetorun

  7. 半个月狂飙1000亿,ChatGPT概念股凭什么? - 2

    ChatGPT掀起了AI股历史上最疯狂的一轮市值狂飙。自春节后至今,ChatGPT概念股开始了暴走模式,短短半月时间,海天瑞声、开普云等ChatGPT概念股市值累计增加了近1400亿。如此的爆炸效应,得益于ChatGPT所展现出商业化落地的巨大潜力。要知道,在此之前,无论是十年AI投入超千亿的百度,还是困在硬件化里的AI四小龙,都在重复着AI商业化难落地的故事。ChatGPT的出现,让AI从生产力的赋能者直接成为一种创造生产力的工具。随着订阅模式的推出,ChatGPT已经成为第一个以AI技术为核心直接变现的消费者应用。本文持有以下核心观点:1、ChatGPT是AI技术迭代的受益者。过去受限技术

  8. 未来的趋势————以ChatGPT为标杆的AI对生活的影响是巨大的 - 2

    文章目录前言1.AI的发展历程2.我是如何接触到人工智能的概念和产品的3.对于ChatGPT的一点看法4.AI对大学毕业生的职业发展的利与弊5.对于AI的思考和问题前言随着ChatGPT的爆火,生成式AI,大模型的人工智能被越来越多的人注意到,同时他也带来了许多问题。本文将对几方面进行探讨。1.AI的发展历程远古时期在公元前第一个千禧年,中国,印度和希腊哲学家都提出了一些推理的研究理论,比如亚里士多德(Aristotle)进行了演绎推理三段论的完整分析,欧几里得(Euclid)所著Elements是一种形式推理的模型,MuḥammadibnMūsāal-Khwārizmī,发明了代数学,即我们

  9. ruby - 不同 Padrino haml 助手的用例 - 2

    我读了http://www.padrinorb.com/guides/application-helpers但我不清楚每个View助手的用例是什么。具体来说,content_for/yield_content、render/partial、capture_html和concat_content如何组合在一起?现在我一直在我的Controller中使用render'my/view'并在'my中加入一些=partial'my/partial'/view'只是为了将主模板文件分解成更小的block。这是正确的做法吗?我想在何时何地使用其他辅助函数? 最佳答案

  10. 山石发声|风暴眼中的ChatGPT,看NLPer怎么说? - 2

    当前科技领域最有热度的话题,无疑是OpenAI新提出的大规模对话语言模型ChatGPT,一经发布上线,短短五天就吸引了百万用户,仅一个多月的时间月活已然破亿,并且热度一直在持续发酵,各行各业的从业人员、企业机构都开始体验关注甚至自研“类ChatGPT”模型。这里,笔者从一位NLP从业人员的角度谈一谈对ChatGPT的一些看法和思考。1、ChatGPT诞生之路1.1BERT2018年,谷歌提出BERT(BidirectionalEncoderRepresentationfromTransformer)模型,一时之间疯狂屠榜,在各种自然语言处理领域建模任务中取得了最佳的成绩,NLP自此进入了大规模

随机推荐