開篇
不知道大家有沒有一個感覺,就是在做測試的過程中,某些方法、術語、理論總感覺并不陌生,并且有些理論我們好像早就知道了,隻是沒有系統化而已。
那麼,有這種感覺其實是正常的。因為很多知識其實古人早就總結出來了,并且通過典故形成了成語,然後現如今被現代人應用到各個領域。
本文就結合我們熟知的成語來說一說測試過程過程中的一些知識點,我相信你一定會為感覺特别親切。
測試目的
測試的目的之一,就是使自己确信産品是能夠正常工作的。測試人員的基本素質之一就是具備懷疑一切的态度。
那麼,大家在日常生活中,對某個事物表示懷疑的時候,經常會說:耳聽為虛,眼見為實。在漢·劉向《說苑·政理》中,也有類似的說法:“夫耳聞之,不如目見之;目見之,不如足踐之。”,也就是說凡事講究證據,道聽途說不可信。
還有一個詞就是無征不信,出自《禮記·中庸》,意思是沒有證據的話或事不可信,沒有驗證的事不可相信。
在我之前的項目中,經常出現這樣的情況:開發人員在發布版本轉測試的時候,經常口頭上說,他們做過了自測試,沒有問題,滿足提測條件。但是,往往一轉過來,測試人員一測,就發現冒煙測試不通過,各種阻塞性問題,白白浪費了很多人力。
究其根本,有的時候是開發人員測試方法不對,有的時候是開發人員自測不夠充分,有的時候甚至是開發人員并沒有真正的進行自測。所以,後來測試對開發提測質量進行了嚴格的要求:提測必須提供開發自測報告、靜态代碼掃描報告,缺一不可。沒有這些證明材料,測試絕對不相信開發的一面之詞,正所謂無征不信,耳聽為虛眼見為實。
測試方針和測試策略
另外,在測試過程文檔中,提到的測試方針和測試策略,在古語中也有類似的見地。
測試方針
測試方針:描述組織的測試目标和目的。方針一詞,原指羅盤針,指引地理方向。 現常指指導工作或事業前進的方向和目标。
說白了,測試方針就是測試活動的大方向。
以我之前做軟件維護測試的項目為例,由于維護測試項目的特點:改動小,主要是解決客戶問題,所以,一般情況下測試方針都是:給客戶解決的問題回歸測試通過,修改點相關的模塊無修改引入問題。這就是測試方針,至于如何實現這個方針,那就是通過制定測試策略來保證了。
測試策略
測試策略:描述組織中通用的、不按項目而變化的測試方法
策略相關的成語:
出謀劃策,謀:謀略,劃:籌劃,即制定計謀策略,出處:明代馮夢龍《東周列國志》第六十九回。此處,策即指策略。
一般在古代戰争中,給将軍出謀劃策的叫做軍師。軍師制定的計謀和策略主要是指揮軍隊通過什麼樣的方法能夠打勝仗。
而在測試活動中,制定的測試策略也同樣是指揮測試團隊通過怎樣的測試方法,實現測試目标(測試方針)的。制定測試策略的“軍師”,在不同的組織中形式不太相同。有的組織是TSE(測試系統工程師)制定測試策略,有的組織是測試經理制定測試策略,有的組織是測試經理、測試分析師共同讨論完成測試策略的制定。
繼續以上一節中引用的項目為例,為了實現測試方針(給客戶解決的問題回歸測試通過,修改點相關的模塊無修改引入問題),我們通過制定相應的測試策略來指揮測試人員開展測試活動:
1、所有承諾解決的客戶問題,使用手工測試的方式,進行充分的回歸測試
2、通過執行修改相關的模塊的自動化用例來進行繼承功能的回歸測試
3、其他的模塊不需要測試
還有一個成語叫有勇無謀:隻有勇氣,沒有計謀。指做事或打仗隻是猛打猛沖,缺乏計劃,不講策略,隻會魯莽的去做事,從不會投機取巧。出自唐·陸贽《論兩河及淮西利害狀》。這裡邊的謀,就對應着測試策略中的策略。
這讓我想到了一個活生生血淋淋的例子。一個測試團隊成員,由于沒有按照測試策略執行,導緻了嚴重的後果。
事情的經過是這樣的。本來已經制定好的測試策略是,按照測試用例的優先級從高到低執行,目的是盡早發現重點功能的缺陷。但是,該測試人員自作主張,認為執行的先後順序并沒有太大影響,然後竟然先從容易執行的用例開始執行,執行難度大、場景較複雜的用例放在了最後執行,這其中就有優先級為高的測試用例。最後,悲劇出現了,有一條高優先級的用例測試出了缺陷。而這個時候,已經到了整個項目的中後期,代碼的改動風險很大,但是又沒有辦法,存在問題的功能雖然不是十分核心的功能,但是也是客戶提出來的需求,不得不改。所以,最後在修複這個缺陷的同時,增加了不少周邊相關的用例進行加固測試,這才降低了修改的風險。
該案例中的這位測試人員正是有勇無謀的代表。有好的策略沒有嚴格的落地,和沒有好的策略,在本質上沒有區别,結果都是釀成惡果。
測試工具的使用
我們在測試過程中,為了提高測試效率會引入自動化工具進行測試執行和測試管理。
那麼在古代,人們早就總結出來了“善假于物”,出自《荀子·勸學》,君子生非異也,善假于物也。意為君子的資質與一般人沒有什麼區别,君子之所以高于一般人,是因為他能善于利用外物。善于利用已有的條件,是君子成功的一個重要途徑。
如果項目中多一些“君子”,多借助“物”,那麼項目成功的概率就會大很多。試想一下,測試中如果少“物”或者無“物”,将是一個什麼樣的場景。
如果沒有缺陷管理系統,那麼測試人員發現缺陷,通過文本工具記錄和跟蹤,可想而知,要浪費多少溝通成本,并且可繼承性、可追溯性特别差;如果回歸測試用例沒有實現自動化,那麼每個版本測試人員都通過手工測試的方式進行回歸測試,如果用例數量達到了一定的規模,可想而知,花在回歸測試工作上的人力成本将是怎樣的;如果沒有測試儀器儀表,想要模拟收發各種類型的報文幾乎是不可能的。
風險管理
另外,測試管理和項目管理理論中都有提到風險管理。基于風險的測試基于風險的測試包含四個主要活動:風險識别、風險評估、風險緩解、風險管理。對于風險肯定是早預防早發現早處理為最優。
預防風險
關于預防風險,古人有雲:未雨綢缪,防患于未然。意思是趁着天沒下雨,先修繕房屋門窗。比喻事先做好準備工作,預防意外的事情發生。出自《詩經·豳風·鸱鸮》。
人們現在做項目,預防風險的意識已經越來越強了。在開發生命周期中,測試經常左移,旨在提前發現需求和設計上的問題,起到良好的預防風險的作用。另外,再比如對于重要項目,提前充分做好人力儲備,以備不時之需,未雨綢缪,也是預防風險的實例。
減輕風險
關于減輕風險,古人有雲:亡羊補牢,為時未晚。羊逃跑了再去修補羊圈,還不算晚。比喻出了問題以後想辦法補救,免得以後繼續受損失。出自《戰國策·楚策》。
風險發生了,及時制定有效措施,減輕風險,是風險緩解常用的策略。
比如,軟件測試人員經常通過分析線上反饋的缺陷,以此作為依據形成新的測試用例,作為對現有用例庫的補充,應用到後續的測試活動中。這正是“亡羊補牢”的一個過程,起到了很好的止血效果,防止再犯類似的錯誤。
測試改進
前面提到的通過線上問題,總結教訓,進行測試用例優化,除了是亡羊補牢,同時也是在做測試過程改進。
下面我們就說說測試過程改進。
項目回顧(例如,經驗教訓),是過程改進活動的組成部分。測試結束過程一個重要的工作就是進行總結經驗教訓,通過總結來自測試項目和整個軟件開發生命周期中的重要經驗教訓,來實現過程改進。
成語前車之鑒,意思是吸取前面車子翻倒的教訓。比喻先前的失敗,可以作為以後的教訓。
做項目一多,“翻車”時有發生。但是,隻要好好總結經驗教訓,吸取“翻車”的教訓,引以為鑒,就一定不會再犯同樣的錯誤了。反之,就很可能會重蹈覆轍。
之前項目有個版本,由于低估了某一個需求的重要性及複雜性,将該需求交給一個新員工進行測試分析、測試設計和測試執行。由于新員工的經驗不足,測試場景沒有考慮全面。随着測試進程在一步一步向前推進,發現越來越多的缺陷都和該需求相關,并且這些缺陷的改動特别大,甚至涉及到代碼重構。所以,最終決策該需求當前版本不上線,不得不遺留到下個版本繼續優化。
測試結束時,通過對這次“翻車”事件的分析,發現在測試團隊與産品經理、開發人員的溝通方面比較欠缺。後續需要針對每個需求的重要性、複雜性進行詳細評估,并且測試需要針對重要需求,與産品、開發進行測試方案的讨論。這樣就可以很好的避免類似的情況再次發生。
所以,隻要我們牢記“前事不忘後事之師”,吸取以前的經驗教訓,作為今後行事的借鑒,将會把項目做得越來越出色。
結語
通過本文将測試過程與成語聯系起來,你是否體會到測試理論更加有趣了呢?你是否也更加佩服古人的智慧了呢?你也可以擴展聯想一下,其他測試術語與成語的聯系呀,還是蠻有趣的。
請關注 私信回複:“測試” 即可邀請你進入【Python自動化測試學習交流群】與測試大牛一起探讨技術~~同時免費贈送軟件測試學習資料
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!