偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

一款不用寫代碼,簡(jiǎn)單,高效的開(kāi)源自動(dòng)化測(cè)試工具

新聞 開(kāi)發(fā)工具 自動(dòng)化
這款工具能夠自動(dòng)檢測(cè)基于Apache Thrift或者基于HTTP的服務(wù)。通過(guò)同時(shí)運(yùn)行新/老代碼,對(duì)比運(yùn)行結(jié)果,發(fā)現(xiàn)潛在bug。使用Diffy,只需要進(jìn)行簡(jiǎn)單的配置,之后不需要再編寫測(cè)試代碼。

Diffy是什么

Diffy是一個(gè)開(kāi)源的自動(dòng)化測(cè)試工具,是一種Diff測(cè)試技術(shù)。它能夠自動(dòng)檢測(cè)基于Apache Thrift或者基于HTTP的服務(wù)。通過(guò)同時(shí)運(yùn)行新/老代碼,對(duì)比運(yùn)行結(jié)果,發(fā)現(xiàn)潛在bug。使用Diffy,只需要進(jìn)行簡(jiǎn)單的配置,之后不需要再編寫測(cè)試代碼。

1. Diffy主要為了解決什么問(wèn)題

一個(gè)項(xiàng)目,從第一個(gè)版本發(fā)布到形成一個(gè)相對(duì)完善的版本,再到后面的重大更新甚至重構(gòu),需要經(jīng)過(guò)許多版本的迭代。

而隨著項(xiàng)目的迭代,產(chǎn)品功能不斷增加,項(xiàng)目會(huì)變得越來(lái)越復(fù)雜。在后期,每修改增加的功能相對(duì)上一版本已存在功能的比例卻是越來(lái)越小。但每一次或大或小的版本升級(jí),我們都需要保證新增或修改的功能不影響上一版本已存在的功能。但要達(dá)到這一點(diǎn)卻是困難異常,哪怕只改了一行代碼、哪怕這項(xiàng)更改由非常優(yōu)秀的開(kāi)發(fā)者完成,我們都很難保證這項(xiàng)功能對(duì)上一版本的功能無(wú)任何影響。

要保證每次上線的安全,我們需要開(kāi)發(fā)和測(cè)試完成兩項(xiàng)工作。一是,開(kāi)發(fā)者在增加或變動(dòng)某項(xiàng)新功能后,補(bǔ)充相應(yīng)的測(cè)試用例,但寫過(guò)單元測(cè)試的同學(xué)都知道,完成一個(gè)單元測(cè)試用例所花費(fèi)的時(shí)間可能比完成相應(yīng)功能花費(fèi)的時(shí)間更多得多。

大多情況只能寫幾個(gè)核心的測(cè)試用例,而在人員不足,時(shí)間緊張的情況下,則更是難上加難了。在后期,因?yàn)楣δ茉诓粩嘣黾?,回歸測(cè)試的工作量越來(lái)越大,同時(shí)因?yàn)槭腔貧w,可能幾百甚至上千用例中才會(huì)發(fā)現(xiàn)一個(gè)問(wèn)題,甚至一個(gè)問(wèn)題也沒(méi)有,測(cè)試投入工作的時(shí)間與最終的收益不成比例。

另外測(cè)試人員對(duì)相同內(nèi)容的重復(fù)測(cè)試,會(huì)有一種疲憊感,這樣一來(lái)會(huì)給測(cè)試人員帶來(lái)消極情緒,當(dāng)真的有問(wèn)題(尤其是較復(fù)雜的數(shù)據(jù)問(wèn)題)發(fā)生時(shí),也可能會(huì)因?yàn)檫@種疲憊而將問(wèn)題忽略(如果一個(gè)用例測(cè)了10遍都沒(méi)問(wèn)題,第11遍測(cè)的時(shí)候心里可能會(huì)默認(rèn)這個(gè)地方是沒(méi)問(wèn)題的了)。這時(shí)候有些測(cè)試人員可能會(huì)考慮做自動(dòng)化測(cè)試,但是自動(dòng)化測(cè)試前期投入的成本較高,另外對(duì)測(cè)試人員的要求較高。如果項(xiàng)目變動(dòng)比較頻繁,部分自動(dòng)化測(cè)試可能需要重新設(shè)計(jì),會(huì)帶來(lái)較高的成本。

而Diffy為上述問(wèn)題提供了較好的解決方案,不同于我們常用的其他測(cè)試工具或框架從代碼或接口的返回結(jié)果的正確性去驗(yàn)證,而是如其名:通過(guò)代碼的差異去驗(yàn)證測(cè)試

