大數據項目測試<二>項目的測試工作
大數據的測試工作:
1、模塊的單獨測試
2、模塊間的聯調測試
3、系統的性能測試:內存泄露、磁盤占用、計算效率
4、數據驗證(核心)
下面對各個模塊的測試工作進行單獨講解。
0. 功能測試
1. 性能測試
2. 自動化測試
3. 文檔評審
4. 腳本開發
一、後臺數據處理端
後端的測試重點,主要集中在數據的采集處理、標簽計算效率、異常數據排查(功能),測試腳本編寫(HiveQL)、自動化腳本編寫(造數據、數據字段檢查等)
1.數據的采集處理(Extract-Transform-Load)
ETL:即將數據從源系統加載到數據倉庫的過程。源系統包括:數據文件(excel、log等)、RDD數據庫、非RDD數據庫等;
extract:從源系統提取需求數據。
transform:清洗數據(數據格式轉化、異常數據處理等)。
Load:將清洗的數據加載至數據倉庫。
ETL測試:即確保根據需求將源系統的數據經過處理後加載到目標的數據是準確的。即源和目的數據之間轉化過程中的數據驗證。
測試類型
測試場景
券商等金融機構,其用戶每天都會產生大量的交易數據,這部分數據最初都會存儲在客戶的關系型數據庫中(oracle),因此後臺每天需要先進行數據采集,將數據采集至Hadoop的hdfs系統;數據采集過後,需要對源數據進行一次數據清洗工作:過濾異常數據(NULL)、篩掉關聯性較高的數據。
2.標簽計算效率
根據標簽文檔編寫hiveSQL、MR等標簽計算代碼,針對hiveSQL,不同的開發人員編寫的sql質量不同,執行的效率也不相同;此部分不僅需要開發人員具備基本的復雜sql編寫功底,也需要開發人員掌握一定的sql性能調優能力;在數據,服務器配置一定的情況下,效率的提升來源於對sql的優化;
由於hivesql的計算(都會轉化成一個MR),需要大量的讀寫數據到磁盤的操作,因此計算效率較低;
impala則是將數據push到內存中,然後從內存中讀取數據,效率有大幅提升,但是耗費了較高的服務器內存,成本較高;
Spark :內存計算引擎,提供Cache機制來支持需要反復叠代計算或者多次數據共享,減少數據讀取的IO開銷;
3.異常數據排查
異常值:分為兩類:null,計算錯誤的值。 (1)Null值(標簽下的數據均為NULL),首先 需求排查是否是數據的影響(例如 依賴數據缺失)。其次排查依賴數據的因素後,就需要排查是否是hiveSQL編寫的問題和MR代碼問題。(2)標簽計算錯誤: 通過手工根據標簽公式計算標簽的值和通過hive計算得出的值進行對比,如果不一致,則需要排查是否是hivesql沒有對標簽公式進行精確實現。計算錯誤的值可以分為兩類:1.明顯錯誤(可以通過sql篩選出來的異常值,針對存在閾值的標簽,比如股票倉位:倉位不得>1,如果出現>1的數據,則可以斷定此標簽計算有問題);2.非明顯錯誤(此部分無法篩選出來,必須通過計算才能驗證)
由於此部分計算好的數據需要導入到中臺進行進一步運用,所以此部分的數據準確性有至關重要的作用。(測試人員需要對業務十分了解)
二、中臺管理端
中臺產品一般以web服務呈現。測試內容除了與普通的Java web項目相同,還要測試後臺數據Export中臺的過程中,數據類型、準確性、完整性、性能進行測試。
就目前的項目而言:測試計劃的內容包括:需求文檔測試、後臺導出表的測試(表字段類型、數據完整性、浮點型數據精度、導出性能等)、中臺接口測試(自動化)、前端UI頁面測試、性能測試、安全測試、兼容性測試。
需求文檔:需求點梳理、整理測試點、編寫測試用例
數據連表導出:後臺數據和中臺數據的類型、精度要保持一致(中臺數據庫為MySQL,數據類型可能和後臺的數據類型定義不一致,要確保數據類型轉化的正確性);
中臺接口測試:此部分可以進行接口自動化測試。
UI頁面測試:根據需求文檔、UI設計圖編寫測試用例
性能測試:中臺接口的壓測、中臺服務緩存數據占服務器的內存空間測試
安全測試:根據公司安全測試手冊進行測試(安全漏洞掃描)
兼容性測試:IE10
三、前端應用端
主要是app端的測試工作:一般的app測試工作,數據的核對(類型、精度等)
四、結尾
可以看出來,整個項目始終包含數據的驗證工作。
附錄:
異常值檢查: https://www.cnblogs.com/xiaohuahua108/p/6237906.html
spark 優勢: https://www.zhihu.com/question/31930662
接口測試: https://www.cnblogs.com/iloverain/p/9429116.html
大數據項目測試<二>項目的測試工作