Ⅰ 什麼是大數據測試
測試大數據應用程序更多的是驗證其數據處理,而不是測試軟體產品的個別功能版。當涉及到大權數據測試時,性能和功能測試是關鍵。在大數據測試中,QA工程師使用集群和其他組件來驗證對TB級數據的成功處理。因為處理非常快,所以它需要高水平的測試技能。
大數據應用程序的測試更多的是去驗證其數據處理而不是驗證其單一的功能特色。當然在大數據測試時,功能測試和性能測試是同樣很關鍵的。對於大數據測試工程師而言,如何高效正確的驗證經過大數據工具/框架成功處理過的至少百萬兆位元組的數據將會是一個巨大的挑戰。因為大數據高效的處理測試速度,它要求測軟體工程師具備高水平的測試技術才能應對大數據測試。
Ⅱ 大數據科學家需要掌握的幾種異常值檢測方法
引言
異常值檢測與告警一直是工業界非常關注的問題,自動准確地檢測出系統的異常值,不僅可以節約大量的人力物力,還能盡早發現系統的異常情況,挽回不必要的損失。個推也非常重視大數據中的異常值檢測,例如在運維部門的流量管理業務中,個推很早便展開了對異常值檢測的實踐,也因此積累了較為豐富的經驗。本文將從以下幾個方面介紹異常值檢測。
1、異常值檢測研究背景
2、異常值檢測方法原理
3、異常值檢測應用實踐
異常值檢測研究背景
異常值,故名思議就是不同於正常值的值。 在數學上,可以用離群點來表述,這樣便可以將異常值檢測問題轉化為數學問題來求解。
異常值檢測在很多場景都有廣泛的應用,比如:
1、流量監測
互聯網上某些伺服器的訪問量,可能具有周期性或趨勢性:一般情況下都是相對平穩的,但是當受到某些黑客攻擊後,其訪問量可能發生顯著的變化,及早發現這些異常變化對企業而言有著很好的預防告警作用。
2、金融風控
正常賬戶中,用戶的轉賬行為一般屬於低頻事件,但在某些金融詐騙案中,一些嫌犯的賬戶就可能會出現高頻的轉賬行為,異常檢測系統如果能發現這些異常行為,及時採取相關措施,則會規避不少損失。
3、機器故障檢測
一個運行中的流水線,可能會裝有不同的感測器用來監測運行中的機器,這些感測器數據就反應了機器運行的狀態,這些實時的監測數據具有數據量大、維度廣的特點,用人工盯著看的話成本會非常高,高效的自動異常檢測演算法將能很好地解決這一問題。
異常值檢測方法原理
本文主要將異常值檢測方法分為兩大類:一類是基於統計的異常值檢測,另一類是基於模型的異常值檢測。
基於統計的方法
基於模型的方法
1、基於統計的異常值檢測方法
常見的基於統計的異常值檢測方法有以下2種,一種是基於3σ法則,一種是基於箱體圖。
3σ法則
箱體圖
3σ法則是指在樣本服從正態分布時,一般可認為小於μ-3σ或者大於μ+3σ的樣本值為異常樣本,其中μ為樣本均值,σ為樣本標准差。在實際使用中,我們雖然不知道樣本的真實分布,但只要真實分布與正太分布相差不是太大,該經驗法則在大部分情況下便是適用的。
箱體圖也是一種比較常見的異常值檢測方法,一般取所有樣本的25%分位點Q1和75%分位點Q3,兩者之間的距離為箱體的長度IQR,可認為小於Q1-1.5IQR或者大於Q3+1.5IQR的樣本值為異常樣本。
基於統計的異常檢測往往具有計算簡單、有堅實的統計學基礎等特點,但缺點也非常明顯,例如需要大量的樣本數據進行統計,難以對高維樣本數據進行異常值檢測等。
2、基於模型的異常值檢測
通常可將異常值檢測看作是一個二分類問題,即將所有樣本分為正常樣本和異常樣本,但這和常規的二分類問題又有所區別,常規的二分類一般要求正負樣本是均衡的,如果正負樣本不均勻的話,訓練結果往往會不太好。但在異常值檢測問題中,往往面臨著正(正常值)負(異常值)樣本不均勻的問題,異常值通常比正常值要少得多,因此需要對常規的二分類模型做一些改進。
基於模型的異常值檢測一般可分為有監督模型異常值檢測和無監督模型異常值檢測,比較典型的有監督模型如oneclassSVM、基於神經網路的自編碼器等。 oneclassSVM就是在經典的SVM基礎上改進而來,它用一個超球面替代了超平面,超球面以內的值為正常值,超球面以外的值為異常值。
經典的SVM
1
基於模型的方法
2
基於神經網路的自編碼器結構如下圖所示。
自編碼器(AE)
將正常樣本用於模型訓練,輸入與輸出之間的損失函數可採用常見的均方誤差,因此檢測過程中,當正常樣本輸入時,均方誤差會較小,當異常樣本輸入時,均方誤差會較大,設置合適的閾值便可將異常樣本檢測出來。但該方法也有缺點,就是對於訓練樣本比較相近的正常樣本判別較好,但若正常樣本與訓練樣本相差較大,則可能會導致模型誤判。
無監督模型的異常值檢測是異常值檢測中的主流方法,因為異常值的標注成本往往較高,另外異常值的產生往往無法預料,因此有些異常值可能在過去的樣本中根本沒有出現過, 這將導致某些異常樣本無法標注,這也是有監督模型的局限性所在。 較為常見的無監督異常值檢測模型有密度聚類(DBSCAN)、IsolationForest(IF)、RadomCutForest(RCF)等,其中DBSCAN是一種典型的無監督聚類方法,對某些類型的異常值檢測也能起到不錯的效果。該演算法原理網上資料較多,本文不作詳細介紹。
IF演算法最早由南京大學人工智慧學院院長周志華的團隊提出,是一種非常高效的異常值檢測方法,該方法不需要對樣本數據做任何先驗的假設,只需基於這樣一個事實——異常值只是少數,並且它們具有與正常值非常不同的屬性值。與隨機森林由大量決策樹組成一樣,IsolationForest也由大量的樹組成。IsolationForest中的樹叫isolation tree,簡稱iTree。iTree樹和決策樹不太一樣,其構建過程也比決策樹簡單,因為其中就是一個完全隨機的過程。
假設數據集有N條數據,構建一顆iTree時,從N條數據中均勻抽樣(一般是無放回抽樣)出n個樣本出來,作為這顆樹的訓練樣本。
在樣本中,隨機選一個特徵,並在這個特徵的所有值范圍內(最小值與最大值之間)隨機選一個值,對樣本進行二叉劃分,將樣本中小於該值的劃分到節點的左邊,大於等於該值的劃分到節點的右邊。
這樣得到了一個分裂條件和左、右兩邊的數據集,然後分別在左右兩邊的數據集上重復上面的過程,直至達到終止條件。 終止條件有兩個,一個是數據本身不可再分(只包括一個樣本,或者全部樣本相同),另外一個是樹的高度達到log2(n)。 不同於決策樹,iTree在演算法裡面已經限制了樹的高度。不限制雖然也可行,但出於效率考慮,演算法一般要求高度達到log2(n)深度即可。
把所有的iTree樹構建好了,就可以對測試數據進行預測了。預測的過程就是把測試數據在iTree樹上沿對應的條件分支往下走,直到達到葉子節點,並記錄這過程中經過的路徑長度h(x),即從根節點,穿過中間的節點,最後到達葉子節點,所走過的邊的數量(path length)。最後,將h(x)帶入公式,其中E(.)表示計算期望,c(n)表示當樣本數量為n時,路徑長度的平均值,從而便可計算出每條待測數據的異常分數s(Anomaly Score)。異常分數s具有如下性質:
1)如果分數s越接近1,則該樣本是異常值的可能性越高;
2)如果分數s越接近0,則該樣本是正常值的可能性越高;
RCF演算法與IF演算法思想上是比較類似的,前者可以看成是在IF演算法上做了一些改進。針對IF演算法中沒有考慮到的時間序列因素,RCF演算法考慮了該因素,並且在數據樣本采樣策略上作出了一些改進,使得異常值檢測相對IF演算法變得更加准確和高效,並能更好地應用於流式數據檢測。
IF演算法
RCF演算法
上圖展示了IF演算法和RCF演算法對於異常值檢測的異同。我們可以看出原始數據中有兩個突變異常數據值,對於後一個較大的突變異常值,IF演算法和RCF演算法都檢測了出來,但對於前一個較小的突變異常值,IF演算法沒有檢測出來,而RCF演算法依然檢測了出來,這意味著RCF有更好的異常值檢測性能。
異常值檢測應用實踐
理論還需結合實踐,下面我們將以某應用從2016.08.16至2019.09.21的日活變化情況為例,對異常值檢測的實際應用場景予以介紹:
從上圖中可以看出該應用的日活存在著一些顯著的異常值(比如紅色圓圈部分),這些異常值可能由於活動促銷或者更新迭代出現bug導致日活出現了比較明顯的波動。下面分別用基於統計的方法和基於模型的方法對該日活序列數據進行異常值檢測。
基於3σ法則(基於統計)
RCF演算法(基於模型)
從圖中可以看出,對於較大的突變異常值,3σ法則和RCF演算法都能較好地檢測出來, 但對於較小的突變異常值,RCF演算法則要表現得更好。
總結
上文為大家講解了異常值檢測的方法原理以及應用實踐。綜合來看,異常值檢測演算法多種多樣 ,每一種都有自己的優缺點和適用范圍,很難直接判斷哪一種異常檢測演算法是最佳的, 具體在實戰中,我們需要根據自身業務的特點,比如對計算量的要求、對異常值的容忍度等,選擇合適的異常值檢測演算法。
接下來,個推也會結合自身實踐,在大數據異常檢測方面不斷深耕,繼續優化演算法模型在不同業務場景中的性能,持續為開發者們分享前沿的理念與最新的實踐方案。
Ⅲ 怎樣提升自己的大數據測試經驗
大數據測試三個步驟:
步驟一:數據階段驗證
大數據測試的第一步,也稱作pre-hadoop階段該過程包括如下驗證:
1)來自各方面的數據資源應該被驗證,來確保正確的數據被載入進系統。
2)將源數據與推送到Hadoop系統中的數據進行比較,以確保它們匹配。
3)驗證正確的數據被提取並被載入到HDFS正確的位置。
該階段可以使用工具Talend或Datameer,進行數據階段驗證。
步驟二:"MapRece"驗證
大數據測試的第二步是MapRece的驗證。在這個階段,測試者在每個節點上進行業務邏輯驗證,然後在運行多個節點後驗證它們,確保如下操作的正確性:
1)Map與Rece進程正常工作。
2)在數據上實施數據聚合或隔離規則。
3)生成鍵值對。
4)在執行Map和Rece進程後驗證數據。
步驟三:輸出階段驗證
大數據測試的最後或第三階段是輸出驗證過程。生成輸出數據文件,同時把文件移到一個EDW(Enterprise Data Warehouse:企業數據倉庫)中或著把文件移動到任何其他基於需求的系統中。在第三階段的活動包括:
1)檢查轉換(Transformation)規則被正確應用。
2)檢查數據完整性和成功的數據載入到目標系統中。
3)通過將目標數據與HDFS文件系統數據進行比較來檢查沒有數據損壞。
Ⅳ 大數據測試工程師需要具備哪些技能
1、測試基本知識
想成為大數據測試工程師之前,有些測試必備的技能,比如軟體測試執行提出了我們開展軟體測試的執行活動所需要涉及的執行過程以及相關策略;同時了解常用德測試活動中的經驗之談,理論知識的梳理和基本的測試技巧掌握。
2、Linux及環境搭建 、Docker容器實現分布式虛擬化技巧
一個成熟的數據從業者應該懂得靈活的運用數據尋找,獲取,安裝,Debug,分享,團隊合作,Linux是知名的開源系統,在這個系統下環境的配置將變得非常容易和透明。Linux操作系統作為常見的底層操作系統,在軟體開發、軟體測試過程中都會經常接觸和使用,很多企業的伺服器都是Linux環境的,對於測試人員而言,也都會掌握相應的Linux命令。
3、SQL和資料庫相關的技能
資料庫是另外一個比較重要的部分,想像一下你不可能一直使用Excel去處理數據,畢竟超過十萬行的數據用Excel就比較吃力了。這個時候SQL就是必須要用的,可以說這個是一個核心技能。有的人可能會說SQL非常簡單,但是當你實際應用的時候你會發現你在學校學的那些簡單Query完全就跟不上需求了。
4、 Python/java語言
先說一下Python, Python是一種萬能的語言,適用性非常強,除了數據分析還能夠做很多的事情,比如編寫程序,網站開發,深度學習等等。如果你決定使用Python,那麼你需要了解的點主要是各種包的搜索和調用,函數的編寫和嵌套,數據類型的把握(list, tuple, series, dict),條件判斷,循環迭代等等。
5、性能測試、框架開發的技能掌握
這個也是成為大數據測試工程師前,你必須要掌握得部分。在了解性能測試各方面的知識和經驗的同時,培養自己的獨立思考和解決問題的能力,掌握軟體性能測試核心技術、工具使用以及項目實戰技巧。
Ⅳ 大數據技術在APP測試上面如何應用
數據獲取手段、數據處理技術的改進導致"大數據"爆發。測試行業對於大回數據的應用也是很答多的,比如TestBird在做測試時是基於大量的數據基礎的,對於測試的分析和bug探索效果都能有很大的提升。
當然,在測試技術上,也有很好的大數據運用例子。比如你可以通過大數據統計點來寫測試用例。產品需要快速迭代,又要保證版本質量不下降,就必須做到精準測試的用例精簡。
也就是統計用戶行為預埋下的點,用戶使用次數的數據穩健並且有跡可循,測試路徑就非常的清晰明朗。
Ⅵ 大數據測試需要學什麼
首先是基礎階段。這一階段包括:關系型資料庫原理、操作系統原理及應用。在掌握了這些基礎知識後,會安排這些基礎課程的進階課程,即:數據結構與演算法、MYSQL資料庫應用及開發、SHELL腳本編程。在掌握了這些內容之後,大數據基礎學習階段才算是完成了。
接下來是大數據專業學習的第二階段:大數據理論及核心技術。第二階段也被分為了基礎和進階兩部分,先理解基礎知識,再進一步對知識內容做深入的了解和實踐。基礎部分包括:布式存儲技術原理與應用、分布式計算技術、HADOOP集群搭建、運維;進階內容包括:HDFS高可靠、ZOOKEEPER、CDH、Shuffle、HADOOP源碼分析、HIVE、HBASE、Mongodb、HADOOP項目實戰。
完成了這部分內容的學習,學員們就已經掌握了大數據專業大部分的知識,並具有了一定的項目經驗。但為了學員們在大數據專業有更好的發展,所學知識能更廣泛地應用到大數據相關的各個崗位,有個更長遠的發展前景。
第三階段叫做數據分析挖掘及海量數據高級處理技術。基礎部分有:PYTHON語言、機器學習演算法、FLUME+KAFKA;進階部分有:機器學習演算法庫應用、實時分析計算框架、SPARK技術、PYTHON高級語言應用、分布式爬蟲與反爬蟲技術、實時分析項目實戰、機器學習演算法項目實戰。
Ⅶ 資料庫如何做測試
查詢輸入:
(1)分別對單條件進行精確查詢
(2)輸入長度的檢驗,輸入允許的最長值進行查詢,是否支持
(3)兩個查詢條件是否為2選1,來回選擇是否出現頁面錯誤
(4)輸入字元
(5)輸入特殊字元
(6)輸入數字
(7)輸入漢字
(8)輸入關系表達式與、或、異或、非、等於
(9)輸入空格
(10)條件中含有空格
(11)輸入超長字元
(12)輸入全形字元
(13)輸入單引號
(14)輸入單引號引起來的數據
(15)輸入雙引號
(16)輸入雙引號引起來的數據
(17)如果支持模糊查詢,輸入部分查詢條件
(18)輸入系統中不存在與之匹配的條件
查詢結果檢查
(1)查詢結果按什麼順利排序
(2)查詢結果是否根據欄位顯示排序功能
(3)查詢結果是否有分頁,如果有,每頁最多包含多少記錄
(4)查詢結果是否匹配
(5)查詢結果是否與資料庫一致
(6)查詢結果是精確查詢還是模糊查詢
UI驗證
(1)文字顯示是否正確
(2)頁面是否有錯別字
(3)輸入框大小、文字大小是否合適
(4)頁面是否美觀
(5)查詢結果欄位顯示是否與需求一致
性能方面
(1)查詢處理時間是否能接受
(2)資料庫中存在大數據量數據時,查詢時間是否能接受
(3)當多個用戶同時查詢時,輸入相同或不同的查詢條件系統響應是否及時...