天天看點

為測試執行立法——淺談軟體測試設計

  一、分析測試需求

  開發設計類需求。

  主要包括産品包需求、設計需求、設計規格、産品的軟硬體架構等等。事實上,開發設計類需求僅僅是客戶需求在開發層面上的一個映像,并非客戶需求的本像,是以在收集到這些需求的同時,不僅要關心開發設計類需求文檔本身,更應該關注其隐藏的客戶實際需求,将其分析透徹,保證測試設計是貼近客戶而不是貼近開發,展現端到端的測試設計理念。

  比如使用者需要做一個煙囪,但開發人員把圖紙拿反了,設計成了挖口井。如果測試設計貼近開發的話,那是絕對發現不了這個巨大的錯誤;如果直接看到的是使用者的需求,就能很容易就能找到這其中的陰差陽錯。當然,這僅是一個例子,但是在現實中,開發出來的特性不能滿足使用者需求而被迫返工的事實是存在的,是以在建立測試之法的時候,我們必須要求收集到的動議是最原始需求的反映。

  使用者應用類需求

  這主要包括一些重要的使用者實際組網等等,這些都是直接來源于使用者的内容,是以可以直接納入到我們的測試設計中來。

  經驗類需求

  在測試立法的過程中需要将以往的經驗固化到文檔上形成固定的典型組網、典型應用、典型場景等等。

  值得注意的是,經驗并不是因循守舊,而應該根據目前技術的發展推陳出新,不斷更新再不斷固化。比如,早期大家對于stp的了解還停留在stp/rstp,當時的組網不能滿足後續mstp測試的需求,這就需要在原有組網的基礎上設計出新的組網,形成新的經驗。

  對這三類測試需求分析清楚了,産品“需要測試什麼”基本就非常清晰了。接下來,則要根據需求分析分門别類地進行詳細設計,也就是要解決“如何測試”的問題,啟動真正的設計立法工作。

  二、設計測試方案/測試點/測試用例

  經過前期的測試需求收集和分析,我們會根據測試對象和範圍的不同,把測試設計工作分成三類:特性測試設計、組合測試設計、應用測試設計。特性測試設計主要是針對單個特性進行的設計;組合測試設計主要是将多個相關特性組合起來進行的設計;應用測試設計是根據使用者應用而來的專項設計。需要指出的是,實際上組合測試設計和應用測試設計很類似,後者是針對特定使用者環境的組合測試設計,也就是說應用測試設計是更加貼近使用者實際應用的組合測試設計,無需根據自己的經驗再去優化組網,最好按照某使用者環境進行1:1的設計。

  測試方案

  測試方案是對測試活動的總體分析和規劃,除了要進行測試對象分析以外,每一個測試方案中都應該包括網絡拓撲、網絡配置、流量模型。

  特性測試方案是最基礎的一類,主要用于描述某個單一特性的測試方法和過程。由于特性測試方案主要用于産品功能尚未穩定的測試活動,覆寫産品開發早期階段,那麼勢必、存在實際産品物料缺乏的問題,是以在設計特性測試方案時,一定要采用盡可能簡單的網絡拓撲,避免設計過于複雜;相應的,産品開發早期版本仍然處于功能驗證階段,是以特性測試方案的網絡配置應該以被測特性為核心進行配置,避免過多過複雜組合;而流量模型應該采用輕載連續流量比較合适。

 組合/應用測試方案一般用于産品相對穩定的階段,根據組合/應用的需要,可以按需設計網絡拓撲和網絡配置。有一點需要指出的是,在組合測試方案中一般都願意采用重載持續流量模型,而在應用類測試方案設計時,需要驗證使用者組網,是以流量模型也需要考慮符合使用者的實際情況,因為重載持續流量模型并不是在所有的使用者組網中都能奏效的,有時候在某些特定的使用者分布式網絡中,輕載疊加突發流量模型也會出現問題。

  測試點/用例

  測試方案隻是對于需要測試的對象進行了整體的分析和分解,接下來則 需要對分析和分解出來的内容進行歸納和整理,這樣就形成了測試點。測試點就是測試設計的綱,它是整個設計的靈魂所在。好的測試點應該是測試對象的歸納,測試點安排的順序是對測試對象剖析的過程,測試點粒度(即測試點包含内容的多少)的選擇是對能力基線的嚴格把握。

  由于測試設計人員的思想是千差萬别的,是以為了能夠得到更加一緻的測試點設計,我們采用了測試類型分析法明确了測試點檔案的結構,每一個測試點檔案中主要包括:配置測試、功能測試、協定一緻性測試、性能規格測試、壓力測試、異常測試、互操作測試等。而測試點的粒度确實很難統一,是以我們一般按照10個/人天的測試執行效率進行估計和設計,這就需要有豐富測試執行經驗。

  但是,一個測試點無法較長的描述出具體操作的步驟,這便需要測試用例。測試用例設計就是一個将測試點細化到可執行步驟地過程,每一個測試用例都是由執行——〉驗證的不停往複。在用例的設計中我們有一些常用的工程方法:邊界值法、等價類劃分、錯誤猜測等等。這些無非是擴充我們設計的思路,讓測試設計的肉體更加豐滿。

  三、培養設計人員

  在測試全流程中,真正執行者都是有血有肉的個體,而這些人所擁有的經驗就是流程的活力。是以要充分發揮測試設計流程的活力,就應該讓擁有豐富經驗、技術級别高的人來主導測試設計的工作。

  在h3c的測試體系中,主要有助理測試工程師、測試工程師、測試專家、資深測試專家等。對于一般的測試設計工作,具有良好測試實踐的人員(測試工程師)基本可以勝任;而複雜的跨領域的組網測試設計,除了需要測試實踐以外,還需要掌握廣泛的資料通信技術知識,這就要求測試專家承擔該工作;而資深測試專家則要承擔各類更加複雜的疑難雜症的測試設計工作(如黑客攻擊測試設計)。

  為了适應不同層次的測試設計活動,需要相應的培養不同技術等級的測試人員梯隊,盡量物盡其用,高技術等級的從事複雜的設計活動,低技術等級的從事簡單的設計活動,不具備設計資質的人員則不能參加設計活動。

  四、測試設計維護

  實踐是檢驗真理的唯一标準,測試執行是檢驗測試設計正确性的最佳手段。測試人員需要将将實踐中發現的設計問題,通過跟蹤流程回報到設計團隊中,使得前期設計的缺陷漏洞得以修複和完備,這樣就會形成一個良性的循環。h3c問題單跟蹤流程就提供了一個很好的修複機制,不僅從端到端保證設計修改的正确性,而且中間設定的稽核環節保證了修改的品質。

  五、結束語

  測試設計是一個充滿創造力的活動,無論是前期的需求分析,還是分析的落實,或是後期對于設計的不斷完善。要建立起自己的測試之法,就必須将所有測試設計的活動貫穿到整個測試活動中去,測試執行中展現測試設計的精髓,測試設計吸收測試執行的智慧結晶。

====================================分割線================================

最新内容請見作者的github頁:http://qaseven.github.io/

繼續閱讀