《A2--吳駿龍--如何讓質量與效能共生并成為朋友.pdf》由會員分享,可在線閱讀,更多相關《A2--吳駿龍--如何讓質量與效能共生并成為朋友.pdf(35頁珍藏版)》請在三個皮匠報告上搜索。
1、如何讓質量與效能共生并成為朋友 吳駿龍 前Wish中國測試總監 吳駿龍 大型互聯網公司質量負責人,騰訊云最具價值專家TVP,歷任Wish中國測試總監,阿里本地生活高級經理。畢業于中國科學技術大學,碩士學位。在軟件質量體系、服務容量保障、服務穩定性建設、軟件研發效能等領域深耕多年,善于通過創新手段解決質量、容量和效能難題,擁有多項國內外專利?;钴S的技術與管理布道者,多次受邀于業界各技術峰會發表演講和擔任出品人,傳播先進理念和方法論。極客時間容量保障核心技術與實戰專欄作者,暢銷書軟件研發效能提升之美作者,軟件研發效能實踐指南副主編,現代軟件測試技術之美作者,深入淺出全鏈路壓測作者 前Wish中國測
2、試總監 目錄 CONTENTS 質量與效能的困境 01 質量與效能的融合之法 02 以人為本是質效合一的根基 03 總結與展望 04 01 質量與效能的困境 從質量不可能三角說起 一致性(C)可用性(A)分區容錯性(P)質量 成本 效率 CAP 質量不可能三角(靜態)質效合一(動態)質量與效能發生沖突的根源 軟件工程各角色之間的沖突 盡可能多的交付需求 盡可能好的保障質量 盡可能讓系統穩定 質量與效能發生沖突的根源 計劃性思維 計劃式思維 正確識別用戶的需求 準確評估這些需求對組織的價值 準確估算實現需求所需的成本 理性判斷收益是否大于需求 制訂準確的計劃 毫無偏差地執行計劃 數錢 真相 即便
3、經過深思熟慮,超過半數的想法所產生的價值并不大,甚至為負 一個有效的需求,往往要經過多次錯誤才能演進出來 真相 計劃和時間表經常會發生變化 測試的時長受多種條件制約 依賴項和優先級的不確定性 計劃式思維 項目啟動時制訂完整的測試計劃和時間表 嚴格按照時間表執行測試計劃和相關工作 完美的交付高質量的軟件產品 質量與效能發生沖突的根源 計劃性思維 我們需要的是有彈性的、擁抱變化的質量管理策略,在恰當的時機做恰當的trade-off,達到全局最優的效果,而不是機械的計劃性流程。從DORA的數據解讀質量和效能的真相 流動聚類的關注點:松耦合架構:團隊可以在不依賴其他團隊的情況下對系統設計進行大規模更改
4、 提供靈活性:公司對員工工作安排的靈活性 版本控制:如何管理對應用程序代碼、系統配置、應用程序配置等的變更 持續集成(CI):將分支集成到主干中的頻率 持續交付(CD):專注于將變更安全、可持續和高效地投入生產的能力 2022 加速DevOps狀態報告 02 質量與效能的融合之法 探討不對組織做大規模變革的情況下的落地策略 貫穿全局的思維:局部最優全局最優 從端到端的視角看待整個研發和測試過程,避免顧此失彼 測試人員資源不足,機械的推動研發自測(瓶頸從測試轉移至研發)以犧牲質量為代價,縮短提測時間(增加了后期測試和bugfix時間)在每個環境都全量回歸,保障質量(增加了重復工作時長)千方百計的
5、前置 MRD PRD 技術方案 排期 接口定義 QA測試用例 Dev功能代碼 提測 測試 缺陷上報 研發修復 QA驗證 發布 線上驗證 前置的好處 減少依賴,加速反饋 測試前置,提升質量 自助回歸測試 自驗證 回歸/冒煙測試前置 可選 千方百計的前置 信息脫敏,請見諒 消除等待時間和重復工作 人們總是以為做得快才能趕上進度,卻忽視了等待時間和重復工作 撰寫PRD 設計技術方案 編碼 設計測試用例 測試 部署 交付驗收 撰寫PRD(1天)設計技術方案(1天)編碼(2天)設計測試用例(1天)測試(2天)部署(0.5天)交付驗收(0.5天)0.5天 0.2天 1.0天 1.2天 0.1天 提測質量差
6、 等待依賴服務部署 重復測試(0.7天)端到端的交付周期(10個工作日)處理時間:7.0天 等待時間:3.0天 重復時間:0.7天 可測試性也能左移 一個異常場景測試的案例 創建退款回退任務失敗,且補償 Job 第一輪執行也失敗,驗證第二輪執行是否能夠完成退款補償??蓽y試性也能左移 破壞com.xx.task.BackwardTask.refund方法,在調用前拋出Exception Command(inject)public void inject()new EventWatchBuilder(moduleEventWatcher).onClass(com.xx.task.BackwardT
7、ask).onBehavior(refund).onWatch(new AdviceListener()Override protected void before(Advice advice)throws Throwable ProcessController.throwsImmediately(new Exception(););可測試性也能左移 private static int count=0;Command(inject2)public void inject()new EventWatchBuilder(moduleEventWatcher).onClass(com.xx.job
8、.BackwardJob).onBehavior(compensate).onWatch(new AdviceListener()Override protected void before(Advice advice)throws Throwable if(count+=0)ProcessController.throwsImmediately(new Exception(););破壞com.xx.task.BackwardJpensate方法,在第二次調用前拋出Exception 如何判斷自動化測試的有效性?通過發現缺陷的數量?有效的自動化測試 機場安檢沒有檢測到違禁品,因此安檢是沒用的
9、自動化測試沒有檢測到缺陷,因此自動化測試是沒用的 有效的自動化測試 變異測試是一種基于錯誤的測試方式,通過在程序中預先埋入一些錯誤,觀察測試用例的表現來評估其有效性。拉起相應服務 形成兩個隔離環境(A和B)在環境A中構造變異體 基于JVM-sandbox 分別在環境A和B執行測試 變異體存活?補充或優化測試用例 Y N 回收環境 準備變異算子 變異應考慮成本,聚焦于常見的問題,或歷史風險 更多細節 03 以人為本是質效合一的根基 慢性子的工程師更細心嗎?測試時長 漏測數 不容忽視的溝通成本 為什么向進度落后的項目中增加人手,只會使進度更加落后?網絡通信傳輸 人類溝通 帶寬 語速和信息量 丟包
10、沒聽清楚 延遲 傳輸介質影響 協議轉換 不同語言 相關會議盡量聚集一處,如果必須遠程,優先采用視頻會議的模式,減少信息丟失 溝通交流中避免使用領域特定的術語,降低溝通理解成本 有重要需求或工作任務羅列時,優先使用郵件,避免信息丟失或錯傳 不容忽視的溝通成本 注釋是提升代碼信息量的最低成本手段 口口相傳-祖傳代碼,人走茶涼 外部文檔-多一次映射,維護成本高 接口契約-粒度太粗,信息量不足 int get_discount(void)return discount;/*返回折扣的比率(%),范圍為 0100 *該方法獲取的折扣僅僅是常規優惠折扣,外部活動還享有額外折扣*請勿將本方法的結果直接作為最
11、終折扣*/int get_discount(void)return discount;不容忽視的溝通成本 案例解讀:使用JApiDocs自動生成接口文檔/*用戶接口 */RequestMapping(api/user)Controller public class userInterface Autowired private UserService userService;/*查詢用戶 */GetMapping(list)public List getUserList(String age)return userService.findAll(age);工程師資產有情感的人 軟件開發是人的工
12、作,而從事軟件開發的是有情感的人 溫伯格 Graziotin D,Wang X,Abrahamsson P.Do feelings matter?On the correlation of affects and the self-assessed productivity in software engineeringJ.Journal of Software:Evolution and Process,2014,27(7):467-487.DOI:10.1002/smr.1673.積極情緒和生產力的相關度 尊重工程師的習慣比建立嚴格的制度更重要 開發人員的生產力畫像 重復性工作 短時工作 創造性工作(避免會議和其他打擾)圖片引用自工程效能十日談 04 總結與展望 質量和效能不是有你無我的關系,而是你中有我的關系 總結與展望 質量和效能的提升,并不一定要對組織做顛覆性變革 局部最優全局最優,是貫穿全局的思維 AI技術的發展,將加速質效合一的進程 以人為本是質效合一的根基 擴展閱讀 感謝聆聽 關注QECon公眾號