前言:
撰寫了許多Code,還需要人為一項一項測試嗎?可能非常的耗費人力、時間,而且“也不能確保每次的”再現性、重複性。這時候利用軟體本身的優點,使用軟體進行軟體的測試就是一種必須行為。網路上討論自動化軟體測試的文章千千百百種,以下參考另一篇文章所提及的關鍵點。
三個原因:Regression, Some tasks cannot be done manually, Parallel testing.
其中第一項的『Regression』,利用軟體自動化地去重復複雜、重復的行為,以得到低誤差性的測試,是很關鍵的一點,因為人為測試總是會無法百分百遵行“(精密)標準操作流程”,而軟體則可以使程序依照所傳寫好的法則去運行數百數千萬次以上而有著非常低的誤差(正常條件下*)
第二項與第一項其實也是有點相似,但著重在測試項目的複雜性質,文中提出類似影像判別(某方面而言也是一種極大量數據)。
第三項則是建立虛擬的使用者,而非真實的使用多測試者去進行測試。
以上三點是大多建議、推崇、遵循自動化軟體測試中的幾項,其它還有更多原因就不在此討論,不過同時我想提出的則是相反的建議:什麼情況下則不適合自動化軟體測試。
1. 沒有被妥善定義的最終需求。
2. 沒有被良好設計的精密與精確標準操作流程(PPSOP)。
第一點的提出,則是衍生於醫療器材的發展,醫材法規專家林秋雄博士曾說:『Drug by discovering; Device by designing』,而推廣醫療開發領域的Stanford教授-Dr. Mochly-Rosen,在其衍生的Bio-design課程裡面也提到,『Intended Need』,在還沒被妥善定義的需求前,設計與做過多的自動化軟體測試是不恰當的。
第二點我特別定義PPSOP則是一般SOP著重在儀器/設備/實驗的成熟操作流程,但一個成熟的SOP早已經過不斷的測試與驗證,但在專案開發初期,其實定義這種SOP容易疏忽掉細節(魔鬼藏在細節裡)。所以我認為開發初期,更重要的是精密與精確標準操作流程(PPSOP),而PP的意思是包含所有操作流程的細節外,如基本的順序、時間、數量外,還有與前後相同試驗的相關性、先後順序、測試者/研究者的操作習慣等等,都必須被記錄下來。而這就回歸到Design of Experiment (DOE)的設計是否正確、測試者/研究者是否遵循以及回饋等等。
其實第二點與第一點有重復到,都是著重在需求(Intended Need or DOE)的定義,而這兩點則分別屬於兩個不同開發階段,而這兩個階段與自動化軟體測試的交集仍然有一段距離。
此篇文僅描述一些方法概念,如何進行則又有許多眉眉角角。希望藉此記錄下來提醒自己也提醒自己參與的團隊,勿過度技術化,所謂Garbage in, garbage out,設計不良的架構/DOE,用了再好的自動化軟體測試,得到的也只是一堆”無用的大數據“而已。
*不考慮撰寫不良的程式碼、錯誤的演算法等等
Ref:
1. 3 reason to automate software testing
2. Biodesign
沒有留言:
張貼留言