眾所周知,近10年IT領域有兩個關鍵的風向轉變,傳統IT向云計算轉變,傳統瀑布和迭代開發模式向敏捷開發模式轉變。這兩個轉變促成了DevOps產品交付模式的出現。互聯網行業競爭激烈,許多公司專注于產品和商業模式的快速迭代創新,期望通過DevOps快速交付產品,縮短產品的上市周期。
華為DevOps模式下的軟體測驗體系的分享主要由 “測驗物件的識別、測驗組織與流程的演變、測驗工具與技術的應用、測驗管理和自動化測驗”四個領域的關鍵內容組成。華為云近期推出了7天玩轉性能&介面測驗系列課程,添加小助手微信(devcloud9)即可免費參與學習。
一、測驗物件的識別
軟體測驗首先需要關注測驗物件,不同種類的測驗物件的測驗策略和測驗技識訓有顯著區別。測驗物件即有傳統的Web服務、移動APP,也有新興的微服務和IoT設備。

1. 移動APP
Android和iOS手機客戶端依然是互聯網toC創業的首選產品模式。移動App可以分為Web App、混合App和本地App三種模式,2016年以React Native為代表的技術又帶火了移動跨平臺開發。跨平臺開發可以幫助開發者復用大部分代碼,但依然無法解決讓開發者頭疼的Android系統碎片化問題。移動兼容性測驗仍然是針對Android機型碎片化的主要測驗手段。
2. Web服務
B/S結構的Web服務依然是很典型的IT產品交付形式,尤其是面向企業客戶的產品。同時很多遺留IT系統仍然使用SOA的架構方式。對新系統而言,前后端分離是B/S結構的標配。后端無論采用什么語言和框架,和前端的介面基本都是RESTful化的,甚至一些框架可以幫助生成Swagger標準的介面描述檔案。MVC和MVVM模式的普及使得前端架構模式化,最重要完成了分層化,配合Jasmine等JavaScript單元測驗框架,讓前端代碼質量不再是焦油坑。
3. 微服務
微服務架構被普遍認為是一種比分布式單體架構更優的架構模式,可以降低服務耦合度,減輕服務器資源浪費,提升交付和運維效率。微服務之間采用API的呼叫方式降低了服務的耦合度,微服務框架如Spring Boot對Swagger的內置支持也提高了微服務RESTful介面的標準化水平,這些都提升了服務的可測性。
微服務數量多,每個微服務職能獨立,每個微服務使用獨立流水線作快速交付,測驗模式和傳統單體大服務架構有顯著區別,需要的不是一個大而全的測驗工具,而是小而精、快的敏捷自動化測驗工具。
4. 物聯網設備
物聯網市場發展迅速,特別是智能家居、車聯網、可穿戴設備、智慧工廠等領域。共享單車最近非常火熱,其車鎖和定位裝置就是典型的物聯網終端。物聯網終端內置實時嵌入式系統,收集傳感器資料做邊緣計算,并通過Wi-Fi、4G、NB-IoT等接入方式連接手機設備或者云端服務。物聯網設備運行環境苛刻,并且會涉及個人隱私資料甚至生命安全、工廠和基礎設施的安全運行等,因此防黑客侵入的安全測驗和防意外事故的遍歷測驗和壓力測驗等對物聯網產品至關重要。
想了解更多測驗知識,請參與華為云近期推出的7天玩轉性能&介面測驗系列課程,添加小助手微信(devcloud9)即可免費參與學習。
二、測驗組織和流程的演變
公司的業務決定了公司的組織和流程。根據康威定律,開發團隊的組織結構決定了產品架構。互聯網公司專注于創造市場需要客戶滿意的產品,同時需要根據市場和政策環境及時調整產品競爭策略。產品的發布周期越來越短,產品需求頻繁發生變更,產品架構頻繁發生重構。這些都對測驗活動和產品質量保證提出了巨大挑戰。以上挑戰決定了DevOps模式的測驗組織和流程明顯區別于傳統敏捷模式:
1. 測驗活動的質量目標發生變化
測驗活動的質量目標由單純驗證產品功能需求、非功能需求擴展為保證客戶滿意和產品的業務可續。測驗團隊會站在用戶的角度考察產品的易用性和可用性,同時會監控生產環境的PV、UV、峰值吞吐量等關鍵指標,并納入測驗場景設計。
2. DevOps的倍訓敏捷模式
敏捷不僅僅體現在開發和測驗活動中,業務面也使用敏捷的流程,形成倍訓的敏捷。DevOps會向前連接市場團隊和產品經理,向后連接客服團隊,形成Market-Product-Develop-Operation-Customer的倍訓敏捷價值鏈。產品資訊的透明快速流動對敏捷的成功至關重要。測驗人員會和產品經理同時獲得到來自市場的產品反饋,這些反饋會變成測驗需求融入測驗活動。
3. QA和開發的角色融合
在兩個披薩原則的團隊中,全堆疊程式員端到端地負責產品的開發、測驗和運維,承擔了QA和運維人員的角色。極客風格的全堆疊程式員傾向于使用自動化的測驗框架。自動化測驗可以覆寫的越來越多,解放出來的手工測驗人員會向開發轉型。
4. 自動化的持續集成
持續集成的自動化程度越來越高,每個公司的實踐會有不同,借助Jenkins等CI工具可以實作從代碼提交到自動單元測驗再到構建打包的持續集成,甚至和自動化部署、自動化測驗打通。在持續集成鏈條上,自動化測驗將覆寫開發環境、測驗環境、類生產環境和生成環境上的測驗。
5. 測驗左移
產品經理使用業務語言描述產品需求,開發人員使用程式語言完成開發,雙方對需求的理解有時會產生偏差。BDD的方式可以幫助開發人員和產品經理對需求達成一致的理解,配合TDD的開發方式可以保證開發結果滿足需求預期。
想了解更多測驗知識,請參與華為云近期推出的7天玩轉性能&介面測驗系列課程,添加小助手微信(devcloud9)即可免費參與學習。
三、測驗技術的應用
產品架構的分層模型決定了測驗金字塔依然有效。通過單元測驗、服務和API測驗、性能測驗、前端測驗、移動App測驗的組合可以覆寫B/S架構和云服務+移動客戶端形式產品的測驗。DevOps模式下測驗自動化水平高,通過集成流水線完成和CI/CD打通的持續測驗。一些技術發展為自動化測驗的效率和質量提升提供了利器。
1. Selenium
Selenium已經成為前端自動化測驗的事實標準,主流瀏覽器都提供對Web Driver的支持,Page Object的設計模式可以實作模塊化的測驗,Selenium也支持對多瀏覽器的并發測驗。Web Driver協議已經提交到W3C做標準化作業,未來將成為前端自動化測驗的行業標準。
但是現在Selenium還有一些缺點,例如使用Selenium需要一定的編程能力,因此就限定了使用人員角色,不熟悉編程的產品經理和驗收測驗人員只能手工做驗收測驗。另外如果前端頁面頻繁變動,頁面變動之后就得修改測驗腳本,這種情況腳本維護成本大。
事實上沒有一種測驗型別是能夠100%勝任產品測驗的,前端自動化測驗更適合針對相對穩定的頁面做回歸測驗和冒煙測驗,對覆寫不到的可以通過API級別測驗或者手工測驗來補充覆寫。
2. 容器化
Docker為代表的容器生態系統發展迅速,容器集群管理系統Docker Swarm和Kubernetes可以幫助統一部署、管理、維護Docker集群。Jenkins等CI工具也提供了對Docker的支持。由于Docker可以方便地將運行時環境連同應用一并打包到鏡像中,因此可以快速創建和復制標準化的測驗環境,并且保持測驗環境和開發環境一致性。
3. Swagger
Swagger 作為設計、構建和檔案化RESTful API的工具,其OpenAPI標準已經成為事實上的RESTful API定義標準。在Swagger Editor中,基于YAML語法定義RESTful API就可以自動生成API描述檔案。一些框架如Spring Boot也提供了對Swagger的原生支持。Swagger描述檔案可以作為前后端分離開發中的介面“契約”。測驗人員可以把Swagger描述檔案當作介面需求開發API測驗。
4. 資源編排和自動部署工具
測驗環境管理分兩個層面,一個是環境的標準化,另外一個是環境管理的自動化。產品從開發到上線一般經過開發環境、測驗環境、類生產環境、生產環境。每一個環境的差異都可能產生未知問題。手工搭建和管理測驗環境費時并且易出錯,測驗人員需要求助于開發人員獲取必要的作業系統資訊、環境變數、資料庫和中間件版本資訊、配置腳本和安裝步驟等才能順利地搭建起一套測驗環境。在環境統一這一層面,環境編排器可以幫助統一定義各種環境,保持標準化、可配置和易維護。在環境管理自動化這一層面,可以通過一些自動化管理工具完成批量系統設定,批量程式部署,批量運行命令等。華為云軟體開發服務(DevCloud)的部署服務就為用戶提供了基于Ansible的虛機和容器部署能力。
5. 云化的壓力測驗和移動APP測驗
壓力測驗作為非功能性測驗的重要一環,在傳統模式下主要考量的是應用服務器與資料庫的最大承載能力,在云環境下增加了對云主機彈性伸縮的能力測算。移動APP測驗主要解決的是碎片化終端下的功能、性能及兼容性覆寫測驗,主要考量的是覆寫的機型范圍及如何高效自動化完成整體測驗,形成全面的分析報告。
想了解更多測驗知識,請參與華為云近期推出的7天玩轉性能&介面測驗系列課程,添加小助手微信(devcloud9)即可免費參與學習。
四、測驗管理和自動化測驗
測驗用例的管理是所有測驗的基礎,在測驗的不同階段(如回歸測驗、冒煙測驗)都需要圍繞測驗用例進行校驗,通過“需求-任務-用例-缺陷追溯”各環節的迭代來確保需求的測驗覆寫率,并提供測驗驗收報告。自動化測驗幫助大幅提升測驗效率、穩定性和反饋速度。
華為云軟體開發服務(DevCloud)云測和移動應用測驗提供一站式云端測驗平臺,覆寫測驗管理、性能測驗、介面測驗、移動應用兼容性測驗,簡單、專業、高效,助力軟體研發全生命周期的持續自動化測驗保障。