需要注意的是:既然是差異,那至少是兩者之間比較才有差異,對(duì)于第一行代碼或新增的功能無(wú)法比較,自然也就無(wú)法驗(yàn)證,這時(shí)diffy無(wú)法發(fā)揮作用。但在后續(xù)增加修改,項(xiàng)目不停迭代的周期中,diffy就可以發(fā)揮它的舞臺(tái)了,有了上一版本以及測(cè)試人員在上一版本測(cè)試工作的基礎(chǔ),我們就通過(guò)上一版本和當(dāng)前版本比較差異了。

2. Diffy適用場(chǎng)景

①、場(chǎng)景驗(yàn)證:

比如某個(gè)接口返回的數(shù)據(jù)中的”name”字段獲取由user數(shù)據(jù)庫(kù)表改為mobile_user數(shù)據(jù)庫(kù)表,那么從接口角度來(lái)講,通過(guò)對(duì)比這個(gè)接口在新老版本代碼的返回結(jié)果,就可以知道其字段的基本正確性與差異性。

②、提升回歸效率:

就一般的接口測(cè)試來(lái)說(shuō),每次代碼迭代,除了對(duì)新接口的測(cè)試,還包括對(duì)老接口的回歸。如果通過(guò)手工回歸,那么隨著接口數(shù)量的增加,測(cè)試人員的工作量將同樣地線性增長(zhǎng),且效率將大幅降低。通過(guò)diff測(cè)試,可以發(fā)現(xiàn)相同接口下內(nèi)部代碼邏輯變更對(duì)其輸出的影響,測(cè)試人員只需要對(duì)比diff接口的差異之處(或自動(dòng)對(duì)比),從而大幅減少人工作業(yè)的工作量。

3. Diffy一般操作流程

①、分別部署新、老代碼:其中老代碼為線上穩(wěn)定版本,新代碼為新迭代的測(cè)試版本。

②、構(gòu)造測(cè)試數(shù)據(jù):我們可以手工構(gòu)造測(cè)試數(shù)據(jù),也可以對(duì)線上的數(shù)據(jù)進(jìn)行抽樣,用于diff測(cè)試。

③、運(yùn)行測(cè)試:使用測(cè)試數(shù)據(jù)分別在新、老代碼中運(yùn)行,并捕獲測(cè)試結(jié)果。

④、結(jié)果對(duì)比:對(duì)比新、老代碼,相同接口下的輸出,如果出現(xiàn)差異,則可以通過(guò)接口反向定位問(wèn)題。

4. Diffy工作原理

在測(cè)試過(guò)程中,Diffy充當(dāng)一個(gè)代理,它能夠?qū)?lái)源請(qǐng)求分發(fā)到不同版本的系統(tǒng)中去,通過(guò)對(duì)各個(gè)版本系統(tǒng)的輸出進(jìn)行對(duì)比,做出最終的結(jié)論。

Diffy需要三個(gè)版本的系統(tǒng),以實(shí)現(xiàn)它的噪聲過(guò)濾和對(duì)比功能,它們分別是:

  1. 候選版本:該版本是待測(cè)版本,相對(duì)于生產(chǎn)環(huán)境版本有著跟新的代碼。
  2. 穩(wěn)定版本:該版本通常是已經(jīng)上線版本,或者是已知功能正常的版本。
  3. 穩(wěn)定版本副本:該版本是穩(wěn)定版本的副本,和穩(wěn)定版本運(yùn)行相同的代碼,主要用于排除噪聲。

整個(gè)運(yùn)行流程為:

一款不用寫代碼,簡(jiǎn)單,高效的開(kāi)源自動(dòng)化測(cè)試工具Diffy

如圖所示,diffy能夠比較primary(線上穩(wěn)定版本)和secondary(線上穩(wěn)定版本備份)的差異值,通過(guò)對(duì)這些差異值做減法來(lái)消除噪聲;通過(guò)比較candidate(測(cè)試版本)和primary(線上穩(wěn)定版本)得到基本的diff結(jié)果;最后通過(guò)比對(duì)基本的diff結(jié)果與消除噪聲后的結(jié)果,得到最終的diff結(jié)果。

其中:

  • 原始區(qū)別為候選版本和穩(wěn)定版本之間輸出的區(qū)別,其中可能會(huì)包含上述的噪聲。
  • 噪聲從穩(wěn)定版本和其副本中獲得,如果兩個(gè)運(yùn)行相同代碼的系統(tǒng)輸入相同輸出卻不同,則Diffy會(huì)認(rèn)為這是開(kāi)發(fā)人員不需要關(guān)心的噪聲。

基于上述兩個(gè)區(qū)別集合,Diffy可以識(shí)別出候選版本和穩(wěn)定版本真實(shí)的區(qū)別,這些區(qū)別很有可能就是一個(gè)缺陷。

