如何保證軟體質量
用體溫計量體溫不能治病,它只能證明一個人生了病;同樣地,對軟體的測試,並不能提高軟體質量,它只能證明程式碼中存在缺陷。
1. 軟體測試危機
1.1 國內軟體測試的困境
目前的軟體開發環境中,最在乎軟體質量的是使用者、專案經理,最應該在乎軟體質量的軟體測試人員並不關心軟體本身的質量,他們只想找bug。
早期的軟體開發過程中,軟體的質量僅僅只是靠編碼後的測試來驗證,誰能真正提高軟體的質量呢,其實是開發人員,因此那時候軟體開發人員的薪水要比測試人員高很多。
後來,大多數軟體開發團隊意識到,只有提高整體的軟體開發效率,才能激烈的競爭中佔有優勢。這一時期有兩個明顯的特徵:軟體測試的週期越來越短,因為在交付的壓力下,不再有以前那樣充足的測試時間;軟體測試人員的工作貫穿整個軟體開發的週期。軟體開發的W模型很好地詮釋了這一時期的軟體測試工作特徵,軟體測試有了專門的團隊,測試人員的地位相比於過去有了明顯的提高。
再後來軟體開發的流程演變成螺旋模型,摒棄了W模型的長週期,追求增量開發,隨著一輪又一輪的編碼和測試,軟體開發處於一種不斷迭代的過程中。現在流行的敏捷開發模型,本質上還是螺旋模型。
即使是螺旋模型,測試人員始終還是從事著質量控制(Quality Control)的工作,不斷手段多麼花哨,介面測試,自動化測試,效能測試,安全測試,各種先進的測試工具,本質上和手工點點點找bug並沒有什麼不同。在軟體的開發過程中,測試人員依然是很被動,被動體現在不能主動提高軟體的質量。
1.2 軟體測試人員的危機
軟體測試人員將會分層,有管理能力熟悉測試流程的順利成章地成為測試過程的管理者,程式碼能力強的演變為測試工具的開發者(為專案定製的自動化黑盒測試工具,為專案定製的效能測試工具等等),程式碼能力差的就只能從事點點點的黑盒測試。
黑盒測試崗位門檻較低,可替代性強。在不遠的將來,黑盒測試人員不是被測試開發人員取代,就是被測試工具開發人員開發的測試工具取代。值得一提的是:當黑盒測試被取代之後,測試過程管理者也會有失業的風險,他們必須要轉型為測試架構師才能適應潮流,才不會被後浪拍死在沙灘上。
2. 解決危機
2.1 引入軟體質量保證
絕大多數公司招聘測試人員,更多地是:想通過他們的測試工作,去發現軟體中存在的問題,修復缺陷,從而提高軟體的質量。很明顯,這是一種頭痛醫腳的行為,提高軟體的質量難道不是更應該去直接提高程式碼質量嗎?
對於測試人員來講,解決軟體測試危機的辦法就是專注於提高整個開發過程的質量,也就是說,成為軟體開發專案的質量保證人員(Quality Assurance)。測試人員更多的是需要在整個軟體開發的過程中,通過制定標準,監督執行,保證每一個環節的質量,從而提高整個軟體開發過程的質量。這其實是一整套解決方案,當你的過程有了標準化的、成熟的解決方案之後,軟體的質量一定是過硬的。
2.2 質量保證的思路
對於螺旋模型而言,最基本的單元就是:
需求分析->詳細設計->編碼->整合->測試->驗收
那麼每一個過程都應該有對應的工作過程及體現工作過程的文件,質量保障人員就可以根據以往成功的經驗,制定合理的質量標準體系來指導和優化工作過程,同時也在實踐中優化質量體系。
3. 如何保證軟體質量
如何保證軟體質量這個問題很寬泛,應該保證以下幾個方面的質量,那麼軟體的質量將得到保證。
3.1 需求文件質量
- 需求描述詳盡:無缺漏,無歧義,無重複,沒有無法實現的,沒有巨大風險
- 需求指標明確:前提條件明確,資料指標精確。
3.2 設計文件質量
- 欄位定義明確:欄位沒有混淆,資料來源和走向清晰
- 邏輯清晰通暢:軟體操作不會進入死衚衕,使用者使用場景考慮全面
- 互動簡單易懂 :每個按鈕點選前是怎樣,點選後會有什麼變化
- 提供豐富的輔助文件:Visio流程圖,Xmind思維導圖,Axure互動原型設計文件等
3.3 程式碼質量
- 優質的框架設計:根據專案的實際情況選擇合適的技術棧,底層設計容錯性高、健壯性好、可擴充套件性好,前端相容性好、效能好
- 編碼規範:參考阿里巴巴的java編碼規範制定
- 程式碼走查:開發人員自己或者結對進行程式碼走查,考慮邏輯是否完備,資料處理是否到位,場景是否缺漏,演算法效能是否最優
- 程式碼評審:評價程式碼是否還有改進的空間等
- 單元測試:開發人員自行編寫單元測試,測試函式方法是否滿足要求,隨著程式碼版本的迭代,能否保持原來的功能
3.4 測試質量
3.4.1 測試策略
後端測試:介面測試,壓力測試,部署測試,安全測試
前端測試:UI測試,效能測試,相容性測試,安全測試
3.4.2 測試方法的質量
- 設計合理的測試方法
- 測試方法的評審
- 改進優化測試方法
3.4.3 測試用例質量
- 良好的用例設計方法:等價類劃分、因果圖法、場景分析法、正交分析法、路徑覆蓋、邏輯覆蓋、語句覆蓋
- 用例評審:保證測試的廣度(介面、介面、資料庫、日誌)和深度(測試要點的精細程度)
- 測試用例維護:測試過程中補全缺漏的和思路有問題的用例,記錄線上故障並新增到測試用例中
3.4.4 缺陷質量
- 缺陷分級:一般四級分類法,
- 缺陷記錄:bug管理系統,bug的生命週期理論
- 缺陷反思:bug評審,開發避免類似錯誤,測試在設計測試用例的時候考慮類似情景
3.5 部署質量
不是說保證了設計、開發、測試質量之後,產品上線後質量一定好。因為部署上線還有一整套流程,部署流程的質量,直接決定了產品的上線質量。
部署環境:硬體環境和軟體環境,是否滿足功能和效能要求
部署時機:選擇對使用者影響最小的時機,一般遊戲更新選在午夜。
部署引數:測試環境的引數和正式環境的引數往往是不同的,往往涉及到引數的調整。
自動化部署:流程化,自動化的部署將大大減少人為失誤。
3.6 風險控制
- 專案風險:需求變動,開發環境不能滿足,人員缺失,技術自身風險,安全風險
- 風險預測:根據專案實際情況和自身的軟體開發經驗,找到薄弱環節和不確定的環節,這些往往都是風險高發處
- 降低風險: 在可能發生風險的地方做好兩手,甚至多手打算
3.7 組織技術學習
從長遠來看,提升團隊的技術水平,也能夠提升軟體產品的質量
4.結論
保證軟體質量需要一整套的質量保證體系,搭建這樣的體系是QA的核心競爭力。QA人員在從業的道路上需要不斷地打磨自己的業務能力、技術能力、團隊合作能力,才能在激烈的市場競爭中立於不敗之地。
相關文章
- 方案:軟體質量保證
- 軟體質量保證(SQA)
- 軟體測試——軟體安全質量的保證
- 軟體專案管理的質量保證(轉)專案管理
- 軟體論文之論軟體質量保證及其應用
- 軟體專案質量保證:編碼規範
- 【軟體測試】質量保證與測試策略
- 敏捷軟體質量保證的方法與實踐敏捷
- 專案管理: 軟體質量的可靠保證(轉)專案管理
- 專案管理: 軟體質量的可靠保證2(轉)專案管理
- 專案管理: 軟體質量的可靠保證3(轉)專案管理
- 探究如何在質量保證過程中使用Zoho Projects專案管理軟體Project專案管理
- Go工程管理 18 | 質量保證:通過測試保證質量Go
- 軟體測試人員,如何保證緊急任務來臨時的任務質量
- SAP成都研究院姚瑤:軟體質量保證工作的變遷
- 質量控制和質量保證的區別
- 質量體系--最終檢驗和試驗的質量保證模式(轉載)模式
- 探究如何在專案管理中使用質量保證(QA)?專案管理
- IMVU如何在實施持續部署的同時確保軟體質量
- 程式設計師如何保證我們的程式碼質量程式設計師
- 軟體質量名言
- 【質量管理】福特全球質量改進流程,達成高品質的保證
- 軟體質量基本概念
- 軟體質量與公司盈利
- 軟體質量目標度量
- SAP成都研究院鄭曉霞:Shift Left Testing和軟體質量保證的一些思考
- Simulink模型指標分析與模型重構的最佳實踐 - 軟體模型質量保證重要環節模型指標
- 用“質量門”確保專案質量(轉)
- 如何提升團隊速率、保證產品質量和提升團隊積極性?
- 細說軟體質量屬性
- 軟體專案質量管理(轉)
- 軟體質量屬性真題
- 軟體質量管理與認證培訓班學習總結 (轉)
- Facebook如何提高軟體質量
- 安全能力 SDK 交付質量保證實踐 - 劉春勇
- 瞅瞅Facebook是怎麼保證CSS程式碼質量的CSS
- 自研小公司如何保證測試質量以及線上環境穩定思考
- 軟體測試學習教程—軟體測試質量