MeterSphere案例分享丨88完美郵箱全面提升產品質量的落地指南
2019年,全球領先的文化娛樂產業集團完美世界拿下了“一定是東半球最貴的”頂級域名www.88.com。2020年8月8號,歷時一年研發,88完美郵箱與大家正式見面。立足產品角度,這是完美世界正式進軍郵箱賽道的起點。對于88郵箱團隊來說,此舉邁出了從0到1的第一步。
不同于QQ郵箱和網易郵箱,88完美郵箱主打商務與協同辦公,提供團隊郵件快速創建(日報、周報、月報、任務和審批)、團隊通訊錄、團隊郵件組管理、88便簽、對接飛書會議、在線文檔,以及免費開放5GB容量網盤等高效協同的功能。
對于完美世界來說,郵箱業務的誕生與快速發展催生出一個全新的團隊,從0到1組建團隊,需要建立新的研發流程和規范。在這一過程中,測試如何發揮更大的價值是一個重要的課題,而測試實現左移和右移是關鍵目標和突破方向。
測試左移和測試右移模型
對軟件產品而言,傳統的質量模式通過測試左移和測試右移被賦予更多的內涵,也承擔起更多的職責。
圖1 測試左移和右移模式
■ 測試左移:測試左移,本質上是借助工具和測試手段更早地發現問題和預防問題。
- 需求:對需求、架構和設計模型的測試;
- 開發:著重增加對單元、組件和服務層的測試;
- 持續測試:自動化測試。
■ 測試右移:對測試同學來說,版本上線后需要持續關注線上監控和預警,及時發現問題并跟進解決,將影響范圍降到最低。
- 灰度發布:新版本線上測試;
- 監控:合理的性能監測、數據監控和預警機制;
- 用戶反饋:線上問題處理、跟蹤機制。
測試左移如何落地?
1. 測試任務跟蹤
測試任務跟蹤,不僅僅只是跟蹤測試本身的工作,還需要介入到需求、技術方案、編碼的全過程。只有前序每一步都跟蹤到位,才能盡量避免測試過程中的不可控因素,從而保證產品質量。
圖2 測試任務跟蹤流程
測試同學的任務其實是不好度量和跟蹤的,但是MeterSphere開源持續測試平臺為我們解決了這個痛點。測試計劃、測試用例、執行情況等都可以在MeterSphere平臺上直觀地看到,做到了“讓數據為質量說話”。
圖3 MeterSphere測試跟蹤界面
2. 建立代碼分支管理規范
開發同學在編碼過程中,經常會因為環境不夠用、或者代碼被覆蓋等問題而煩惱。對于敏捷開發模式的團隊,需求多、分支多是常態,怎樣讓開發測試有序地協同工作,規范分支管理流程是必要的。
圖4 代碼分支管理
3. Sonar代碼質量檢測
Sonar是可視化的代碼質量檢查平臺,支持的語言包括PHP、Java、Python、C#等,包含項目、問題、代碼規則、質量配置、質量閥和配置五個模塊。
圖5 Sonar代碼質量管理平臺
以下是項目執行情況的概覽,每個項目名稱代表一個項目,項目檢查的結果簡單呈現在項目首頁概覽中,包含Bug數量、漏洞數量、不規范、單元覆蓋率、代碼重復度等維度。
我們通常會將Sonar發現的問題以Bug的方式提交給開發團隊,要求致命、嚴重級別的Bug必須修改,并跟蹤解決進度。在實際的運用過程中,也會根據項目實際情況調整質量閥門,以避免誤報等情況出現。
圖6 項目執行情況概覽
4. 持續測試:基于Metersphere平臺實現接口自動化
接口測試提前接入,通過YApi管理接口文檔,開發同學在需求評審后即進入技術設計與接口設計階段,測試同學則根據接口文檔進行Mock測試。
圖7 接口測試界面
基于MeterSphere開源持續測試平臺,我們實現了測試工作的自動化。提測后自動化測試接口通過率,提前發現問題,有效提升測試效率。
圖8 為什么要做接口自動化?
MeterSphere持續測試平臺采用開源可擴展框架,實現了測試跟蹤、接口自動化、性能自動化的全覆蓋,特別適合創業團隊。從測試團隊的角度看,MeterSphere平臺既能切實地提升產品質量和測試效率,又解決了自研自動化框架人力不足的痛點。
同時,MeterSphere支持與Jenkins的集成,每次有新的代碼提交后,平臺自動觸發環境部署和接口自動化Job執行,并發送郵件通知,實現了主流程功能的回歸測試,提升測試效率。
圖9 MeterSphere開源持續測試平臺界面
測試右移如何落地?
1. 灰度發布
使用灰度發布方式,新版本上線后先更新部分服務器,測試人員先進行驗收通過后,再全量發布。這樣一來,盡可能地避免了測試和正式環境配置不一致、數據庫更新不及時等不確定因素引起的問題。
圖10 灰度發布流程
2. 服務監控
對于測試人員來說,服務上線后仍然需要關注服務的運行情況,以便在出現系統問題時能夠快速做出反應,將影響降至最低。在這一環節,我們引入了Zabbix系統檢測工具,實時監控系統硬件資源使用情況。同時設置報警通知,將異常情況第一時間通知給相關負責人。
Zabbix通過調用ODBC來獲取數據庫的數據,以及數據庫狀態等信息;通過IPMI Agent 監控硬件設備,例如Dell或者HP服務器的主板溫度、CPU電壓、蓋子是不是被打開等;通過JMX Agent監控Java JVM,例如Tomcat;通過追蹤模擬鼠標在Web網站上的點擊操作,來檢查Web網站的功能和響應時間。
圖11 Zabbix服務監控流程
3. 用戶反饋
“用戶就是上帝”。任何產品的成功與否,都取決于用戶。為此,我們建立了完善的用戶反饋處理機制:對于用戶反饋的問題,第一時間進行修復上線;針對用戶提出的建議,結合實際情況對產品進行打磨和優化。
專項測試
■ 安全
保證郵箱數據的安全性,是產品研發的一個重要環節。數據面臨的安全威脅來自于多個方面,如何有效地保護數據的保密性、完整性、可用性和真實性,郵箱團隊一直在不斷地升級和優化。這部分的工作主要涉及系統安全加固、數據庫加密、全鏈路傳輸加密、反作弊策略、反黑策略、反入侵策略、安全管理、反商業泄密等。
■ 性能
1. 接口層面
根據用戶量預期,制定系統性能要求,再構造數據借助JMeter對系統進行持續壓測,測試系統的極限處理能力,以及最佳處理能力。
同時,將部分主要流程性腳本通過MeterSphere開源持續測試平臺建立自動化性能測試任務,每次版本升級后自動執行穩定性測試,大大提升了測試效率,也能在早期發現問題并解決問題,進一步提升產品質量。
圖12 MeterSphere接口測試界面
2. Web頁面
從資源加載時間、頁面渲染、接口調用邏輯多方面分析Web頁面性能。這這方面,通過www.webpagetest.org工具,測試首頁資源加載、接口響應時長、頁面渲染時間等數據記錄頁面性能。
從不限于以下不同維度的測試數據分析頁面性能,并給出合理的改進措施:
- 多次測試取平均值
- 是否有緩存數據
- SSL握手時間
- 接口響應時間
- 接口調用合理性(并行、串行、重復請求)
- 資源優化
- 弱網
圖13 Web頁面測試結果
MeterSphere使用體會
對于創業者來說,時間少任務重是常態,反復地手工測試讓人精疲力竭,要著手去寫自動化代碼,又需要投入大量的人力,讓人應接不暇。我們團隊引入MeterSphere工具之后產生了非常好的效果。
現在來總結一下MeterSphere持續測試平臺的優點:
- 它規范了測試用例,測試計劃可追溯,任務執行情況一目了然,團隊合作變得高效;
- 接口測試上手成本低,將接口用例與部署平臺結合,每次有新代碼部署后,都自動執行自動化腳本,在保證質量的同時提升了效率;
- 性能測試提供圖形化可視界面,且保留歷史數據,方便追溯,性能結果一目了然;
- 開源!開源!開源!
MeterSphere項目還在持續不斷優化和改進,如果能增加以下些功能就更好啦:
- 增加UI自動化模塊;
- 增加性能測試數據的對比功能,方便穩定性測試數據的對比;
- 場景支持在接口中調用,方便用例的組合測試,減少寫重復接口。
對于測試團隊來說,保證產品質量,測試左移和測試右移都是非常重要的突破方向。我們也將在此基礎上不斷地完善和優化,全方位提升研發測試效能。