當(dāng)然,對(duì)于一個(gè)概率性出現(xiàn)隨機(jī)值,僅僅一次請(qǐng)求的結(jié)論可能是不準(zhǔn)確的。例如對(duì)于一個(gè)50%概率出現(xiàn)true或者false的布爾值,則有50%的概率會(huì)出現(xiàn)候選版本和穩(wěn)定版本的不同,同時(shí)又會(huì)有50%的概率出現(xiàn)穩(wěn)定版本和其副本出現(xiàn)不同(即將這個(gè)值認(rèn)定為噪聲),最終會(huì)有25%的概率認(rèn)為這是一個(gè)缺陷。因?yàn)榇藭r(shí)穩(wěn)定版本和其副本值相同,候選版本和穩(wěn)定版本值不同。因此,Diffy還會(huì)聚合原始區(qū)別和噪聲,當(dāng)發(fā)現(xiàn)二者出現(xiàn)的概率類似的時(shí)候,會(huì)認(rèn)定之前識(shí)別出來(lái)的缺陷屬于誤報(bào)。

5. Diffy安裝、使用

1、克隆代碼并構(gòu)建

下載diffy-server,也可以在github上下載源碼編譯 twitter/diffy , diffy是twitter使用scala語(yǔ)言開(kāi)發(fā)的項(xiàng)目,在安裝了jdk的基礎(chǔ)上,還需要安裝scala和sbt(類似于maven), 另外有些jar包需要從twitter下載,可能需要vpn。

2、例如,在localhost:9990部署primary(線上穩(wěn)定版本)的代碼。

3、例如,在localhost:9991部署secondary(線上穩(wěn)定版本備份)的代碼。

4、例如,在localhost:9992部署candidate(測(cè)試版本)的代碼。

5、在下載好jar包之后,可直接通過(guò)java命令啟動(dòng)diff服務(wù):

各參數(shù)詳細(xì)說(shuō)明:

需要注意的是,為了防止測(cè)試對(duì)數(shù)據(jù)造成不必要的影響,diffy默認(rèn)只支持讀,即Post及Delete影響數(shù)據(jù)的等請(qǐng)求不會(huì)轉(zhuǎn)發(fā),如果需要支持這樣的請(qǐng)求,需要增加參數(shù)。

命令模板(根據(jù)實(shí)際情況修改參數(shù)值即可)

6、對(duì)diffy發(fā)一些請(qǐng)求

在http://localhost:8888中檢查結(jié)果,結(jié)果展示如下圖

一款不用寫代碼,簡(jiǎn)單,高效的開(kāi)源自動(dòng)化測(cè)試工具Diffy

 

如圖所示,我們可以看到每個(gè)請(qǐng)求在不同節(jié)點(diǎn)上的差異之處,如果點(diǎn)擊“Exclude Noise”,則可以消除噪聲,看到最終的diff結(jié)果。

一款不用寫代碼,簡(jiǎn)單,高效的開(kāi)源自動(dòng)化測(cè)試工具Diffy

7. 小結(jié)

上述對(duì)diffy作了一些基本的介紹和使用引導(dǎo),利用diffy結(jié)合gor及nginx或filter等手段還可以擴(kuò)展很多其它的測(cè)試實(shí)踐。關(guān)于gor的介紹和用法可查閱:推薦一款簡(jiǎn)單易用線上引流測(cè)試工具:GoReplay,diffy更多高級(jí)用法,歡迎大家自行探索。

 

責(zé)任編輯:張燕妮 來(lái)源: 今日頭條
相關(guān)推薦

2022-06-16 11:57:22

自動(dòng)化安全開(kāi)源

2020-07-17 07:41:29

開(kāi)源開(kāi)發(fā)技術(shù)

2016-11-11 14:34:46

開(kāi)源開(kāi)源工具

2020-08-07 08:10:25

開(kāi)源技術(shù) 工具

2020-08-24 06:58:01

滲透測(cè)試工具物聯(lián)網(wǎng)設(shè)備安全攻擊測(cè)試

2012-12-24 22:54:31

2014-04-16 14:15:01

QCon2014

2011-05-10 09:55:14

2019-10-28 15:14:53

Python腳本語(yǔ)言Java

2014-11-12 09:24:00

2017-11-08 08:20:45

2022-06-06 06:00:00

開(kāi)源無(wú)代碼測(cè)試工具

2018-08-01 09:00:00

測(cè)試工具負(fù)載測(cè)試性能測(cè)試

2011-11-18 09:11:21

Web

2011-05-30 17:50:23

分布式測(cè)試

2011-05-31 18:17:07

分布式測(cè)試

2022-07-04 09:00:36

Playwright自動(dòng)化測(cè)試工具

2020-12-08 06:20:00

Python自動(dòng)化工具開(kāi)源

2020-07-08 13:27:59

開(kāi)源自動(dòng)化測(cè)試框架

2015-08-10 11:41:00

SQL注入SQL注入工具Sqlmapi
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)