<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          ChatGPT和百度文心一言寫用例,誰更強(qiáng)?

          共 7923字,需瀏覽 16分鐘

           ·

          2023-06-23 22:13

          文心一言發(fā)布的第一時(shí)間,就排隊(duì)申請(qǐng)了邀請(qǐng)碼,昨晚看了下,邀請(qǐng)碼已經(jīng)到手,索性就拿一個(gè)例子試了一下,看看哪個(gè)能夠真正意義上的提高生產(chǎn)力,最簡單的錄制了個(gè)GIF動(dòng)畫如下:

          問題:
          你是一個(gè)軟件測(cè)試工程師,得到一個(gè)需求:軟件程序Helios會(huì)自動(dòng)采集容器內(nèi)的socket調(diào)用記錄、ptrace調(diào)用記錄、userfaultfd調(diào)用記錄、connect調(diào)用記錄、core_pattern調(diào)用記錄。請(qǐng)根據(jù)軟件測(cè)試方法,為上述需求寫出測(cè)試點(diǎn),驗(yàn)證Helios程序采集容器內(nèi)功能的完整性,并寫出測(cè)試用例,包括正常和異常場景,分別為每個(gè)用例輸出python測(cè)試程序。

          ChatGPT的回答: 778338f018cd91634a718c422b26d0bf.webp

          百度文心一言的回答:
          63d04434346c4964a76fda6b95253a62.webp

          以下是ChatGPT回復(fù)的內(nèi)容:

          建立測(cè)試計(jì)劃:

          1. 驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的socket調(diào)用記錄

          2. 驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的ptrace調(diào)用記錄

          3. 驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的userfaultfd調(diào)用記錄

          4. 驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的connect調(diào)用記錄

          5. 驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的core_pattern調(diào)用記錄

          6. 驗(yàn)證Helios程序是否在容器內(nèi)部運(yùn)行穩(wěn)定,不會(huì)發(fā)生系統(tǒng)崩潰等異常情況

          設(shè)計(jì)測(cè)試用例 使用以下步驟檢查每個(gè)測(cè)試點(diǎn)是否滿足需求:

          測(cè)試點(diǎn)1:驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的socket調(diào)用記錄

          測(cè)試用例:

          正常場景:步驟1:在容器內(nèi)執(zhí)行socket調(diào)用 步驟2:檢查是否能夠在采集結(jié)果中找到socket調(diào)用記錄 預(yù)期結(jié)果:采集結(jié)果中包括所有的socket調(diào)用記錄

          異常場景:步驟1:在容器內(nèi)關(guān)閉socket 步驟2:檢查是否能夠在采集結(jié)果中找到socket調(diào)用記錄 預(yù)期結(jié)果:不應(yīng)該有任何socket調(diào)用記錄

          測(cè)試點(diǎn)2:驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的ptrace調(diào)用記錄

          測(cè)試用例:

          正常場景:步驟1:在容器內(nèi)執(zhí)行ptrace系統(tǒng)調(diào)用 步驟2:檢查是否能夠在采集結(jié)果中找到ptrace調(diào)用記錄 預(yù)期結(jié)果:采集結(jié)果中包括所有的ptrace調(diào)用記錄

          異常場景:步驟1:在容器內(nèi)關(guān)閉ptrace 步驟2:檢查是否能夠在采集結(jié)果中找到ptrace調(diào)用記錄 預(yù)期結(jié)果:不應(yīng)該有任何ptrace調(diào)用記錄

          測(cè)試點(diǎn)3:驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的userfaultfd調(diào)用記錄

          測(cè)試用例:

          正常場景:步驟1:在容器內(nèi)執(zhí)行userfaultfd系統(tǒng)調(diào)用 步驟2:檢查是否能夠在采集結(jié)果中找到userfaultfd調(diào)用記錄 預(yù)期結(jié)果:采集結(jié)果中包括所有的userfaultfd調(diào)用記錄

          異常場景:步驟1:在容器內(nèi)關(guān)閉userfaultfd 步驟2:檢查是否能夠在采集結(jié)果中找到userfaultfd調(diào)用記錄 預(yù)期結(jié)果:不應(yīng)該有任何userfaultfd調(diào)用記錄

          測(cè)試點(diǎn)4:驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的connect調(diào)用記錄

          測(cè)試用例:

          正常場景:步驟1:在容器內(nèi)執(zhí)行connect系統(tǒng)調(diào)用 步驟2:檢查是否能夠在采集結(jié)果中找到connect調(diào)用記錄 預(yù)期結(jié)果:采集結(jié)果中包括所有的connect調(diào)用記錄

          異常場景:步驟1:在容器內(nèi)關(guān)閉connect 步驟2:檢查是否能夠在采集結(jié)果中找到connect調(diào)用記錄 預(yù)期結(jié)果:不應(yīng)該有任何connect調(diào)用記錄

          測(cè)試點(diǎn)5:驗(yàn)證Helios程序是否能夠完整地采集容器內(nèi)的core_pattern調(diào)用記錄

          測(cè)試用例:

          正常場景:步驟1:在容器內(nèi)執(zhí)行core_pattern系統(tǒng)調(diào)用 步驟2:檢查是否能夠在采集結(jié)果中找到core_pattern調(diào)用記錄 預(yù)期結(jié)果:采集結(jié)果中包括所有的core_pattern調(diào)用記錄

          異常場景:步驟1:在容器內(nèi)關(guān)閉core_pattern 步驟2:檢查是否能夠在采集結(jié)果中找到core_pattern調(diào)用記錄 預(yù)期結(jié)果:不應(yīng)該有任何core_pattern調(diào)用記錄

          測(cè)試點(diǎn)6:驗(yàn)證Helios程序是否在容器內(nèi)部運(yùn)行穩(wěn)定,不會(huì)發(fā)生系統(tǒng)崩潰等異常情況

          測(cè)試用例:

          正常場景:步驟1:在容器內(nèi)執(zhí)行正常操作 步驟2:檢查容器是否運(yùn)行穩(wěn)定 預(yù)期結(jié)果:容器應(yīng)該在正常操作下保持穩(wěn)定且運(yùn)行正常

          異常場景:步驟1:在容器內(nèi)執(zhí)行一個(gè)異常操作 步驟2:檢查容器是否發(fā)生崩潰等異常情況 預(yù)期結(jié)果:容器不應(yīng)該發(fā)生崩潰等異常情況

          以上測(cè)試點(diǎn)和測(cè)試用例都已經(jīng)定義好了,只需要根據(jù)需求和預(yù)期結(jié)果使用Python寫出測(cè)試代碼即可。

          追問ChatGPT:請(qǐng)給出你所提到的Python測(cè)試代碼。

          以下是一個(gè)測(cè)試用例的代碼樣例,可以根據(jù)需求和預(yù)期結(jié)果進(jìn)行相應(yīng)的修改。其他測(cè)試用例的代碼類似,可以使用類似的代碼格式: 導(dǎo)入需要使用的模塊 import subprocess 定義測(cè)試用例
                
                  
                    
          def test_socket(): # 在容器內(nèi)執(zhí)行socket調(diào)用 subprocess.call(["docker", "exec", "container_name", "python", "-c", "import socket; s = socket.socket(); s.bind(('localhost', 1234)); s.listen(5);"])
          # 讀取Helios程序采集的結(jié)果 with open("helios_result.txt", "r") as file: helios_result = file.read()
          # 檢查是否采集到了socket調(diào)用記錄 assert "socket.bind((\'localhost\', 1234))" in helios_result assert "socket.listen(5)" in helios_result
          # 關(guān)閉socket連接 subprocess.call(["docker", "exec", "container_name", "python", "-c", "s = socket.socket(); s.connect(('localhost', 1234)); s.close()"])
          # 讀取Helios程序采集的結(jié)果 with open("helios_result.txt", "r") as file: helios_result = file.read()
          # 檢查是否沒有采集到socket調(diào)用記錄 assert "socket.connect((\'localhost\', 1234))" not in helios_result
          運(yùn)行測(cè)試用例 test_socket() 在這個(gè)測(cè)試用例中,我們使用了Python的subprocess模塊去控制Docker容器的內(nèi)部執(zhí)行,并讀取Helios程序采集的結(jié)果,然后通過斷言語句檢查每個(gè)測(cè)試預(yù)期結(jié)果是否滿足預(yù)期。需要注意的是,這個(gè)測(cè)試用例是以單個(gè)測(cè)試點(diǎn)為例的,其他測(cè)試用例的代碼類似。 以下是百度文心一言的回復(fù):
          1. 測(cè)試點(diǎn):采集容器內(nèi)的socket調(diào)用記錄、ptrace調(diào)用記錄、userfaultfd調(diào)用記錄、connect調(diào)用記錄、core_pattern調(diào)用記錄。

          2. 正常場景:輸出Helios程序采集到的數(shù)據(jù),包括socket調(diào)用記錄、ptrace調(diào)用記錄、userfault fd調(diào)用記錄、connect調(diào)用記錄和core_pattern調(diào)用記錄。

          3. 異常場景:當(dāng)發(fā)現(xiàn)Helios程序沒有輸出相應(yīng)的數(shù)據(jù)時(shí),需要進(jìn)行確認(rèn)測(cè)試驗(yàn)證其完整性。

          4. 測(cè)試用例:

                
                  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


          回復(fù)速度: ChatGPT明顯快很多;

          回復(fù)精準(zhǔn)度上:ChatGPT明顯是真正的理解了輸入這段文字的意思,并且逐一做出了回復(fù),而且回復(fù)的內(nèi)容精準(zhǔn)度較高,可以作為一個(gè)提效工具去使用,相比文心一言,做的回復(fù)就很粗糙,所以說只能是個(gè)小玩具,也可能是引導(dǎo)回答的方式不對(duì)。

          雖然還有一定差距,但是百度已經(jīng)很努力了,被強(qiáng)者牽引之后,相信百度能夠很快趕上,精神可嘉,畢竟是第一個(gè)迎面而上的男人,希望文心一言一樣也變強(qiáng),變成一個(gè)強(qiáng)有力的提效工具。

          回到軟件測(cè)試人員甚至程序員會(huì)不會(huì)被替代這個(gè)問題上,很難說, 如果不學(xué)習(xí),還不到被AI提到就早已經(jīng)被別人替代了 ,所以還是要堅(jiān)持學(xué)習(xí)的;至少,當(dāng)前還不會(huì),因?yàn)閷⑷斯ぶ悄軕?yīng)用到不用人為干預(yù)就完成用例輸出還需要一定的適應(yīng)和轉(zhuǎn)換成本,所以說學(xué)會(huì)如何借助人工智能把用例寫的更好,這才是核心;

          另外一點(diǎn)是可以借助ChatGPT更快速高效的寫代碼,當(dāng)然前提是使用者懂代碼,如果不懂代碼,也不一定能夠很好的利用起來,畢竟你也不知道AI給你的代碼正確性如何,再或者你想修改代碼,還是得知道代碼怎么修改, 整體而言,對(duì)懂代碼的人、對(duì)懂測(cè)試用例的人,無論是ChatGPT還是文言一心,無疑都是好幫手,畢竟,強(qiáng)者恒強(qiáng),借助人工智能去創(chuàng)新創(chuàng)造才是根本。

          瀏覽 109
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  欧美三级国产视频 | 黄色二区| 亚洲性爱片 | 成人免费A | 黄色激情五月天视频 |