看到上面這些內容,你對測驗領域是否有了更多認識?想更深入地掌握測驗技能,可以關注這里哦!
華為云DevCloud近期推出了7天實戰營系列課程:7天玩轉性能&介面測驗。課程精編了7天精品視頻,涵蓋介面測驗&性能測驗兩大領域;同時課程專家駐群答疑,實作7天跟蹤式教學,幫助學員排除學習障礙;課程實作了理論與實踐相結合,對學員的知識與能力共同進行提升。
目前活動正在招募期,了解活動詳情:7天玩轉性能&介面測驗。添加小助手微信(微信號:devcloud9)即可免費參與學習。
uj5u.com熱心網友回復:
說得很好!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!uj5u.com熱心網友回復:
感謝分享,學習使用。uj5u.com熱心網友回復:
微服務框架結構下,介面測驗可以更加高效,且可大規模自動化uj5u.com熱心網友回復:
感謝分享,學習使用。uj5u.com熱心網友回復:
感謝分享,學習使用。uj5u.com熱心網友回復:
123456789123uj5u.com熱心網友回復:
感謝分享感謝分享,。uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
了解了感謝分享uj5u.com熱心網友回復:
感謝分享,剛好接觸到這一塊uj5u.com熱心網友回復:
感謝樓主分享
uj5u.com熱心網友回復:
了解了感謝分享uj5u.com熱心網友回復:
MongDB篇什么是MongoDB?
MongoDB是由哪種語言寫的?
MongoDB的優勢有哪些?
什么是資料庫?
什么是集合?
什么是檔案?
MongoDB和關系型資料庫術語對比圖
什么是“mongod”?
“mongod”引數有什么?
什么是“mongo”?
MongoDB哪個命令可以切換資料庫?
什么是非關系型資料庫?
uj5u.com熱心網友回復:
說得很好!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!uj5u.com熱心網友回復:
每天回帖即可獲得10分可用分!小技巧:教您如何更快獲得可用分 你還可以輸入9956個字符uj5u.com熱心網友回復:
評論一下看有沒有積分uj5u.com熱心網友回復:
每天回帖即可獲得10分可用分!小技巧:教您如何更快獲得可用分 你還可以輸入9956個字符uj5u.com熱心網友回復:
MongDB篇什么是MongoDB?
MongoDB是由哪種語言寫的?
MongoDB的優勢有哪些?
什么是資料庫?
什么是集合?
什么是檔案?
MongoDB和關系型資料庫術語對比圖
什么是“mongod”?
“mongod”引數有什么?
什么是“mongo”?
MongoDB哪個命令可以切換資料庫?
什么是非關系型資料庫?
uj5u.com熱心網友回復:
帖即可獲得10分可用分!小技巧:教您如何更快獲得可用分 你還可以輸入uj5u.com熱心網友回復:
感謝樓主的分享uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
感謝大神的分享。受教了。。uj5u.com熱心網友回復:
uj5u.com熱心網友回復:
感謝感謝樓主的分享,不錯的資料uj5u.com熱心網友回復:
感謝分享,學習uj5u.com熱心網友回復:
感謝分享,學習使用。uj5u.com熱心網友回復:
可以個咯啦咯啦uj5u.com熱心網友回復:
test 你好uj5u.com熱心網友回復:
要好好的學學,一時半會兒掌握不了uj5u.com熱心網友回復:
支持啊,說得好啊!uj5u.com熱心網友回復:
不錯不錯,好好學習uj5u.com熱心網友回復:
多謝分享啊,好用好用uj5u.com熱心網友回復:
感謝分享,學習使用轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/9458.html
標籤:華為云計算
上一篇:求解:SageMaker Studio 沒有實驗按鈕如何求解?
下一篇:enap網路連通性問題求解!為什么pc機之間不能相互ping通,ip地址有了,設備能夠正常運行,也開啟設備了!求解
