日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
一款不用寫代碼,簡單,高效的開源自動化測試工具

Diffy是什么

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

10年積累的成都網(wǎng)站建設(shè)、網(wǎng)站制作經(jīng)驗,可以快速應(yīng)對客戶對網(wǎng)站的新想法和需求。提供各種問題對應(yīng)的解決方案。讓選擇我們的客戶得到更好、更有力的網(wǎng)絡(luò)服務(wù)。我雖然不認(rèn)識你,你也不認(rèn)識我。但先建設(shè)網(wǎng)站后付款的網(wǎng)站建設(shè)流程,更有青秀免費網(wǎng)站建設(shè)讓你可以放心的選擇與我們合作。

1. Diffy主要為了解決什么問題

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

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

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

大多情況只能寫幾個核心的測試用例,而在人員不足,時間緊張的情況下,則更是難上加難了。在后期,因為功能在不斷增加,回歸測試的工作量越來越大,同時因為是回歸,可能幾百甚至上千用例中才會發(fā)現(xiàn)一個問題,甚至一個問題也沒有,測試投入工作的時間與最終的收益不成比例。

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

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

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

2. Diffy適用場景

①、場景驗證:

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

②、提升回歸效率:

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

3. Diffy一般操作流程

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

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

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

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

4. Diffy工作原理

在測試過程中,Diffy充當(dāng)一個代理,它能夠?qū)碓凑埱蠓职l(fā)到不同版本的系統(tǒng)中去,通過對各個版本系統(tǒng)的輸出進(jìn)行對比,做出最終的結(jié)論。

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

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

整個運行流程為:

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

其中:

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

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

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

5. Diffy安裝、使用

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

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

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

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

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

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

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

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

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

6、對diffy發(fā)一些請求

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

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

7. 小結(jié)

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


分享題目:一款不用寫代碼,簡單,高效的開源自動化測試工具
本文地址:http://m.5511xx.com/article/cceicid.html